diff --git a/.claude/skills/docs-update-check/SKILL.md b/.claude/skills/docs-update-check/SKILL.md index 1b59117c88..0e63721807 100644 --- a/.claude/skills/docs-update-check/SKILL.md +++ b/.claude/skills/docs-update-check/SKILL.md @@ -45,7 +45,7 @@ Use this mapping to find which docs might need updating: | `cli/src/commands/` | `docs-website/cli/` | One doc page per CLI command, organized by resource | | `controlplane/` | `docs-website/control-plane/` | API docs, webhooks, RBAC | | `studio/` | `docs-website/studio/` | Feature pages matching UI sections | -| `composition/` or `composition-go/` | `docs-website/federation/` | Directives, composition rules | +| `composition/` | `docs-website/federation/` | Directives, composition rules | | `helm/` | `docs-website/deployments-and-hosting/kubernetes/` | Helm chart docs | | `proto/` | `docs-website/control-plane/` | API reference pages | | `aws-lambda-router/` | `docs-website/router/deployment/` | Lambda deployment guide | diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b470f922ef..31846148ad 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,33 +1,32 @@ -# Give everyone ownership for everything expections listed below -* @wundergraph/Cosmo @wundergraph/Router +# Give everyone ownership for everything exceptions listed below +* @wundergraph/Cosmo @wundergraph/Router # Protect the CODEOWNERS file -/.github/CODEOWNERS @StarpTech +/.github/CODEOWNERS @wundergraph/Owners -/admission-server/ @JivusAyrus @StarpTech @thisisnithin -/cdn-server/ @JivusAyrus @StarpTech @thisisnithin -/cli/ @endigma @JivusAyrus @StarpTech @jensneuse @wilsonrivera -/composition/ @Aenimus @JivusAyrus @StarpTech @thisisnithin -/composition-go/ @Aenimus @JivusAyrus @StarpTech @jensneuse @thisisnithin -/connect/ @Aenimus @JivusAyrus @StarpTech @jensneuse @endigma @wilsonrivera -/connect-go/ @Aenimus @JivusAyrus @StarpTech @jensneuse @endigma @wilsonrivera -/controlplane/ @JivusAyrus @wilsonrivera @StarpTech @thisisnithin -/graphqlmetrics/ @Noroth @pepol @StarpTech -/helm/ @Noroth @pepol @StarpTech -/infrastructure/ @Noroth @pepol @StarpTech -/keycloak/ @JivusAyrus @wilsonrivera @StarpTech @thisisnithin -/otelcollector/ @Noroth @pepol @StarpTech -/playground/ @wundergraph/Router @thisisnithin @StarpTech -/proto/ @JivusAyrus @wilsonrivera @StarpTech @endigma -/protographic/ @Noroth @StarpTech @endigma @dkorittki -# Same owner for router and tests to avoid requesting too many reviewers -/router/ @Noroth @devsergiy @StarpTech @jensneuse @endigma @SkArchon -/router-tests/ @Noroth @devsergiy @StarpTech @jensneuse @endigma @SkArchon -/router-plugin/ @Noroth @StarpTech @endigma @devsergiy @SkArchon -/shared/ @Aenimus @JivusAyrus @StarpTech @thisisnithin -/studio/ @JivusAyrus @wilsonrivera @StarpTech @thisisnithin -# Cosmo Streams / EDFS -/router/pkg/pubsub @alepane21 @StarpTech @jensneuse @dkorittki +/.github/actions/ @wundergraph/Platform +/.github/scripts/ @wundergraph/Platform +/.github/workflows/ @wundergraph/Platform +/admission-server/ @wundergraph/Cosmo +/cdn-server/ @wundergraph/Cosmo @wundergraph/Platform +/cli/ @wundergraph/Cosmo +/composition/ @wundergraph/Cosmo +/connect/ @wundergraph/Router +/connect-go/ @wundergraph/Router +/controlplane/ @wundergraph/Cosmo +/graphqlmetrics/ @wundergraph/Platform +/helm/ @wundergraph/Platform +/infrastructure/ @wundergraph/Platform +/keycloak/ @wundergraph/Cosmo +/otelcollector/ @wundergraph/Platform +/playground/ @wundergraph/Cosmo +/protographic/ @wundergraph/Router +/router/ @wundergraph/Router +/router-tests/ @wundergraph/Router +/router-plugin/ @wundergraph/Router +/studio/ @wundergraph/Cosmo + +/.release-please-manifest.json @wundergraph/Platform # generated protobuf files, sourced from /proto/ /router/gen/ diff --git a/.github/actions/go-linter/action.yaml b/.github/actions/go-linter/action.yaml index fd341901dc..c5f54cb8ff 100644 --- a/.github/actions/go-linter/action.yaml +++ b/.github/actions/go-linter/action.yaml @@ -21,3 +21,14 @@ runs: version: 2025.1.1 install-go: false working-directory: ${{ inputs.working-directory }} + + - name: Check gofmt formatting + run: | + files=$(gofmt -l .) + if [ -n "$files" ]; then + echo "The following files are not gofmt-formatted:" + echo "$files" + exit 1 + fi + shell: bash + working-directory: ${{ inputs.working-directory }} diff --git a/.github/actions/image-scan/action.yaml b/.github/actions/image-scan/action.yaml index 8321ef083c..c52cdc83ea 100644 --- a/.github/actions/image-scan/action.yaml +++ b/.github/actions/image-scan/action.yaml @@ -20,7 +20,7 @@ runs: uses: actions/checkout@v4 - name: Run Trivy and Report SARIF to GitHub Security tab - uses: aquasecurity/trivy-action@0.34.1 + uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0 id: scan with: version: v0.69.3 diff --git a/.github/actions/node/action.yaml b/.github/actions/node/action.yaml index 8378ef9f0c..15133bd51b 100644 --- a/.github/actions/node/action.yaml +++ b/.github/actions/node/action.yaml @@ -1,26 +1,23 @@ -name: "Setup Node" -description: "This action install node and cache modules. It uses pnpm as package manager." +name: 'Setup Node' +description: 'This action install node and cache modules. It uses pnpm as package manager.' inputs: node-version: - description: "The node version to install (Default: lts)" - default: "lts/*" - required: false - working-directory: - description: "The working directory of your node package" - default: "." + description: 'The node version to install' required: false runs: - using: "composite" + using: 'composite' steps: - - uses: actions/setup-node@v4 + # `node-version` takes priority if not empty, otherwise fallback to root `package.json` + - uses: actions/setup-node@v6.4.0 with: node-version: ${{ inputs.node-version }} + node-version-file: './package.json' - - uses: pnpm/action-setup@v4.0.0 + # Using version from `package.json` field + - uses: pnpm/action-setup@v5.0.0 id: pnpm-install with: - version: 9.12.3 run_install: false - name: Get pnpm store directory diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml index ed0b43edd1..d842857f02 100644 --- a/.github/codeql-config.yml +++ b/.github/codeql-config.yml @@ -1,3 +1,2 @@ paths-ignore: - - 'composition-go/index.global.js' - 'router/internal/graphiql/graphiql.html' \ No newline at end of file diff --git a/.github/workflows/cli-ci.yaml b/.github/workflows/cli-ci.yaml index b632e711b3..b855cdde7c 100644 --- a/.github/workflows/cli-ci.yaml +++ b/.github/workflows/cli-ci.yaml @@ -71,7 +71,7 @@ jobs: strategy: matrix: - node-version: ['20.x', '22.x'] + node-version: ["22.x", "24.x"] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/codecov-post-merge.yaml b/.github/workflows/codecov-post-merge.yaml index 773a4f6745..c12da525ba 100644 --- a/.github/workflows/codecov-post-merge.yaml +++ b/.github/workflows/codecov-post-merge.yaml @@ -6,6 +6,7 @@ on: paths-ignore: - 'docs-website/**' - '*.md' + - '.github/CODEOWNERS' env: CI: true diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 60a69c6850..e4f43730bb 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -18,12 +18,14 @@ on: paths-ignore: - 'docs-website/**' - '*.md' + - '.github/CODEOWNERS' pull_request: branches: - main paths-ignore: - 'docs-website/**' - '*.md' + - '.github/CODEOWNERS' schedule: - cron: '27 3 * * 1' diff --git a/.github/workflows/composition-ci.yaml b/.github/workflows/composition-ci.yaml index 86e1e4d671..d0fa401437 100644 --- a/.github/workflows/composition-ci.yaml +++ b/.github/workflows/composition-ci.yaml @@ -4,8 +4,6 @@ on: paths: - 'pnpm-lock.yaml' - "composition/**/*" - - "composition-go/**/*" - # composition-go uses code from shared/ - "shared/**/*" - ".github/workflows/composition-ci.yaml" @@ -34,14 +32,6 @@ jobs: - name: Generate code run: pnpm buf generate --template buf.ts.gen.yaml - - name: Generate code to be embedded in Go library - run: ./generate.sh - working-directory: composition-go - - - uses: ./.github/actions/git-dirty-check - with: - package-name: composition-go - - name: Build run: pnpm run --filter ./composition --filter ./connect --filter ./shared build @@ -60,26 +50,3 @@ jobs: composition/coverage/coverage-final.json retention-days: 14 codecov-token: ${{ secrets.CODECOV_TOKEN }} - - - name: Run linter on composition-go - uses: ./.github/actions/go-linter - with: - working-directory: ./composition-go - - - name: Test Go library - run: go test -coverprofile=coverage_normal.out -coverpkg=github.com/wundergraph/cosmo/composition-go/... - working-directory: composition-go - - - name: Test Go library with V8 - run: go test -tags wg_composition_v8 -coverprofile=coverage_v8.out -coverpkg=github.com/wundergraph/cosmo/composition-go/... - working-directory: composition-go - - - name: Upload integration results to Codecov - uses: ./.github/actions/codecov-upload-pr - with: - artifact-name: composition-go-tests-coverage - coverage-path: | - composition-go/coverage_normal.out - composition-go/coverage_v8.out - retention-days: 14 - codecov-token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/dummy-ci.yaml b/.github/workflows/dummy-ci.yaml index e1e45e659f..aa36e2d0cc 100644 --- a/.github/workflows/dummy-ci.yaml +++ b/.github/workflows/dummy-ci.yaml @@ -8,6 +8,13 @@ on: - '.github/workflows/image-release.yml' - '.github/actions/**' - 'docs-website/**' + - 'CLAUDE.md' + - 'CONTRIBUTING.md' + - 'README.md' + - 'SECURITY.md' + - 'LICENSE' + - '.github/PULL_REQUEST_TEMPLATE.md' + - '.github/CODEOWNERS' jobs: build_test: timeout-minutes: 5 diff --git a/.github/workflows/helm-release-docs-update.yaml b/.github/workflows/helm-release-docs-update.yaml index ef425117b7..a356922a57 100644 --- a/.github/workflows/helm-release-docs-update.yaml +++ b/.github/workflows/helm-release-docs-update.yaml @@ -23,10 +23,24 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + permission-actions: write + permission-contents: write + permission-issues: write + permission-pull-requests: write + permission-statuses: write + - name: checkout uses: actions/checkout@v4 with: - token: ${{ secrets.GH_TOKEN_HELM_RELEASES }} + token: ${{ steps.app-token.outputs.token }} - uses: ./.github/actions/go @@ -41,7 +55,7 @@ jobs: with: commit_message: 'chore: update helm docs and prepare release' file_pattern: 'helm/**/*.md' - token: ${{ secrets.GH_TOKEN_HELM_RELEASES }} + token: ${{ steps.app-token.outputs.token }} commit_user_name: hardworker-bot commit_user_email: bot@wundergraph.com commit_author: hardworker-bot diff --git a/.github/workflows/helm-release.yaml b/.github/workflows/helm-release.yaml index cf2e5fc8b3..9ef7de580f 100644 --- a/.github/workflows/helm-release.yaml +++ b/.github/workflows/helm-release.yaml @@ -10,6 +10,7 @@ on: paths-ignore: - 'docs-website/**' - '*.md' + - '.github/CODEOWNERS' permissions: contents: write @@ -27,6 +28,20 @@ jobs: timeout-minutes: 5 steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + permission-actions: write + permission-contents: write + permission-issues: write + permission-pull-requests: write + permission-statuses: write + - name: checkout uses: actions/checkout@v4 @@ -37,7 +52,7 @@ jobs: config-file: release-please-config.json manifest-file: .release-please-manifest.json target-branch: ${{ env.RELEASE_BRANCH }} - token: ${{ secrets.GH_TOKEN_HELM_RELEASES }} + token: ${{ steps.app-token.outputs.token }} skip-github-release: false skip-github-pull-request: false diff --git a/.github/workflows/query-planner-ci.yaml b/.github/workflows/query-planner-ci.yaml index 6608a158ad..d607573971 100644 --- a/.github/workflows/query-planner-ci.yaml +++ b/.github/workflows/query-planner-ci.yaml @@ -1,13 +1,13 @@ name: Query Planner CI on: pull_request: - types: + types: - opened - synchronize - reopened - labeled - unlabeled - + paths: # This workflow should run every time router-ci and cli-ci runs - 'pnpm-lock.yaml' @@ -164,6 +164,21 @@ jobs: workflow_url: ${{ steps.trigger_workflow.outputs.workflow_url }} workflow_id: ${{ steps.trigger_workflow.outputs.workflow_id }} steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + cosmo-celestial + permission-actions: write + permission-contents: write + permission-pull-requests: write + permission-statuses: write + permission-workflows: write + - uses: convictional/trigger-workflow-and-wait@v1.6.5 if: ${{ (needs.check-labels-and-engine-changes.outputs.has_label == 'true' || needs.check-labels-and-engine-changes.outputs.engine_changed == 'true') && needs.check-labels-and-engine-changes.outputs.has_skip_label != 'true' }} id: trigger_workflow @@ -172,7 +187,7 @@ jobs: owner: wundergraph repo: cosmo-celestial ref: master - github_token: ${{ secrets.GH_TOKEN_CELESTIAL_TRIGGER }} + github_token: ${{ steps.app-token.outputs.token }} propagate_failure: true workflow_file_name: 'query-planner-tester.yaml' client_payload: >- @@ -188,10 +203,25 @@ jobs: outputs: pullrequest_url: ${{ steps.get_url.outputs.pr_url }} steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + cosmo-celestial + permission-actions: write + permission-contents: write + permission-pull-requests: write + permission-statuses: write + permission-workflows: write + - name: Download PR info artifact uses: actions/github-script@v7 with: - github-token: ${{ secrets.GH_TOKEN_CELESTIAL_TRIGGER }} + github-token: ${{ steps.app-token.outputs.token }} script: | const fs = require('fs'); const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ diff --git a/.github/workflows/release-preview.yaml b/.github/workflows/release-preview.yaml index 788482bb5c..e9d110b3f5 100644 --- a/.github/workflows/release-preview.yaml +++ b/.github/workflows/release-preview.yaml @@ -9,6 +9,7 @@ on: paths-ignore: - 'docs*/**' - '*.md' + - '.github/CODEOWNERS' concurrency: group: ${{github.workflow}}-${{github.head_ref}} @@ -23,14 +24,24 @@ jobs: timeout-minutes: 5 runs-on: ubuntu-latest steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + permission-actions: write + permission-contents: write + permission-workflows: write + - uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ secrets.GH_TOKEN_WORKFLOW_PUBLISH }} + token: ${{ steps.app-token.outputs.token }} - uses: ./.github/actions/node - with: - working-directory: ${{ env.WORKING_DIRECTORY }} - run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN shell: bash diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c78dc9b6ef..49ca1ab416 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -23,14 +23,24 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: + - name: Authenticate + id: app-token + uses: actions/create-github-app-token@v3 + with: + client-id: ${{ secrets.APP_CLIENT_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + repositories: | + cosmo + permission-actions: write + permission-contents: write + permission-workflows: write + - uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ secrets.GH_TOKEN_WORKFLOW_PUBLISH }} + token: ${{ steps.app-token.outputs.token }} - uses: ./.github/actions/node - with: - working-directory: ${{ env.WORKING_DIRECTORY }} - run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN shell: bash @@ -69,5 +79,5 @@ jobs: pnpm whoami pnpm release env: - GH_TOKEN: ${{ secrets.GH_TOKEN_WORKFLOW_PUBLISH }} + GH_TOKEN: ${{ steps.app-token.outputs.token }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/router-ci.yaml b/.github/workflows/router-ci.yaml index 0758f1248c..b49421f592 100644 --- a/.github/workflows/router-ci.yaml +++ b/.github/workflows/router-ci.yaml @@ -3,7 +3,6 @@ on: pull_request: paths: - 'pnpm-lock.yaml' - - 'composition-go/**/*' - 'demo/**/*' - 'router/**/*' - 'router-plugin/**/*' @@ -201,7 +200,7 @@ jobs: codecov-token: ${{ secrets.CODECOV_TOKEN }} integration_test: - runs-on: ubuntu-latest-l + runs-on: ubuntu-latest timeout-minutes: 30 env: GOMAXPROCS: 4 diff --git a/.gitignore b/.gitignore index 9c137b7098..4419047d6b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ lerna-debug.log /demo/cmd/subscriptiontest/subscriptiontest .github/scripts/keycloak-22.0.4/** .github/scripts/keycloak-22.0.4.zip -/router-tests/cmd/config-validator/router-configs/** # Go workspace files go.work diff --git a/.prettierignore b/.prettierignore index 80012cd965..31842ba2ca 100644 --- a/.prettierignore +++ b/.prettierignore @@ -24,3 +24,4 @@ CHANGELOG.md CHANGELOG .husky **/testdata +docs-website diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 958883b4f8..bf43dc8bc2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "helm/cosmo": "0.16.0", - "helm/cosmo/charts/router": "0.15.0" + "helm/cosmo": "0.19.0", + "helm/cosmo/charts/router": "0.18.0" } diff --git a/.trivyignore.yaml b/.trivyignore.yaml index bbac2202e2..22267c647a 100644 --- a/.trivyignore.yaml +++ b/.trivyignore.yaml @@ -1,3 +1,5 @@ vulnerabilities: - id: CVE-2026-24051 statement: Intended to be fixed in `ENG-9057`. The vulnerability happens on macOS/Darwin, as most images are used on Linux machines, we're ok with making this compromise. This was discussed with the team and OK'ed. + - id: CVE-2026-39883 + statement: Being fixed in https://github.com/wundergraph/cosmo/pull/2714 which upgrades opentelemetry-go dependencies. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 78e4bd0e2c..48f2a52a9b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,6 +3,8 @@ Before contributing to the WunderGraph Cosmo repository, please open an issue to discuss the changes you would like to make. Alternatively, you can also open a discussion in the [WunderGraph Discussions](https://github.com/wundergraph/cosmo/discussions). We are open to all kinds of contributions, including bug fixes, new features, and documentation improvements. +This project follows the principles of the [Open Source AI Manifesto](https://human-oss.dev). Please ensure your contributions align with its principles. + The following sections provide a guide on how to contribute to the WunderGraph Cosmo repository. ## Prerequisites @@ -85,6 +87,8 @@ export PATH="$PATH:$(go env GOPATH)/bin" We merge all pull requests in `squash merge` mode. You're not enforced to use [conventional commit standard](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits) across all your commits, but it's a good practice and increase transparency. At the end it's important that the squashed commit message follow the standard. +When updating your branch after a review has been requested, prefer using a merge strategy (e.g. `git merge main`) rather than rebasing. This preserves the review context and avoids force-pushes that can disrupt the review process. + ## Local Development ### Prerequisites diff --git a/Makefile b/Makefile index 47d710b198..22b7ffc044 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ all: dev-setup setup-build-tools: go install github.com/bufbuild/buf/cmd/buf@v1.32.2 - go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 - go install connectrpc.com/connect/cmd/protoc-gen-connect-go@v1.16.2 + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 + go install connectrpc.com/connect/cmd/protoc-gen-connect-go@v1.19.1 go install gotest.tools/gotestsum@v1.13.0 setup-dev-tools: setup-build-tools @@ -158,6 +158,9 @@ dc-subgraphs-config: dc-subgraphs-demo-down: docker compose -f docker-compose.full.yml --profile subgraphs down --remove-orphans +dc-subgraphs-demo-rebuild: + OTEL_AUTH_TOKEN=$(OTEL_AUTH_TOKEN) docker compose -f docker-compose.full.yml --profile subgraphs up --build --remove-orphans --detach $(DC_FLAGS) + docker-build-local: docker compose --file docker-compose.cosmo.yml build --no-cache diff --git a/admission-server/README.md b/admission-server/README.md index d0b952abd2..9311f63442 100644 --- a/admission-server/README.md +++ b/admission-server/README.md @@ -10,6 +10,7 @@ pnpm run dev ``` Open the browser and navigate to the following URL: + ``` open http://localhost:3009 ``` @@ -29,16 +30,18 @@ wgc federated-graph create mygraph -r http://127.0.0.1:3001/graphql --admission- ``` 2. Publish a subgraph + ```bash wgc subgraph publish employees --schema ../demo/pkg/subgraphs/employees/subgraph/schema.graphqls --labels team=A ``` 3. Start the router with the same signing key as the admission server + ```yaml version: '1' -graph: +graph: sign_key: 'sign_key' ``` -4. Wait for the log line that says "Config signature validation successful" \ No newline at end of file +4. Wait for the log line that says "Config signature validation successful" diff --git a/admission-server/package.json b/admission-server/package.json index da8bcc972f..f643ea2e2b 100644 --- a/admission-server/package.json +++ b/admission-server/package.json @@ -10,14 +10,14 @@ "format": "prettier -w -c ." }, "dependencies": { - "@hono/node-server": "1.13.7", + "@hono/node-server": "1.19.13", "@wundergraph/cosmo-shared": "workspace:^", - "dotenv": "^16.4.5", - "hono": "4.10.6" + "dotenv": "catalog:", + "hono": "catalog:" }, "devDependencies": { - "@types/node": "^20.11.17", - "tsx": "^4.16.0", - "typescript": "^5.3.2" + "@types/node": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:" } } diff --git a/admission-server/tsconfig.json b/admission-server/tsconfig.json index d7aca46052..7662665c4d 100644 --- a/admission-server/tsconfig.json +++ b/admission-server/tsconfig.json @@ -5,8 +5,6 @@ "outDir": "./dist", "module": "ESNext", "moduleResolution": "Bundler", - "types": [ - "node" - ] + "types": ["node"] } -} \ No newline at end of file +} diff --git a/aws-lambda-router/CHANGELOG.md b/aws-lambda-router/CHANGELOG.md index f3ba57a020..dee18d539d 100644 --- a/aws-lambda-router/CHANGELOG.md +++ b/aws-lambda-router/CHANGELOG.md @@ -4,6 +4,18 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.41.0](https://github.com/wundergraph/cosmo/compare/aws-lambda-router@0.40.2...aws-lambda-router@0.41.0) (2026-05-20) + +### Features + +* upgrade otel dependencies with backward compatible semconv attributes ([#2714](https://github.com/wundergraph/cosmo/issues/2714)) ([3d90c6c](https://github.com/wundergraph/cosmo/commit/3d90c6c4a2fb2d3f0f0544e6cf7437671e838b6d)) (@Noroth) + +## [0.40.2](https://github.com/wundergraph/cosmo/compare/aws-lambda-router@0.40.1...aws-lambda-router@0.40.2) (2026-03-31) + +### Bug Fixes + +* jsonparser upgrade ([#2709](https://github.com/wundergraph/cosmo/issues/2709)) ([f2860f8](https://github.com/wundergraph/cosmo/commit/f2860f8dce5488da3f47f53068f0e3ad522280d0)) (@SkArchon) + ## [0.40.1](https://github.com/wundergraph/cosmo/compare/aws-lambda-router@0.40.0...aws-lambda-router@0.40.1) (2026-03-19) **Note:** Version bump only for package aws-lambda-router diff --git a/aws-lambda-router/go.mod b/aws-lambda-router/go.mod index afe4b43f5e..52092978ea 100644 --- a/aws-lambda-router/go.mod +++ b/aws-lambda-router/go.mod @@ -1,11 +1,11 @@ module github.com/wundergraph/cosmo/aws-lambda-router -go 1.25 +go 1.25.0 require ( github.com/akrylysov/algnhsa v1.1.0 github.com/aws/aws-lambda-go v1.43.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.11.1 github.com/wundergraph/cosmo/router v0.0.0-20241115174502-7156536a93bf go.uber.org/zap v1.27.0 ) @@ -16,12 +16,12 @@ require ( github.com/andybalholm/brotli v1.1.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bep/debounce v1.2.1 // indirect - github.com/buger/jsonparser v1.1.1 // indirect + github.com/buger/jsonparser v1.1.2 // indirect github.com/caarlos0/env/v11 v11.1.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgraph-io/ristretto v0.1.2-0.20240723054643-f5997484152c // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -39,10 +39,10 @@ require ( github.com/gobwas/ws v1.4.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/goccy/go-yaml v1.13.4 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -51,7 +51,7 @@ require ( github.com/jensneuse/byte-template v0.0.0-20231025215717-69252eb3ed56 // indirect github.com/joho/godotenv v1.5.1 // indirect github.com/kingledion/go-tools v0.6.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -66,13 +66,14 @@ require ( github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/pquerna/cachecontrol v0.2.0 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.67.5 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect + github.com/prometheus/procfs v0.20.1 // indirect github.com/r3labs/sse/v2 v2.8.1 // indirect github.com/redis/go-redis/v9 v9.4.0 // indirect github.com/rs/xid v1.5.0 // indirect @@ -93,54 +94,38 @@ require ( github.com/wundergraph/astjson v0.0.0-20241108124845-44485579ffa5 // indirect github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.123 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.23.0 // indirect - go.opentelemetry.io/contrib/propagators/jaeger v1.23.0 // indirect - go.opentelemetry.io/otel v1.39.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.50.0 // indirect - go.opentelemetry.io/otel/metric v1.39.0 // indirect - go.opentelemetry.io/otel/sdk v1.39.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect - go.opentelemetry.io/otel/trace v1.39.0 // indirect - go.opentelemetry.io/proto/otlp v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.43.0 // indirect + go.opentelemetry.io/contrib/propagators/jaeger v1.43.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.65.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.withmatt.com/connect-brotli v0.4.0 // indirect - golang.org/x/crypto v0.46.0 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/net v0.48.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.32.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/grpc v1.79.3 // indirect - google.golang.org/protobuf v1.36.10 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect + google.golang.org/grpc v1.80.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) // replace github.com/wundergraph/cosmo/router => ../router - -replace ( - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp => go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 - go.opentelemetry.io/contrib/propagators/b3 => go.opentelemetry.io/contrib/propagators/b3 v1.23.0 - go.opentelemetry.io/contrib/propagators/jaeger => go.opentelemetry.io/contrib/propagators/jaeger v1.23.0 - go.opentelemetry.io/otel => go.opentelemetry.io/otel v1.28.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc => go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp => go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace => go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 - go.opentelemetry.io/otel/exporters/prometheus => go.opentelemetry.io/otel/exporters/prometheus v0.50.0 - go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v1.28.0 - go.opentelemetry.io/otel/sdk => go.opentelemetry.io/otel/sdk v1.28.0 - go.opentelemetry.io/otel/sdk/metric => go.opentelemetry.io/otel/sdk/metric v1.28.0 - go.opentelemetry.io/otel/trace => go.opentelemetry.io/otel/trace v1.28.0 - go.opentelemetry.io/proto/otlp => go.opentelemetry.io/proto/otlp v1.1.0 -) diff --git a/aws-lambda-router/go.sum b/aws-lambda-router/go.sum index b40e206806..2035a64c66 100644 --- a/aws-lambda-router/go.sum +++ b/aws-lambda-router/go.sum @@ -21,12 +21,12 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk= +github.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/caarlos0/env/v11 v11.1.0 h1:a5qZqieE9ZfzdvbbdhTalRrHT5vu/4V1/ad1Ka6frhI= github.com/caarlos0/env/v11 v11.1.0/go.mod h1:LwgkYk1kDvfGpHthrWWLof3Ny7PezzFwS4QrsJdHTMo= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a h1:8d1CEOF1xldesKds5tRG3tExBsMOgWYownMHNCsev54= @@ -34,8 +34,9 @@ github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2 github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/ristretto v0.1.2-0.20240723054643-f5997484152c h1:V2+MhiAoTwUNENo9PFoz2NSr0VDJEzIARLuzb30YyqA= github.com/dgraph-io/ristretto v0.1.2-0.20240723054643-f5997484152c/go.mod h1:swkazRqnUf1N62d0Nutz7KIj2UKqsm/H8tD0nBJAXqM= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= @@ -83,8 +84,8 @@ github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.13.4 h1:XOnLX9GqT+kH/gB7YzCMUiDBFU9B7pm3HZz6kyeDPkk= github.com/goccy/go-yaml v1.13.4/go.mod h1:IjYwxUiJDoqpx2RmbdjMUceGHZwYLon3sfOGl5Hi9lc= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -99,8 +100,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -125,8 +126,8 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA github.com/kingledion/go-tools v0.6.0 h1:y8C/4mWoHgLkO45dB+Y/j0o4Y4WUB5lDTAcMPMtFpTg= github.com/kingledion/go-tools v0.6.0/go.mod h1:qcDJQxBui/H/hterGb90GMlLs9Yi7QrwaJL8OGdbsms= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -170,27 +171,30 @@ github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/pquerna/cachecontrol v0.2.0 h1:vBXSNuE5MYP9IJ5kjsdo8uq+w41jSPgvba2DEnkRx9k= github.com/pquerna/cachecontrol v0.2.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/r3labs/sse/v2 v2.8.1 h1:lZH+W4XOLIq88U5MIHOsLec7+R62uhz3bIi2yn0Sg8o= github.com/r3labs/sse/v2 v2.8.1/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/redis/go-redis/v9 v9.4.0 h1:Yzoz33UZw9I/mFhx4MNrB6Fk+XHO1VukNcCa1+lwyKk= github.com/redis/go-redis/v9 v9.4.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= @@ -225,8 +229,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -257,36 +262,38 @@ github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.123 h1:JI7axu4G8p52i866OZfX github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.123/go.mod h1:s4r/lhVEU5s0c6tCgpR0hK6FHEmX0cbrKcMU1pMc/ZI= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/contrib/propagators/b3 v1.23.0 h1:aaIGWc5JdfRGpCafLRxMJbD65MfTa206AwSKkvGS0Hg= -go.opentelemetry.io/contrib/propagators/b3 v1.23.0/go.mod h1:Gyz7V7XghvwTq+mIhLFlTgcc03UDroOg8vezs4NLhwU= -go.opentelemetry.io/contrib/propagators/jaeger v1.23.0 h1:KFxfTCTkH1usVFzDaWzbmNdFX7ybUTCtkLsUTww0nG4= -go.opentelemetry.io/contrib/propagators/jaeger v1.23.0/go.mod h1:xU+81opGquQICJGzwscLXAQLnIPWI+q7Zu4AQSrgXf8= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 h1:jd0+5t/YynESZqsSyPz+7PAFdEop0dlN0+PkyHYo8oI= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0/go.mod h1:U707O40ee1FpQGyhvqnzmCJm1Wh6OX6GGBVn0E6Uyyk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 h1:o8iWeVFa1BcLtVEV0LzrCxV2/55tB3xLxADr6Kyoey4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1/go.mod h1:SEVfdK4IoBnbT2FXNM/k8yC08MrfbhWk3U4ljM8B3HE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1 h1:p3A5+f5l9e/kuEBwLOrnpkIDHQFlHmbiVxMURWRK6gQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.23.1/go.mod h1:OClrnXUjBqQbInvjJFjYSnMxBSCXBF8r3b34WqjiIrQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 h1:cfuy3bXmLJS7M1RZmAL6SuhGtKUp2KEsrm00OlAXkq4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1/go.mod h1:22jr92C6KwlwItJmQzfixzQM3oyyuYLCfHiMY+rpsPU= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= -go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= -go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo= +go.opentelemetry.io/contrib/propagators/b3 v1.43.0 h1:CETqV3QLLPTy5yNrqyMr41VnAOOD4lsRved7n4QG00A= +go.opentelemetry.io/contrib/propagators/b3 v1.43.0/go.mod h1:Q4mCiCdziYzpNR0g+6UqVotAlCDZdzz6L8jwY4knOrw= +go.opentelemetry.io/contrib/propagators/jaeger v1.43.0 h1:peiLMz1+aqJE+3L4mOVtR9wlmv+yh/JVYXCBjqmzJJE= +go.opentelemetry.io/contrib/propagators/jaeger v1.43.0/go.mod h1:Agvif+4A8p/3UtZzJ0MCcDEuQwgtrzM71DueU41DCs8= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.43.0 h1:8UQVDcZxOJLtX6gxtDt3vY2WTgvZqMQRzjsqiIHQdkc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.43.0/go.mod h1:2lmweYCiHYpEjQ/lSJBYhj9jP1zvCvQW4BqL9dnT7FQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/exporters/prometheus v0.65.0 h1:jOveH/b4lU9HT7y+Gfamf18BqlOuz2PWEvs8yM7Q6XE= +go.opentelemetry.io/otel/exporters/prometheus v0.65.0/go.mod h1:i1P8pcumauPtUI4YNopea1dhzEMuEqWP1xoUZDylLHo= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= @@ -301,10 +308,12 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.withmatt.com/connect-brotli v0.4.0 h1:7ObWkYmEbUXK3EKglD0Lgj0BBnnD3jNdAxeDRct3l8E= go.withmatt.com/connect-brotli v0.4.0/go.mod h1:c2eELz56za+/Mxh1yJrlglZ4VM9krpOCPqS2Vxf8NVk= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -313,11 +322,11 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -330,27 +339,27 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/aws-lambda-router/package.json b/aws-lambda-router/package.json index 91b7b34de9..d6cab3e546 100644 --- a/aws-lambda-router/package.json +++ b/aws-lambda-router/package.json @@ -1,6 +1,6 @@ { "name": "aws-lambda-router", - "version": "0.40.1", + "version": "0.41.0", "private": true, "description": "Placeholder package to simplify versioning and releasing with lerna.", "keywords": [ diff --git a/cdn-server/CHANGELOG.md b/cdn-server/CHANGELOG.md index 02b5b12017..cbff3aa276 100644 --- a/cdn-server/CHANGELOG.md +++ b/cdn-server/CHANGELOG.md @@ -4,6 +4,34 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.21.0](https://github.com/wundergraph/cosmo/compare/cdn@0.20.1...cdn@0.21.0) (2026-05-11) + +### Features + +* split router execution configs ([#2847](https://github.com/wundergraph/cosmo/issues/2847)) ([893ff72](https://github.com/wundergraph/cosmo/commit/893ff721e28d34eb308b74c845773a0186a7467c)) (@Aenimus) + +## [0.20.1](https://github.com/wundergraph/cosmo/compare/cdn@0.20.0...cdn@0.20.1) (2026-05-01) + +**Note:** Version bump only for package cdn + +# [0.20.0](https://github.com/wundergraph/cosmo/compare/cdn@0.19.0...cdn@0.20.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) + +# [0.19.0](https://github.com/wundergraph/cosmo/compare/cdn@0.18.0...cdn@0.19.0) (2026-04-14) + +### Features + +* update packages to address high severity vulnerabilities ([#2757](https://github.com/wundergraph/cosmo/issues/2757)) ([e14c41b](https://github.com/wundergraph/cosmo/commit/e14c41bfac517c6f1ea7d9d00e85bbbdff29b4e0)) (@pepol) + +# [0.18.0](https://github.com/wundergraph/cosmo/compare/cdn@0.17.0...cdn@0.18.0) (2026-03-27) + +### Features + +* add PQL manifest support for persisted operations ([#2635](https://github.com/wundergraph/cosmo/issues/2635)) ([38a648c](https://github.com/wundergraph/cosmo/commit/38a648cff927b45d5ee5323bf303f83198c64411)) (@StarpTech) + # [0.17.0](https://github.com/wundergraph/cosmo/compare/cdn@0.16.2...cdn@0.17.0) (2026-03-05) ### Features diff --git a/cdn-server/cdn/CHANGELOG.md b/cdn-server/cdn/CHANGELOG.md index 9f29a07296..135df30796 100644 --- a/cdn-server/cdn/CHANGELOG.md +++ b/cdn-server/cdn/CHANGELOG.md @@ -4,6 +4,34 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.15.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.14.1...@wundergraph/cosmo-cdn@0.15.0) (2026-05-11) + +### Features + +* split router execution configs ([#2847](https://github.com/wundergraph/cosmo/issues/2847)) ([893ff72](https://github.com/wundergraph/cosmo/commit/893ff721e28d34eb308b74c845773a0186a7467c)) (@Aenimus) + +## [0.14.1](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.14.0...@wundergraph/cosmo-cdn@0.14.1) (2026-05-01) + +**Note:** Version bump only for package @wundergraph/cosmo-cdn + +# [0.14.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.13.0...@wundergraph/cosmo-cdn@0.14.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) + +# [0.13.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.12.0...@wundergraph/cosmo-cdn@0.13.0) (2026-04-14) + +### Features + +* update packages to address high severity vulnerabilities ([#2757](https://github.com/wundergraph/cosmo/issues/2757)) ([e14c41b](https://github.com/wundergraph/cosmo/commit/e14c41bfac517c6f1ea7d9d00e85bbbdff29b4e0)) (@pepol) + +# [0.12.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.11.0...@wundergraph/cosmo-cdn@0.12.0) (2026-03-27) + +### Features + +* add PQL manifest support for persisted operations ([#2635](https://github.com/wundergraph/cosmo/issues/2635)) ([38a648c](https://github.com/wundergraph/cosmo/commit/38a648cff927b45d5ee5323bf303f83198c64411)) (@StarpTech) + # [0.11.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-cdn@0.10.0...@wundergraph/cosmo-cdn@0.11.0) (2025-11-29) ### Features diff --git a/cdn-server/cdn/package.json b/cdn-server/cdn/package.json index ed73a0c1ae..e88aa1bf66 100644 --- a/cdn-server/cdn/package.json +++ b/cdn-server/cdn/package.json @@ -1,6 +1,6 @@ { "name": "@wundergraph/cosmo-cdn", - "version": "0.11.0", + "version": "0.15.0", "author": { "name": "WunderGraph Maintainers", "email": "info@wundergraph.com" @@ -26,13 +26,13 @@ "dist" ], "dependencies": { - "hono": "4.10.6", + "hono": "catalog:", "jose": "^5.2.4" }, "devDependencies": { - "eslint": "^8.57.1", - "eslint-config-unjs": "^0.2.1", - "typescript": "5.5.2", - "vitest": "^3.2.4" + "eslint": "catalog:", + "eslint-config-unjs": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/cdn-server/cdn/src/index.ts b/cdn-server/cdn/src/index.ts index 02c4a4bc8f..78ae5b096b 100644 --- a/cdn-server/cdn/src/index.ts +++ b/cdn-server/cdn/src/index.ts @@ -26,12 +26,12 @@ export interface BlobStorage { headObject({ context, key, - schemaVersionId, + version, }: { context: Context; abortSignal?: AbortSignal; key: string; - schemaVersionId: string; + version: string; }): Promise; } @@ -52,6 +52,7 @@ declare module 'hono' { interface ContextVariableMap { authenticatedOrganizationId: string; authenticatedFederatedGraphId: string; + authenticatedFeatures: string[]; } } @@ -102,10 +103,26 @@ const jwtMiddleware = (secret: string | ((c: Context) => string)) => { c.set('authenticatedFederatedGraphId', federatedGraphId as string); } + const features = result.payload.features; + c.set('authenticatedFeatures', Array.isArray(features) ? (features as string[]) : []); + + await next(); + }; +}; + +const requireFeature = (feature: string) => { + return async (c: Context, next: Next) => { + const features = c.get('authenticatedFeatures'); + if (!features || !features.includes(feature)) { + return c.text('Forbidden - Missing required feature', 403); + } await next(); }; }; +// Deprecated: Individual persisted operation lookups via CDN are deprecated. +// The router now downloads all operations at once via the PQL manifest, avoiding +// per-request latency. This handler is kept for backward compatibility with older routers. const persistedOperation = (storage: BlobStorage) => { return async (c: Context) => { const organizationId = c.get('authenticatedOrganizationId'); @@ -117,7 +134,7 @@ const persistedOperation = (storage: BlobStorage) => { const clientId = c.req.param('client_id'); const operation = c.req.param('operation'); - if (!operation.endsWith('.json')) { + if (!operation || !operation.endsWith('.json')) { return c.notFound(); } @@ -165,7 +182,7 @@ const latestValidRouterConfig = (storage: BlobStorage) => { // starts for the first time, and we need to return a config anyway. if (body?.version) { try { - isModified = await storage.headObject({ context: c, key, schemaVersionId: body.version }); + isModified = await storage.headObject({ context: c, key, version: body.version }); } catch (e: any) { if (e instanceof BlobNotFoundError) { return c.notFound(); @@ -262,6 +279,60 @@ const cacheOperations = (storage: BlobStorage) => { }; }; +const persistedOperationsManifest = (storage: BlobStorage) => { + return async (c: Context) => { + const organizationId = c.get('authenticatedOrganizationId'); + const federatedGraphId = c.get('authenticatedFederatedGraphId'); + + if (organizationId !== c.req.param('organization_id') || federatedGraphId !== c.req.param('federated_graph_id')) { + return c.text('Bad Request', 400); + } + + const key = `${organizationId}/${federatedGraphId}/operations/manifest.json`; + + const ifNoneMatch = c.req.header('If-None-Match'); + const clientVersion = ifNoneMatch?.replace(/^"(.*)"$/, '$1') || null; + + let isModified = true; + + if (clientVersion) { + try { + isModified = await storage.headObject({ context: c, key, version: clientVersion }); + } catch (e: any) { + if (e instanceof BlobNotFoundError) { + return c.notFound(); + } + throw e; + } + } + + if (!isModified) { + c.header('ETag', `"${clientVersion}"`); + return c.body(null, 304); + } + + let blobObject: BlobObject; + + try { + blobObject = await storage.getObject({ context: c, key, cacheControl: 'no-cache' }); + } catch (e: any) { + if (e instanceof BlobNotFoundError) { + return c.notFound(); + } + throw e; + } + + if (blobObject.metadata?.version) { + c.header('ETag', `"${blobObject.metadata.version}"`); + } + c.header('Content-Type', 'application/json; charset=UTF-8'); + + return stream(c, async (stream) => { + await stream.pipe(blobObject.stream); + }); + }; +}; + const subgraphChecks = (storage: BlobStorage) => { return async (c: Context) => { const organizationId = c.get('authenticatedOrganizationId'); @@ -271,7 +342,7 @@ const subgraphChecks = (storage: BlobStorage) => { } const uniqueId = c.req.param('uniqueid'); - if (!uniqueId.endsWith('.json')) { + if (!uniqueId || !uniqueId.endsWith('.json')) { return c.notFound(); } @@ -296,11 +367,69 @@ const subgraphChecks = (storage: BlobStorage) => { }; }; +const manifestBlob = (storage: BlobStorage, keyBuilder: (orgId: string, graphId: string, c: Context) => string) => { + return async (c: Context) => { + const organizationId = c.get('authenticatedOrganizationId'); + const federatedGraphId = c.get('authenticatedFederatedGraphId'); + + if (organizationId !== c.req.param('organization_id') || federatedGraphId !== c.req.param('federated_graph_id')) { + return c.text('Bad Request', 400); + } + + const key = keyBuilder(organizationId, federatedGraphId, c); + + const body = await c.req.json(); + + let isModified = true; + + if (body?.version) { + try { + isModified = await storage.headObject({ context: c, key, version: body.version }); + } catch (e: any) { + if (e instanceof BlobNotFoundError) { + return c.notFound(); + } + throw e; + } + } + + if (!isModified) { + return c.body(null, 304); + } + + let blobObject: BlobObject; + + try { + blobObject = await storage.getObject({ context: c, key, cacheControl: 'no-cache' }); + + if (blobObject.metadata && blobObject.metadata['signature-sha256']) { + c.header(signatureSha256Header, blobObject.metadata['signature-sha256']); + } + } catch (e: any) { + if (e instanceof BlobNotFoundError) { + return c.notFound(); + } + throw e; + } + + c.header('Content-Type', 'application/json; charset=UTF-8'); + + return stream(c, async (stream) => { + await stream.pipe(blobObject.stream); + }); + }; +}; + // eslint-disable-next-line @typescript-eslint/ban-types export const cdn = ( hono: Hono, opts: CdnOptions, ) => { + const manifestPath = '/:organization_id/:federated_graph_id/operations/manifest.json'; + hono + .use(manifestPath, jwtMiddleware(opts.authJwtSecret)) + .get(manifestPath, persistedOperationsManifest(opts.blobStorage)); + const operations = '/:organization_id/:federated_graph_id/operations/:client_id/:operation{.+\\.json$}'; const latestValidRouterConfigs = '/:organization_id/:federated_graph_id/routerconfigs/latest.json'; hono.use(operations, jwtMiddleware(opts.authJwtSecret)).get(operations, persistedOperation(opts.blobStorage)); @@ -329,4 +458,35 @@ export const cdn = `${orgId}/${graphId}/manifest/mapper.json`), + ); + + const manifestLatestPath = '/:organization_id/:federated_graph_id/manifest/latest.json'; + hono + .use(manifestLatestPath, jwtMiddleware(opts.authJwtSecret)) + .use(manifestLatestPath, requireFeature('split-config-loading')) + .post( + manifestLatestPath, + manifestBlob(opts.blobStorage, (orgId, graphId) => `${orgId}/${graphId}/manifest/latest.json`), + ); + + const manifestFeatureFlagPath = + '/:organization_id/:federated_graph_id/manifest/feature-flags/:feature_flag_name{.+\\.json$}'; + hono + .use(manifestFeatureFlagPath, jwtMiddleware(opts.authJwtSecret)) + .use(manifestFeatureFlagPath, requireFeature('split-config-loading')) + .post( + manifestFeatureFlagPath, + manifestBlob( + opts.blobStorage, + (orgId, graphId, c) => `${orgId}/${graphId}/manifest/feature-flags/${c.req.param('feature_flag_name')}`, + ), + ); }; diff --git a/cdn-server/cdn/test/cdn.test.ts b/cdn-server/cdn/test/cdn.test.ts index 6a936930af..3a1ecef73f 100644 --- a/cdn-server/cdn/test/cdn.test.ts +++ b/cdn-server/cdn/test/cdn.test.ts @@ -7,11 +7,21 @@ import { BlobStorage, BlobNotFoundError, cdn, BlobObject, signatureSha256Header const secretKey = 'hunter2'; const secretAdmissionKey = 'hunter3'; -const generateToken = async (organizationId: string, federatedGraphId: string | undefined, secret: string) => { +const generateToken = async ( + organizationId: string, + federatedGraphId: string | undefined, + secret: string, + features?: string[], +) => { const secretKey = new TextEncoder().encode(secret); - return await new SignJWT({ organization_id: organizationId, federated_graph_id: federatedGraphId }) - .setProtectedHeader({ alg: 'HS256' }) - .sign(secretKey); + const payload: Record = { + organization_id: organizationId, + federated_graph_id: federatedGraphId, + }; + if (features !== undefined) { + payload.features = features; + } + return await new SignJWT(payload).setProtectedHeader({ alg: 'HS256' }).sign(secretKey); }; class InMemoryBlobStorage implements BlobStorage { @@ -30,12 +40,12 @@ class InMemoryBlobStorage implements BlobStorage { return Promise.resolve({ stream, metadata: obj.metadata }); } - headObject({ key, schemaVersionId }: { key: string; schemaVersionId: string }): Promise { + headObject({ key, version }: { key: string; version: string }): Promise { const obj = this.objects.get(key); if (!obj) { return Promise.reject(new BlobNotFoundError(`Object with key ${key} not found`)); } - if (obj.metadata?.version === schemaVersionId) { + if (obj.metadata?.version === version) { return Promise.resolve(false); } return Promise.resolve(true); @@ -554,6 +564,207 @@ describe('CDN handlers', () => { }); }); + describe('Test persisted operations manifest handler', async () => { + const federatedGraphId = 'federatedGraphId'; + const organizationId = 'organizationId'; + const token = await generateToken(organizationId, federatedGraphId, secretKey); + const blobStorage = new InMemoryBlobStorage(); + const requestPath = `/${organizationId}/${federatedGraphId}/operations/manifest.json`; + + const app = new Hono(); + + cdn(app, { + authJwtSecret: secretKey, + authAdmissionJwtSecret: secretAdmissionKey, + blobStorage, + }); + + test('it returns a 401 if no Authorization header is provided', async () => { + const res = await app.request(requestPath, { + method: 'GET', + }); + expect(res.status).toBe(401); + }); + + test('it returns a 401 if an invalid Authorization header is provided', async () => { + const res = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token.slice(0, -1)}}`, + }, + }); + expect(res.status).toBe(401); + }); + + test('it returns a 400 if the graph or organization ids does not match with the JWT payload', async () => { + const res = await app.request(`/foo/bar/operations/manifest.json`, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + expect(res.status).toBe(400); + }); + + test('it returns a 401 if the token has expired', async () => { + const token = await new SignJWT({ + organization_id: organizationId, + federated_graph_id: federatedGraphId, + exp: Math.floor(Date.now() / 1000) - 60, + }) + .setProtectedHeader({ alg: 'HS256' }) + .sign(new TextEncoder().encode(secretKey)); + const res = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + expect(res.status).toBe(401); + }); + + test('it returns the manifest with ETag on first request', async () => { + const manifestContents = JSON.stringify({ + version: 1, + revision: 'abc123', + generatedAt: '2025-01-01T00:00:00.000Z', + operations: { + sha256hash1: 'query { hello }', + }, + }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/operations/manifest.json`, { + buffer: Buffer.from(manifestContents), + metadata: { version: 'abc123' }, + }); + + const res = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + expect(res.status).toBe(200); + expect(res.headers.get('Content-Type')).toBe('application/json; charset=UTF-8'); + expect(res.headers.get('ETag')).toBe('"abc123"'); + expect(await res.text()).toBe(manifestContents); + }); + + test('it returns 304 with ETag when If-None-Match matches', async () => { + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/operations/manifest.json`, { + buffer: Buffer.from(JSON.stringify({ version: 1, revision: 'abc123', operations: {} })), + metadata: { version: 'abc123' }, + }); + + const res = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + 'If-None-Match': '"abc123"', + }, + }); + expect(res.status).toBe(304); + expect(res.headers.get('ETag')).toBe('"abc123"'); + }); + + test('it returns 200 with new ETag when If-None-Match does not match', async () => { + const manifestContents = JSON.stringify({ + version: 1, + revision: 'def456', + generatedAt: '2025-01-01T00:00:00.000Z', + operations: { + sha256hash1: 'query { hello }', + }, + }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/operations/manifest.json`, { + buffer: Buffer.from(manifestContents), + metadata: { version: 'def456' }, + }); + + const res = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + 'If-None-Match': '"old-revision"', + }, + }); + expect(res.status).toBe(200); + expect(res.headers.get('ETag')).toBe('"def456"'); + expect(await res.text()).toBe(manifestContents); + }); + + test('ETag round-trip: fetch returns ETag, re-fetch with that ETag returns 304', async () => { + const manifestContents = JSON.stringify({ + version: 1, + revision: 'rev-round-trip', + generatedAt: '2025-01-01T00:00:00.000Z', + operations: { hash1: 'query { hello }' }, + }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/operations/manifest.json`, { + buffer: Buffer.from(manifestContents), + metadata: { version: 'rev-round-trip' }, + }); + + // First request: no ETag, should get 200 with ETag + const res1 = await app.request(requestPath, { + method: 'GET', + headers: { Authorization: `Bearer ${token}` }, + }); + expect(res1.status).toBe(200); + const etag = res1.headers.get('ETag'); + expect(etag).toBe('"rev-round-trip"'); + expect(await res1.text()).toBe(manifestContents); + + // Second request: send ETag back as If-None-Match, should get 304 + const res2 = await app.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + 'If-None-Match': etag!, + }, + }); + expect(res2.status).toBe(304); + expect(res2.headers.get('ETag')).toBe(etag); + }); + + test('it returns a 404 if the manifest does not exist', async () => { + const otherBlobStorage = new InMemoryBlobStorage(); + const otherApp = new Hono(); + + cdn(otherApp, { + authJwtSecret: secretKey, + authAdmissionJwtSecret: secretAdmissionKey, + blobStorage: otherBlobStorage, + }); + + const res = await otherApp.request(requestPath, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + expect(res.status).toBe(404); + }); + + test('it does not conflict with the individual persisted operations route', async () => { + const operationContents = JSON.stringify({ version: 1, body: 'query { hello }' }); + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/operations/clientName/operation.json`, { + buffer: Buffer.from(operationContents), + }); + + const res = await app.request(`/${organizationId}/${federatedGraphId}/operations/clientName/operation.json`, { + method: 'GET', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + expect(res.status).toBe(200); + expect(await res.text()).toBe(operationContents); + }); + }); + describe('schema check extensions handler', async () => { const organizationId = 'organizationId'; const checkId = randomUUID(); @@ -643,4 +854,235 @@ describe('CDN handlers', () => { expect(res.status).toBe(404); }); }); + + describe('Test manifest endpoints (split-config-loading)', async () => { + const federatedGraphId = 'federatedGraphId'; + const organizationId = 'organizationId'; + const tokenWithFeature = await generateToken(organizationId, federatedGraphId, secretKey, ['split-config-loading']); + const tokenNoFeature = await generateToken(organizationId, federatedGraphId, secretKey); + const tokenWrongFeature = await generateToken(organizationId, federatedGraphId, secretKey, ['other-feature']); + const blobStorage = new InMemoryBlobStorage(); + + const mapperContents = JSON.stringify({ graphConfigs: { '': 'hash-base' } }); + const latestContents = JSON.stringify({ version: 'v1', engineConfig: {} }); + const featureFlagContents = JSON.stringify({ version: 'v1', engineConfig: { featureFlag: true } }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + buffer: Buffer.from(mapperContents), + metadata: { version: 'v1', 'signature-sha256': 'sig-mapper' }, + }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/manifest/latest.json`, { + buffer: Buffer.from(latestContents), + metadata: { version: 'v1' }, + }); + + blobStorage.objects.set(`${organizationId}/${federatedGraphId}/manifest/feature-flags/my-flag.json`, { + buffer: Buffer.from(featureFlagContents), + metadata: { version: 'v1' }, + }); + + const app = new Hono(); + + cdn(app, { + authJwtSecret: secretKey, + authAdmissionJwtSecret: secretAdmissionKey, + blobStorage, + }); + + describe('feature gate authorization', () => { + test('returns 403 when features claim is missing from JWT', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenNoFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(403); + }); + + test('returns 403 when features claim does not include split-config-loading', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWrongFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(403); + }); + + test('returns 403 for latest.json without feature', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/latest.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenNoFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(403); + }); + + test('returns 403 for feature-flags without feature', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/feature-flags/my-flag.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenNoFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(403); + }); + }); + + describe('JWT authentication', () => { + test('returns 401 with no token', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + }); + expect(res.status).toBe(401); + }); + + test('returns 401 with invalid token', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature.slice(0, -1)}}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(401); + }); + + test('returns 401 with expired token', async () => { + const expiredToken = await new SignJWT({ + organization_id: organizationId, + federated_graph_id: federatedGraphId, + features: ['split-config-loading'], + exp: Math.floor(Date.now() / 1000) - 60, + }) + .setProtectedHeader({ alg: 'HS256' }) + .sign(new TextEncoder().encode(secretKey)); + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${expiredToken}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(401); + }); + }); + + describe('mapper.json', () => { + test('returns mapper blob content with correct headers', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(200); + expect(res.headers.get('Content-Type')).toBe('application/json; charset=UTF-8'); + expect(res.headers.get(signatureSha256Header)).toBe('sig-mapper'); + expect(await res.text()).toBe(mapperContents); + }); + + test('returns 304 when version matches', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: 'v1' }), + }); + expect(res.status).toBe(304); + }); + + test('returns 404 when blob does not exist', async () => { + const emptyStorage = new InMemoryBlobStorage(); + const otherApp = new Hono(); + cdn(otherApp, { + authJwtSecret: secretKey, + authAdmissionJwtSecret: secretAdmissionKey, + blobStorage: emptyStorage, + }); + + const res = await otherApp.request(`/${organizationId}/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(404); + }); + + test('returns 400 when org/graph ID mismatch', async () => { + const res = await app.request(`/wrong-org/${federatedGraphId}/manifest/mapper.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(400); + }); + }); + + describe('latest.json', () => { + test('returns latest manifest blob content', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/latest.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(200); + expect(res.headers.get('Content-Type')).toBe('application/json; charset=UTF-8'); + expect(await res.text()).toBe(latestContents); + }); + + test('returns 304 when version matches', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/latest.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: 'v1' }), + }); + expect(res.status).toBe(304); + }); + + test('returns 404 when blob does not exist', async () => { + const emptyStorage = new InMemoryBlobStorage(); + const otherApp = new Hono(); + cdn(otherApp, { + authJwtSecret: secretKey, + authAdmissionJwtSecret: secretAdmissionKey, + blobStorage: emptyStorage, + }); + + const res = await otherApp.request(`/${organizationId}/${federatedGraphId}/manifest/latest.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(404); + }); + }); + + describe('feature-flags/:name.json', () => { + test('returns feature flag blob content', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/feature-flags/my-flag.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }); + expect(res.status).toBe(200); + expect(res.headers.get('Content-Type')).toBe('application/json; charset=UTF-8'); + expect(await res.text()).toBe(featureFlagContents); + }); + + test('returns 304 when version matches', async () => { + const res = await app.request(`/${organizationId}/${federatedGraphId}/manifest/feature-flags/my-flag.json`, { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: 'v1' }), + }); + expect(res.status).toBe(304); + }); + + test('returns 404 when blob does not exist', async () => { + const res = await app.request( + `/${organizationId}/${federatedGraphId}/manifest/feature-flags/nonexistent.json`, + { + method: 'POST', + headers: { Authorization: `Bearer ${tokenWithFeature}` }, + body: JSON.stringify({ version: '' }), + }, + ); + expect(res.status).toBe(404); + }); + }); + }); }); diff --git a/cdn-server/package.json b/cdn-server/package.json index 6ff46fb50a..2f093f50b8 100644 --- a/cdn-server/package.json +++ b/cdn-server/package.json @@ -1,6 +1,6 @@ { "name": "cdn", - "version": "0.17.0", + "version": "0.21.0", "private": true, "author": { "name": "WunderGraph Maintainers", @@ -24,16 +24,16 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.996.0", - "@hono/node-server": "1.13.7", + "@hono/node-server": "1.19.13", "@wundergraph/cosmo-cdn": "workspace:*", - "dotenv": "^16.4.5", - "hono": "4.10.6" + "dotenv": "catalog:", + "hono": "catalog:" }, "devDependencies": { - "@types/node": "^20.9.0", - "eslint": "^8.57.1", - "eslint-config-unjs": "^0.2.1", - "tsx": "^4.16.0", - "typescript": "5.5.2" + "@types/node": "catalog:", + "eslint": "catalog:", + "eslint-config-unjs": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:" } } diff --git a/cdn-server/src/s3.ts b/cdn-server/src/s3.ts index 8c3db88334..81635e78d2 100644 --- a/cdn-server/src/s3.ts +++ b/cdn-server/src/s3.ts @@ -49,15 +49,7 @@ class S3BlobStorage implements BlobStorage { } } - async headObject({ - context, - key, - schemaVersionId, - }: { - context: Context; - key: string; - schemaVersionId: string; - }): Promise { + async headObject({ context, key, version }: { context: Context; key: string; version: string }): Promise { const command = new HeadObjectCommand({ Bucket: this.bucketName, Key: key, @@ -72,7 +64,7 @@ class S3BlobStorage implements BlobStorage { } else if (resp.$metadata.httpStatusCode !== 200) { throw new Error(`Failed to fetch the metadata of the object.`); } - if (resp.Metadata && resp.Metadata.version === schemaVersionId) { + if (resp.Metadata && resp.Metadata.version === version) { return false; } return true; diff --git a/cli/.env.example b/cli/.env.example index 7fc1e246d0..6254d8be5c 100644 --- a/cli/.env.example +++ b/cli/.env.example @@ -1,7 +1,10 @@ COSMO_API_KEY=cosmo_669b576aaadc10ee1ae81d9193425705 COSMO_API_URL=http://localhost:3001 CDN_URL=http://localhost:11000 -PLUGIN_REGISTRY_URL= +PLUGIN_REGISTRY_URL=host.docker.internal:5050 +PLUGIN_REGISTRY_INSECURE=true +DEFAULT_TELEMETRY_ENDPOINT=http://localhost:4318 +GRAPHQL_METRICS_COLLECTOR_ENDPOINT=http://localhost:4005 # configure running wgc behind a proxy # HTTPS_PROXY="" diff --git a/cli/.eslintignore b/cli/.eslintignore index b1ae25de7e..f5aae97d7c 100644 --- a/cli/.eslintignore +++ b/cli/.eslintignore @@ -1,4 +1,4 @@ dist .output -node-modules -gen \ No newline at end of file +node_modules +gen diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index c7734b7295..e4fb9674cb 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -4,6 +4,138 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.122.0](https://github.com/wundergraph/cosmo/compare/wgc@0.121.3...wgc@0.122.0) (2026-06-06) + +### Features + +* **cli:** add subgraph batch-publish command ([#2899](https://github.com/wundergraph/cosmo/issues/2899)) ([9361a30](https://github.com/wundergraph/cosmo/commit/9361a3073dc207ae9bfb5b9661108c09b42028c8)) (@thisisnithin) + +## [0.121.3](https://github.com/wundergraph/cosmo/compare/wgc@0.121.2...wgc@0.121.3) (2026-06-01) + +**Note:** Version bump only for package wgc + +## [0.121.2](https://github.com/wundergraph/cosmo/compare/wgc@0.121.1...wgc@0.121.2) (2026-05-29) + +**Note:** Version bump only for package wgc + +## [0.121.1](https://github.com/wundergraph/cosmo/compare/wgc@0.121.0...wgc@0.121.1) (2026-05-27) + +**Note:** Version bump only for package wgc + +# [0.121.0](https://github.com/wundergraph/cosmo/compare/wgc@0.120.0...wgc@0.121.0) (2026-05-27) + +### Features + +* studio handles analytics downtime gracefully ([#2878](https://github.com/wundergraph/cosmo/issues/2878)) ([716b786](https://github.com/wundergraph/cosmo/commit/716b786bd55008292015ec8950182aa61e98cb16)) (@comatory) + +# [0.120.0](https://github.com/wundergraph/cosmo/compare/wgc@0.118.1...wgc@0.120.0) (2026-05-18) + +### Features + +* local cosmo cloud registry ([#2778](https://github.com/wundergraph/cosmo/issues/2778)) ([3dc95e7](https://github.com/wundergraph/cosmo/commit/3dc95e7a539e1326ad526698d4c7d39ff12b6df8)) (@) + +# [0.119.0](https://github.com/wundergraph/cosmo/compare/wgc@0.118.1...wgc@0.119.0) (2026-05-18) + +### Features + +* local cosmo cloud registry ([#2778](https://github.com/wundergraph/cosmo/issues/2778)) ([3dc95e7](https://github.com/wundergraph/cosmo/commit/3dc95e7a539e1326ad526698d4c7d39ff12b6df8)) (@comatory) + +## [0.118.1](https://github.com/wundergraph/cosmo/compare/wgc@0.118.0...wgc@0.118.1) (2026-05-14) + +### Bug Fixes + +* exit with code 1 on proposal match failure during subgraph publish ([#2855](https://github.com/wundergraph/cosmo/issues/2855)) ([f5b67a5](https://github.com/wundergraph/cosmo/commit/f5b67a58eb700b5aef32fe6e8f929feffbf6edfe)) (@JivusAyrus) + +# [0.118.0](https://github.com/wundergraph/cosmo/compare/wgc@0.117.3...wgc@0.118.0) (2026-05-12) + +### Features + +* add feature flag recomposition support ([#2853](https://github.com/wundergraph/cosmo/issues/2853)) ([3f125a2](https://github.com/wundergraph/cosmo/commit/3f125a2effce36a1a2040f219bc1aa5a872aab93)) (@wilsonrivera) + +## [0.117.3](https://github.com/wundergraph/cosmo/compare/wgc@0.117.2...wgc@0.117.3) (2026-05-07) + +**Note:** Version bump only for package wgc + +## [0.117.2](https://github.com/wundergraph/cosmo/compare/wgc@0.117.1...wgc@0.117.2) (2026-05-01) + +**Note:** Version bump only for package wgc + +## [0.117.1](https://github.com/wundergraph/cosmo/compare/wgc@0.117.0...wgc@0.117.1) (2026-05-01) + +**Note:** Version bump only for package wgc + +# [0.117.0](https://github.com/wundergraph/cosmo/compare/wgc@0.116.0...wgc@0.117.0) (2026-04-30) + +### Bug Fixes + +* drop NodeJS 20 support ([#2805](https://github.com/wundergraph/cosmo/issues/2805)) ([7a61b3c](https://github.com/wundergraph/cosmo/commit/7a61b3c1be86566847d2baa39d7b30cd2c0e6d32)) (@comatory) + +### Features + +* onboarding wizard ([#2790](https://github.com/wundergraph/cosmo/issues/2790)) ([3227519](https://github.com/wundergraph/cosmo/commit/3227519b3cc7b2dbc163856967bfe36cebf81887)) (@comatory) + +# [0.116.0](https://github.com/wundergraph/cosmo/compare/wgc@0.115.1...wgc@0.116.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) + +## [0.115.1](https://github.com/wundergraph/cosmo/compare/wgc@0.115.0...wgc@0.115.1) (2026-04-27) + +### Bug Fixes + +* remediate several vulnerabilities ([#2787](https://github.com/wundergraph/cosmo/issues/2787)) ([fdd035b](https://github.com/wundergraph/cosmo/commit/fdd035b8bfd491a45e00e2b60e9c28b695b64f48)) (@pepol) + +# [0.115.0](https://github.com/wundergraph/cosmo/compare/wgc@0.114.2...wgc@0.115.0) (2026-04-24) + +### Features + +* update `lodash` and `lodash-es` ([#2780](https://github.com/wundergraph/cosmo/issues/2780)) ([bbf1e38](https://github.com/wundergraph/cosmo/commit/bbf1e38b3a346363fe742801f2982dbafb267454)) (@wilsonrivera) + +## [0.114.2](https://github.com/wundergraph/cosmo/compare/wgc@0.114.1...wgc@0.114.2) (2026-04-17) + +### Bug Fixes + +* create the config directory only after checking for DISABLE_UPDATE_CHECK ([#2773](https://github.com/wundergraph/cosmo/issues/2773)) ([c7beb72](https://github.com/wundergraph/cosmo/commit/c7beb7286fc823fa9dd39c835d1e621f438d84bd)) (@JivusAyrus) + +## [0.114.1](https://github.com/wundergraph/cosmo/compare/wgc@0.114.0...wgc@0.114.1) (2026-04-16) + +**Note:** Version bump only for package wgc + +# [0.114.0](https://github.com/wundergraph/cosmo/compare/wgc@0.113.0...wgc@0.114.0) (2026-04-15) + +### Features + +* use email as main tracking field ([#2700](https://github.com/wundergraph/cosmo/issues/2700)) ([23fc31d](https://github.com/wundergraph/cosmo/commit/23fc31dd11c94fb242e6cec7b820b806a88d4cb6)) (@alepane21) + +# [0.113.0](https://github.com/wundergraph/cosmo/compare/wgc@0.112.7...wgc@0.113.0) (2026-04-14) + +### Features + +* update packages to address high severity vulnerabilities ([#2757](https://github.com/wundergraph/cosmo/issues/2757)) ([e14c41b](https://github.com/wundergraph/cosmo/commit/e14c41bfac517c6f1ea7d9d00e85bbbdff29b4e0)) (@pepol) + +## [0.112.7](https://github.com/wundergraph/cosmo/compare/wgc@0.112.6...wgc@0.112.7) (2026-04-02) + +**Note:** Version bump only for package wgc + +## [0.112.6](https://github.com/wundergraph/cosmo/compare/wgc@0.112.5...wgc@0.112.6) (2026-04-01) + +**Note:** Version bump only for package wgc + +## [0.112.5](https://github.com/wundergraph/cosmo/compare/wgc@0.112.4...wgc@0.112.5) (2026-03-27) + +**Note:** Version bump only for package wgc + +## [0.112.4](https://github.com/wundergraph/cosmo/compare/wgc@0.112.3...wgc@0.112.4) (2026-03-26) + +### Bug Fixes + +* **cli:** improve error output for protographic generation errors ([#2687](https://github.com/wundergraph/cosmo/issues/2687)) ([dcd4e0a](https://github.com/wundergraph/cosmo/commit/dcd4e0aeb04dc23f11a46c653fbcc3669fd67086)) (@Noroth) + +## [0.112.3](https://github.com/wundergraph/cosmo/compare/wgc@0.112.2...wgc@0.112.3) (2026-03-24) + +**Note:** Version bump only for package wgc + ## [0.112.2](https://github.com/wundergraph/cosmo/compare/wgc@0.112.1...wgc@0.112.2) (2026-03-20) ### Bug Fixes diff --git a/cli/README.md b/cli/README.md index ab9ce176cf..bf3dd04770 100644 --- a/cli/README.md +++ b/cli/README.md @@ -37,7 +37,7 @@ Whether you're building monolithic or federated GraphQL architectures, `wgc` pro ### Prerequisites -- [Node.js](https://nodejs.org/) v20 LTS or higher +- [Node.js](https://nodejs.org/) v22+ (>=22.11.0) ### Install via npm diff --git a/cli/package.json b/cli/package.json index c98a17b00c..e83e3879b6 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "wgc", - "version": "0.112.2", + "version": "0.122.0", "description": "The official CLI tool to manage the GraphQL Federation Platform Cosmo", "type": "module", "main": "dist/src/index.js", @@ -41,35 +41,35 @@ ], "license": "Apache-2.0", "dependencies": { - "@bufbuild/protobuf": "1.9.0", - "@connectrpc/connect": "1.4.0", - "@connectrpc/connect-node": "1.4.0", - "@graphql-tools/utils": "11.0.0", + "@bufbuild/protobuf": "catalog:", + "@connectrpc/connect": "catalog:", + "@connectrpc/connect-node": "catalog:", + "@graphql-tools/utils": "catalog:", "@modelcontextprotocol/sdk": "1.26.0", "@octokit/rest": "22.0.0", "@wundergraph/composition": "workspace:*", "@wundergraph/cosmo-connect": "workspace:*", "@wundergraph/cosmo-shared": "workspace:*", "@wundergraph/protographic": "workspace:*", - "ajv": "8.17.1", - "axios": "1.13.5", + "ajv": "8.18.0", + "axios": "catalog:", "boxen": "7.1.1", "cli-progress": "3.12.0", "cli-table3": "0.6.3", "commander": "11.1.0", - "date-fns": "3.6.0", + "date-fns": "catalog:", "decompress": "4.2.1", - "dotenv": "16.6.0", + "dotenv": "catalog:", "env-ci": "11.1.0", "env-paths": "3.0.0", "execa": "9.5.2", "fs-extra": "11.3.0", - "graphql": "16.9.0", + "graphql": "catalog:", "https-proxy-agent": "7.0.5", "inquirer": "9.2.7", "js-yaml": "4.1.1", "jwt-decode": "3.1.2", - "lodash-es": "4.17.21", + "lodash-es": "catalog:", "log-symbols": "5.1.0", "octokit": "4.1.3", "open": "9.1.0", @@ -82,8 +82,8 @@ "semver": "7.7.1", "tar": "7.5.11", "trieve-ts-sdk": "0.0.80", - "undici": "6.21.2", - "zod": "^3.25.0" + "undici": "6.24.0", + "zod": "catalog:" }, "devDependencies": { "@types/bun": "1.2.3", @@ -94,18 +94,18 @@ "@types/fs-extra": "11.0.4", "@types/inquirer": "9.0.3", "@types/js-yaml": "4.0.5", - "@types/lodash-es": "4.17.12", - "@types/node": "20.12.12", + "@types/lodash-es": "catalog:", + "@types/node": "catalog:", "@types/prompts": "2.4.9", "@types/semver": "7.7.0", - "@vitest/coverage-v8": "3.2.4", - "del-cli": "5.0.0", - "eslint": "8.57.1", - "eslint-config-unjs": "0.2.1", - "eslint-plugin-require-extensions": "0.1.3", - "tsx": "4.19.4", - "typescript": "5.5.2", - "vitest": "3.2.4" + "@vitest/coverage-v8": "catalog:", + "del-cli": "catalog:", + "eslint": "catalog:", + "eslint-config-unjs": "catalog:", + "eslint-plugin-require-extensions": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" }, "gitHead": "c37aed755e1b19ed91d30f9b5f7041e15c56901a" } diff --git a/cli/src/commands/demo/api.ts b/cli/src/commands/demo/api.ts new file mode 100644 index 0000000000..395f804d46 --- /dev/null +++ b/cli/src/commands/demo/api.ts @@ -0,0 +1,205 @@ +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import type { FederatedGraph, Subgraph } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import type { BaseCommandOptions } from '../../core/types/types.js'; +import { getBaseHeaders } from '../../core/config.js'; + +/** + * Retrieve user information [email] and [organization name] + */ +export async function fetchUserInfo(client: BaseCommandOptions['client']) { + try { + const response = await client.platform.whoAmI( + {}, + { + headers: getBaseHeaders(), + }, + ); + + switch (response.response?.code) { + case EnumStatusCode.OK: { + return { + userInfo: response, + error: null, + }; + } + default: { + return { + userInfo: null, + error: new Error(response.response?.details ?? 'An unknown error occurred.'), + }; + } + } + } catch (err) { + return { + userInfo: null, + error: err instanceof Error ? err : new Error('An unknown error occurred.'), + }; + } +} + +/** + * Retrieve onboarding record. Provides information about allowed [status]: + * [error] | [not-allowed] | [ok] + * If record exists, returns [onboarding] metadata. + */ +export async function checkExistingOnboarding(client: BaseCommandOptions['client']) { + const { response, finishedAt, enabled } = await client.platform.getOnboarding( + {}, + { + headers: getBaseHeaders(), + }, + ); + + if (response?.code !== EnumStatusCode.OK) { + return { + error: new Error(response?.details ?? 'Failed to fetch onboarding metadata.'), + status: 'error', + } as const; + } + + if (!enabled) { + return { + status: 'not-allowed', + } as const; + } + + return { + onboarding: { + finishedAt, + }, + status: 'ok', + } as const; +} + +/** + * Retrieves federated graph by [name] *demo*. Missing federated graph + * is a valid state. + */ +export async function fetchFederatedGraphByName( + client: BaseCommandOptions['client'], + { name, namespace }: { name: string; namespace: string }, +) { + const { response, graph, subgraphs } = await client.platform.getFederatedGraphByName( + { + name, + namespace, + }, + { + headers: getBaseHeaders(), + }, + ); + + switch (response?.code) { + case EnumStatusCode.OK: { + return { data: { graph, subgraphs }, error: null }; + } + case EnumStatusCode.ERR_NOT_FOUND: { + return { data: null, error: null }; + } + default: { + return { + data: null, + error: new Error(response?.details ?? 'An unknown error occured'), + }; + } + } +} + +/** + * Cleans up the federated graph by [name] _demo_ and its related + * subgraphs. + */ +export async function cleanUpFederatedGraph( + client: BaseCommandOptions['client'], + graphData: { + graph: FederatedGraph; + subgraphs: Subgraph[]; + }, +) { + const subgraphDeleteResponses = await Promise.all( + graphData.subgraphs.map(({ name, namespace }) => + client.platform.deleteFederatedSubgraph( + { + namespace, + subgraphName: name, + disableResolvabilityValidation: false, + }, + { + headers: getBaseHeaders(), + }, + ), + ), + ); + + const failedSubgraphDeleteResponses = subgraphDeleteResponses.filter( + ({ response }) => response?.code !== EnumStatusCode.OK, + ); + + if (failedSubgraphDeleteResponses.length > 0) { + return { + error: new Error( + failedSubgraphDeleteResponses.map(({ response }) => response?.details ?? 'Unknown error occurred.').join('. '), + ), + }; + } + + const federatedGraphDeleteResponse = await client.platform.deleteFederatedGraph( + { + name: graphData.graph.name, + namespace: graphData.graph.namespace, + }, + { + headers: getBaseHeaders(), + }, + ); + + switch (federatedGraphDeleteResponse.response?.code) { + case EnumStatusCode.OK: { + return { + error: null, + }; + } + default: { + return { + error: new Error(federatedGraphDeleteResponse.response?.details ?? 'Unknown error occurred.'), + }; + } + } +} + +/** + * Creates federated graph using default [name] and [namespace], with pre-defined + * [labelMatcher] which identify the graph as _demo_. + */ +export async function createFederatedGraph( + client: BaseCommandOptions['client'], + options: { + name: string; + namespace: string; + labelMatcher: string; + routingUrl: URL; + }, +) { + const createFedGraphResponse = await client.platform.createFederatedGraph( + { + name: options.name, + namespace: options.namespace, + routingUrl: options.routingUrl.toString(), + labelMatchers: [options.labelMatcher], + }, + { + headers: getBaseHeaders(), + }, + ); + + switch (createFedGraphResponse.response?.code) { + case EnumStatusCode.OK: { + return { error: null }; + } + default: { + return { + error: new Error(createFedGraphResponse.response?.details ?? 'An unknown error occured'), + }; + } + } +} diff --git a/cli/src/commands/demo/command.ts b/cli/src/commands/demo/command.ts new file mode 100644 index 0000000000..befff2c3ac --- /dev/null +++ b/cli/src/commands/demo/command.ts @@ -0,0 +1,592 @@ +import pc from 'picocolors'; +import { program } from 'commander'; +import open from 'open'; +import type { FederatedGraph, Subgraph, WhoAmIResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { config } from '../../core/config.js'; +import { createRouterToken, deleteRouterToken } from '../../core/router-token.js'; +import { BaseCommandOptions } from '../../core/types/types.js'; +import { waitForKeyPress, rainbow } from '../../utils.js'; +import type { UserInfo } from './types.js'; +import { + cleanUpFederatedGraph, + createFederatedGraph, + fetchFederatedGraphByName, + fetchUserInfo, + checkExistingOnboarding, +} from './api.js'; +import { + captureOnboardingEvent, + checkDockerReadiness, + clearScreen, + getDemoLogPath, + prepareSupportingData, + printLogo, + publishAllPlugins, + resetScreen, + runRouterContainer, + updateScreenWithUserInfo, + demoSpinner, +} from './util.js'; + +function printHello() { + printLogo(); + console.log( + `\nThank you for choosing ${rainbow('WunderGraph')} - The open-source solution to building, maintaining, and collaborating on GraphQL Federation at Scale.`, + ); + console.log('This command will guide you through the inital setup to create your first federated graph.'); +} + +async function handleGetFederatedGraphResponse( + client: BaseCommandOptions['client'], + { + onboarding, + userInfo, + }: { + onboarding: { + finishedAt?: string; + }; + userInfo: UserInfo; + }, +) { + function retryFn() { + resetScreen(userInfo); + return handleGetFederatedGraphResponse(client, { + onboarding, + userInfo, + }); + } + + const spinner = demoSpinner().start(); + const getFederatedGraphResponse = await fetchFederatedGraphByName(client, { + name: config.demoGraphName, + namespace: config.demoNamespace, + }); + + if (getFederatedGraphResponse.error) { + spinner.fail(`Failed to retrieve graph information ${getFederatedGraphResponse.error}`); + return await waitForKeyPress( + { + r: retryFn, + R: retryFn, + }, + 'Hit [r] to refresh. CTRL+C to quit', + ); + } + + if (getFederatedGraphResponse.data?.graph) { + spinner.succeed(`Federated graph ${pc.bold(getFederatedGraphResponse.data?.graph?.name)} exists.`); + } else { + spinner.stop(); + } + + return getFederatedGraphResponse.data; +} + +async function cleanupFederatedGraph( + client: BaseCommandOptions['client'], + { + graphData, + userInfo, + }: { + graphData: { + graph: FederatedGraph; + subgraphs: Subgraph[]; + }; + userInfo: UserInfo; + }, +) { + let deleted = false; + + function retryFn() { + resetScreen(userInfo); + cleanupFederatedGraph(client, { graphData, userInfo }); + } + + const spinner = demoSpinner(`Removing federated graph ${pc.bold(graphData.graph.name)}…`).start(); + const deleteResponse = await cleanUpFederatedGraph(client, graphData); + + if (deleteResponse.error) { + deleted = false; + const failText = `Removing federated graph ${graphData.graph.name} failed.`; + spinner.fail(failText); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'delete_federated_graph', + entry_source: 'wgc', + error_category: 'resource', + error_message: `${failText}\n${deleteResponse.error.message}`, + }, + }); + console.error(deleteResponse.error.message); + + return await waitForKeyPress( + { + Enter: () => undefined, + r: retryFn, + R: retryFn, + }, + `Failed to delete the federated graph ${pc.bold(graphData.graph.name)}. [ENTER] to continue, [r] to retry. CTRL+C to quit.`, + ); + } else { + deleted = true; + } + + if (deleted) { + spinner.succeed(`Federated graph ${pc.bold(graphData.graph.name)} removed.`); + captureOnboardingEvent({ + name: 'onboarding_step_completed', + properties: { + step_name: 'delete_federated_graph', + entry_source: 'wgc', + }, + }); + } +} + +async function handleCreateFederatedGraphResponse( + client: BaseCommandOptions['client'], + { + onboarding, + userInfo, + }: { + onboarding: { + finishedAt?: string; + }; + userInfo: UserInfo; + }, +) { + function retryFn() { + resetScreen(userInfo); + handleCreateFederatedGraphResponse(client, { onboarding, userInfo }); + } + + const routingUrl = new URL('graphql', 'http://localhost'); + routingUrl.port = String(config.demoRouterPort); + + const federatedGraphSpinner = demoSpinner().start(); + const createGraphResponse = await createFederatedGraph(client, { + name: config.demoGraphName, + namespace: config.demoNamespace, + labelMatcher: config.demoLabelMatcher, + routingUrl, + }); + + if (createGraphResponse.error) { + federatedGraphSpinner.fail(createGraphResponse.error.message); + + await waitForKeyPress( + { + r: retryFn, + R: retryFn, + }, + 'Hit [r] to refresh. CTRL+C to quit', + ); + return; + } + + federatedGraphSpinner.succeed(`Federated graph ${pc.bold('demo')} succesfully created.`); +} + +async function handleStep2( + opts: BaseCommandOptions, + { + onboarding, + userInfo, + supportDir, + signal, + logPath, + }: { + onboarding: { finishedAt?: string }; + userInfo: UserInfo; + supportDir: string; + signal: AbortSignal; + logPath: string; + }, +) { + function retryFn() { + resetScreen(userInfo); + return handleStep2(opts, { onboarding, userInfo, supportDir, signal, logPath }); + } + + async function publishPlugins() { + console.log(`\nPublishing plugins… ${pc.dim(`(logs: ${logPath})`)}`); + + const publishResult = await publishAllPlugins({ + client: opts.client, + supportDir, + signal, + logPath, + }); + + if (publishResult.error) { + await waitForKeyPress( + { + r: retryFn, + R: retryFn, + }, + 'Hit [r] to retry. CTRL+C to quit.', + ); + } + } + + const graphData = await handleGetFederatedGraphResponse(opts.client, { + onboarding, + userInfo, + }); + + const graph = graphData?.graph; + const subgraphs = graphData?.subgraphs ?? []; + if (graph) { + let deleted = false; + const cleanupFn = async () => { + await cleanupFederatedGraph(opts.client, { + graphData: { graph, subgraphs }, + userInfo, + }); + deleted = true; + }; + await waitForKeyPress( + { + Enter: () => undefined, + d: cleanupFn, + D: cleanupFn, + }, + 'Hit [ENTER] to continue or [d] to delete the federated graph and its subgraphs to start over. CTRL+C to quit.', + ); + if (deleted) { + console.log(pc.yellow('\nPlease restart the demo command to continue.\n')); + process.exit(0); + } + await publishPlugins(); + return { routingUrl: graph.routingURL }; + } + + await handleCreateFederatedGraphResponse(opts.client, { + onboarding, + userInfo, + }); + + const routingUrl = new URL('graphql', 'http://localhost'); + routingUrl.port = String(config.demoRouterPort); + + await publishPlugins(); + + return { routingUrl: routingUrl.toString() }; +} + +async function handleStep3( + opts: BaseCommandOptions, + { + userInfo, + routerBaseUrl, + signal, + logPath, + }: { + userInfo: UserInfo; + routerBaseUrl: string; + signal: AbortSignal; + logPath: string; + }, +) { + let firedQueries = 0; + + function retryFn() { + firedQueries = 0; + resetScreen(userInfo); + return handleStep3(opts, { userInfo, routerBaseUrl, signal, logPath }); + } + + const tokenParams = { + client: opts.client, + tokenName: config.demoRouterTokenName, + graphName: config.demoGraphName, + namespace: config.demoNamespace, + }; + + // Delete existing token first (idempotent — no error if missing) + const deleteResult = await deleteRouterToken(tokenParams); + if (deleteResult.error) { + const errorText = `Failed to clean up existing router token: ${deleteResult.error.message}`; + console.error(errorText); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: errorText, + }, + }); + await waitForKeyPress({ r: retryFn, R: retryFn }, 'Hit [r] to retry. CTRL+C to quit.'); + return; + } + + const spinner = demoSpinner('Generating router token…').start(); + const createResult = await createRouterToken(tokenParams); + + if (createResult.error) { + const failText = `Failed to generate router token: ${createResult.error.message}`; + spinner.fail(failText); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: failText, + }, + }); + await waitForKeyPress({ r: retryFn, R: retryFn }, 'Hit [r] to retry. CTRL+C to quit.'); + return; + } + + spinner.succeed('Router token generated.'); + console.log(` ${pc.bold(createResult.token)}`); + + const sampleQuery = JSON.stringify({ + query: `query GetProductWithReviews($id: ID!) { product(id: $id) { id title price { currency amount } reviews { id author rating contents } } }`, + variables: { id: 'product-1' }, + }); + + async function fireSampleQuery() { + const querySpinner = demoSpinner('Sending sample query…').start(); + try { + const res = await fetch(`${routerBaseUrl}/graphql`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'GraphQL-Client-Name': 'wgc', + }, + body: sampleQuery, + }); + const body = await res.json(); + querySpinner.succeed('Sample query response:'); + console.log(pc.dim(JSON.stringify(body, null, 2))); + + if (firedQueries === 0) { + captureOnboardingEvent({ + name: 'onboarding_step_completed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + }, + }); + } + + firedQueries++; + } catch (err) { + const failText = `Sample query failed: ${err instanceof Error ? err.message : String(err)}`; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: failText, + }, + }); + querySpinner.fail(failText); + } + showQueryPrompt(); + } + + function showQueryPrompt() { + waitForKeyPress( + { r: fireSampleQuery, R: fireSampleQuery }, + 'Hit [r] to send a sample query. CTRL+C to stop the router.', + ); + } + + const routerResult = await runRouterContainer({ + routerToken: createResult.token!, + routerBaseUrl, + signal, + logPath, + }); + + if (routerResult.error) { + const errorText = `Router exited with error: ${routerResult.error.message}`; + console.error(`\n${errorText}`); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: errorText, + }, + }); + await waitForKeyPress({ r: retryFn, R: retryFn }, 'Hit [r] to retry. CTRL+C to quit.'); + } else { + showQueryPrompt(); + } +} + +async function handleGetOnboardingResponse(client: BaseCommandOptions['client'], userInfo: UserInfo) { + const onboardingCheck = await checkExistingOnboarding(client); + + async function retryFn() { + return await handleGetOnboardingResponse(client, userInfo); + } + + switch (onboardingCheck.status) { + case 'ok': { + return onboardingCheck.onboarding; + } + case 'not-allowed': { + const errorText = 'Only organization owners can trigger onboarding.'; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'check_onboarding', + entry_source: 'wgc', + error_category: 'resource', + error_message: errorText, + }, + }); + program.error(errorText); + + break; + } + case 'error': { + const errorText = 'An issue occured while fetching the onboarding status'; + console.error(errorText); + console.error(onboardingCheck.error); + + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'check_onboarding', + entry_source: 'wgc', + error_category: 'resource', + error_message: `${errorText}\n${onboardingCheck.error}`, + }, + }); + + await waitForKeyPress({ Enter: retryFn }, 'Hit Enter to retry. CTRL+C to quit.'); + break; + } + default: { + program.error('Invariant'); + } + } +} + +async function handleStep1(opts: BaseCommandOptions, userInfo: UserInfo) { + return await handleGetOnboardingResponse(opts.client, userInfo); +} + +async function getUserInfo(client: BaseCommandOptions['client']) { + const spinner = demoSpinner('Retrieving information about you…').start(); + const { userInfo, error } = await fetchUserInfo(client); + + if (error) { + spinner.fail(error.message); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'resource', + error_message: error.message, + }, + }); + program.error(error.message); + } else if (!userInfo) { + spinner.fail('Could not retrieve information about your account.'); + program.error('Failed to retrieve user information.'); + } + + spinner.succeed( + `You are signed in as ${pc.bold(userInfo.userEmail)} in organization ${pc.bold(userInfo.organizationName)}.`, + ); + + return userInfo; +} + +export default function (opts: BaseCommandOptions) { + return async function handleCommand() { + const controller = new AbortController(); + + try { + clearScreen(); + printHello(); + const supportDir = await prepareSupportingData(); + await checkDockerReadiness(); + const userInfo = await getUserInfo(opts.client); + updateScreenWithUserInfo(userInfo); + + const onboardingUrl = new URL('/onboarding', config.webURL); + + async function openOnboardingUrl() { + const browserUrl = new URL(onboardingUrl); + browserUrl.searchParams.set('referrer', 'wgc'); + const process = await open(browserUrl.toString()); + process.on('error', (error) => { + console.log(pc.yellow(`\nCouldn't open browser: ${error.message}`)); + }); + } + + await waitForKeyPress( + { + Enter: () => undefined, + s: { callback: openOnboardingUrl, persistent: true }, + S: { callback: openOnboardingUrl, persistent: true }, + }, + `It is recommended you run this command along the onboarding wizard at ${onboardingUrl} with the same account.\nPress [s] to open it in your browser, or [ENTER] to continue…`, + ); + + resetScreen(userInfo); + + captureOnboardingEvent({ + name: 'onboarding_step_completed', + properties: { + step_name: 'init', + entry_source: 'wgc', + }, + }); + + const onboardingCheck = await handleStep1(opts, userInfo); + + if (!onboardingCheck) { + return; + } + + captureOnboardingEvent({ + name: 'onboarding_step_completed', + properties: { + step_name: 'check_onboarding', + entry_source: 'wgc', + }, + }); + + const logPath = getDemoLogPath(); + + const step2Result = await handleStep2(opts, { + onboarding: onboardingCheck, + userInfo, + supportDir, + signal: controller.signal, + logPath, + }); + + if (!step2Result) { + return; + } + + captureOnboardingEvent({ + name: 'onboarding_step_completed', + properties: { + step_name: 'create_federated_graph', + entry_source: 'wgc', + }, + }); + + const routerBaseUrl = new URL(step2Result.routingUrl).origin; + await handleStep3(opts, { userInfo, routerBaseUrl, signal: controller.signal, logPath }); + } finally { + // no-op + } + }; +} diff --git a/cli/src/commands/demo/index.ts b/cli/src/commands/demo/index.ts new file mode 100644 index 0000000000..b7274246cb --- /dev/null +++ b/cli/src/commands/demo/index.ts @@ -0,0 +1,17 @@ +import { Command } from 'commander'; +import { BaseCommandOptions } from '../../core/types/types.js'; +import { checkAuth } from '../auth/utils.js'; +import demoCommandFactory from './command.js'; + +export default (opts: BaseCommandOptions) => { + const command = new Command('demo'); + command.description('Prepares demo federated graphs and facilitates onboarding'); + + command.hook('preAction', async () => { + await checkAuth(); + }); + + command.action(demoCommandFactory(opts)); + + return command; +}; diff --git a/cli/src/commands/demo/types.ts b/cli/src/commands/demo/types.ts new file mode 100644 index 0000000000..3cc47c4fc6 --- /dev/null +++ b/cli/src/commands/demo/types.ts @@ -0,0 +1,3 @@ +import type { WhoAmIResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; + +export type UserInfo = WhoAmIResponse; diff --git a/cli/src/commands/demo/util.ts b/cli/src/commands/demo/util.ts new file mode 100644 index 0000000000..5115853ff6 --- /dev/null +++ b/cli/src/commands/demo/util.ts @@ -0,0 +1,619 @@ +import fs from 'node:fs/promises'; +import { createWriteStream, existsSync, mkdirSync, type WriteStream } from 'node:fs'; +import path from 'node:path'; +import { program } from 'commander'; +import { execa, type ResultPromise } from 'execa'; +import ora from 'ora'; +import pc from 'picocolors'; +import { z } from 'zod'; +import { config, cacheDir } from '../../core/config.js'; +import { capture } from '../../core/telemetry.js'; +import { getDefaultPlatforms, publishPluginPipeline, readPluginFiles } from '../../core/plugin-publish.js'; +import type { BaseCommandOptions } from '../../core/types/types.js'; +import { visibleLength } from '../../utils.js'; +import type { UserInfo } from './types.js'; + +// TODO: ora defaults discardStdin to true which puts stdin into raw mode +// and restores it to cooked mode when the spinner stops. This conflicts +// with the demo command's own stdin management (enableRawModeWithCtrlC) +// causing CTRL+C to stop working between prompts. +export function demoSpinner(text?: string) { + return ora({ text, discardStdin: false }); +} + +/** + * Clears whole screen + */ +export function clearScreen() { + process.stdout.write('\u001Bc'); +} + +export function resetScreen(userInfo?: UserInfo) { + clearScreen(); + printLogo(userInfo); +} + +/** + * Fancy WG logo + */ +export function printLogo(userInfo?: UserInfo) { + const logoLines = [ + ' ▌ ▌', + '▌▌▌▌▌▛▌▛▌█▌▛▘▛▌▛▘▀▌▛▌▛▌', + '▚▚▘▙▌▌▌▙▌▙▖▌ ▙▌▌ █▌▙▌▌▌', + ' ▄▌ ▌', + ]; + + if (!userInfo) { + console.log(`\n${logoLines.join('\n')}\n`); + return; + } + + const termWidth = process.stdout.columns || 80; + const logoWidth = Math.max(...logoLines.map((l) => l.length)); + + const infoLines = [ + `${pc.dim('email:')} ${pc.bold(pc.white(userInfo.userEmail))}`, + `${pc.dim('organization:')} ${pc.bold(pc.white(userInfo.organizationName))}`, + ]; + + const infoVisibleWidths = infoLines.map((l) => visibleLength(l)); + const maxInfoWidth = Math.max(...infoVisibleWidths); + + // Minimum gap between logo and info + const gap = 4; + const totalNeeded = logoWidth + gap + maxInfoWidth; + + // Right-align info: compute left padding for each info line + const availableWidth = Math.max(termWidth, totalNeeded); + + const lines = logoLines.map((line, i) => { + if (i >= infoLines.length) { + return line; + } + const infoVisibleWidth = infoVisibleWidths[i]; + const padding = availableWidth - logoWidth - infoVisibleWidth; + return `${line.padEnd(logoWidth)}${' '.repeat(Math.max(gap, padding))}${infoLines[i]}`; + }); + + console.log(`\n${lines.join('\n')}\n`); +} + +function writeEscapeSequence(s: string) { + process.stdout.write(s); +} + +/** + * Updates the logo region at the top of the screen with userInfo + * without clearing the rest of the screen content. + */ +export function updateScreenWithUserInfo(userInfo: UserInfo) { + // Save cursor position, jump to top + writeEscapeSequence('\u001B7'); + writeEscapeSequence('\u001B[H'); + + // printLogo writes 6 visual lines: \n, 4 logo lines, \n + // Clear those lines and reprint with userInfo + // First clear the lines the logo occupies (1 blank + 4 logo + 1 blank = 6 lines) + for (let i = 0; i < 6; i++) { + writeEscapeSequence('\u001B[2K'); // erase line + if (i < 5) { + writeEscapeSequence('\u001B[B'); + } // move down + } + + // Move back to top + writeEscapeSequence('\u001B[H'); + + // Reprint logo with userInfo (printLogo uses console.log which writes to these lines) + printLogo(userInfo); + + // Restore cursor position + writeEscapeSequence('\u001B8'); +} + +const GitHubTreeSchema = z.object({ + tree: z.array( + z.object({ + type: z.string(), + path: z.string(), + }), + ), +}); + +/** + * Copies over support files (gRPC plugin data) from onboarding + * repository and stores them in the host filesystem [cacheDir] + * folder. + * @returns [directory] path which contains the support data + */ +export async function prepareSupportingData() { + const spinner = demoSpinner('Preparing supporting data…').start(); + + const cosmoDir = path.join(cacheDir, 'demo'); + await fs.mkdir(cosmoDir, { recursive: true }); + + const treeResponse = await fetch( + `https://api.github.com/repos/${config.demoOnboardingRepositoryName}/git/trees/${config.demoOnboardingRepositoryBranch}?recursive=1`, + ); + if (!treeResponse.ok) { + spinner.fail('Failed to fetch repository tree.'); + const errorText = `GitHub API error: ${treeResponse.statusText}`; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'support_files', + error_message: errorText, + }, + }); + program.error(errorText); + } + + const parsed = GitHubTreeSchema.safeParse(await treeResponse.json()); + if (!parsed.success) { + spinner.fail('Failed to parse repository tree.'); + const errorText = 'Unexpected response format from GitHub API. The repository structure may have changed.'; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'support_files', + error_message: errorText, + }, + }); + program.error(errorText); + } + + const files = parsed.data.tree.filter((entry) => entry.type === 'blob' && entry.path.startsWith('plugins/')); + + const results = await Promise.all( + files.map(async (file) => { + const rawUrl = `https://raw.githubusercontent.com/${config.demoOnboardingRepositoryName}/${config.demoOnboardingRepositoryBranch}/${file.path}`; + try { + const response = await fetch(rawUrl); + if (!response.ok) { + return { path: file.path, error: response.statusText }; + } + + const content = Buffer.from(await response.arrayBuffer()); + const destPath = path.join(cosmoDir, file.path); + await fs.mkdir(path.dirname(destPath), { recursive: true }); + await fs.writeFile(destPath, content); + + return { path: file.path, error: null }; + } catch (err) { + return { + path: file.path, + error: err instanceof Error ? err.message : String(err), + }; + } + }), + ); + + const failed = results.filter((r) => r.error !== null); + if (failed.length > 0) { + const failText = `Failed to fetch ${failed.length} support files.`; + const errorText = failed + .map((f) => { + const error = f.error.toLowerCase(); + const errorCode = error.includes('fetch') || error.includes('network') ? 'NETWORK_ERROR' : 'SUPPORT_FILE_ERROR'; + return ` ${path.basename(f.path)}: ${errorCode}`; + }) + .join('\n'); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'support_files', + error_message: `${failText}\n${errorText}`, + }, + }); + spinner.fail(failText); + program.error(errorText); + } + + spinner.succeed(`Support files copied to ${pc.bold(cosmoDir)}`); + + return cosmoDir; +} + +async function isDockerAvailable(): Promise { + try { + await execa('docker', ['version', '--format', '{{.Client.Version}}']); + return true; + } catch { + return false; + } +} + +async function isBuildxAvailable(): Promise { + try { + await execa('docker', ['buildx', 'version']); + return true; + } catch { + return false; + } +} + +async function hasDockerContainerBuilder(): Promise { + try { + const { stdout } = await execa('docker', ['buildx', 'ls']); + for (const line of stdout.split('\n')) { + // Builder lines start without leading whitespace; the driver follows the name + if (!line.startsWith(' ') && line.includes('docker-container')) { + return true; + } + } + return false; + } catch { + return false; + } +} + +async function createDockerContainerBuilder(builderName: string): Promise { + await execa('docker', ['buildx', 'create', '--use', '--driver', 'docker-container', '--name', builderName]); + await execa('docker', ['buildx', 'inspect', builderName, '--bootstrap']); +} + +/** + * Checks whether host system has [docker] installed and whether [buildx] is set up + * properly. In case of failures, show prompt to install/setup. + */ +export async function checkDockerReadiness(): Promise { + const spinner = demoSpinner('Checking Docker availability…').start(); + + if (!(await isDockerAvailable())) { + const failText = 'Docker is not available.'; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'docker_readiness', + error_message: failText, + }, + }); + spinner.fail(failText); + program.error( + `Docker CLI is not installed or the daemon is not running.\nInstall Docker: ${pc.underline('https://docs.docker.com/get-docker/')}`, + ); + } + + if (!(await isBuildxAvailable())) { + const failText = 'Docker Buildx is not available.'; + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'docker_readiness', + error_message: failText, + }, + }); + spinner.fail(failText); + program.error( + `Docker Buildx plugin is required for multi-platform builds.\nSee: ${pc.underline('https://docs.docker.com/build/install-buildx/')}`, + ); + } + + if (await hasDockerContainerBuilder()) { + spinner.succeed('Docker is ready.'); + return; + } + + spinner.text = `Creating buildx builder "${config.dockerBuilderName}"…`; + try { + await createDockerContainerBuilder(config.dockerBuilderName); + } catch (err) { + const failText = `Failed to create buildx builder "${config.dockerBuilderName}".`; + const errorText = err instanceof Error ? err.message : String(err); + spinner.fail(failText); + captureOnboardingEvent({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'docker_readiness', + error_message: `${failText}\n${errorText}`, + }, + }); + program.error( + `Could not create a docker-container buildx builder: ${errorText}\nYou can create one manually: docker buildx create --use --driver docker-container --name ${config.dockerBuilderName}`, + ); + } + + spinner.succeed('Docker is ready.'); +} + +/** + * Returns the path to the demo log file at ~/.cache/cosmo/demo/demo.log. + * Creates the parent directory if needed. + */ +export function getDemoLogPath(): string { + const cosmoDir = path.join(cacheDir, 'demo'); + if (!existsSync(cosmoDir)) { + mkdirSync(cosmoDir, { recursive: true }); + } + return path.join(cosmoDir, 'demo.log'); +} + +function pipeToLog(logStream: WriteStream, proc: ResultPromise) { + proc.stdout?.pipe(logStream, { end: false }); + proc.stderr?.pipe(logStream, { end: false }); +} + +/** + * Rewrite localhost to host.docker.internal so the container can + * reach services running on the host machine. + */ +function toDockerHost(url: string) { + return url.replace(/localhost/g, 'host.docker.internal'); +} + +/** + * Best-effort removal of a potentially stale router container + * from a previous crashed run. + */ +async function removeRouterContainer(): Promise { + try { + await execa('docker', ['rm', '-f', config.demoRouterContainerName]); + } catch { + // ignore — container may not exist + } +} + +/** + * Polls the router's readiness endpoint until it responds 200 + * or the signal is aborted / max attempts exceeded. + */ +async function waitForRouterReady({ + routerBaseUrl, + signal, + intervalMs = 1000, + maxAttempts = 60, +}: { + routerBaseUrl: string; + signal: AbortSignal; + intervalMs?: number; + maxAttempts?: number; +}): Promise { + const url = `${routerBaseUrl}/health/ready`; + + for (let i = 0; i < maxAttempts; i++) { + if (signal.aborted) { + return false; + } + try { + const res = await fetch(url, { signal }); + if (res.ok) { + return true; + } + } catch { + // not up yet + } + // Plain setTimeout ignores the abort signal, so CTRL+C during the + // sleep would leave the loop hanging until the timer fires. + await new Promise((resolve) => { + const timer = setTimeout(resolve, intervalMs); + signal.addEventListener( + 'abort', + () => { + clearTimeout(timer); + resolve(); + }, + { once: true }, + ); + }); + } + + return false; +} + +/** + * Runs the cosmo router as a Docker container. Shows an ora spinner + * that transitions from "Starting…" to "Router is ready" once the + * health endpoint responds. The process stays alive until the abort + * signal fires (CTRL+C / crash) or docker exits on its own. + */ +export async function runRouterContainer({ + routerToken, + routerBaseUrl, + signal, + logPath, +}: { + routerToken: string; + routerBaseUrl: string; + signal: AbortSignal; + logPath: string; +}): Promise<{ error: Error | null }> { + await removeRouterContainer(); + + const port = config.demoRouterPort; + + const args = [ + 'run', + '--name', + config.demoRouterContainerName, + '--rm', + '-p', + `${port}:${port}`, + '--add-host=host.docker.internal:host-gateway', + '--pull', + 'always', + '-e', + 'DEV_MODE=true', + '-e', + 'LOG_LEVEL=debug', + '-e', + `LISTEN_ADDR=0.0.0.0:${port}`, + '-e', + `GRAPH_API_TOKEN=${routerToken}`, + '-e', + 'PLUGINS_ENABLED=true', + ]; + + // Local-dev env vars — only forwarded when set in the wgc process. + + const conditionalEnvs: Array<[string, string | undefined]> = [ + ['CDN_URL', config.cdnURL], + ['REGISTRY_URL', config.pluginRegistryURL], + ['PLUGINS_REGISTRY_URL', config.pluginRegistryURL], + ['PLUGINS_REGISTRY_INSECURE', config.pluginRegistryInsecure ? 'true' : undefined], + ['CONTROLPLANE_URL', config.baseURL], + ['DEFAULT_TELEMETRY_ENDPOINT', config.defaultTelemetryEndpoint], + ['GRAPHQL_METRICS_COLLECTOR_ENDPOINT', config.graphqlMetricsCollectorEndpoint], + ]; + + for (const [key, value] of conditionalEnvs) { + if (value) { + args.push('-e', `${key}=${toDockerHost(value)}`); + } + } + + args.push(config.demoRouterImage); + + const logStream = createWriteStream(logPath, { flags: 'a' }); + const spinner = demoSpinner(`Starting router on ${pc.bold(routerBaseUrl)}…`).start(); + + // During polling there is no waitForKeyPress active, so CTRL+C sends + // SIGINT instead of being handled manually. Without this the active + // spinner + docker process prevent clean exit and the spinner re-renders + // on each CTRL+C press. + function onSigint() { + spinner.stop(); + process.exit(0); + } + process.on('SIGINT', onSigint); + + try { + const proc = execa('docker', args, { + stdio: 'pipe', + ...(signal ? { cancelSignal: signal } : {}), + }); + + pipeToLog(logStream, proc); + + // Poll readiness in parallel with the long-running docker process + const ready = await waitForRouterReady({ routerBaseUrl, signal }); + + if (ready) { + spinner.succeed(`Router is ready on ${pc.bold(routerBaseUrl)}.`); + console.log(pc.dim(`(logs: ${logPath})`)); + + return { error: null }; + } else if (!signal.aborted) { + const warnMessage = 'Router started but readiness check timed out. It may still be starting.'; + spinner.warn(warnMessage); + console.log(pc.dim(`(logs: ${logPath})`)); + + return { error: new Error(warnMessage) }; + } + + await proc; + } catch (error) { + // Graceful abort — not an error + if (error instanceof Error && 'isCanceled' in error && (error as any).isCanceled) { + return { error: null }; + } + spinner.fail('Router failed to start.'); + return { error: error instanceof Error ? error : new Error(String(error)) }; + } finally { + process.removeListener('SIGINT', onSigint); + logStream.end(); + } + + return { error: null }; +} + +/** + * Publishes demo plugins sequentially. + * Returns [error] on first failure; spinner shows which plugin failed. + */ +export async function publishAllPlugins({ + client, + supportDir, + signal, + logPath, +}: { + client: BaseCommandOptions['client']; + supportDir: string; + signal: AbortSignal; + logPath: string; +}) { + const pluginNames = config.demoPluginNames; + const namespace = config.demoNamespace; + const labels = [config.demoLabelMatcher]; + // The demo router always runs in a Linux Docker container, so we need + // linux builds for both architectures regardless of the host OS. + const logStream = createWriteStream(logPath, { flags: 'w' }); + + try { + for (let i = 0; i < pluginNames.length; i++) { + const pluginName = pluginNames[i]; + const pluginDir = path.join(supportDir, 'plugins', pluginName); + + const spinner = demoSpinner(`Publishing plugin ${pc.bold(pluginName)} (${i + 1}/${pluginNames.length})…`).start(); + + const files = await readPluginFiles(pluginDir); + const result = await publishPluginPipeline({ + client, + pluginDir, + pluginName, + namespace, + labels, + platforms: getDefaultPlatforms(), + files, + cancelSignal: signal, + onProcess: (proc) => pipeToLog(logStream, proc), + }); + + if (result.error) { + spinner.fail(`Failed to publish plugin ${pc.bold(pluginName)}: ${result.error.message}`); + return { error: result.error }; + } + + spinner.succeed(`Plugin ${pc.bold(pluginName)} published.`); + } + } finally { + logStream.end(); + } + + return { error: null }; +} + +export function captureOnboardingEvent({ + name, + properties, +}: + | { + name: 'onboarding_step_completed'; + properties: { + step_name: + | 'init' + | 'check_onboarding' + | 'create_federated_graph' + | 'delete_federated_graph' + | 'run_router_send_metrics'; + entry_source: 'wgc'; + }; + } + | { + name: 'onboarding_step_failed'; + properties: { + step_name: + | 'init' + | 'check_onboarding' + | 'create_federated_graph' + | 'delete_federated_graph' + | 'run_router_send_metrics'; + entry_source: 'wgc'; + error_category: 'resource' | 'support_files' | 'docker_readiness' | 'router'; + error_message: string; + }; + }): void { + capture(name, properties); +} diff --git a/cli/src/commands/feature-flag/commands/recompose.ts b/cli/src/commands/feature-flag/commands/recompose.ts new file mode 100644 index 0000000000..82b85e3a25 --- /dev/null +++ b/cli/src/commands/feature-flag/commands/recompose.ts @@ -0,0 +1,117 @@ +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { Command, program } from 'commander'; +import ora from 'ora'; +import pc from 'picocolors'; +import { getBaseHeaders } from '../../../core/config.js'; +import { BaseCommandOptions } from '../../../core/types/types.js'; +import { handleCompositionResult } from '../../../handle-composition-result.js'; +import { limitMaxValue } from '../../../constants.js'; + +export default (opts: BaseCommandOptions) => { + const command = new Command('recompose'); + command.description('Triggers a recomposition of the specified feature flags using its current subgraphs.'); + command.argument('', 'The name of the feature flag to recompose.'); + command.option('-n, --namespace [string]', 'The namespace of the feature flag.'); + command.option('--suppress-warnings', 'This flag suppresses any warning produced by composition.'); + command.option( + '--disable-resolvability-validation', + 'This flag will disable the validation for whether all nodes of the feature flag are resolvable. Do NOT use unless troubleshooting.', + ); + command.option( + '--fail-on-composition-error', + 'If set, the command will fail if the composition of the feature flag fails.', + false, + ); + command.option( + '--fail-on-admission-webhook-error', + 'If set, the command will fail if the admission webhook fails.', + false, + ); + command.option( + '-l, --limit ', + 'The maximum number of composition errors, warnings, and deployment errors to display.', + '50', + ); + + command.action(async (name, options) => { + const limit = Number(options.limit); + if (!Number.isInteger(limit) || limit <= 0 || limit > limitMaxValue) { + program.error( + pc.red(`The limit must be a valid number between 1 and ${limitMaxValue}. Received: '${options.limit}'`), + ); + } + + const spinner = ora(`Recomposing feature flag "${name}"...`).start(); + const resp = await opts.client.platform.recomposeFeatureFlag( + { + disableResolvabilityValidation: options.disableResolvabilityValidation, + limit, + name, + namespace: options.namespace, + }, + { + headers: getBaseHeaders(), + }, + ); + + if (!resp.response) { + spinner.fail(`Failed to recompose feature flag "${pc.bold(name)}".`); + process.exitCode = 1; + return; + } + + switch (resp.response.code) { + case EnumStatusCode.ERR: { + spinner.fail(`Failed to recompose feature flag "${pc.bold(name)}".`); + let message = `${pc.red('Split configuration loading is not enabled on the organization.')}`; + + if (resp.response.details) { + message += `\n${pc.red(pc.bold(resp.response.details))}`; + } + + program.error(message); + break; + } + case EnumStatusCode.ERR_NOT_FOUND: { + spinner.fail(`Failed to recompose feature flag "${pc.bold(name)}".`); + let message = + `${pc.red(`No valid record could be found for feature flag "${pc.bold(name)}".`)}\n` + + `Please check the name and namespace for the feature flag in Cosmo Studio.`; + + if (resp.response.details) { + message += `\n${pc.red(pc.bold(resp.response.details))}`; + } + + program.error(message); + break; + } + } + + try { + handleCompositionResult({ + totalErrorCounts: resp.errorCounts, + responseCode: resp.response.code, + responseDetails: resp.response.details, + compositionErrors: resp.compositionErrors, + compositionWarnings: resp.compositionWarnings, + deploymentErrors: resp.deploymentErrors, + spinner, + successMessage: `Feature flag "${pc.bold(name)}" recomposed successfully.`, + subgraphCompositionBaseErrorMessage: `Recomposition of feature flag "${pc.bold(name)}" failed.`, + subgraphCompositionDetailedErrorMessage: pc.bold('Please check the errors below:'), + deploymentErrorMessage: + `Feature flag was recomposed but the updated composition could not be deployed.` + + `\nThis means the updated composition is not accessible to the router.` + + `\n${pc.bold('Please check the errors below:')}`, + defaultErrorMessage: `Failed to recompose feature flag "${pc.bold(name)}".`, + suppressWarnings: options.suppressWarnings, + failOnCompositionError: options.failOnCompositionError, + failOnAdmissionWebhookError: options.failOnAdmissionWebhookError, + }); + } catch { + process.exitCode = 1; + } + }); + + return command; +}; diff --git a/cli/src/commands/feature-flag/index.ts b/cli/src/commands/feature-flag/index.ts index 30b7b5b770..ee51662c17 100644 --- a/cli/src/commands/feature-flag/index.ts +++ b/cli/src/commands/feature-flag/index.ts @@ -7,6 +7,7 @@ import EnableFeatureFlagCommand from './commands/enable.js'; import DisableFeatureFlagCommand from './commands/disable.js'; import UpdateFeatureFlagCommand from './commands/update.js'; import ListFeatureFlagCommand from './commands/list.js'; +import RecomposeFeatureFlagCommand from './commands/recompose.js'; export default (opts: BaseCommandOptions) => { const command = new Command('feature-flag').alias('ff'); @@ -18,6 +19,7 @@ export default (opts: BaseCommandOptions) => { command.addCommand(DisableFeatureFlagCommand(opts)); command.addCommand(UpdateFeatureFlagCommand(opts)); command.addCommand(ListFeatureFlagCommand(opts)); + command.addCommand(RecomposeFeatureFlagCommand(opts)); command.hook('preAction', async () => { await checkAuth(); diff --git a/cli/src/commands/graph/federated-graph/commands/list.ts b/cli/src/commands/graph/federated-graph/commands/list.ts index df25b6b4b2..aba7445b6c 100644 --- a/cli/src/commands/graph/federated-graph/commands/list.ts +++ b/cli/src/commands/graph/federated-graph/commands/list.ts @@ -45,11 +45,15 @@ export default (opts: BaseCommandOptions) => { }, ); - if (resp.response?.code !== EnumStatusCode.OK) { + if (resp.response?.code !== EnumStatusCode.OK && resp.response?.code !== EnumStatusCode.WARN_PARTIAL_DATA) { console.log(pc.red(resp.response?.details)); program.error(pc.red('Could not fetch the federated graphs.')); } + if (resp.response?.code === EnumStatusCode.WARN_PARTIAL_DATA) { + console.log(pc.yellow('⚠️ Metrics data not available.')); + } + const filteredGraphs = []; if (options.onlyContracts) { filteredGraphs.push(...resp.graphs.filter((g) => !!g.contract)); diff --git a/cli/src/commands/graph/monograph/commands/list.ts b/cli/src/commands/graph/monograph/commands/list.ts index 443d9921c5..d991c9b4c2 100644 --- a/cli/src/commands/graph/monograph/commands/list.ts +++ b/cli/src/commands/graph/monograph/commands/list.ts @@ -43,11 +43,15 @@ export default (opts: BaseCommandOptions) => { }, ); - if (resp.response?.code !== EnumStatusCode.OK) { + if (resp.response?.code !== EnumStatusCode.OK && resp.response?.code !== EnumStatusCode.WARN_PARTIAL_DATA) { console.log(pc.red(resp.response?.details)); program.error(pc.red('Could not fetch the monographs.')); } + if (resp.response?.code === EnumStatusCode.WARN_PARTIAL_DATA) { + console.log(pc.yellow('⚠️ Metrics data not available.')); + } + const filteredGraphs = []; if (options.onlyContracts) { filteredGraphs.push(...resp.graphs.filter((g) => !!g.contract)); diff --git a/cli/src/commands/grpc-service/commands/generate.ts b/cli/src/commands/grpc-service/commands/generate.ts index 493e3d219d..356e901c01 100644 --- a/cli/src/commands/grpc-service/commands/generate.ts +++ b/cli/src/commands/grpc-service/commands/generate.ts @@ -483,27 +483,31 @@ async function generateProtoAndMapping({ const schema = await readFile(schemaFile, 'utf8'); const serviceName = upperFirst(camelCase(name)); - // Validate the GraphQL schema - spinner.text = 'Validating GraphQL schema...'; - const validationResult = validateGraphQLSDL(schema); - renderValidationResults(validationResult, schemaFile); - - // Determine generation mode - if (operationsDir) { - const operationsPath = resolve(operationsDir); - return generateFromOperations( - schema, - serviceName, - operationsPath, - spinner, - packageName || 'service.v1', - languageOptions, - lockFile, - customScalarMappings, - maxDepth, - ); - } else { - return generateFromSDL(schema, serviceName, spinner, packageName, languageOptions, lockFile); + try { + // Validate the GraphQL schema + spinner.text = 'Validating GraphQL schema...'; + const validationResult = validateGraphQLSDL(schema); + renderValidationResults(validationResult, schemaFile); + + // Determine generation mode + if (operationsDir) { + const operationsPath = resolve(operationsDir); + return generateFromOperations( + schema, + serviceName, + operationsPath, + spinner, + packageName || 'service.v1', + languageOptions, + lockFile, + customScalarMappings, + maxDepth, + ); + } else { + return generateFromSDL(schema, serviceName, spinner, packageName, languageOptions, lockFile); + } + } catch (error) { + program.error(error instanceof Error ? error.message : String(error)); } } diff --git a/cli/src/commands/index.ts b/cli/src/commands/index.ts index 68a4c87a61..c74e98d79c 100644 --- a/cli/src/commands/index.ts +++ b/cli/src/commands/index.ts @@ -1,10 +1,10 @@ -import { mkdirSync } from 'node:fs'; import { Command } from 'commander'; import { CreateClient } from '../core/client/client.js'; -import { config, configDir } from '../core/config.js'; +import { config } from '../core/config.js'; import { checkForUpdates } from '../utils.js'; import { capture } from '../core/telemetry.js'; import AuthCommands from './auth/index.js'; +import DemoCommands from './demo/index.js'; import MonographCommands from './graph/monograph/index.js'; import FederatedGraphCommands from './graph/federated-graph/index.js'; import NamespaceCommands from './namespace/index.js'; @@ -64,6 +64,11 @@ program.addCommand( client, }), ); +program.addCommand( + DemoCommands({ + client, + }), +); program.addCommand( OperationCommands({ client, @@ -116,7 +121,6 @@ program.addCommand( ); program.hook('preAction', async () => { - mkdirSync(configDir, { recursive: true }); await checkForUpdates(); }); diff --git a/cli/src/commands/mcp/tools/federated-graph-tools.ts b/cli/src/commands/mcp/tools/federated-graph-tools.ts index ab8dcb5ce2..291062c22e 100644 --- a/cli/src/commands/mcp/tools/federated-graph-tools.ts +++ b/cli/src/commands/mcp/tools/federated-graph-tools.ts @@ -34,7 +34,7 @@ export const registerFederatedGraphTools = ({ server, opts }: ToolContext) => { }, ); - if (resp.response?.code !== EnumStatusCode.OK) { + if (resp.response?.code !== EnumStatusCode.OK && resp.response?.code !== EnumStatusCode.WARN_PARTIAL_DATA) { throw new Error(`Could not fetch federated graphs: ${resp.response?.details || ''}`); } diff --git a/cli/src/commands/router/commands/plugin/commands/publish.ts b/cli/src/commands/router/commands/plugin/commands/publish.ts index dba3c67ec1..3b3a23942d 100644 --- a/cli/src/commands/router/commands/plugin/commands/publish.ts +++ b/cli/src/commands/router/commands/plugin/commands/publish.ts @@ -1,62 +1,18 @@ import { existsSync } from 'node:fs'; -import { readFile } from 'node:fs/promises'; -import { arch, platform } from 'node:os'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { SubgraphType } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { splitLabel } from '@wundergraph/cosmo-shared'; import Table from 'cli-table3'; import { Command, program } from 'commander'; -import { execa } from 'execa'; import ora from 'ora'; import path, { resolve } from 'pathe'; import pc from 'picocolors'; -import { config, getBaseHeaders } from '../../../../../core/config.js'; +import { + getDefaultPlatforms, + publishPluginPipeline, + readPluginFiles, + SUPPORTED_PLATFORMS, +} from '../../../../../core/plugin-publish.js'; import { BaseCommandOptions } from '../../../../../core/types/types.js'; -function getDefaultPlatforms(): string[] { - const supportedPlatforms = ['linux/amd64', 'linux/arm64', 'darwin/amd64', 'darwin/arm64', 'windows/amd64']; - const defaultPlatforms = ['linux/amd64']; - - // Get current OS and architecture - const currentPlatform = platform(); - const currentArch = arch(); - - // Map Node.js platform/arch to Docker platform format - let dockerPlatform: string | null = null; - - switch (currentPlatform) { - case 'linux': { - if (currentArch === 'x64') { - dockerPlatform = 'linux/amd64'; - } else if (currentArch === 'arm64') { - dockerPlatform = 'linux/arm64'; - } - break; - } - case 'darwin': { - if (currentArch === 'x64') { - dockerPlatform = 'darwin/amd64'; - } else if (currentArch === 'arm64') { - dockerPlatform = 'darwin/arm64'; - } - break; - } - case 'win32': { - if (currentArch === 'x64') { - dockerPlatform = 'windows/amd64'; - } - break; - } - } - - // Add user's platform to defaults if supported and not already included - if (dockerPlatform && supportedPlatforms.includes(dockerPlatform) && !defaultPlatforms.includes(dockerPlatform)) { - defaultPlatforms.push(dockerPlatform); - } - - return defaultPlatforms; -} - export default (opts: BaseCommandOptions) => { const command = new Command('publish'); command.description( @@ -100,199 +56,64 @@ export default (opts: BaseCommandOptions) => { const pluginName = options.name || path.basename(pluginDir); - const schemaFile = resolve(pluginDir, 'src', 'schema.graphql'); - const dockerFile = resolve(pluginDir, 'Dockerfile'); - const protoSchemaFile = resolve(pluginDir, 'generated', 'service.proto'); - const protoMappingFile = resolve(pluginDir, 'generated', 'mapping.json'); - const protoLockFile = resolve(pluginDir, 'generated', 'service.proto.lock.json'); - - if (!existsSync(schemaFile)) { - program.error( - pc.red( - pc.bold(`The schema file '${pc.bold(schemaFile)}' does not exist. Please check the path and try again.`), - ), - ); - } - - const schemaBuffer = await readFile(schemaFile); - const schema = new TextDecoder().decode(schemaBuffer); - if (schema.trim().length === 0) { - program.error( - pc.red(pc.bold(`The schema file '${pc.bold(schemaFile)}' is empty. Please provide a valid schema.`)), - ); - } - - if (!existsSync(dockerFile)) { - program.error( - pc.red( - pc.bold(`The docker file '${pc.bold(dockerFile)}' does not exist. Please check the path and try again.`), - ), - ); - } - - if (!existsSync(protoSchemaFile)) { - program.error( - pc.red( - pc.bold( - `The proto schema file '${pc.bold(protoSchemaFile)}' does not exist. Please check the path and try again.`, - ), - ), - ); - } - const protoSchemaBuffer = await readFile(protoSchemaFile); - const protoSchema = new TextDecoder().decode(protoSchemaBuffer); - if (protoSchema.trim().length === 0) { - program.error( - pc.red(pc.bold(`The proto schema file '${pc.bold(protoSchemaFile)}' is empty. Please provide a valid schema.`)), - ); - } - - if (!existsSync(protoMappingFile)) { - program.error( - pc.red( - pc.bold( - `The proto mapping file '${pc.bold(protoMappingFile)}' does not exist. Please check the path and try again.`, - ), - ), - ); - } - const protoMappingBuffer = await readFile(protoMappingFile); - const protoMapping = new TextDecoder().decode(protoMappingBuffer); - if (protoMapping.trim().length === 0) { - program.error( - pc.red( - pc.bold(`The proto mapping file '${pc.bold(protoMappingFile)}' is empty. Please provide a valid mapping.`), - ), - ); - } - - if (!existsSync(protoLockFile)) { - program.error( - pc.red( - pc.bold( - `The proto lock file '${pc.bold(protoLockFile)}' does not exist. Please check the path and try again.`, - ), - ), - ); - } - const protoLockBuffer = await readFile(protoLockFile); - const protoLock = new TextDecoder().decode(protoLockBuffer); - if (protoLock.trim().length === 0) { - program.error( - pc.red(pc.bold(`The proto lock file '${pc.bold(protoLockFile)}' is empty. Please provide a valid lock.`)), - ); - } - // Validate platforms - const supportedPlatforms = ['linux/amd64', 'linux/arm64', 'darwin/amd64', 'darwin/arm64', 'windows/amd64']; if (options.platform && options.platform.length > 0) { - const invalidPlatforms = options.platform.filter((platform: string) => !supportedPlatforms.includes(platform)); + const invalidPlatforms = options.platform.filter((platform: string) => !SUPPORTED_PLATFORMS.includes(platform)); if (invalidPlatforms.length > 0) { program.error( pc.red( pc.bold( - `Invalid platform(s): ${invalidPlatforms.join(', ')}. Supported platforms are: ${supportedPlatforms.join(', ')}`, + `Invalid platform(s): ${invalidPlatforms.join(', ')}. Supported platforms are: ${SUPPORTED_PLATFORMS.join(', ')}`, ), ), ); } } + // Read and validate plugin files + let files; + try { + files = await readPluginFiles(pluginDir); + } catch (error) { + program.error(pc.red(pc.bold(error instanceof Error ? error.message : String(error)))); + } + const spinner = ora('Plugin is being published...').start(); - const pluginDataResponse = await opts.client.platform.validateAndFetchPluginData( - { - name: pluginName, - namespace: options.namespace, - labels: options.label.map((label: string) => splitLabel(label)), + const result = await publishPluginPipeline({ + client: opts.client, + pluginName, + pluginDir, + namespace: options.namespace, + labels: options.label, + platforms: options.platform || [], + files, + onProcess: (proc) => { + proc.stdout?.pipe(process.stdout); + proc.stderr?.pipe(process.stderr); }, - { - headers: getBaseHeaders(), - }, - ); + }); - if (pluginDataResponse.response?.code !== EnumStatusCode.OK) { - program.error(pc.red(pc.bold(pluginDataResponse.response?.details))); + if (result.error && !result.response) { + spinner.fail(result.error.message); + program.error(pc.red(pc.bold(result.error.message))); } - const reference = pluginDataResponse.reference; - const newVersion = pluginDataResponse.newVersion; - const pushToken = pluginDataResponse.pushToken; - - // upload the docker image to the registry - const platforms = options.platform && options.platform.join(','); - const imageTag = `${config.pluginRegistryURL}/${reference}:${newVersion}`; - - try { - // Docker login - spinner.text = 'Logging into Cosmo registry...'; - await execa('docker', ['login', config.pluginRegistryURL, '-u', 'x', '--password-stdin'], { - stdio: 'pipe', - input: pushToken, - }); - - // Docker buildx build - spinner.text = 'Building and pushing Docker image...'; - await execa( - 'docker', - [ - 'buildx', - 'build', - '--sbom=false', - '--provenance=false', - '--push', - '--platform', - platforms, - '-f', - dockerFile, - '-t', - imageTag, - pluginDir, - ], - { - stdio: 'inherit', - }, - ); - - // Docker logout - spinner.text = 'Logging out of Cosmo registry...'; - await execa('docker', ['logout', config.pluginRegistryURL], { - stdio: 'pipe', - }); - - spinner.text = 'Subgraph is being published...'; - } catch (error) { - spinner.fail(`Failed to build and push Docker image: ${error instanceof Error ? error.message : String(error)}`); - program.error( - pc.red(pc.bold(`Docker operation failed: ${error instanceof Error ? error.message : String(error)}`)), - ); + if (result.error) { + spinner.fail(`Failed to publish plugin "${pluginName}".`); + if (result.response?.details) { + console.error(pc.red(pc.bold(result.response.details))); + } + process.exitCode = 1; + return; } - const resp = await opts.client.platform.publishFederatedSubgraph( - { - name: pluginName, - namespace: options.namespace, - schema, - // Optional when subgraph does not exist yet - labels: options.label.map((label: string) => splitLabel(label)), - type: SubgraphType.GRPC_PLUGIN, - proto: { - schema: protoSchema, - mappings: protoMapping, - lock: protoLock, - platforms: options.platform || [], - version: newVersion, - }, - }, - { - headers: getBaseHeaders(), - }, - ); + const resp = result.response!; - switch (resp.response?.code) { + switch (resp.code) { case EnumStatusCode.OK: { spinner.succeed( - resp?.hasChanged === false + resp.hasChanged === false ? 'No new changes to publish.' : `Plugin ${pc.bold(pluginName)} published successfully.`, ); @@ -387,8 +208,8 @@ export default (opts: BaseCommandOptions) => { } default: { spinner.fail(`Failed to publish plugin "${pluginName}".`); - if (resp.response?.details) { - console.error(pc.red(pc.bold(resp.response?.details))); + if (resp.details) { + console.error(pc.red(pc.bold(resp.details))); } process.exitCode = 1; return; diff --git a/cli/src/commands/router/commands/plugin/toolchain.ts b/cli/src/commands/router/commands/plugin/toolchain.ts index 6ae0367b1d..503155cf47 100644 --- a/cli/src/commands/router/commands/plugin/toolchain.ts +++ b/cli/src/commands/router/commands/plugin/toolchain.ts @@ -15,6 +15,7 @@ import prompts from 'prompts'; import semver from 'semver'; import { camelCase, upperFirst } from 'lodash-es'; import pupa from 'pupa'; +import { program } from 'commander'; import { dataDir } from '../../../../core/config.js'; import TsTemplates from './templates/typescript.js'; import { renderValidationResults } from './helper.js'; @@ -546,27 +547,31 @@ export async function generateProtoAndMapping(pluginDir: string, protoOptions: P const serviceName = upperFirst(camelCase(pluginName)) + 'Service'; - // Validate the GraphQL schema and render results - spinner.text = 'Validating GraphQL schema...'; - const validationResult = validateGraphQLSDL(schema); - renderValidationResults(validationResult, schemaFile); + try { + // Validate the GraphQL schema and render results + spinner.text = 'Validating GraphQL schema...'; + const validationResult = validateGraphQLSDL(schema); + renderValidationResults(validationResult, schemaFile); - spinner.text = 'Generating mapping and proto files...'; + spinner.text = 'Generating mapping and proto files...'; - const mapping = compileGraphQLToMapping(schema, serviceName); - await writeFile(resolve(generatedDir, 'mapping.json'), JSON.stringify(mapping, null, 2)); + const mapping = compileGraphQLToMapping(schema, serviceName); + await writeFile(resolve(generatedDir, 'mapping.json'), JSON.stringify(mapping, null, 2)); - const proto = compileGraphQLToProto(schema, { - serviceName, - packageName: 'service', - protoOptions, - lockData, - }); + const proto = compileGraphQLToProto(schema, { + serviceName, + packageName: 'service', + protoOptions, + lockData, + }); - await writeFile(resolve(generatedDir, 'service.proto'), proto.proto); - await writeFile(resolve(generatedDir, 'service.proto.lock.json'), JSON.stringify(proto.lockData, null, 2)); + await writeFile(resolve(generatedDir, 'service.proto'), proto.proto); + await writeFile(resolve(generatedDir, 'service.proto.lock.json'), JSON.stringify(proto.lockData, null, 2)); - return { serviceName }; + return { serviceName }; + } catch (error) { + program.error(error instanceof Error ? error.message : String(error)); + } } /** diff --git a/cli/src/commands/router/commands/token/commands/create.ts b/cli/src/commands/router/commands/token/commands/create.ts index 4da5b31b09..643d694ff9 100644 --- a/cli/src/commands/router/commands/token/commands/create.ts +++ b/cli/src/commands/router/commands/token/commands/create.ts @@ -1,8 +1,7 @@ import { Command } from 'commander'; import pc from 'picocolors'; -import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { BaseCommandOptions } from '../../../../../core/types/types.js'; -import { getBaseHeaders } from '../../../../../core/config.js'; +import { createRouterToken } from '../../../../../core/router-token.js'; export default (opts: BaseCommandOptions) => { const command = new Command('create'); @@ -20,39 +19,34 @@ export default (opts: BaseCommandOptions) => { 'Prints the token in raw format. This is useful if you want to pipe the token into another command.', ); command.action(async (name, options) => { - const resp = await opts.client.platform.createFederatedGraphToken( - { - tokenName: name, - graphName: options.graphName, - namespace: options.namespace, - }, - { - headers: getBaseHeaders(), - }, - ); + const result = await createRouterToken({ + client: opts.client, + tokenName: name, + graphName: options.graphName, + namespace: options.namespace, + }); - if (resp.response?.code === EnumStatusCode.OK) { - if (options.raw) { - console.log(resp.token); - return; - } - - console.log(`${pc.green(`Successfully created token ${pc.bold(name)} for graph ${pc.bold(options.graphName)}`)}`); - console.log(''); - console.log(`${pc.bold(resp.token)}\n`); - console.log(pc.yellow('---')); - console.log(pc.yellow(`Please store the token in a secure place. It will not be shown again.`)); - console.log(pc.yellow(`You can use the token only to authenticate against the Cosmo Platform from the routers.`)); - console.log(pc.yellow('---')); - } else { + if (result.error) { console.log(`${pc.red('Could not create token for graph')}`); - if (resp.response?.details) { - console.log(pc.red(pc.bold(resp.response?.details))); + if (result.error.message) { + console.log(pc.red(pc.bold(result.error.message))); } process.exitCode = 1; - // eslint-disable-next-line no-useless-return return; } + + if (options.raw) { + console.log(result.token); + return; + } + + console.log(`${pc.green(`Successfully created token ${pc.bold(name)} for graph ${pc.bold(options.graphName)}`)}`); + console.log(''); + console.log(`${pc.bold(result.token)}\n`); + console.log(pc.yellow('---')); + console.log(pc.yellow(`Please store the token in a secure place. It will not be shown again.`)); + console.log(pc.yellow(`You can use the token only to authenticate against the Cosmo Platform from the routers.`)); + console.log(pc.yellow('---')); }); return command; diff --git a/cli/src/commands/router/commands/token/commands/delete.ts b/cli/src/commands/router/commands/token/commands/delete.ts index 67ebf0aeb3..78b45e65b3 100644 --- a/cli/src/commands/router/commands/token/commands/delete.ts +++ b/cli/src/commands/router/commands/token/commands/delete.ts @@ -1,9 +1,8 @@ import { Command } from 'commander'; import pc from 'picocolors'; -import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import inquirer from 'inquirer'; import { BaseCommandOptions } from '../../../../../core/types/types.js'; -import { getBaseHeaders } from '../../../../../core/config.js'; +import { deleteRouterToken } from '../../../../../core/router-token.js'; export default (opts: BaseCommandOptions) => { const command = new Command('delete'); @@ -27,28 +26,24 @@ export default (opts: BaseCommandOptions) => { return; } } - const resp = await opts.client.platform.deleteRouterToken( - { - tokenName: name, - fedGraphName: options.graphName, - namespace: options.namespace, - }, - { - headers: getBaseHeaders(), - }, - ); - if (resp.response?.code === EnumStatusCode.OK) { - console.log(pc.dim(pc.green(`A router token called '${name}' was deleted.`))); - } else { + const result = await deleteRouterToken({ + client: opts.client, + tokenName: name, + graphName: options.graphName, + namespace: options.namespace, + }); + + if (result.error) { console.log(`Failed to delete router token ${pc.bold(name)}.`); - if (resp.response?.details) { - console.log(pc.red(pc.bold(resp.response?.details))); + if (result.error.message) { + console.log(pc.red(pc.bold(result.error.message))); } process.exitCode = 1; - // eslint-disable-next-line no-useless-return return; } + + console.log(pc.dim(pc.green(`A router token called '${name}' was deleted.`))); }); return command; diff --git a/cli/src/commands/subgraph/commands/batch-publish.ts b/cli/src/commands/subgraph/commands/batch-publish.ts new file mode 100644 index 0000000000..fade8c00fd --- /dev/null +++ b/cli/src/commands/subgraph/commands/batch-publish.ts @@ -0,0 +1,169 @@ +import { readFile } from 'node:fs/promises'; +import { dirname, resolve } from 'pathe'; +import { Command, program } from 'commander'; +import ora from 'ora'; +import pc from 'picocolors'; +import yaml from 'js-yaml'; +import { z } from 'zod'; +import { BaseCommandOptions } from '../../../core/types/types.js'; +import { getBaseHeaders } from '../../../core/config.js'; +import { handleCompositionResult } from '../../../handle-composition-result.js'; +import { limitMaxValue } from '../../../constants.js'; +import { fileExists } from '../../../utils.js'; + +const entrySchema = z.object({ + name: z.string().trim().min(1, 'a non-empty "name" is required'), + schema: z.string().trim().min(1, 'a non-empty "schema" file path is required'), +}); + +// Regular subgraphs and feature subgraphs are listed together; feature subgraphs are detected by the control plane. +const configSchema = z.object({ + subgraphs: z.array(entrySchema).min(1, 'at least one subgraph is required'), +}); + +type BatchPublishEntry = z.infer; + +export default (opts: BaseCommandOptions) => { + const command = new Command('batch-publish'); + command.description( + 'Publishes the schemas of multiple subgraphs at once using a config file.\n' + + 'All subgraphs and feature subgraphs listed in the config must already exist.\n' + + 'Any composition errors are reported per federated graph, and the router keeps serving the last valid schema.', + ); + command.requiredOption( + '-c, --config ', + 'The path to the YAML config file listing the subgraphs and feature subgraphs to publish.', + ); + command.option('-n, --namespace [string]', 'The namespace of the subgraphs.'); + command.option( + '--fail-on-composition-error', + 'If set, the command will fail if the composition of any federated graph fails.', + false, + ); + command.option( + '--fail-on-admission-webhook-error', + 'If set, the command will fail if the admission webhook fails.', + false, + ); + command.option('--suppress-warnings', 'This flag suppresses any warnings produced by composition.'); + command.option( + '--disable-resolvability-validation', + 'This flag will disable the validation for whether all nodes of the federated graph are resolvable. Do NOT use unless troubleshooting.', + ); + command.option( + '-l, --limit ', + 'The maximum number of composition errors, warnings, and deployment errors to display.', + '50', + ); + command.option('-r, --raw', 'Prints to the console in json format instead of table'); + command.option('-j, --json', 'Prints to the console in json format instead of table'); + + command.action(async (options) => { + const configFile = resolve(options.config); + if (!(await fileExists(configFile))) { + program.error( + pc.red( + pc.bold(`The config file '${pc.bold(configFile)}' does not exist. Please check the path and try again.`), + ), + ); + } + + let rawConfig: unknown; + try { + // YAML is a superset of JSON, so this parses both formats. + rawConfig = yaml.load(new TextDecoder().decode(await readFile(configFile))) ?? {}; + } catch (e: any) { + program.error(pc.red(pc.bold(`Failed to parse the config file '${configFile}': ${e.message}`))); + } + + const parsed = configSchema.safeParse(rawConfig); + if (!parsed.success) { + const details = parsed.error.issues + .map((issue) => ` - ${issue.path.join('.') || '(root)'}: ${issue.message}`) + .join('\n'); + program.error(pc.red(pc.bold(`The config file '${configFile}' is invalid:\n${details}`))); + } + + const { subgraphs: subgraphEntries } = parsed.data; + + const limit = Number(options.limit); + if (!Number.isInteger(limit) || limit <= 0 || limit > limitMaxValue) { + program.error( + pc.red(`The limit must be a valid number between 1 and ${limitMaxValue}. Received: '${options.limit}'`), + ); + } + + // Resolve and read each schema file relative to the config file's directory. + const configDir = dirname(configFile); + const readEntries = (entries: BatchPublishEntry[]) => + Promise.all( + entries.map(async (entry) => { + const schemaFile = resolve(configDir, entry.schema); + if (!(await fileExists(schemaFile))) { + program.error( + pc.red( + pc.bold( + `The schema file '${pc.bold(schemaFile)}' for subgraph '${entry.name}' does not exist. Please check the path and try again.`, + ), + ), + ); + } + const schema = new TextDecoder().decode(await readFile(schemaFile)); + if (schema.trim().length === 0) { + program.error( + pc.red(pc.bold(`The schema file '${pc.bold(schemaFile)}' for subgraph '${entry.name}' is empty.`)), + ); + } + return { name: entry.name, schema }; + }), + ); + + const subgraphs = await readEntries(subgraphEntries); + + const shouldOutputJson = options.json || options.raw; + const spinner = ora('Subgraphs are being published...'); + if (!shouldOutputJson) { + spinner.start(); + } + + const resp = await opts.client.platform.publishFederatedSubgraphs( + { + namespace: options.namespace, + subgraphs, + disableResolvabilityValidation: options.disableResolvabilityValidation, + limit, + }, + { + headers: getBaseHeaders(), + }, + ); + + const total = subgraphs.length; + const changed = resp.updatedSubgraphNames?.length ?? 0; + + handleCompositionResult({ + responseCode: resp.response?.code, + responseDetails: resp.response?.details, + compositionErrors: resp.compositionErrors, + compositionWarnings: resp.compositionWarnings, + deploymentErrors: resp.deploymentErrors, + totalErrorCounts: resp.counts, + spinner, + successMessage: `Successfully published ${total} subgraph${total === 1 ? '' : 's'} (${changed} changed).`, + subgraphCompositionBaseErrorMessage: 'The schemas were published, but with composition errors.', + subgraphCompositionDetailedErrorMessage: + 'There were composition errors when composing the affected federated graphs.\nThe router will continue to work with the latest valid schema.\n', + deploymentErrorMessage: + 'The schemas were published, but the updated composition could not be deployed.\nThis means the updated composition will not be accessible to the router.\n', + defaultErrorMessage: 'Failed to publish the subgraphs.', + shouldOutputJson, + suppressWarnings: options.suppressWarnings, + failOnCompositionError: options.failOnCompositionError, + failOnCompositionErrorMessage: `The publish was successful, but the command failed because composition errors were produced.`, + failOnAdmissionWebhookError: options.failOnAdmissionWebhookError, + failOnAdmissionWebhookErrorMessage: `The publish was successful, but the command failed because the admission webhook failed.`, + }); + }); + + return command; +}; diff --git a/cli/src/commands/subgraph/commands/publish.ts b/cli/src/commands/subgraph/commands/publish.ts index f0dfc23706..4bd1b807d0 100644 --- a/cli/src/commands/subgraph/commands/publish.ts +++ b/cli/src/commands/subgraph/commands/publish.ts @@ -151,7 +151,8 @@ export default (opts: BaseCommandOptions) => { spinner.fail(`Failed to publish subgraph "${name}".`); console.log(pc.red(`Error: Proposal match failed`)); console.log(pc.red(resp.proposalMatchMessage)); - break; + process.exitCode = 1; + return; } case EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED: { spinner.warn('Subgraph published but with composition errors.'); diff --git a/cli/src/commands/subgraph/index.ts b/cli/src/commands/subgraph/index.ts index 9b8bd0e603..ee550f8b36 100644 --- a/cli/src/commands/subgraph/index.ts +++ b/cli/src/commands/subgraph/index.ts @@ -4,6 +4,7 @@ import { checkAuth } from '../auth/utils.js'; import CheckSubgraph from './commands/check.js'; import CreateSubgraphCommand from './commands/create.js'; import PublishSubgraph from './commands/publish.js'; +import BatchPublishSubgraph from './commands/batch-publish.js'; import DeleteSubgraph from './commands/delete.js'; import UpdateSubgraph from './commands/update.js'; import FixSubGraph from './commands/fix.js'; @@ -19,6 +20,7 @@ export default (opts: BaseCommandOptions) => { command.description('Provides commands for creating and maintaining subgraphs of a federated graph'); command.addCommand(CreateSubgraphCommand(opts)); command.addCommand(PublishSubgraph(opts)); + command.addCommand(BatchPublishSubgraph(opts)); command.addCommand(CheckSubgraph(opts)); command.addCommand(DeleteSubgraph(opts)); command.addCommand(UpdateSubgraph(opts)); diff --git a/cli/src/core/config.ts b/cli/src/core/config.ts index db0edfc7ee..b4e0bfc7af 100644 --- a/cli/src/core/config.ts +++ b/cli/src/core/config.ts @@ -8,6 +8,7 @@ import info from '../../package.json' with { type: 'json' }; const paths = envPaths('cosmo', { suffix: '' }); export const configDir = paths.config; export const dataDir = paths.data; +export const cacheDir = paths.cache; export const configFile = join(configDir, 'config.yaml'); export const getLoginDetails = (): { accessToken: string; organizationSlug: string } | null => { @@ -35,6 +36,20 @@ export const config = { checkCommitSha: process.env.COSMO_VCS_COMMIT || '', checkBranch: process.env.COSMO_VCS_BRANCH || '', pluginRegistryURL: process.env.PLUGIN_REGISTRY_URL || 'cosmo-registry.wundergraph.com', + pluginRegistryInsecure: process.env.PLUGIN_REGISTRY_INSECURE === 'true', + demoLabelMatcher: 'graph=demo' as const, + demoGraphName: 'demo' as const, + demoNamespace: 'default' as const, + demoOnboardingRepositoryName: 'wundergraph/cosmo-onboarding' as const, + demoOnboardingRepositoryBranch: 'main' as const, + dockerBuilderName: 'cosmo-builder' as const, + defaultTelemetryEndpoint: process.env.DEFAULT_TELEMETRY_ENDPOINT, + graphqlMetricsCollectorEndpoint: process.env.GRAPHQL_METRICS_COLLECTOR_ENDPOINT, + demoRouterPort: 3002 as const, + demoPluginNames: ['products', 'reviews'] as const, + demoRouterTokenName: 'demo-router-token' as const, + demoRouterImage: 'ghcr.io/wundergraph/cosmo/router:latest' as const, + demoRouterContainerName: 'cosmo-demo-router' as const, }; export const getBaseHeaders = (): HeadersInit => { diff --git a/cli/src/core/plugin-publish.ts b/cli/src/core/plugin-publish.ts new file mode 100644 index 0000000000..8c48922c26 --- /dev/null +++ b/cli/src/core/plugin-publish.ts @@ -0,0 +1,257 @@ +import { readFile } from 'node:fs/promises'; +import { existsSync } from 'node:fs'; +import { arch, platform } from 'node:os'; +import path from 'node:path'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { SubgraphType } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { splitLabel } from '@wundergraph/cosmo-shared'; +import { execa, type ResultPromise } from 'execa'; +import { config, getBaseHeaders } from './config.js'; +import type { BaseCommandOptions } from './types/types.js'; + +export interface PluginFiles { + schema: string; + dockerFile: string; + protoSchema: string; + protoMapping: string; + protoLock: string; +} + +export interface PluginPublishParams { + client: BaseCommandOptions['client']; + pluginName: string; + pluginDir: string; + namespace: string; + labels: string[]; + platforms: string[]; + files: PluginFiles; + cancelSignal?: AbortSignal; + /** Called with each spawned execa process so the caller can pipe/inherit output. */ + onProcess?: (proc: ResultPromise) => void; +} + +export interface PluginPublishResult { + error: Error | null; + /** Raw response from publishFederatedSubgraph, available when the RPC call was reached. */ + response?: { + code?: number; + details?: string; + hasChanged?: boolean; + compositionErrors: Array<{ federatedGraphName: string; namespace: string; featureFlag: string; message: string }>; + deploymentErrors: Array<{ federatedGraphName: string; namespace: string; message: string }>; + compositionWarnings: Array<{ + federatedGraphName: string; + namespace: string; + featureFlag: string; + message: string; + }>; + proposalMatchMessage?: string; + }; +} + +export function getDefaultPlatforms(): string[] { + const supportedPlatforms = ['linux/amd64', 'linux/arm64', 'darwin/amd64', 'darwin/arm64', 'windows/amd64']; + const defaultPlatforms = ['linux/amd64', 'linux/arm64']; + + const currentPlatform = platform(); + const currentArch = arch(); + + let dockerPlatform: string | null = null; + + switch (currentPlatform) { + case 'linux': { + if (currentArch === 'x64') { + dockerPlatform = 'linux/amd64'; + } else if (currentArch === 'arm64') { + dockerPlatform = 'linux/arm64'; + } + break; + } + case 'darwin': { + if (currentArch === 'x64') { + dockerPlatform = 'darwin/amd64'; + } else if (currentArch === 'arm64') { + dockerPlatform = 'darwin/arm64'; + } + break; + } + case 'win32': { + if (currentArch === 'x64') { + dockerPlatform = 'windows/amd64'; + } + break; + } + } + + if (dockerPlatform && supportedPlatforms.includes(dockerPlatform) && !defaultPlatforms.includes(dockerPlatform)) { + defaultPlatforms.push(dockerPlatform); + } + + return defaultPlatforms; +} + +export const SUPPORTED_PLATFORMS = ['linux/amd64', 'linux/arm64', 'darwin/amd64', 'darwin/arm64', 'windows/amd64']; + +/** + * Reads and validates the 5 required plugin files from a plugin directory. + * Throws on missing/empty files. + */ +export async function readPluginFiles(pluginDir: string): Promise { + const schemaFile = path.join(pluginDir, 'src', 'schema.graphql'); + const dockerFile = path.join(pluginDir, 'Dockerfile'); + const protoSchemaFile = path.join(pluginDir, 'generated', 'service.proto'); + const protoMappingFile = path.join(pluginDir, 'generated', 'mapping.json'); + const protoLockFile = path.join(pluginDir, 'generated', 'service.proto.lock.json'); + + const requiredFiles = [schemaFile, dockerFile, protoSchemaFile, protoMappingFile, protoLockFile]; + for (const f of requiredFiles) { + if (!existsSync(f)) { + throw new Error(`Required file does not exist: ${f}`); + } + } + + async function readNonEmpty(filePath: string): Promise { + const buffer = await readFile(filePath); + const content = new TextDecoder().decode(buffer); + if (content.trim().length === 0) { + throw new Error(`File is empty: ${filePath}`); + } + return content; + } + + const [schema, protoSchema, protoMapping, protoLock] = await Promise.all([ + readNonEmpty(schemaFile), + readNonEmpty(protoSchemaFile), + readNonEmpty(protoMappingFile), + readNonEmpty(protoLockFile), + ]); + + return { schema, dockerFile, protoSchema, protoMapping, protoLock }; +} + +/** + * Core plugin publish pipeline: + * 1. validateAndFetchPluginData (RPC) + * 2. Docker login → buildx build+push → logout + * 3. publishFederatedSubgraph (RPC) + * + * Returns a result object; never calls program.error() — the caller decides + * how to handle errors. + */ +export async function publishPluginPipeline(params: PluginPublishParams): Promise { + const { client, pluginName, pluginDir, namespace, labels, platforms, files, cancelSignal, onProcess } = params; + + // Step 1: Validate and fetch plugin data + const pluginDataResponse = await client.platform.validateAndFetchPluginData( + { + name: pluginName, + namespace, + labels: labels.map((label) => splitLabel(label)), + }, + { + headers: getBaseHeaders(), + }, + ); + + if (pluginDataResponse.response?.code !== EnumStatusCode.OK) { + return { error: new Error(pluginDataResponse.response?.details ?? 'Failed to validate plugin data') }; + } + + const { reference, newVersion, pushToken } = pluginDataResponse; + const imageTag = `${config.pluginRegistryURL}/${reference}:${newVersion}`; + const platformStr = platforms.join(','); + + // Step 2: Docker operations + try { + const loginProc = execa('docker', ['login', config.pluginRegistryURL, '-u', 'x', '--password-stdin'], { + stdio: 'pipe', + input: pushToken, + ...(cancelSignal ? { cancelSignal } : {}), + }); + onProcess?.(loginProc); + await loginProc; + + const buildProc = execa( + 'docker', + [ + 'buildx', + 'build', + '--sbom=false', + '--provenance=false', + '--push', + '--platform', + platformStr, + '-f', + files.dockerFile, + '-t', + imageTag, + pluginDir, + ], + { + stdio: 'pipe', + ...(cancelSignal ? { cancelSignal } : {}), + }, + ); + onProcess?.(buildProc); + await buildProc; + } catch (error) { + return { error: new Error(`Docker operation failed: ${error instanceof Error ? error.message : String(error)}`) }; + } finally { + try { + const logoutProc = execa('docker', ['logout', config.pluginRegistryURL], { stdio: 'pipe' }); + onProcess?.(logoutProc); + await logoutProc; + } catch { + // best-effort logout + } + } + + // Step 3: Publish schema + const resp = await client.platform.publishFederatedSubgraph( + { + name: pluginName, + namespace, + schema: files.schema, + labels: labels.map((label) => splitLabel(label)), + type: SubgraphType.GRPC_PLUGIN, + proto: { + schema: files.protoSchema, + mappings: files.protoMapping, + lock: files.protoLock, + platforms, + version: newVersion, + }, + }, + { + headers: getBaseHeaders(), + }, + ); + + const result: PluginPublishResult = { + error: null, + response: { + code: resp.response?.code, + details: resp.response?.details, + hasChanged: resp.hasChanged, + compositionErrors: resp.compositionErrors, + deploymentErrors: resp.deploymentErrors, + compositionWarnings: resp.compositionWarnings, + proposalMatchMessage: resp.proposalMatchMessage, + }, + }; + + switch (resp.response?.code) { + case EnumStatusCode.OK: + case EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED: + case EnumStatusCode.ERR_DEPLOYMENT_FAILED: + case EnumStatusCode.ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL: { + return result; + } + default: { + return { + ...result, + error: new Error(resp.response?.details ?? 'Failed to publish plugin subgraph'), + }; + } + } +} diff --git a/cli/src/core/router-token.ts b/cli/src/core/router-token.ts new file mode 100644 index 0000000000..9c83432274 --- /dev/null +++ b/cli/src/core/router-token.ts @@ -0,0 +1,81 @@ +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { getBaseHeaders } from './config.js'; +import type { BaseCommandOptions } from './types/types.js'; + +export interface CreateRouterTokenParams { + client: BaseCommandOptions['client']; + tokenName: string; + graphName: string; + namespace?: string; +} + +export interface CreateRouterTokenResult { + error: Error | null; + token?: string; +} + +export interface DeleteRouterTokenParams { + client: BaseCommandOptions['client']; + tokenName: string; + graphName: string; + namespace?: string; +} + +export interface DeleteRouterTokenResult { + error: Error | null; +} + +/** + * Creates a router token for a federated graph. + * Never calls program.error() — caller decides how to handle errors. + */ +export async function createRouterToken(params: CreateRouterTokenParams): Promise { + const { client, tokenName, graphName, namespace } = params; + + const resp = await client.platform.createFederatedGraphToken( + { + tokenName, + graphName, + namespace, + }, + { + headers: getBaseHeaders(), + }, + ); + + if (resp.response?.code === EnumStatusCode.OK) { + return { error: null, token: resp.token }; + } + + return { error: new Error(resp.response?.details ?? 'Could not create router token') }; +} + +/** + * Deletes a router token. Idempotent — returns success if token doesn't exist. + * Never calls program.error() — caller decides how to handle errors. + */ +export async function deleteRouterToken(params: DeleteRouterTokenParams): Promise { + const { client, tokenName, graphName, namespace } = params; + + const resp = await client.platform.deleteRouterToken( + { + tokenName, + fedGraphName: graphName, + namespace, + }, + { + headers: getBaseHeaders(), + }, + ); + + if (resp.response?.code === EnumStatusCode.OK) { + return { error: null }; + } + + // Treat "doesn't exist" as success (idempotent) + if (resp.response?.details?.includes("doesn't exist")) { + return { error: null }; + } + + return { error: new Error(resp.response?.details ?? 'Could not delete router token') }; +} diff --git a/cli/src/core/telemetry.ts b/cli/src/core/telemetry.ts index 7982c59702..5b3cda916b 100644 --- a/cli/src/core/telemetry.ts +++ b/cli/src/core/telemetry.ts @@ -2,7 +2,7 @@ import crypto from 'node:crypto'; import os from 'node:os'; import { PostHog } from 'posthog-node'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { config, getBaseHeaders, getLoginDetails } from './config.js'; +import { config, getBaseHeaders } from './config.js'; import { CreateClient } from './client/client.js'; // Environment variables to allow opting out of telemetry @@ -30,6 +30,11 @@ type PostHogFetchResponse = { json: () => Promise; }; +type TelemetryIdentity = { + userEmail?: string; + organizationId: string; +}; + const buildPostHogOkResponse = () => ({ status: 200, text: () => Promise.resolve(''), @@ -116,19 +121,12 @@ export const initTelemetry = () => { * Generate a consistent distinct ID * Uses the platform API to get the organization slug if available */ -const getIdentity = async (): Promise => { +const getIdentity = async (): Promise => { try { - // First try to get the identity from the config file - const loginDetails = getLoginDetails(); - if (loginDetails?.organizationSlug) { - return loginDetails.organizationSlug; - } - - // If not found, the user might be using an API key. - // Call the whoAmI API to get organization information - if (!apiClient) { - return 'anonymous'; + return { + organizationId: 'anonymous', + }; } const resp = await apiClient.platform.whoAmI( @@ -139,13 +137,20 @@ const getIdentity = async (): Promise => { ); if (resp.response?.code === EnumStatusCode.OK) { - return resp.organizationSlug; + return { + organizationId: resp.organizationId || 'anonymous', + userEmail: resp.userEmail || undefined, + }; + } + } catch (err) { + // skip catch, returning anonymous identity if any error occurs (e.g. network issues, not logged in, etc.) + if (process.env.DEBUG) { + console.debug('Failed to get identity for telemetry, using anonymous.', err); } - - return 'anonymous'; - } catch { - return 'anonymous'; } + return { + organizationId: 'anonymous', + }; }; /** @@ -161,7 +166,10 @@ export const capture = async (eventName: string, properties: Record const metadata = getMetadata(); client.capture({ - distinctId: identity, + distinctId: identity.userEmail ?? identity.organizationId, + groups: { + cosmo_organization: identity.organizationId ?? '', + }, event: eventName, properties: { ...metadata, diff --git a/cli/src/utils.ts b/cli/src/utils.ts index b73af81943..7450d04f69 100644 --- a/cli/src/utils.ts +++ b/cli/src/utils.ts @@ -1,5 +1,6 @@ /* eslint-disable import/named */ -import { existsSync, readFileSync, writeFileSync } from 'node:fs'; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { access } from 'node:fs/promises'; import { CompositionOptions, federateSubgraphs, @@ -19,7 +20,7 @@ import { WebsocketSubprotocol, } from '@wundergraph/cosmo-shared'; import { SubgraphPublishStats } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { config, configFile } from './core/config.js'; +import { config, configDir, configFile } from './core/config.js'; import { KeycloakToken } from './commands/auth/utils.js'; export interface Header { @@ -183,11 +184,27 @@ export const introspectSubgraph = async ({ */ export function composeSubgraphs(subgraphs: Subgraph[], options?: CompositionOptions): FederationResult { // @TODO get router compatibility version programmatically - return federateSubgraphs({ options, subgraphs, version: ROUTER_COMPATIBILITY_VERSION_ONE }); + return federateSubgraphs({ + options, + subgraphs, + version: ROUTER_COMPATIBILITY_VERSION_ONE, + }); } export type ConfigData = Partial; +/** + * Asynchronously checks whether a file (or directory) exists at the given path. + */ +export const fileExists = async (filePath: string): Promise => { + try { + await access(filePath); + return true; + } catch { + return false; + } +}; + export const readConfigFile = (): ConfigData => { if (!existsSync(configFile)) { return {}; @@ -209,10 +226,12 @@ export const updateConfigFile = (newData: ConfigData) => { }; export const checkForUpdates = async () => { + if (config.disableUpdateCheck === 'true') { + return; + } + try { - if (config.disableUpdateCheck === 'true') { - return; - } + mkdirSync(configDir, { recursive: true }); const currentTime = Date.now(); @@ -302,6 +321,73 @@ type PrintTruncationWarningParams = { totalErrorCounts?: SubgraphPublishStats; }; +type KeyPressCallback = () => unknown | Promise; + +/** + * Waits for a single keypress matching one of the keys in the provided map. + * Keys are case-sensitive strings. Use 'Enter' for the enter key. + * Each entry is either a callback function or a descriptor `{ callback, persistent }`. + * When `persistent` is true the callback fires but the prompt keeps listening, + * useful for side-effect actions (e.g. opening a URL) alongside a terminating key. + */ +export function waitForKeyPress( + keyMap: Record, + message?: string, +): Promise { + const { promise, resolve } = Promise.withResolvers(); + + if (message) { + process.stdout.write(pc.dim(message)); + } + + process.stdin.setRawMode(true); + process.stdin.resume(); + + const onData = async (data: Buffer) => { + const key = data.toString(); + + // Ctrl+C + if (key === '\u0003') { + process.stdin.setRawMode(false); + process.stdin.pause(); + process.stdout.write('\n'); + process.exit(0); + } + + // Normalize Enter (\r or \n) + const normalized = key === '\r' || key === '\n' ? 'Enter' : key; + + if (!(normalized in keyMap)) { + return; + } + + const entry = keyMap[normalized]; + if (!entry) { + return; + } + + const isDescriptor = typeof entry !== 'function'; + const callback = isDescriptor ? entry.callback : entry; + const persistent = isDescriptor ? entry.persistent : false; + + if (persistent) { + await callback(); + return; + } + + process.stdin.removeListener('data', onData); + process.stdin.setRawMode(false); + process.stdin.pause(); + process.stdout.write('\n'); + await callback(); + resolve(); + }; + + process.stdin.on('data', onData); + + return promise; +} + export function printTruncationWarning({ displayedErrorCounts, totalErrorCounts }: PrintTruncationWarningParams) { if (!totalErrorCounts) { return; @@ -329,3 +415,55 @@ export function printTruncationWarning({ displayedErrorCounts, totalErrorCounts console.log(pc.yellow(`\nNote: Some results were truncated: ${truncatedItems.join(', ')}.`)); } } + +/** + * Prints text with rainbow-like effect. Respects NO_COLOR + */ +export function rainbow(text: string): string { + if (!pc.isColorSupported) { + return text; + } + const chars = [...text]; + return ( + chars + .map((char, i) => { + const t = chars.length > 1 ? i / (chars.length - 1) : 0; + const [r, g, b] = interpolateColor(t); + return `\u001B[38;2;${r};${g};${b}m${char}`; + }) + .join('') + '\u001B[0m' + ); +} + +/** Strips ANSI SGR escape sequences (colors, bold, dim, etc.) from a string. */ +export function stripAnsi(s: string): string { + const ESC = String.fromCodePoint(0x1b); + return s.replaceAll(new RegExp(`${ESC}\\[[\\d;]*m`, 'g'), ''); +} + +/** Returns the visible character count of a string, ignoring ANSI escape sequences. */ +export function visibleLength(s: string): number { + return stripAnsi(s).length; +} + +// Gradient color stops: pink → orange → yellow → green → cyan → blue → purple +const gradientStops: [number, number, number][] = [ + [255, 100, 150], // pink + [255, 160, 50], // orange + [255, 220, 50], // yellow + [80, 220, 100], // green + [50, 200, 220], // cyan + [80, 120, 255], // blue + [180, 100, 255], // purple +]; + +function interpolateColor(t: number): [number, number, number] { + const segment = t * (gradientStops.length - 1); + const i = Math.min(Math.floor(segment), gradientStops.length - 2); + const f = segment - i; + return [ + Math.round(gradientStops[i][0] + (gradientStops[i + 1][0] - gradientStops[i][0]) * f), + Math.round(gradientStops[i][1] + (gradientStops[i + 1][1] - gradientStops[i][1]) * f), + Math.round(gradientStops[i][2] + (gradientStops[i + 1][2] - gradientStops[i][2]) * f), + ]; +} diff --git a/cli/test/demo/command.test.ts b/cli/test/demo/command.test.ts new file mode 100644 index 0000000000..f40af44dc0 --- /dev/null +++ b/cli/test/demo/command.test.ts @@ -0,0 +1,478 @@ +import { Command } from 'commander'; +import { beforeEach, describe, expect, it, vi, type MockInstance } from 'vitest'; +import { createPromiseClient, createRouterTransport, type ServiceImpl } from '@connectrpc/connect'; +import { PlatformService } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_connect'; +import { FederatedGraph, Subgraph } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { Client } from '../../src/core/client/client.js'; +import DemoCommand from '../../src/commands/demo/index.js'; +import { waitForKeyPress } from '../../src/utils.js'; +import * as demoUtil from '../../src/commands/demo/util.js'; + +vi.mock('../../src/commands/auth/utils.js', async (importOriginal) => { + const mod = await importOriginal(); + return { ...mod, checkAuth: vi.fn().mockResolvedValue(undefined) }; +}); + +vi.mock('../../src/commands/demo/util.js', async (importOriginal) => { + const mod = await importOriginal(); + return { + ...mod, + prepareSupportingData: vi.fn(), + checkDockerReadiness: vi.fn(), + publishAllPlugins: vi.fn(), + runRouterContainer: vi.fn(), + getDemoLogPath: vi.fn(), + captureOnboardingEvent: vi.fn(), + }; +}); + +vi.mock('../../src/utils.js', async (importOriginal) => { + const mod = await importOriginal(); + return { ...mod, waitForKeyPress: vi.fn() }; +}); + +type PlatformOverrides = Partial>; + +function createMockTransport(overrides: PlatformOverrides = {}) { + return createRouterTransport(({ service }) => { + service(PlatformService, { + whoAmI: () => ({ + response: { code: EnumStatusCode.OK }, + userEmail: 'test@example.com', + organizationName: 'TestOrg', + }), + getOnboarding: () => ({ + response: { code: EnumStatusCode.OK }, + enabled: true, + }), + getFederatedGraphByName: () => ({ + response: { code: EnumStatusCode.ERR_NOT_FOUND, details: 'not found' }, + }), + createFederatedGraph: () => ({ + response: { code: EnumStatusCode.OK }, + }), + deleteFederatedGraph: () => ({ + response: { code: EnumStatusCode.OK }, + }), + deleteFederatedSubgraph: () => ({ + response: { code: EnumStatusCode.OK }, + }), + createFederatedGraphToken: () => ({ + response: { code: EnumStatusCode.OK }, + token: 'test-token', + }), + deleteRouterToken: () => ({ + response: { code: EnumStatusCode.OK }, + }), + ...overrides, + }); + }); +} + +function runDemo(overrides: PlatformOverrides = {}) { + const client: Client = { + platform: createPromiseClient(PlatformService, createMockTransport(overrides)), + }; + const program = new Command(); + program.addCommand(DemoCommand({ client })); + return program.parseAsync(['demo'], { from: 'user' }); +} + +// Queues responses for upcoming waitForKeyPress calls. Call these in the order the command will prompt. +const keys = { + enter: () => vi.mocked(waitForKeyPress).mockResolvedValueOnce(undefined), + press: (key: string) => + vi.mocked(waitForKeyPress).mockImplementationOnce(async (keyMap) => { + const entry = keyMap[key]; + if (typeof entry !== 'function') { + throw new TypeError(`waitForKeyPress was not given a function handler for '${key}'`); + } + await entry(); + }), +}; + +describe('Demo command', () => { + let exitSpy: MockInstance; + + beforeEach(() => { + // Silence the demo command's logo, welcome banner, and spinner output so CI logs stay readable. + vi.spyOn(console, 'log').mockImplementation(() => {}); + vi.spyOn(console, 'error').mockImplementation(() => {}); + vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + vi.spyOn(process.stdout, 'write').mockImplementation(() => true); + exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { + throw new Error('process.exit'); + }); + + vi.mocked(demoUtil.prepareSupportingData).mockResolvedValue('/tmp/cosmo-demo'); + vi.mocked(demoUtil.checkDockerReadiness).mockResolvedValue(undefined); + vi.mocked(demoUtil.publishAllPlugins).mockResolvedValue({ error: null }); + vi.mocked(demoUtil.runRouterContainer).mockResolvedValue({ error: null }); + vi.mocked(demoUtil.getDemoLogPath).mockReturnValue('/tmp/demo.log'); + }); + + describe('happy path', () => { + it('fresh setup: creates graph, publishes plugins, starts router', async () => { + keys.enter(); + + await runDemo(); + + expect(demoUtil.prepareSupportingData).toHaveBeenCalledOnce(); + expect(demoUtil.checkDockerReadiness).toHaveBeenCalledOnce(); + expect(demoUtil.publishAllPlugins).toHaveBeenCalledOnce(); + expect(demoUtil.runRouterContainer).toHaveBeenCalledOnce(); + expect(demoUtil.runRouterContainer).toHaveBeenCalledWith(expect.objectContaining({ routerToken: 'test-token' })); + }); + + it('existing graph: continues with existing graph', async () => { + const overrides: PlatformOverrides = { + getFederatedGraphByName: () => ({ + response: { code: EnumStatusCode.OK }, + graph: new FederatedGraph({ + name: 'demo', + namespace: 'default', + routingURL: 'http://localhost:3002/graphql', + }), + subgraphs: [], + }), + }; + + keys.enter(); + keys.enter(); + + await runDemo(overrides); + + expect(demoUtil.publishAllPlugins).toHaveBeenCalledOnce(); + expect(demoUtil.runRouterContainer).toHaveBeenCalledOnce(); + }); + + it('existing graph: deletes graph and exits', async () => { + const overrides: PlatformOverrides = { + getFederatedGraphByName: () => ({ + response: { code: EnumStatusCode.OK }, + graph: new FederatedGraph({ + name: 'demo', + namespace: 'default', + routingURL: 'http://localhost:3002/graphql', + }), + subgraphs: [new Subgraph({ name: 'products', namespace: 'default' })], + }), + }; + + keys.enter(); + keys.press('d'); + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(exitSpy).toHaveBeenCalledWith(0); + expect(demoUtil.publishAllPlugins).not.toHaveBeenCalled(); + expect(demoUtil.runRouterContainer).not.toHaveBeenCalled(); + }); + }); + + describe('non-recoverable errors', () => { + it('exits when whoAmI RPC fails', async () => { + const overrides: PlatformOverrides = { + whoAmI: () => ({ + response: { code: EnumStatusCode.ERR, details: 'Unauthorized' }, + }), + }; + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(exitSpy).toHaveBeenCalledWith(1); + expect(demoUtil.publishAllPlugins).not.toHaveBeenCalled(); + }); + + it('exits when user is not an organization owner', async () => { + const overrides: PlatformOverrides = { + getOnboarding: () => ({ + response: { code: EnumStatusCode.OK }, + enabled: false, + }), + }; + + keys.enter(); + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(exitSpy).toHaveBeenCalledWith(1); + expect(demoUtil.publishAllPlugins).not.toHaveBeenCalled(); + }); + + it('exits when docker is unavailable', async () => { + vi.mocked(demoUtil.checkDockerReadiness).mockImplementationOnce(() => { + process.exit(1); + }); + + await expect(runDemo()).rejects.toThrow('process.exit'); + + expect(exitSpy).toHaveBeenCalledWith(1); + expect(demoUtil.publishAllPlugins).not.toHaveBeenCalled(); + }); + + it('exits when github fetch fails', async () => { + vi.mocked(demoUtil.prepareSupportingData).mockImplementationOnce(() => { + process.exit(1); + }); + + await expect(runDemo()).rejects.toThrow('process.exit'); + + expect(exitSpy).toHaveBeenCalledWith(1); + expect(demoUtil.checkDockerReadiness).not.toHaveBeenCalled(); + }); + }); + + describe('retrying failures', () => { + it('user retries after plugin publishing fails', async () => { + vi.mocked(demoUtil.publishAllPlugins) + .mockResolvedValueOnce({ error: new Error('build failed') }) + .mockResolvedValueOnce({ error: null }); + + keys.enter(); + keys.press('r'); + + await runDemo(); + + expect(demoUtil.publishAllPlugins).toHaveBeenCalledTimes(2); + expect(demoUtil.runRouterContainer).toHaveBeenCalledOnce(); + }); + + it('user retries after router fails to start', async () => { + vi.mocked(demoUtil.runRouterContainer) + .mockResolvedValueOnce({ error: new Error('container exited') }) + .mockResolvedValueOnce({ error: null }); + + keys.enter(); + keys.press('r'); + + await runDemo(); + + expect(demoUtil.runRouterContainer).toHaveBeenCalledTimes(2); + }); + + it('user retries after graph lookup fails', async () => { + const getGraphFn = vi + .fn() + .mockReturnValueOnce({ response: { code: EnumStatusCode.ERR, details: 'service unavailable' } }) + .mockReturnValue({ response: { code: EnumStatusCode.ERR_NOT_FOUND, details: 'not found' } }); + + keys.enter(); + keys.press('r'); + + await runDemo({ getFederatedGraphByName: getGraphFn }); + + expect(getGraphFn).toHaveBeenCalledTimes(2); + expect(demoUtil.runRouterContainer).toHaveBeenCalledOnce(); + }); + }); + + describe('event tracking', () => { + it('fires completed events on happy path', async () => { + keys.enter(); + + await runDemo(); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_completed', + properties: { step_name: 'init', entry_source: 'wgc' }, + }); + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_completed', + properties: { step_name: 'check_onboarding', entry_source: 'wgc' }, + }); + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_completed', + properties: { step_name: 'create_federated_graph', entry_source: 'wgc' }, + }); + }); + + it('fires delete_federated_graph completed when user deletes existing graph', async () => { + const overrides: PlatformOverrides = { + getFederatedGraphByName: () => ({ + response: { code: EnumStatusCode.OK }, + graph: new FederatedGraph({ + name: 'demo', + namespace: 'default', + routingURL: 'http://localhost:3002/graphql', + }), + subgraphs: [new Subgraph({ name: 'products', namespace: 'default' })], + }), + }; + + keys.enter(); + keys.press('d'); + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_completed', + properties: { step_name: 'delete_federated_graph', entry_source: 'wgc' }, + }); + }); + + it('fires init failed when whoAmI RPC fails', async () => { + const overrides: PlatformOverrides = { + whoAmI: () => ({ + response: { code: EnumStatusCode.ERR, details: 'Unauthorized' }, + }), + }; + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'init', + entry_source: 'wgc', + error_category: 'resource', + error_message: expect.any(String), + }, + }); + }); + + it('fires check_onboarding failed when user is not org owner', async () => { + const overrides: PlatformOverrides = { + getOnboarding: () => ({ + response: { code: EnumStatusCode.OK }, + enabled: false, + }), + }; + + keys.enter(); + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'check_onboarding', + entry_source: 'wgc', + error_category: 'resource', + error_message: expect.any(String), + }, + }); + }); + + it('fires check_onboarding failed when getOnboarding RPC errors', async () => { + const getOnboardingFn = vi + .fn() + .mockReturnValueOnce({ response: { code: EnumStatusCode.ERR, details: 'rpc error' } }) + .mockReturnValue({ response: { code: EnumStatusCode.OK }, enabled: true }); + + keys.enter(); + keys.press('Enter'); + + await runDemo({ getOnboarding: getOnboardingFn }); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'check_onboarding', + entry_source: 'wgc', + error_category: 'resource', + error_message: expect.any(String), + }, + }); + }); + + it('fires delete_federated_graph failed when graph deletion fails', async () => { + const overrides: PlatformOverrides = { + getFederatedGraphByName: () => ({ + response: { code: EnumStatusCode.OK }, + graph: new FederatedGraph({ + name: 'demo', + namespace: 'default', + routingURL: 'http://localhost:3002/graphql', + }), + subgraphs: [new Subgraph({ name: 'products', namespace: 'default' })], + }), + deleteFederatedGraph: () => ({ + response: { code: EnumStatusCode.ERR, details: 'deletion failed' }, + }), + }; + + keys.enter(); + keys.press('d'); + keys.press('Enter'); + + await expect(runDemo(overrides)).rejects.toThrow('process.exit'); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'delete_federated_graph', + entry_source: 'wgc', + error_category: 'resource', + error_message: expect.any(String), + }, + }); + }); + + it('fires run_router_send_metrics failed when deleteRouterToken RPC fails', async () => { + const deleteRouterTokenFn = vi + .fn() + .mockReturnValueOnce({ response: { code: EnumStatusCode.ERR, details: 'token error' } }) + .mockReturnValue({ response: { code: EnumStatusCode.OK } }); + + keys.enter(); + keys.press('r'); + + await runDemo({ deleteRouterToken: deleteRouterTokenFn }); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: expect.any(String), + }, + }); + }); + + it('fires run_router_send_metrics failed when createFederatedGraphToken RPC fails', async () => { + const createFederatedGraphTokenFn = vi + .fn() + .mockReturnValueOnce({ response: { code: EnumStatusCode.ERR, details: 'create token error' } }) + .mockReturnValue({ response: { code: EnumStatusCode.OK }, token: 'test-token' }); + + keys.enter(); + keys.press('r'); + + await runDemo({ createFederatedGraphToken: createFederatedGraphTokenFn }); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: expect.any(String), + }, + }); + }); + + it('fires run_router_send_metrics failed when router exits with error', async () => { + vi.mocked(demoUtil.runRouterContainer) + .mockResolvedValueOnce({ error: new Error('container exited') }) + .mockResolvedValueOnce({ error: null }); + + keys.enter(); + keys.press('r'); + + await runDemo(); + + expect(demoUtil.captureOnboardingEvent).toHaveBeenCalledWith({ + name: 'onboarding_step_failed', + properties: { + step_name: 'run_router_send_metrics', + entry_source: 'wgc', + error_category: 'router', + error_message: expect.any(String), + }, + }); + }); + }); +}); diff --git a/cli/test/demo/util.test.ts b/cli/test/demo/util.test.ts new file mode 100644 index 0000000000..75e557f687 --- /dev/null +++ b/cli/test/demo/util.test.ts @@ -0,0 +1,395 @@ +import { existsSync, mkdtempSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { createPromiseClient, createRouterTransport } from '@connectrpc/connect'; +import { PlatformService } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_connect'; +import { execa, type Result, type ResultPromise } from 'execa'; +import { afterEach, beforeEach, describe, expect, it, vi, type MockInstance } from 'vitest'; +import { + checkDockerReadiness, + getDemoLogPath, + prepareSupportingData, + publishAllPlugins, + runRouterContainer, +} from '../../src/commands/demo/util.js'; +import { publishPluginPipeline, readPluginFiles } from '../../src/core/plugin-publish.js'; +import { config } from '../../src/core/config.js'; + +const mocks = vi.hoisted(() => ({ cacheDir: '' })); + +vi.mock('execa'); +vi.stubGlobal('fetch', vi.fn()); + +// runRouterContainer and publishAllPlugins pipe long-running docker output into a write stream. +// Real streams open asynchronously and would race against the tmpdir cleanup in afterEach. +vi.mock('node:fs', async (importOriginal) => { + const mod = await importOriginal(); + return { + ...mod, + createWriteStream: vi.fn(() => ({ + write: vi.fn(), + end: vi.fn(), + on: vi.fn(), + once: vi.fn(), + })), + }; +}); + +vi.mock('../../src/core/config.js', async (importOriginal) => { + const mod = await importOriginal(); + return { + ...mod, + get cacheDir() { + return mocks.cacheDir; + }, + }; +}); + +vi.mock('../../src/core/plugin-publish.js', async (importOriginal) => { + const mod = await importOriginal(); + return { ...mod, publishPluginPipeline: vi.fn(), readPluginFiles: vi.fn() }; +}); + +// Suppress the logo, spinner output, and commander error banners so CI logs stay readable. +function silenceOutput() { + vi.spyOn(console, 'log').mockImplementation(() => {}); + vi.spyOn(console, 'error').mockImplementation(() => {}); + vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + vi.spyOn(process.stdout, 'write').mockImplementation(() => true); +} + +function spyOnExit(): MockInstance { + return vi.spyOn(process, 'exit').mockImplementation(() => { + throw new Error('process.exit'); + }); +} + +// Build a fully-typed execa Result so tests can hand mockResolvedValueOnce a value that satisfies +// the declared return type of `execa(...)` without `as never` at every call site. Only `stdout` +// is typically relevant for the code under test; the rest are neutral defaults. +// The error-related fields (name/message/stack/cause/shortMessage/originalMessage/code) are +// typed as `never` on a successful Result — execa uses this as a structural signal that these +// only exist on ExecaError. We set them to `undefined as never` so the literal satisfies the type. +function execaResult(overrides: Partial = {}): Result { + return { + stdout: '', + stderr: '', + all: undefined, + stdio: [undefined, '', ''], + ipcOutput: [], + pipedFrom: [], + command: '', + escapedCommand: '', + cwd: '', + durationMs: 0, + failed: false, + timedOut: false, + isCanceled: false, + isGracefullyCanceled: false, + isMaxBuffer: false, + isTerminated: false, + isForcefullyTerminated: false, + name: undefined as never, + message: undefined as never, + stack: undefined as never, + cause: undefined as never, + shortMessage: undefined as never, + originalMessage: undefined as never, + code: undefined as never, + ...overrides, + }; +} + +function createMockTransport() { + return createRouterTransport(({ service }) => { + service(PlatformService, {}); + }); +} + +describe('prepareSupportingData', () => { + let tmpDir: string; + let exitSpy: MockInstance; + + beforeEach(() => { + tmpDir = mkdtempSync(path.join(tmpdir(), 'demo-prep-')); + mocks.cacheDir = tmpDir; + silenceOutput(); + exitSpy = spyOnExit(); + }); + + afterEach(() => { + rmSync(tmpDir, { recursive: true, force: true }); + }); + + it('downloads plugin files from github into cacheDir', async () => { + vi.mocked(fetch) + .mockResolvedValueOnce( + new Response( + JSON.stringify({ + tree: [ + { type: 'blob', path: 'plugins/products/schema.graphql' }, + { type: 'blob', path: 'plugins/reviews/Dockerfile' }, + ], + }), + ), + ) + .mockResolvedValueOnce(new Response(new TextEncoder().encode('schema content'))) + .mockResolvedValueOnce(new Response(new TextEncoder().encode('docker content'))); + + const result = await prepareSupportingData(); + + expect(result).toBe(path.join(tmpDir, 'demo')); + expect(existsSync(path.join(tmpDir, 'demo', 'plugins/products/schema.graphql'))).toBe(true); + expect(existsSync(path.join(tmpDir, 'demo', 'plugins/reviews/Dockerfile'))).toBe(true); + }); + + it('exits when github tree api fails', async () => { + vi.mocked(fetch).mockResolvedValueOnce(new Response(null, { status: 502, statusText: 'Bad Gateway' })); + + await expect(prepareSupportingData()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); + + it('exits when tree response is malformed', async () => { + vi.mocked(fetch).mockResolvedValueOnce(new Response(JSON.stringify({ invalid: 'shape' }))); + + await expect(prepareSupportingData()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); + + it('exits when a file fetch fails', async () => { + vi.mocked(fetch) + .mockResolvedValueOnce( + new Response( + JSON.stringify({ + tree: [{ type: 'blob', path: 'plugins/products/schema.graphql' }], + }), + ), + ) + .mockResolvedValueOnce(new Response(null, { status: 404, statusText: 'Not Found' })); + + await expect(prepareSupportingData()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); +}); + +describe('checkDockerReadiness', () => { + let exitSpy: MockInstance; + + beforeEach(() => { + silenceOutput(); + exitSpy = spyOnExit(); + }); + + it('succeeds when docker, buildx, and the docker-container builder are all present', async () => { + vi.mocked(execa) + .mockResolvedValueOnce(execaResult({ stdout: '25.0.0' })) + .mockResolvedValueOnce(execaResult({ stdout: 'v0.12.0' })) + .mockResolvedValueOnce( + execaResult({ + stdout: 'NAME STATUS\ndefault docker\ncosmo-builder docker-container running', + }), + ); + + await expect(checkDockerReadiness()).resolves.toBeUndefined(); + }); + + it('exits when docker is not available', async () => { + vi.mocked(execa).mockRejectedValueOnce(new Error('docker not found')); + + await expect(checkDockerReadiness()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); + + it('exits when buildx is not available', async () => { + vi.mocked(execa) + .mockResolvedValueOnce(execaResult({ stdout: '25.0.0' })) + .mockRejectedValueOnce(new Error('buildx not installed')); + + await expect(checkDockerReadiness()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); + + it('creates docker-container builder when missing', async () => { + vi.mocked(execa) + .mockResolvedValueOnce(execaResult({ stdout: '25.0.0' })) + .mockResolvedValueOnce(execaResult({ stdout: 'v0.12.0' })) + .mockResolvedValueOnce(execaResult({ stdout: 'NAME\ndefault docker' })) + .mockResolvedValueOnce(execaResult()) + .mockResolvedValueOnce(execaResult()); + + await expect(checkDockerReadiness()).resolves.toBeUndefined(); + expect(execa).toHaveBeenCalledWith( + 'docker', + expect.arrayContaining(['buildx', 'create', '--use', '--driver', 'docker-container']), + ); + }); + + it('exits when builder creation fails', async () => { + vi.mocked(execa) + .mockResolvedValueOnce(execaResult({ stdout: '25.0.0' })) + .mockResolvedValueOnce(execaResult({ stdout: 'v0.12.0' })) + .mockResolvedValueOnce(execaResult({ stdout: 'NAME\ndefault docker' })) + .mockRejectedValueOnce(new Error('permission denied')); + + await expect(checkDockerReadiness()).rejects.toThrow('process.exit'); + expect(exitSpy).toHaveBeenCalledWith(1); + }); +}); + +// The long-running docker process is simulated with a Promise that never resolves so it stays +// alive while readiness polling runs; pipeToLog safely no-ops on null streams. +function mockDockerProc(): ResultPromise { + const proc = Object.assign(new Promise(() => {}), { + stdout: null, + stderr: null, + }); + return proc as unknown as ResultPromise; +} + +describe('runRouterContainer', () => { + let tmpDir: string; + let logPath: string; + + beforeEach(() => { + tmpDir = mkdtempSync(path.join(tmpdir(), 'demo-router-')); + logPath = path.join(tmpDir, 'demo.log'); + silenceOutput(); + }); + + afterEach(() => { + rmSync(tmpDir, { recursive: true, force: true }); + }); + + it('returns success when the router becomes ready', async () => { + vi.mocked(execa).mockResolvedValueOnce(execaResult()).mockReturnValueOnce(mockDockerProc()); + + vi.mocked(fetch).mockResolvedValueOnce(new Response(null, { status: 200 })); + + const controller = new AbortController(); + const result = await runRouterContainer({ + routerToken: 'test-token', + routerBaseUrl: 'http://localhost:3002', + signal: controller.signal, + logPath, + }); + + expect(result).toEqual({ error: null }); + expect(fetch).toHaveBeenCalledWith( + 'http://localhost:3002/health/ready', + expect.objectContaining({ signal: controller.signal }), + ); + }); + + it('returns error when readiness check times out', async () => { + vi.useFakeTimers({ toFake: ['setTimeout', 'clearTimeout'] }); + + vi.mocked(execa).mockResolvedValueOnce(execaResult()).mockReturnValueOnce(mockDockerProc()); + + vi.mocked(fetch).mockResolvedValue(new Response(null, { status: 503 })); + + const controller = new AbortController(); + const promise = runRouterContainer({ + routerToken: 'test-token', + routerBaseUrl: 'http://localhost:3002', + signal: controller.signal, + logPath, + }); + + await vi.advanceTimersByTimeAsync(65_000); + const result = await promise; + + expect(result.error?.message).toContain('timed out'); + + vi.useRealTimers(); + }); + + it('removes any stale router container before starting a new one', async () => { + vi.mocked(execa).mockResolvedValueOnce(execaResult()).mockReturnValueOnce(mockDockerProc()); + + vi.mocked(fetch).mockResolvedValueOnce(new Response(null, { status: 200 })); + + const controller = new AbortController(); + await runRouterContainer({ + routerToken: 'test-token', + routerBaseUrl: 'http://localhost:3002', + signal: controller.signal, + logPath, + }); + + expect(execa).toHaveBeenCalledWith('docker', ['rm', '-f', config.demoRouterContainerName]); + }); +}); + +describe('publishAllPlugins', () => { + let tmpDir: string; + let logPath: string; + + beforeEach(() => { + tmpDir = mkdtempSync(path.join(tmpdir(), 'demo-publish-')); + logPath = path.join(tmpDir, 'demo.log'); + silenceOutput(); + }); + + afterEach(() => { + rmSync(tmpDir, { recursive: true, force: true }); + }); + + it('publishes all configured plugins sequentially', async () => { + vi.mocked(readPluginFiles).mockResolvedValue({} as never); + vi.mocked(publishPluginPipeline).mockResolvedValue({ error: null }); + + const result = await publishAllPlugins({ + client: { + platform: createPromiseClient(PlatformService, createMockTransport()), + }, + supportDir: tmpDir, + signal: new AbortController().signal, + logPath, + }); + + expect(result).toEqual({ error: null }); + expect(publishPluginPipeline).toHaveBeenCalledTimes(2); + }); + + it('stops and returns the error when the first plugin fails', async () => { + vi.mocked(readPluginFiles).mockResolvedValue({} as never); + vi.mocked(publishPluginPipeline).mockResolvedValueOnce({ + error: new Error('build failed'), + }); + + const result = await publishAllPlugins({ + client: { + platform: createPromiseClient(PlatformService, createMockTransport()), + }, + supportDir: tmpDir, + signal: new AbortController().signal, + logPath, + }); + + expect(result.error?.message).toBe('build failed'); + expect(publishPluginPipeline).toHaveBeenCalledTimes(1); + }); +}); + +describe('getDemoLogPath', () => { + let tmpDir: string; + + beforeEach(() => { + tmpDir = mkdtempSync(path.join(tmpdir(), 'demo-log-')); + mocks.cacheDir = tmpDir; + }); + + afterEach(() => { + rmSync(tmpDir, { recursive: true, force: true }); + }); + + it('returns the demo.log path under cacheDir', () => { + expect(getDemoLogPath()).toBe(path.join(tmpDir, 'demo', 'demo.log')); + }); + + it('creates the demo directory when missing', () => { + const result = getDemoLogPath(); + expect(existsSync(path.dirname(result))).toBe(true); + }); +}); diff --git a/cli/test/feature-flag/recompose.test.ts b/cli/test/feature-flag/recompose.test.ts new file mode 100644 index 0000000000..21943925dd --- /dev/null +++ b/cli/test/feature-flag/recompose.test.ts @@ -0,0 +1,155 @@ +import { afterEach, beforeEach, describe, expect, type MockInstance, test, vi } from 'vitest'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { runRecompose } from './utils.js'; + +describe('feature-flag recompose', () => { + let logSpy: MockInstance; + + beforeEach(() => { + logSpy = vi.spyOn(console, 'log').mockImplementation(() => {}); + vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + vi.spyOn(process, 'exit').mockImplementation(() => { + throw new Error('process.exit'); + }); + }); + + afterEach(() => { + process.exitCode = undefined; + vi.restoreAllMocks(); + }); + + test('that recompose is successful with default namespace', async () => { + await runRecompose({ + response: { code: EnumStatusCode.OK }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [], + }); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose is successful with specific namespace', async () => { + await runRecompose( + { + response: { code: EnumStatusCode.OK }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [], + }, + { namespace: 'production' }, + ); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose fails with exit code 1 if response is missing', async () => { + await runRecompose({}); + + expect(process.exitCode).toBe(1); + }); + + test('that recompose fails fails with exit code 1 if config splitting is not enabled', async () => { + await expect( + runRecompose({ + response: { code: EnumStatusCode.ERR, details: 'Configuration splitting not enabled' }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [], + }), + ).rejects.toThrow(); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose fails but does not return exit code 1 if the feature flag is not found', async () => { + await expect( + runRecompose({ + response: { code: EnumStatusCode.ERR_NOT_FOUND, details: 'The feature flag "feature-flag" was not found' }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [], + }), + ).rejects.toThrow(); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose fails if composition errors occur but does not return exit code 1', async () => { + await runRecompose({ + response: { code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED }, + compositionErrors: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Composition failed' }], + compositionWarnings: [], + deploymentErrors: [], + }); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose fails if composition errors occur and returns exit code 1 if --fail-on-composition-error is set', async () => { + await runRecompose( + { + response: { code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED }, + compositionErrors: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Composition failed' }], + compositionWarnings: [], + deploymentErrors: [], + }, + { failOnCompositionError: true }, + ); + + expect(process.exitCode).toBe(1); + }); + + test('that recompose fails if deployment errors occur but does not return exit code 1', async () => { + await runRecompose({ + response: { code: EnumStatusCode.ERR_DEPLOYMENT_FAILED }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Deploy failed' }], + }); + + expect(process.exitCode).toBeUndefined(); + }); + + test('that recompose fails if deployment errors occur and returns exit code 1 if --fail-on-admission-webhook-error is set', async () => { + await runRecompose( + { + response: { code: EnumStatusCode.ERR_DEPLOYMENT_FAILED }, + compositionErrors: [], + compositionWarnings: [], + deploymentErrors: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Deploy failed' }], + }, + { failOnAdmissionWebhookError: true }, + ); + + expect(process.exitCode).toBe(1); + }); + + test('that composition warnings are shown by default', async () => { + await runRecompose({ + response: { code: EnumStatusCode.OK }, + compositionErrors: [], + compositionWarnings: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Some warning' }], + deploymentErrors: [], + }); + + expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('warnings were produced')); + }); + + test('suppresses composition warnings when --suppress-warnings is set', async () => { + await runRecompose( + { + response: { code: EnumStatusCode.OK }, + compositionErrors: [], + compositionWarnings: [{ federatedGraphName: 'mygraph', namespace: 'default', message: 'Some warning' }], + deploymentErrors: [], + }, + { suppressWarnings: true }, + ); + + const warningCalls = logSpy.mock.calls.filter( + ([arg]) => typeof arg === 'string' && arg.includes('warnings were produced'), + ); + expect(warningCalls).toHaveLength(0); + }); +}); diff --git a/cli/test/feature-flag/utils.ts b/cli/test/feature-flag/utils.ts new file mode 100644 index 0000000000..20bf0cade0 --- /dev/null +++ b/cli/test/feature-flag/utils.ts @@ -0,0 +1,49 @@ +import type { PartialMessage } from '@bufbuild/protobuf'; +import { RecomposeFeatureFlagResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { createPromiseClient, createRouterTransport, Transport } from '@connectrpc/connect'; +import { PlatformService } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_connect'; +import { Command } from 'commander'; +import RecomposeCommand from '../../src/commands/feature-flag/commands/recompose.js'; +import { Client } from '../../src/core/client/client.js'; + +export function createMockTransport(response: PartialMessage): Transport { + return createRouterTransport(({ service }): void => { + service(PlatformService, { + recomposeFeatureFlag: () => response, + }); + }); +} + +export function createClient(response: PartialMessage): Client { + return { + platform: createPromiseClient(PlatformService, createMockTransport(response)), + }; +} + +export async function runRecompose( + response: PartialMessage, + opts: { + namespace?: string; + failOnCompositionError?: boolean; + failOnAdmissionWebhookError?: boolean; + suppressWarnings?: boolean; + } = {}, +): Promise { + const args = ['recompose', 'feature-flag']; + if (opts.namespace) { + args.push('--namespace', opts.namespace); + } + if (opts.failOnCompositionError) { + args.push('--fail-on-composition-error'); + } + if (opts.failOnAdmissionWebhookError) { + args.push('--fail-on-admission-webhook-error'); + } + if (opts.suppressWarnings) { + args.push('--suppress-warnings'); + } + + const program = new Command(); + program.addCommand(RecomposeCommand({ client: createClient(response) })); + await program.parseAsync(args, { from: 'user' }); +} diff --git a/cli/test/grpc-service.test.ts b/cli/test/grpc-service.test.ts index a25e1266e7..c61f3c7611 100644 --- a/cli/test/grpc-service.test.ts +++ b/cli/test/grpc-service.test.ts @@ -166,6 +166,9 @@ describe('gRPC Generate Command', () => { const program = new Command(); program.addCommand(GenerateCommand({ client })); + program.exitOverride((err) => { + expect(err.message).toContain('Schema validation failed'); + }); const tmpDir = join(tmpdir(), `grpc-test-${Date.now()}`); mkdirSync(tmpDir, { recursive: true }); @@ -181,7 +184,7 @@ describe('gRPC Generate Command', () => { program.parseAsync(['generate', 'testservice', '-i', schemaPath, '-o', tmpDir], { from: 'user', }), - ).rejects.toThrow('Schema validation failed'); + ).rejects.toThrow('process.exit unexpectedly called with "1"'); // Verify no output files were created (generation should stop on errors) expect(existsSync(join(tmpDir, 'mapping.json'))).toBe(false); @@ -196,6 +199,9 @@ describe('gRPC Generate Command', () => { const program = new Command(); program.addCommand(GenerateCommand({ client })); + program.exitOverride((err) => { + expect(err.message).toContain('Schema validation failed'); + }); const tmpDir = join(tmpdir(), `grpc-test-${Date.now()}`); mkdirSync(tmpDir, { recursive: true }); @@ -211,7 +217,7 @@ describe('gRPC Generate Command', () => { program.parseAsync(['generate', 'testservice', '-i', schemaPath, '-o', tmpDir], { from: 'user', }), - ).rejects.toThrow('Schema validation failed'); + ).rejects.toThrow('process.exit unexpectedly called with "1"'); // Verify no output files were created (generation should stop on errors) expect(existsSync(join(tmpDir, 'mapping.json'))).toBe(false); diff --git a/client-tests/mcp-ts/package-lock.json b/client-tests/mcp-ts/package-lock.json new file mode 100644 index 0000000000..2264cc73a1 --- /dev/null +++ b/client-tests/mcp-ts/package-lock.json @@ -0,0 +1,2809 @@ +{ + "name": "mcp-ts", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mcp-ts", + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "@modelcontextprotocol/sdk": "^1.29.0", + "@types/node": "^22.19.15", + "typescript": "^5.9.3", + "vitest": "^3.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.12", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.12.tgz", + "integrity": "sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", + "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", + "integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "10.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.12.10", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.10.tgz", + "integrity": "sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jose": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", + "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + } + } +} diff --git a/client-tests/mcp-ts/package.json b/client-tests/mcp-ts/package.json new file mode 100644 index 0000000000..24cbc3ca30 --- /dev/null +++ b/client-tests/mcp-ts/package.json @@ -0,0 +1,20 @@ +{ + "name": "mcp-ts", + "version": "1.0.0", + "description": "MCP OAuth scope enforcement E2E tests using the official MCP TypeScript SDK", + "type": "module", + "scripts": { + "test": "vitest run", + "test:watch": "vitest watch" + }, + "keywords": [], + "author": "", + "license": "Apache-2.0", + "packageManager": "pnpm@9.12.3", + "devDependencies": { + "@modelcontextprotocol/sdk": "^1.29.0", + "@types/node": "^22.19.15", + "typescript": "^5.9.3", + "vitest": "^3.2.4" + } +} diff --git a/client-tests/mcp-ts/src/__tests__/McpOAuthScopes.test.ts b/client-tests/mcp-ts/src/__tests__/McpOAuthScopes.test.ts new file mode 100644 index 0000000000..98e71c0e95 --- /dev/null +++ b/client-tests/mcp-ts/src/__tests__/McpOAuthScopes.test.ts @@ -0,0 +1,641 @@ +/** + * MCP OAuth Scope Enforcement — E2E Tests + * + * Validates the Cosmo Router's MCP OAuth 2.1 scope enforcement from an MCP + * client's perspective, using raw HTTP requests and the official MCP TypeScript + * SDK. The router enforces scopes at five additive levels; these tests verify + * each level returns the correct HTTP status and WWW-Authenticate challenge. + * + * ## Test Sections + * + * A. Metadata Discovery + * - Protected Resource Metadata (RFC 9728) exposes scopes_supported + * - Authorization Server Metadata (RFC 8414) exposes endpoints + * + * B. Dynamic Client Registration (DCR) + * - Register a new client via RFC 7591 and obtain tokens + * + * C. Operation-Level Scope Enforcement + * - initialize requires mcp:connect + * - tools/list requires mcp:tools:read + * - tools/list rejected without mcp:tools:read (403) + * + * D. Per-Tool Scope Enforcement (@requiresScopes) + * - Scoped tools rejected without per-tool scopes (403) + * - Scoped tools allowed with correct OR-of-AND scope group + * - Unscoped tools allowed with base scopes + * - scope_challenge_include_token_scopes includes held scopes in challenge + * + * E. tools_call Gate + * - tools/call rejected without mcp:tools:call (403) + * + * F. Built-in Tool Scope Enforcement + * - execute_graphql requires mcp:graphql:execute + * - get_schema requires mcp:schema:read + * - get_operation_info requires mcp:ops:read + * - Each tested with reject (403) and allow (200) + * + * G. MCP SDK Client E2E (ClientCredentialsProvider) + * - Full connect → list → call flow via the MCP TypeScript SDK + * - Verifies scoped tool throws 403 when scopes are missing + * + * ## Scope Hierarchy (mcp.test.config.yaml) + * + * | Level | Scopes | Gates | + * |--------------------|-------------------------|------------------------------------| + * | Initialize | mcp:connect | All HTTP requests | + * | tools/list | mcp:tools:read | Discovering tools | + * | tools/call (any) | mcp:tools:call | Calling any tool | + * | execute_graphql | mcp:graphql:execute | Arbitrary GraphQL queries | + * | get_schema | mcp:schema:read | Introspecting the schema | + * | get_operation_info | mcp:ops:read | Viewing operation metadata | + * | Per-tool | @requiresScopes scopes | Calling specific scoped operations | + * + * ## Prerequisites + * + * 1. Start the test OAuth server: + * go run ./router-tests/cmd/oauth-server + * 2. Edit router/mcp.oauth.config.yaml to point at your own execution + * config and MCP operations directory (see the EDIT ME markers), then + * start the router (from the router/ directory): + * go run ./cmd/router -config mcp.oauth.config.yaml + * 3. Run the tests: + * cd client-tests/mcp-ts && pnpm test + */ + +import { Client } from '@modelcontextprotocol/sdk/client/index.js'; +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; +import { ClientCredentialsProvider } from '@modelcontextprotocol/sdk/client/auth-extensions.js'; +import { describe, it, expect, beforeAll } from 'vitest'; + +// --------------------------------------------------------------------------- +// Configuration +// --------------------------------------------------------------------------- + +const MCP_SERVER_URL = process.env.MCP_SERVER_URL || 'http://localhost:5026/mcp'; +const MCP_BASE_URL = MCP_SERVER_URL.replace(/\/mcp$/, ''); +const OAUTH_SERVER_URL = process.env.OAUTH_SERVER_URL || 'http://localhost:9099'; + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +/** Fetch JSON from a URL. */ +async function fetchJSON(url: string, init?: RequestInit): Promise { + const res = await fetch(url, init); + if (!res.ok) throw new Error(`${res.status} ${res.statusText}: ${url}`); + return res.json() as Promise; +} + +/** Register a new OAuth client via DCR. Returns client_id + client_secret. */ +async function registerClient(registrationEndpoint: string): Promise<{ clientId: string; clientSecret: string }> { + const res = await fetch(registrationEndpoint, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + client_name: 'MCP E2E Test (DCR)', + redirect_uris: ['http://localhost:6274/oauth/callback'], + grant_types: ['client_credentials'], + token_endpoint_auth_method: 'client_secret_basic', + }), + }); + if (!res.ok) throw new Error(`DCR failed: ${res.status}`); + const body = (await res.json()) as { client_id: string; client_secret: string }; + return { clientId: body.client_id, clientSecret: body.client_secret }; +} + +/** Get an access token via client_credentials grant (Basic auth). */ +async function getToken( + tokenEndpoint: string, + clientId: string, + clientSecret: string, + scope: string, +): Promise<{ access_token: string; scope: string }> { + const res = await fetch(tokenEndpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Authorization: 'Basic ' + btoa(`${clientId}:${clientSecret}`), + }, + body: new URLSearchParams({ grant_type: 'client_credentials', scope }), + }); + if (!res.ok) throw new Error(`Token request failed: ${res.status}`); + return res.json() as Promise<{ access_token: string; scope: string }>; +} + +/** + * Send a raw JSON-RPC request to the MCP endpoint and return the HTTP response. + * Does NOT follow the SSE stream — returns the raw response for header inspection. + */ +async function rawMcpRequest(token: string, sessionId: string | null, body: object): Promise { + const headers: Record = { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}`, + }; + if (sessionId) headers['Mcp-Session-Id'] = sessionId; + + return fetch(MCP_SERVER_URL, { + method: 'POST', + headers, + body: JSON.stringify(body), + }); +} + +/** Extract the Mcp-Session-Id from an initialize response. */ +function getSessionId(res: Response): string { + const sid = res.headers.get('mcp-session-id'); + if (!sid) throw new Error('No Mcp-Session-Id header in response'); + return sid; +} + +/** Parse the WWW-Authenticate header into key-value pairs. */ +function parseWWWAuthenticate(res: Response): Record { + const header = res.headers.get('www-authenticate'); + if (!header) return {}; + const params: Record = {}; + for (const match of header.matchAll(/(\w+)="([^"]*)"/g)) { + params[match[1]] = match[2]; + } + return params; +} + +/** Initialize an MCP session and return the session ID. */ +async function initSession(token: string): Promise { + const res = await rawMcpRequest(token, null, { + jsonrpc: '2.0', + id: 1, + method: 'initialize', + params: { protocolVersion: '2025-03-26', capabilities: {}, clientInfo: { name: 'test', version: '1.0' } }, + }); + if (res.status !== 200) throw new Error(`Initialize failed: ${res.status}`); + return getSessionId(res); +} + +// --------------------------------------------------------------------------- +// Shared state +// --------------------------------------------------------------------------- + +let tokenEndpoint: string; +let registrationEndpoint: string; +let clientId: string; +let clientSecret: string; + +// ========================================================================== +// Test Suites +// ========================================================================== + +describe('MCP OAuth Scope Enforcement E2E', () => { + // ------------------------------------------------------------------------ + // Setup: discover endpoints + register a client via DCR + // ------------------------------------------------------------------------ + beforeAll(async () => { + // 1. Discover protected resource metadata + const resourceMeta = await fetchJSON<{ + authorization_servers: string[]; + scopes_supported: string[]; + }>(`${MCP_BASE_URL}/.well-known/oauth-protected-resource/mcp`); + + expect(resourceMeta.authorization_servers).toContain(OAUTH_SERVER_URL); + expect(resourceMeta.scopes_supported).toEqual(expect.arrayContaining(['mcp:connect', 'mcp:tools:read'])); + + // 2. Discover authorization server metadata + const asMeta = await fetchJSON<{ + token_endpoint: string; + registration_endpoint: string; + }>(`${OAUTH_SERVER_URL}/.well-known/oauth-authorization-server`); + + tokenEndpoint = asMeta.token_endpoint; + registrationEndpoint = asMeta.registration_endpoint; + + // 3. Dynamic Client Registration + const client = await registerClient(registrationEndpoint); + clientId = client.clientId; + clientSecret = client.clientSecret; + }); + + // ======================================================================== + // A. Metadata Discovery + // ======================================================================== + + describe('Metadata Discovery', () => { + it('should expose protected resource metadata with all scopes', async () => { + const meta = await fetchJSON<{ + resource: string; + authorization_servers: string[]; + scopes_supported: string[]; + bearer_methods_supported: string[]; + }>(`${MCP_BASE_URL}/.well-known/oauth-protected-resource/mcp`); + + expect(meta.resource).toBe(MCP_SERVER_URL); + expect(meta.authorization_servers).toEqual([OAUTH_SERVER_URL]); + expect(meta.bearer_methods_supported).toContain('header'); + expect(meta.scopes_supported).toEqual(expect.arrayContaining(['mcp:connect', 'mcp:tools:read'])); + }); + + it('should expose authorization server metadata', async () => { + const meta = await fetchJSON<{ + issuer: string; + token_endpoint: string; + registration_endpoint: string; + grant_types_supported: string[]; + }>(`${OAUTH_SERVER_URL}/.well-known/oauth-authorization-server`); + + expect(meta.issuer).toBe(OAUTH_SERVER_URL); + expect(meta.token_endpoint).toBeTruthy(); + expect(meta.registration_endpoint).toBeTruthy(); + expect(meta.grant_types_supported).toContain('client_credentials'); + }); + }); + + // ======================================================================== + // B. Dynamic Client Registration + Token Acquisition + // ======================================================================== + + describe('Dynamic Client Registration', () => { + it('should register a new client and obtain a token', async () => { + const newClient = await registerClient(registrationEndpoint); + expect(newClient.clientId).toMatch(/^dyn-/); + expect(newClient.clientSecret).toBeTruthy(); + + // Verify the DCR client can obtain a token + const token = await getToken(tokenEndpoint, newClient.clientId, newClient.clientSecret, 'mcp:connect'); + expect(token.access_token).toBeTruthy(); + expect(token.scope).toContain('mcp:connect'); + }); + + it('should obtain a token with multiple scopes', async () => { + const token = await getToken(tokenEndpoint, clientId, clientSecret, 'mcp:connect mcp:tools:read read:all'); + expect(token.access_token).toBeTruthy(); + expect(token.scope).toContain('mcp:connect'); + expect(token.scope).toContain('mcp:tools:read'); + expect(token.scope).toContain('read:all'); + }); + }); + + // ======================================================================== + // C. MCP Operation-Level Scope Enforcement (raw HTTP) + // ======================================================================== + + describe('Operation-Level Scope Enforcement', () => { + it('should allow initialize with mcp:connect scope', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, 'mcp:connect'); + + const res = await rawMcpRequest(access_token, null, { + jsonrpc: '2.0', + id: 1, + method: 'initialize', + params: { protocolVersion: '2025-03-26', capabilities: {}, clientInfo: { name: 'test', version: '1.0' } }, + }); + + expect(res.status).toBe(200); + expect(res.headers.get('mcp-session-id')).toBeTruthy(); + }); + + it('should reject tools/list with only mcp:connect (missing mcp:tools:read)', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, 'mcp:connect'); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 2, + method: 'tools/list', + params: {}, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.scope).toContain('mcp:tools:read'); + expect(auth.resource_metadata).toContain('.well-known/oauth-protected-resource'); + }); + + it('should allow tools/list with mcp:connect + mcp:tools:read', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, 'mcp:connect mcp:tools:read'); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 2, + method: 'tools/list', + params: {}, + }); + + expect(res.status).toBe(200); + }); + }); + + // ======================================================================== + // D. Per-Tool Scope Enforcement (raw HTTP) + // ======================================================================== + + describe('Per-Tool Scope Enforcement', () => { + const BASE_CALL_SCOPES = 'mcp:connect mcp:tools:read mcp:tools:call'; + + it('should reject scoped tool with only base scopes', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, BASE_CALL_SCOPES); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employee_start_date', arguments: { id: 1 } }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.error_description).toContain('get_employee_start_date'); + expect(auth.scope).toBeTruthy(); + }); + + it('should allow scoped tool with read:all', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, `${BASE_CALL_SCOPES} read:all`); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employee_start_date', arguments: { id: 1 } }, + }); + + expect(res.status).toBe(200); + }); + + it('should allow scoped tool with read:employee + read:private (alternative AND-group)', async () => { + const { access_token } = await getToken( + tokenEndpoint, + clientId, + clientSecret, + `${BASE_CALL_SCOPES} read:employee read:private`, + ); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employee_start_date', arguments: { id: 1 } }, + }); + + expect(res.status).toBe(200); + }); + + it('should allow unscoped tool with just base scopes', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, BASE_CALL_SCOPES); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employees', arguments: {} }, + }); + + expect(res.status).toBe(200); + }); + + it('should include existing scopes in challenge when partially scoped', async () => { + const { access_token } = await getToken( + tokenEndpoint, + clientId, + clientSecret, + `${BASE_CALL_SCOPES} read:employee`, + ); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employee_start_date', arguments: { id: 1 } }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + // With scope_challenge_include_token_scopes: true, the challenge includes + // both the held scope (read:employee) and the missing one (read:private) + const challengedScopes = auth.scope?.split(' ') ?? []; + expect(challengedScopes).toContain('read:employee'); + expect(challengedScopes).toContain('read:private'); + }); + }); + + // ======================================================================== + // E. tools_call Gate (raw HTTP) + // ======================================================================== + + describe('tools_call Gate', () => { + it('should reject tools/call without mcp:tools:call scope', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, 'mcp:connect mcp:tools:read'); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_employees', arguments: {} }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.scope).toContain('mcp:tools:call'); + }); + }); + + // ======================================================================== + // F. Built-in Tool Scope Enforcement (raw HTTP) + // ======================================================================== + + describe('Built-in Tool Scope Enforcement', () => { + const BASE_CALL_SCOPES = 'mcp:connect mcp:tools:read mcp:tools:call'; + + // -- execute_graphql -------------------------------------------------- + + it('should reject execute_graphql without mcp:graphql:execute scope', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, BASE_CALL_SCOPES); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'execute_graphql', arguments: { query: '{ employees { id } }' } }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.scope).toContain('mcp:graphql:execute'); + }); + + it('should allow execute_graphql with mcp:graphql:execute scope', async () => { + const { access_token } = await getToken( + tokenEndpoint, + clientId, + clientSecret, + `${BASE_CALL_SCOPES} mcp:graphql:execute`, + ); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'execute_graphql', arguments: { query: '{ employees { id } }' } }, + }); + + expect(res.status).toBe(200); + }); + + // -- get_schema ------------------------------------------------------- + + it('should reject get_schema without mcp:schema:read scope', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, BASE_CALL_SCOPES); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_schema', arguments: {} }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.scope).toContain('mcp:schema:read'); + }); + + it('should allow get_schema with mcp:schema:read scope', async () => { + const { access_token } = await getToken( + tokenEndpoint, + clientId, + clientSecret, + `${BASE_CALL_SCOPES} mcp:schema:read`, + ); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_schema', arguments: {} }, + }); + + expect(res.status).toBe(200); + }); + + // -- get_operation_info ------------------------------------------------ + + it('should reject get_operation_info without mcp:ops:read scope', async () => { + const { access_token } = await getToken(tokenEndpoint, clientId, clientSecret, BASE_CALL_SCOPES); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_operation_info', arguments: { operationName: 'GetEmployees' } }, + }); + + expect(res.status).toBe(403); + + const auth = parseWWWAuthenticate(res); + expect(auth.error).toBe('insufficient_scope'); + expect(auth.scope).toContain('mcp:ops:read'); + }); + + it('should allow get_operation_info with mcp:ops:read scope', async () => { + const { access_token } = await getToken( + tokenEndpoint, + clientId, + clientSecret, + `${BASE_CALL_SCOPES} mcp:ops:read`, + ); + const sessionId = await initSession(access_token); + + const res = await rawMcpRequest(access_token, sessionId, { + jsonrpc: '2.0', + id: 3, + method: 'tools/call', + params: { name: 'get_operation_info', arguments: { operationName: 'GetEmployees' } }, + }); + + expect(res.status).toBe(200); + }); + }); + + // ======================================================================== + // G. MCP SDK Client — Full E2E with ClientCredentialsProvider + // ======================================================================== + + describe('MCP SDK Client E2E', () => { + /** Helper to create a connected MCP client with given scopes. */ + async function createClient(scope: string): Promise { + const provider = new ClientCredentialsProvider({ + clientId, + clientSecret, + scope, + }); + + const transport = new StreamableHTTPClientTransport(new URL(MCP_SERVER_URL), { + authProvider: provider, + }); + + const client = new Client({ name: 'e2e-sdk-test', version: '1.0.0' }, { capabilities: {} }); + + await client.connect(transport); + return client; + } + + it('should connect, list tools, and call an unscoped tool', async () => { + const client = await createClient('mcp:connect mcp:tools:read mcp:tools:call'); + + const tools = await client.listTools(); + expect(tools.tools.length).toBeGreaterThan(0); + + const toolNames = tools.tools.map((t) => t.name); + expect(toolNames).toContain('get_employees'); + expect(toolNames).toContain('get_employee_start_date'); + + const result = await client.callTool({ name: 'get_employees', arguments: {} }); + expect(result.content).toBeDefined(); + + await client.close(); + }); + + it('should connect and call a scoped tool with sufficient scopes', async () => { + const client = await createClient('mcp:connect mcp:tools:read mcp:tools:call read:all'); + + const result = await client.callTool({ + name: 'get_employee_start_date', + arguments: { id: 1 }, + }); + + expect(result.content).toBeDefined(); + + await client.close(); + }); + + it('should surface a 403 error when calling a scoped tool without per-tool scopes', async () => { + const client = await createClient('mcp:connect mcp:tools:read mcp:tools:call'); + + // Calling a scoped tool without per-tool scopes should throw. + // The MCP client is responsible for handling this 403 and acquiring + // the additional scopes indicated in the WWW-Authenticate header. + await expect(client.callTool({ name: 'get_employee_start_date', arguments: { id: 1 } })).rejects.toThrow(/403/); + + await client.close(); + }); + }); +}); diff --git a/client-tests/mcp-ts/tsconfig.json b/client-tests/mcp-ts/tsconfig.json new file mode 100644 index 0000000000..b00c98512e --- /dev/null +++ b/client-tests/mcp-ts/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es2022", + "module": "es2022", + "moduleResolution": "bundler", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "rootDir": "./src", + "types": ["node", "vitest"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules"] +} diff --git a/client-tests/mcp-ts/vitest.config.ts b/client-tests/mcp-ts/vitest.config.ts new file mode 100644 index 0000000000..2655f53739 --- /dev/null +++ b/client-tests/mcp-ts/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.ts'], + testTimeout: 30_000, + }, +}); diff --git a/composition-go/Makefile b/composition-go/Makefile deleted file mode 100644 index 5a18260ac1..0000000000 --- a/composition-go/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -test: - go test -v ./... - go test -v -tags=wg_composition_v8 ./... - -test-coverage: - go test -v -coverprofile=coverage_normal.out -coverpkg=github.com/wundergraph/cosmo/composition-go/... ./... - go test -v -tags=wg_composition_v8 -coverprofile=coverage_v8.out -coverpkg=github.com/wundergraph/cosmo/composition-go/... ./... - -.PHONY: test \ No newline at end of file diff --git a/composition-go/README.md b/composition-go/README.md deleted file mode 100644 index 5a7e379951..0000000000 --- a/composition-go/README.md +++ /dev/null @@ -1,157 +0,0 @@ -Composition -=========== - -This packages implements federation composition for GraphQL and static router configuration generation. - -## Composition - - -Use `Federate` to produce a federated subgraph from a set of subgraphs: - -```go - -package main - -import ( - "fmt" - "log" - - "github.com/wundergraph/cosmo/composition-go" -) - -func main() { - federated, err := composition.Federate(&composition.Subgraph{ - Name: "A", - Schema: `type Query { - query: Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 - } - - type Nested4 { - name: String - }`, - }, &composition.Subgraph{ - Name: "B", - Schema: `type Query { - query: Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 - } - - type Nested4 { - age: Int - }`, - }) - if err != nil { - log.Fatal(err) - } - fmt.Println(federated.SDL) -} - -``` - -## Router configuration generation - -Use `BuildRouterConfiguration` to produce generate a static data source configuration for the router: - -```go - -package main - -import ( - "fmt" - "log" - - "github.com/wundergraph/cosmo/composition-go" -) - -func main() { - config, err := composition.BuildRouterConfiguration(&composition.Subgraph{ - Name: "A", - Schema: `type Query { - query: Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 - } - - type Nested4 { - name: String - }`, - }, &composition.Subgraph{ - Name: "B", - Schema: `type Query { - query: Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 - } - - type Nested4 { - age: Int - }`, - }) - if err != nil { - log.Fatal(err) - } - fmt.Println(config) -} -``` - -## Contributing - -The composition-go library uses code from [composition](../composition) and [shared](../shared), which -is bundled into [index.global.js](index.global.js). To keep this code up to date, run `go generate` -within this package. - -## Performance considerations - -By default, this package uses the [goja] runtime to run the composition algorithm. This has no -dependencies and supports all platforms, but depending on your inputs it can be too slow. - -For better performance, a [V8] backend is also available using the `wg_composition_v8` build -tag, which is ~50x times faster. This uses the V8 JS engine to run the algorithm, but it increases the -binary size and doesn't work on Windows, so it's not enabled by default. To enable it, use -`go build -tags wg_composition_v8` when compiling. - -[goja]: https://github.com/dop251/goja -[V8]: https://github.com/rogchap/v8go diff --git a/composition-go/composition.go b/composition-go/composition.go deleted file mode 100644 index e90505cd8a..0000000000 --- a/composition-go/composition.go +++ /dev/null @@ -1,155 +0,0 @@ -//go:generate ./generate.sh - -// Package composition implements federation composition for GraphQL. -package composition - -import ( - _ "embed" - "encoding/json" - "fmt" - "net/http" - "strings" - "sync" -) - -// Subgraph represents a graph to be federated. URL is optional. -type Subgraph struct { - // Name is the name of the subgraph - Name string `goja:"name"` - // URL is the URL of the subgraph used for sending operations - URL string `goja:"url"` - // Schema is the SDL of the subgraph as a string. If empty, the schema - // is retrieved from the URL using the _service query. - Schema string `goja:"schema"` - SubscriptionURL string `goja:"subscription_url"` - SubscriptionProtocol string `goja:"subscription_protocol"` -} - -type FieldConfiguration struct { - ArgumentNames []string `goja:"argumentNames"` - FieldName string `goja:"fieldName"` - TypeName string `goja:"typeName"` - RequiresAuthentication bool `goja:"requiresAuthentication"` - RequiredScopes [][]string `goja:"requiredScopes"` -} - -type FederatedGraph struct { - FieldConfigurations []*FieldConfiguration `goja:"fieldConfigurations"` - SDL string `goja:"sdl"` -} - -type sdlResponse struct { - Data struct { - Service struct { - SDL string `json:"sdl"` - } `json:"_service"` - } `json:"data"` - Errors []struct { - Message string `json:"message"` - } `json:"errors"` -} - -const ( - // This is required because the polyfill for events - // expects a browser environment and references navigator - jsPrelude = `var navigator = { - language: 'EN' - };` - - sdlQuery = `{"query": "query {_service { sdl } }"}` -) - -//go:embed index.global.js -var indexJs string - -var ( - pool sync.Pool -) - -func introspectSubgraph(URL string) (string, error) { - if URL == "" { - return "", fmt.Errorf("no URL provided") - } - req, err := http.NewRequest("POST", URL, strings.NewReader(sdlQuery)) - if err != nil { - return "", fmt.Errorf("could not create request: %w", err) - } - req.Header.Add("Content-Type", "application/json") - resp, err := http.DefaultClient.Do(req) - if err != nil { - return "", fmt.Errorf("could not retrieve schema: %w", err) - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("could not retrieve schema: unexpected status code %d", resp.StatusCode) - } - var response sdlResponse - if err := json.NewDecoder(resp.Body).Decode(&response); err != nil { - return "", fmt.Errorf("could not decode SDL response: %w", err) - } - if len(response.Errors) > 0 { - var errorMessages []string - for _, err := range response.Errors { - errorMessages = append(errorMessages, err.Message) - } - return "", fmt.Errorf("SDL query returned errors: %s", strings.Join(errorMessages, ", ")) - } - return response.Data.Service.SDL, nil -} - -func updateSchemas(subgraphs []*Subgraph) ([]*Subgraph, error) { - updatedSubgraphs := make([]*Subgraph, 0, len(subgraphs)) - for _, subgraph := range subgraphs { - if subgraph.Schema != "" { - updatedSubgraphs = append(updatedSubgraphs, subgraph) - continue - } - sdl, err := introspectSubgraph(subgraph.URL) - if err != nil { - return nil, fmt.Errorf("error introspecting subgraph %s: %w", subgraph.Name, err) - } - cpy := *subgraph - cpy.Schema = sdl - updatedSubgraphs = append(updatedSubgraphs, &cpy) - } - return updatedSubgraphs, nil -} - -// Federate produces a federated graphs from the schemas and names -// of each of the subgraphs. -func Federate(subgraphs ...*Subgraph) (*FederatedGraph, error) { - updatedSubgraphs, err := updateSchemas(subgraphs) - if err != nil { - return nil, err - } - vm, _ := pool.Get().(*vm) - if vm == nil { - var err error - vm, err = newVM() - if err != nil { - return nil, err - } - } - defer pool.Put(vm) - return vm.FederateSubgraphs(updatedSubgraphs) -} - -// BuildRouterConfiguration produces a federated router configuration -// as a string that can be saved to a file and used to configure the -// router data sources. -func BuildRouterConfiguration(subgraphs ...*Subgraph) (string, error) { - updatedSubgraphs, err := updateSchemas(subgraphs) - if err != nil { - return "", err - } - vm, _ := pool.Get().(*vm) - if vm == nil { - var err error - vm, err = newVM() - if err != nil { - return "", err - } - } - defer pool.Put(vm) - return vm.BuildRouterConfiguration(updatedSubgraphs) -} diff --git a/composition-go/composition_test.go b/composition-go/composition_test.go deleted file mode 100644 index 7063915e88..0000000000 --- a/composition-go/composition_test.go +++ /dev/null @@ -1,175 +0,0 @@ -package composition - -import ( - "encoding/json" - "os" - "path/filepath" - "regexp" - "strings" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -var subgraphs = []*Subgraph{ - { - Name: "A", - Schema: `type Query { - query(arg: String!): Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 @requiresScopes(scopes: [["read:field"]]) - } - - type Nested4 { - name: String - }`, - SubscriptionProtocol: "ws", - URL: "https://example.com/subgraph-a", - }, - { - Name: "B", - Schema: `type Query { - query(arg: String!): Nested @shareable - } - - type Nested @shareable { - nest: Nested2 - } - - type Nested2 @shareable { - nest: Nested3 - } - - type Nested3 @shareable { - nest: Nested4 - } - - type Nested4 { - age: Int @authenticated - }`, - SubscriptionProtocol: "ws", - URL: "https://example.com/subgraph-b", - }, -} - -func normalizeWhiteSpace(s string) string { - return strings.TrimSpace(regexp.MustCompile(`[\s]+`).ReplaceAllString(s, " ")) -} - -func TestFederateSubgraphs(t *testing.T) { - const ( - expectedSDL = ` - directive @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR - - directive @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR - - scalar openfed__Scope - - type Query { - query(arg: String!): Nested - } - - type Nested { - nest: Nested2 - } - - type Nested2 { - nest: Nested3 - } - - type Nested3 { - nest: Nested4 @requiresScopes(scopes: [["read:field"]]) - } - - type Nested4 { - name: String - age: Int @authenticated - } - ` - ) - federated, err := Federate(subgraphs...) - require.NoError(t, err) - assert.Equal(t, normalizeWhiteSpace(expectedSDL), normalizeWhiteSpace(federated.SDL)) - assert.Len(t, federated.FieldConfigurations, 3) - assert.Equal(t, &FieldConfiguration{ - ArgumentNames: []string{"arg"}, - FieldName: "query", - TypeName: "Query", - }, federated.FieldConfigurations[0]) - assert.Equal(t, &FieldConfiguration{ - ArgumentNames: []string{}, - FieldName: "nest", - TypeName: "Nested3", - RequiredScopes: [][]string{{"read:field"}}, - }, federated.FieldConfigurations[1]) - assert.Equal(t, &FieldConfiguration{ - ArgumentNames: []string{}, - FieldName: "age", - TypeName: "Nested4", - RequiresAuthentication: true, - RequiredScopes: [][]string{}, - }, federated.FieldConfigurations[2]) -} - -func TestBuildRouterConfiguration(t *testing.T) { - federated, err := BuildRouterConfiguration(subgraphs...) - require.NoError(t, err) - // Since the configuration format might change, we don't - // test the whole payload, just that it contains valid - // JSON and the engineConfig key - var m map[string]any - require.NoError(t, json.Unmarshal([]byte(federated), &m)) - assert.NotNil(t, m["engineConfig"]) -} - -func BenchmarkFederateSubgraphs(b *testing.B) { - b.ReportAllocs() - for ii := 0; ii < b.N; ii++ { - if _, err := Federate(subgraphs...); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkFederateDirectory(b *testing.B) { - b.ReportAllocs() - directory := os.Getenv("FEDERATION_SCHEMAS_DIR") - if directory == "" { - b.Skip("no FEDERATION_SCHEMAS_DIR") - } - entries, err := os.ReadDir(directory) - if err != nil { - b.Fatal(err) - } - var subgraphs []*Subgraph - for _, entry := range entries { - if filepath.Ext(entry.Name()) != ".graphql" { - continue - } - data, err := os.ReadFile(filepath.Join(directory, entry.Name())) - if err != nil { - b.Fatal(err) - } - subgraphs = append(subgraphs, &Subgraph{ - Name: filepath.Base(entry.Name()), - Schema: string(data), - }) - } - b.ResetTimer() - for ii := 0; ii < b.N; ii++ { - if _, err := Federate(subgraphs...); err != nil { - b.Fatal(err) - } - } -} diff --git a/composition-go/generate.sh b/composition-go/generate.sh deleted file mode 100755 index f086f5b486..0000000000 --- a/composition-go/generate.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# This scripts generates the files require for running -# the library, which are then embedded by the Go compiler -# via embed - -set -e - -pnpm generate -pnpm --filter='@wundergraph/composition' --filter='@wundergraph/cosmo-shared' build -pnpm --filter='@wundergraph/composition-shim' install -pnpm --filter='@wundergraph/composition-shim' build -cp -f shim/dist/index.global.js . diff --git a/composition-go/go.mod b/composition-go/go.mod deleted file mode 100644 index 66f005baae..0000000000 --- a/composition-go/go.mod +++ /dev/null @@ -1,21 +0,0 @@ -module github.com/wundergraph/cosmo/composition-go - -go 1.25 - -require ( - github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2 - github.com/stretchr/testify v1.9.0 - rogchap.com/v8go v0.9.0 -) - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dlclark/regexp2 v1.11.0 // indirect - github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect - github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect - golang.org/x/text v0.19.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) diff --git a/composition-go/go.sum b/composition-go/go.sum deleted file mode 100644 index 1aa7fedafd..0000000000 --- a/composition-go/go.sum +++ /dev/null @@ -1,77 +0,0 @@ -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= -github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= -github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2 h1:3J+RqSTu+JuyCYjoe82vvUUljEfgp8i6+nyhUsaYAbg= -github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -rogchap.com/v8go v0.9.0 h1:wYbUCO4h6fjTamziHrzyrPnpFNuzPpjZY+nfmZjNaew= -rogchap.com/v8go v0.9.0/go.mod h1:MxgP3pL2MW4dpme/72QRs8sgNMmM0pRc8DPhcuLWPAs= diff --git a/composition-go/index.global.js b/composition-go/index.global.js deleted file mode 100644 index 2a09bc5b30..0000000000 --- a/composition-go/index.global.js +++ /dev/null @@ -1,494 +0,0 @@ -function BigInt(value) { - return value; -} - -class URL { - constructor(url, base) { - // urlParse is provided by the runtime - const result = urlParse(url, base || ''); - for (const prop in result) { - this[prop] = result[prop] - } - } - - static canParse(url, base = undefined) { - return urlCanParse(url, base || ''); - } -} -"use strict";var shim=(()=>{var zz=Object.create;var Jd=Object.defineProperty,Hz=Object.defineProperties,Wz=Object.getOwnPropertyDescriptor,Xz=Object.getOwnPropertyDescriptors,Zz=Object.getOwnPropertyNames,zm=Object.getOwnPropertySymbols,eH=Object.getPrototypeOf,Zy=Object.prototype.hasOwnProperty,HR=Object.prototype.propertyIsEnumerable;var ln=Math.pow,Xy=(e,t,n)=>t in e?Jd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M=(e,t)=>{for(var n in t||(t={}))Zy.call(t,n)&&Xy(e,n,t[n]);if(zm)for(var n of zm(t))HR.call(t,n)&&Xy(e,n,t[n]);return e},$=(e,t)=>Hz(e,Xz(t));var WR=(e,t)=>{var n={};for(var r in e)Zy.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&zm)for(var r of zm(e))t.indexOf(r)<0&&HR.call(e,r)&&(n[r]=e[r]);return n};var nc=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Hm=(e,t)=>{for(var n in t)Jd(e,n,{get:t[n],enumerable:!0})},XR=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Zz(t))!Zy.call(e,i)&&i!==n&&Jd(e,i,{get:()=>t[i],enumerable:!(r=Wz(t,i))||r.enumerable});return e};var Ei=(e,t,n)=>(n=e!=null?zz(eH(e)):{},XR(t||!e||!e.__esModule?Jd(n,"default",{value:e,enumerable:!0}):n,e)),Wm=e=>XR(Jd({},"__esModule",{value:!0}),e);var g=(e,t,n)=>(Xy(e,typeof t!="symbol"?t+"":t,n),n),eI=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var tI=(e,t,n)=>(eI(e,t,"read from private field"),n?n.call(e):t.get(e)),rc=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},nI=(e,t,n,r)=>(eI(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var Il=(e,t,n)=>(eI(e,t,"access private method"),n);var Li=(e,t,n)=>new Promise((r,i)=>{var a=l=>{try{u(n.next(l))}catch(d){i(d)}},o=l=>{try{u(n.throw(l))}catch(d){i(d)}},u=l=>l.done?r(l.value):Promise.resolve(l.value).then(a,o);u((n=n.apply(e,t)).next())});var m=nc(()=>{"use strict"});var O={};Hm(O,{_debugEnd:()=>qP,_debugProcess:()=>xP,_events:()=>nF,_eventsCount:()=>rF,_exiting:()=>IP,_fatalExceptions:()=>UP,_getActiveHandles:()=>SP,_getActiveRequests:()=>vP,_kill:()=>DP,_linkedBinding:()=>hP,_maxListeners:()=>tF,_preload_modules:()=>XP,_rawDebug:()=>TP,_startProfilerIdleNotifier:()=>VP,_stopProfilerIdleNotifier:()=>jP,_tickCallback:()=>MP,abort:()=>QP,addListener:()=>iF,allowedNodeEnvironmentFlags:()=>wP,arch:()=>rP,argv:()=>sP,argv0:()=>WP,assert:()=>LP,binding:()=>dP,chdir:()=>mP,config:()=>gP,cpuUsage:()=>eN,cwd:()=>pP,debugPort:()=>HP,default:()=>pF,dlopen:()=>_P,domain:()=>yP,emit:()=>cF,emitWarning:()=>lP,env:()=>aP,execArgv:()=>oP,execPath:()=>zP,exit:()=>PP,features:()=>CP,hasUncaughtExceptionCaptureCallback:()=>kP,hrtime:()=>Zm,kill:()=>RP,listeners:()=>fF,memoryUsage:()=>AP,moduleLoadList:()=>EP,nextTick:()=>eP,off:()=>sF,on:()=>Os,once:()=>aF,openStdin:()=>FP,pid:()=>YP,platform:()=>iP,ppid:()=>JP,prependListener:()=>lF,prependOnceListener:()=>dF,reallyExit:()=>OP,release:()=>NP,removeAllListeners:()=>uF,removeListener:()=>oF,resourceUsage:()=>bP,setSourceMapsEnabled:()=>ZP,setUncaughtExceptionCaptureCallback:()=>BP,stderr:()=>$P,stdin:()=>GP,stdout:()=>KP,title:()=>nP,umask:()=>fP,uptime:()=>eF,version:()=>uP,versions:()=>cP});function aI(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function tH(){!gl||!ic||(gl=!1,ic.length?Ss=ic.concat(Ss):Xm=-1,Ss.length&&ZR())}function ZR(){if(!gl){var e=setTimeout(tH,0);gl=!0;for(var t=Ss.length;t;){for(ic=Ss,Ss=[];++Xm1)for(var n=1;n{"use strict";m();T();N();Ss=[],gl=!1,Xm=-1;tP.prototype.run=function(){this.fun.apply(null,this.array)};nP="browser",rP="x64",iP="browser",aP={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},sP=["/usr/bin/node"],oP=[],uP="v16.8.0",cP={},lP=function(e,t){console.warn((t?t+": ":"")+e)},dP=function(e){aI("binding")},fP=function(e){return 0},pP=function(){return"/"},mP=function(e){},NP={name:"node",sourceUrl:"",headersUrl:"",libUrl:""};TP=Rr,EP=[];yP={},IP=!1,gP={};OP=Rr,DP=Rr,eN=function(){return{}},bP=eN,AP=eN,RP=Rr,PP=Rr,FP=Rr,wP={};CP={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},UP=Rr,BP=Rr;MP=Rr,xP=Rr,qP=Rr,VP=Rr,jP=Rr,KP=void 0,$P=void 0,GP=void 0,QP=Rr,YP=2,JP=1,zP="/bin/usr/node",HP=9229,WP="node",XP=[],ZP=Rr,Nu={now:typeof performance!="undefined"?performance.now.bind(performance):void 0,timing:typeof performance!="undefined"?performance.timing:void 0};Nu.now===void 0&&(rI=Date.now(),Nu.timing&&Nu.timing.navigationStart&&(rI=Nu.timing.navigationStart),Nu.now=()=>Date.now()-rI);iI=1e9;Zm.bigint=function(e){var t=Zm(e);return typeof BigInt=="undefined"?t[0]*iI+t[1]:BigInt(t[0]*iI)+BigInt(t[1])};tF=10,nF={},rF=0;iF=Os,aF=Os,sF=Os,oF=Os,uF=Os,cF=Rr,lF=Os,dF=Os;pF={version:uP,versions:cP,arch:rP,platform:iP,release:NP,_rawDebug:TP,moduleLoadList:EP,binding:dP,_linkedBinding:hP,_events:nF,_eventsCount:rF,_maxListeners:tF,on:Os,addListener:iF,once:aF,off:sF,removeListener:oF,removeAllListeners:uF,emit:cF,prependListener:lF,prependOnceListener:dF,listeners:fF,domain:yP,_exiting:IP,config:gP,dlopen:_P,uptime:eF,_getActiveRequests:vP,_getActiveHandles:SP,reallyExit:OP,_kill:DP,cpuUsage:eN,resourceUsage:bP,memoryUsage:AP,kill:RP,exit:PP,openStdin:FP,allowedNodeEnvironmentFlags:wP,assert:LP,features:CP,_fatalExceptions:UP,setUncaughtExceptionCaptureCallback:BP,hasUncaughtExceptionCaptureCallback:kP,emitWarning:lP,nextTick:eP,_tickCallback:MP,_debugProcess:xP,_debugEnd:qP,_startProfilerIdleNotifier:VP,_stopProfilerIdleNotifier:jP,stdout:KP,stdin:GP,stderr:$P,abort:QP,umask:fP,chdir:mP,cwd:pP,env:aP,title:nP,argv:sP,execArgv:oP,pid:YP,ppid:JP,execPath:zP,debugPort:HP,hrtime:Zm,argv0:WP,_preload_modules:XP,setSourceMapsEnabled:ZP}});var N=nc(()=>{"use strict";mF()});function nH(){if(NF)return zd;NF=!0,zd.byteLength=u,zd.toByteArray=d,zd.fromByteArray=y;for(var e=[],t=[],n=typeof Uint8Array!="undefined"?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,a=r.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var B=v.indexOf("=");B===-1&&(B=R);var V=B===R?0:4-B%4;return[B,V]}function u(v){var R=o(v),B=R[0],V=R[1];return(B+V)*3/4-V}function l(v,R,B){return(R+B)*3/4-B}function d(v){var R,B=o(v),V=B[0],J=B[1],ne=new n(l(v,V,J)),te=0,Ne=J>0?V-4:V,Ee;for(Ee=0;Ee>16&255,ne[te++]=R>>8&255,ne[te++]=R&255;return J===2&&(R=t[v.charCodeAt(Ee)]<<2|t[v.charCodeAt(Ee+1)]>>4,ne[te++]=R&255),J===1&&(R=t[v.charCodeAt(Ee)]<<10|t[v.charCodeAt(Ee+1)]<<4|t[v.charCodeAt(Ee+2)]>>2,ne[te++]=R>>8&255,ne[te++]=R&255),ne}function p(v){return e[v>>18&63]+e[v>>12&63]+e[v>>6&63]+e[v&63]}function E(v,R,B){for(var V,J=[],ne=R;neNe?Ne:te+ne));return V===1?(R=v[B-1],J.push(e[R>>2]+e[R<<4&63]+"==")):V===2&&(R=(v[B-2]<<8)+v[B-1],J.push(e[R>>10]+e[R>>4&63]+e[R<<2&63]+"=")),J.join("")}return zd}function rH(){if(TF)return tN;TF=!0;return tN.read=function(e,t,n,r,i){var a,o,u=i*8-r-1,l=(1<>1,p=-7,E=n?i-1:0,y=n?-1:1,v=e[t+E];for(E+=y,a=v&(1<<-p)-1,v>>=-p,p+=u;p>0;a=a*256+e[t+E],E+=y,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=r;p>0;o=o*256+e[t+E],E+=y,p-=8);if(a===0)a=1-d;else{if(a===l)return o?NaN:(v?-1:1)*(1/0);o=o+Math.pow(2,r),a=a-d}return(v?-1:1)*o*Math.pow(2,a-r)},tN.write=function(e,t,n,r,i,a){var o,u,l,d=a*8-i-1,p=(1<>1,y=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,v=r?0:a-1,R=r?1:-1,B=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=p):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+E>=1?t+=y/l:t+=y*Math.pow(2,1-E),t*l>=2&&(o++,l/=2),o+E>=p?(u=0,o=p):o+E>=1?(u=(t*l-1)*Math.pow(2,i),o=o+E):(u=t*Math.pow(2,E-1)*Math.pow(2,i),o=0));i>=8;e[n+v]=u&255,v+=R,u/=256,i-=8);for(o=o<0;e[n+v]=o&255,v+=R,o/=256,d-=8);e[n+v-R]|=B*128},tN}function iH(){if(EF)return ac;EF=!0;let e=nH(),t=rH(),n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;ac.Buffer=o,ac.SlowBuffer=J,ac.INSPECT_MAX_BYTES=50;let r=2147483647;ac.kMaxLength=r,o.TYPED_ARRAY_SUPPORT=i(),!o.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{let P=new Uint8Array(1),I={foo:function(){return 42}};return Object.setPrototypeOf(I,Uint8Array.prototype),Object.setPrototypeOf(P,I),P.foo()===42}catch(P){return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function a(P){if(P>r)throw new RangeError('The value "'+P+'" is invalid for option "size"');let I=new Uint8Array(P);return Object.setPrototypeOf(I,o.prototype),I}function o(P,I,_){if(typeof P=="number"){if(typeof I=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return p(P)}return u(P,I,_)}o.poolSize=8192;function u(P,I,_){if(typeof P=="string")return E(P,I);if(ArrayBuffer.isView(P))return v(P);if(P==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof P);if(jt(P,ArrayBuffer)||P&&jt(P.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(jt(P,SharedArrayBuffer)||P&&jt(P.buffer,SharedArrayBuffer)))return R(P,I,_);if(typeof P=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let U=P.valueOf&&P.valueOf();if(U!=null&&U!==P)return o.from(U,I,_);let K=B(P);if(K)return K;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof P[Symbol.toPrimitive]=="function")return o.from(P[Symbol.toPrimitive]("string"),I,_);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof P)}o.from=function(P,I,_){return u(P,I,_)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function l(P){if(typeof P!="number")throw new TypeError('"size" argument must be of type number');if(P<0)throw new RangeError('The value "'+P+'" is invalid for option "size"')}function d(P,I,_){return l(P),P<=0?a(P):I!==void 0?typeof _=="string"?a(P).fill(I,_):a(P).fill(I):a(P)}o.alloc=function(P,I,_){return d(P,I,_)};function p(P){return l(P),a(P<0?0:V(P)|0)}o.allocUnsafe=function(P){return p(P)},o.allocUnsafeSlow=function(P){return p(P)};function E(P,I){if((typeof I!="string"||I==="")&&(I="utf8"),!o.isEncoding(I))throw new TypeError("Unknown encoding: "+I);let _=ne(P,I)|0,U=a(_),K=U.write(P,I);return K!==_&&(U=U.slice(0,K)),U}function y(P){let I=P.length<0?0:V(P.length)|0,_=a(I);for(let U=0;U=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return P|0}function J(P){return+P!=P&&(P=0),o.alloc(+P)}o.isBuffer=function(I){return I!=null&&I._isBuffer===!0&&I!==o.prototype},o.compare=function(I,_){if(jt(I,Uint8Array)&&(I=o.from(I,I.offset,I.byteLength)),jt(_,Uint8Array)&&(_=o.from(_,_.offset,_.byteLength)),!o.isBuffer(I)||!o.isBuffer(_))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(I===_)return 0;let U=I.length,K=_.length;for(let ee=0,ce=Math.min(U,K);eeK.length?(o.isBuffer(ce)||(ce=o.from(ce)),ce.copy(K,ee)):Uint8Array.prototype.set.call(K,ce,ee);else if(o.isBuffer(ce))ce.copy(K,ee);else throw new TypeError('"list" argument must be an Array of Buffers');ee+=ce.length}return K};function ne(P,I){if(o.isBuffer(P))return P.length;if(ArrayBuffer.isView(P)||jt(P,ArrayBuffer))return P.byteLength;if(typeof P!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof P);let _=P.length,U=arguments.length>2&&arguments[2]===!0;if(!U&&_===0)return 0;let K=!1;for(;;)switch(I){case"ascii":case"latin1":case"binary":return _;case"utf8":case"utf-8":return ms(P).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _*2;case"hex":return _>>>1;case"base64":return gr(P).length;default:if(K)return U?-1:ms(P).length;I=(""+I).toLowerCase(),K=!0}}o.byteLength=ne;function te(P,I,_){let U=!1;if((I===void 0||I<0)&&(I=0),I>this.length||((_===void 0||_>this.length)&&(_=this.length),_<=0)||(_>>>=0,I>>>=0,_<=I))return"";for(P||(P="utf8");;)switch(P){case"hex":return nr(this,I,_);case"utf8":case"utf-8":return En(this,I,_);case"ascii":return rn(this,I,_);case"latin1":case"binary":return xr(this,I,_);case"base64":return on(this,I,_);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return hn(this,I,_);default:if(U)throw new TypeError("Unknown encoding: "+P);P=(P+"").toLowerCase(),U=!0}}o.prototype._isBuffer=!0;function Ne(P,I,_){let U=P[I];P[I]=P[_],P[_]=U}o.prototype.swap16=function(){let I=this.length;if(I%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let _=0;__&&(I+=" ... "),""},n&&(o.prototype[n]=o.prototype.inspect),o.prototype.compare=function(I,_,U,K,ee){if(jt(I,Uint8Array)&&(I=o.from(I,I.offset,I.byteLength)),!o.isBuffer(I))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof I);if(_===void 0&&(_=0),U===void 0&&(U=I?I.length:0),K===void 0&&(K=0),ee===void 0&&(ee=this.length),_<0||U>I.length||K<0||ee>this.length)throw new RangeError("out of range index");if(K>=ee&&_>=U)return 0;if(K>=ee)return-1;if(_>=U)return 1;if(_>>>=0,U>>>=0,K>>>=0,ee>>>=0,this===I)return 0;let ce=ee-K,Tt=U-_,yn=Math.min(ce,Tt),cn=this.slice(K,ee),vn=I.slice(_,U);for(let an=0;an2147483647?_=2147483647:_<-2147483648&&(_=-2147483648),_=+_,_r(_)&&(_=K?0:P.length-1),_<0&&(_=P.length+_),_>=P.length){if(K)return-1;_=P.length-1}else if(_<0)if(K)_=0;else return-1;if(typeof I=="string"&&(I=o.from(I,U)),o.isBuffer(I))return I.length===0?-1:he(P,I,_,U,K);if(typeof I=="number")return I=I&255,typeof Uint8Array.prototype.indexOf=="function"?K?Uint8Array.prototype.indexOf.call(P,I,_):Uint8Array.prototype.lastIndexOf.call(P,I,_):he(P,[I],_,U,K);throw new TypeError("val must be string, number or Buffer")}function he(P,I,_,U,K){let ee=1,ce=P.length,Tt=I.length;if(U!==void 0&&(U=String(U).toLowerCase(),U==="ucs2"||U==="ucs-2"||U==="utf16le"||U==="utf-16le")){if(P.length<2||I.length<2)return-1;ee=2,ce/=2,Tt/=2,_/=2}function yn(vn,an){return ee===1?vn[an]:vn.readUInt16BE(an*ee)}let cn;if(K){let vn=-1;for(cn=_;cnce&&(_=ce-Tt),cn=_;cn>=0;cn--){let vn=!0;for(let an=0;anK&&(U=K)):U=K;let ee=I.length;U>ee/2&&(U=ee/2);let ce;for(ce=0;ce>>0,isFinite(U)?(U=U>>>0,K===void 0&&(K="utf8")):(K=U,U=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let ee=this.length-_;if((U===void 0||U>ee)&&(U=ee),I.length>0&&(U<0||_<0)||_>this.length)throw new RangeError("Attempt to write outside buffer bounds");K||(K="utf8");let ce=!1;for(;;)switch(K){case"hex":return we(this,I,_,U);case"utf8":case"utf-8":return Qe(this,I,_,U);case"ascii":case"latin1":case"binary":return Z(this,I,_,U);case"base64":return Se(this,I,_,U);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ht(this,I,_,U);default:if(ce)throw new TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),ce=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function on(P,I,_){return I===0&&_===P.length?e.fromByteArray(P):e.fromByteArray(P.slice(I,_))}function En(P,I,_){_=Math.min(P.length,_);let U=[],K=I;for(;K<_;){let ee=P[K],ce=null,Tt=ee>239?4:ee>223?3:ee>191?2:1;if(K+Tt<=_){let yn,cn,vn,an;switch(Tt){case 1:ee<128&&(ce=ee);break;case 2:yn=P[K+1],(yn&192)===128&&(an=(ee&31)<<6|yn&63,an>127&&(ce=an));break;case 3:yn=P[K+1],cn=P[K+2],(yn&192)===128&&(cn&192)===128&&(an=(ee&15)<<12|(yn&63)<<6|cn&63,an>2047&&(an<55296||an>57343)&&(ce=an));break;case 4:yn=P[K+1],cn=P[K+2],vn=P[K+3],(yn&192)===128&&(cn&192)===128&&(vn&192)===128&&(an=(ee&15)<<18|(yn&63)<<12|(cn&63)<<6|vn&63,an>65535&&an<1114112&&(ce=an))}}ce===null?(ce=65533,Tt=1):ce>65535&&(ce-=65536,U.push(ce>>>10&1023|55296),ce=56320|ce&1023),U.push(ce),K+=Tt}return Ft(U)}let un=4096;function Ft(P){let I=P.length;if(I<=un)return String.fromCharCode.apply(String,P);let _="",U=0;for(;UU)&&(_=U);let K="";for(let ee=I;ee<_;++ee)K+=Gu[P[ee]];return K}function hn(P,I,_){let U=P.slice(I,_),K="";for(let ee=0;eeU&&(I=U),_<0?(_+=U,_<0&&(_=0)):_>U&&(_=U),__)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUintLE=o.prototype.readUIntLE=function(I,_,U){I=I>>>0,_=_>>>0,U||Xt(I,_,this.length);let K=this[I],ee=1,ce=0;for(;++ce<_&&(ee*=256);)K+=this[I+ce]*ee;return K},o.prototype.readUintBE=o.prototype.readUIntBE=function(I,_,U){I=I>>>0,_=_>>>0,U||Xt(I,_,this.length);let K=this[I+--_],ee=1;for(;_>0&&(ee*=256);)K+=this[I+--_]*ee;return K},o.prototype.readUint8=o.prototype.readUInt8=function(I,_){return I=I>>>0,_||Xt(I,1,this.length),this[I]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(I,_){return I=I>>>0,_||Xt(I,2,this.length),this[I]|this[I+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(I,_){return I=I>>>0,_||Xt(I,2,this.length),this[I]<<8|this[I+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(I,_){return I=I>>>0,_||Xt(I,4,this.length),(this[I]|this[I+1]<<8|this[I+2]<<16)+this[I+3]*16777216},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(I,_){return I=I>>>0,_||Xt(I,4,this.length),this[I]*16777216+(this[I+1]<<16|this[I+2]<<8|this[I+3])},o.prototype.readBigUInt64LE=ka(function(I){I=I>>>0,it(I,"offset");let _=this[I],U=this[I+7];(_===void 0||U===void 0)&&wt(I,this.length-8);let K=_+this[++I]*ln(2,8)+this[++I]*ln(2,16)+this[++I]*ln(2,24),ee=this[++I]+this[++I]*ln(2,8)+this[++I]*ln(2,16)+U*ln(2,24);return BigInt(K)+(BigInt(ee)<>>0,it(I,"offset");let _=this[I],U=this[I+7];(_===void 0||U===void 0)&&wt(I,this.length-8);let K=_*ln(2,24)+this[++I]*ln(2,16)+this[++I]*ln(2,8)+this[++I],ee=this[++I]*ln(2,24)+this[++I]*ln(2,16)+this[++I]*ln(2,8)+U;return(BigInt(K)<>>0,_=_>>>0,U||Xt(I,_,this.length);let K=this[I],ee=1,ce=0;for(;++ce<_&&(ee*=256);)K+=this[I+ce]*ee;return ee*=128,K>=ee&&(K-=Math.pow(2,8*_)),K},o.prototype.readIntBE=function(I,_,U){I=I>>>0,_=_>>>0,U||Xt(I,_,this.length);let K=_,ee=1,ce=this[I+--K];for(;K>0&&(ee*=256);)ce+=this[I+--K]*ee;return ee*=128,ce>=ee&&(ce-=Math.pow(2,8*_)),ce},o.prototype.readInt8=function(I,_){return I=I>>>0,_||Xt(I,1,this.length),this[I]&128?(255-this[I]+1)*-1:this[I]},o.prototype.readInt16LE=function(I,_){I=I>>>0,_||Xt(I,2,this.length);let U=this[I]|this[I+1]<<8;return U&32768?U|4294901760:U},o.prototype.readInt16BE=function(I,_){I=I>>>0,_||Xt(I,2,this.length);let U=this[I+1]|this[I]<<8;return U&32768?U|4294901760:U},o.prototype.readInt32LE=function(I,_){return I=I>>>0,_||Xt(I,4,this.length),this[I]|this[I+1]<<8|this[I+2]<<16|this[I+3]<<24},o.prototype.readInt32BE=function(I,_){return I=I>>>0,_||Xt(I,4,this.length),this[I]<<24|this[I+1]<<16|this[I+2]<<8|this[I+3]},o.prototype.readBigInt64LE=ka(function(I){I=I>>>0,it(I,"offset");let _=this[I],U=this[I+7];(_===void 0||U===void 0)&&wt(I,this.length-8);let K=this[I+4]+this[I+5]*ln(2,8)+this[I+6]*ln(2,16)+(U<<24);return(BigInt(K)<>>0,it(I,"offset");let _=this[I],U=this[I+7];(_===void 0||U===void 0)&&wt(I,this.length-8);let K=(_<<24)+this[++I]*ln(2,16)+this[++I]*ln(2,8)+this[++I];return(BigInt(K)<>>0,_||Xt(I,4,this.length),t.read(this,I,!0,23,4)},o.prototype.readFloatBE=function(I,_){return I=I>>>0,_||Xt(I,4,this.length),t.read(this,I,!1,23,4)},o.prototype.readDoubleLE=function(I,_){return I=I>>>0,_||Xt(I,8,this.length),t.read(this,I,!0,52,8)},o.prototype.readDoubleBE=function(I,_){return I=I>>>0,_||Xt(I,8,this.length),t.read(this,I,!1,52,8)};function Ln(P,I,_,U,K,ee){if(!o.isBuffer(P))throw new TypeError('"buffer" argument must be a Buffer instance');if(I>K||IP.length)throw new RangeError("Index out of range")}o.prototype.writeUintLE=o.prototype.writeUIntLE=function(I,_,U,K){if(I=+I,_=_>>>0,U=U>>>0,!K){let Tt=Math.pow(2,8*U)-1;Ln(this,I,_,U,Tt,0)}let ee=1,ce=0;for(this[_]=I&255;++ce>>0,U=U>>>0,!K){let Tt=Math.pow(2,8*U)-1;Ln(this,I,_,U,Tt,0)}let ee=U-1,ce=1;for(this[_+ee]=I&255;--ee>=0&&(ce*=256);)this[_+ee]=I/ce&255;return _+U},o.prototype.writeUint8=o.prototype.writeUInt8=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,1,255,0),this[_]=I&255,_+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,2,65535,0),this[_]=I&255,this[_+1]=I>>>8,_+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,2,65535,0),this[_]=I>>>8,this[_+1]=I&255,_+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,4,4294967295,0),this[_+3]=I>>>24,this[_+2]=I>>>16,this[_+1]=I>>>8,this[_]=I&255,_+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,4,4294967295,0),this[_]=I>>>24,this[_+1]=I>>>16,this[_+2]=I>>>8,this[_+3]=I&255,_+4};function se(P,I,_,U,K){Mt(I,U,K,P,_,7);let ee=Number(I&BigInt(4294967295));P[_++]=ee,ee=ee>>8,P[_++]=ee,ee=ee>>8,P[_++]=ee,ee=ee>>8,P[_++]=ee;let ce=Number(I>>BigInt(32)&BigInt(4294967295));return P[_++]=ce,ce=ce>>8,P[_++]=ce,ce=ce>>8,P[_++]=ce,ce=ce>>8,P[_++]=ce,_}function be(P,I,_,U,K){Mt(I,U,K,P,_,7);let ee=Number(I&BigInt(4294967295));P[_+7]=ee,ee=ee>>8,P[_+6]=ee,ee=ee>>8,P[_+5]=ee,ee=ee>>8,P[_+4]=ee;let ce=Number(I>>BigInt(32)&BigInt(4294967295));return P[_+3]=ce,ce=ce>>8,P[_+2]=ce,ce=ce>>8,P[_+1]=ce,ce=ce>>8,P[_]=ce,_+8}o.prototype.writeBigUInt64LE=ka(function(I,_=0){return se(this,I,_,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeBigUInt64BE=ka(function(I,_=0){return be(this,I,_,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeIntLE=function(I,_,U,K){if(I=+I,_=_>>>0,!K){let yn=Math.pow(2,8*U-1);Ln(this,I,_,U,yn-1,-yn)}let ee=0,ce=1,Tt=0;for(this[_]=I&255;++ee>0)-Tt&255;return _+U},o.prototype.writeIntBE=function(I,_,U,K){if(I=+I,_=_>>>0,!K){let yn=Math.pow(2,8*U-1);Ln(this,I,_,U,yn-1,-yn)}let ee=U-1,ce=1,Tt=0;for(this[_+ee]=I&255;--ee>=0&&(ce*=256);)I<0&&Tt===0&&this[_+ee+1]!==0&&(Tt=1),this[_+ee]=(I/ce>>0)-Tt&255;return _+U},o.prototype.writeInt8=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,1,127,-128),I<0&&(I=255+I+1),this[_]=I&255,_+1},o.prototype.writeInt16LE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,2,32767,-32768),this[_]=I&255,this[_+1]=I>>>8,_+2},o.prototype.writeInt16BE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,2,32767,-32768),this[_]=I>>>8,this[_+1]=I&255,_+2},o.prototype.writeInt32LE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,4,2147483647,-2147483648),this[_]=I&255,this[_+1]=I>>>8,this[_+2]=I>>>16,this[_+3]=I>>>24,_+4},o.prototype.writeInt32BE=function(I,_,U){return I=+I,_=_>>>0,U||Ln(this,I,_,4,2147483647,-2147483648),I<0&&(I=4294967295+I+1),this[_]=I>>>24,this[_+1]=I>>>16,this[_+2]=I>>>8,this[_+3]=I&255,_+4},o.prototype.writeBigInt64LE=ka(function(I,_=0){return se(this,I,_,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),o.prototype.writeBigInt64BE=ka(function(I,_=0){return be(this,I,_,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(P,I,_,U,K,ee){if(_+U>P.length)throw new RangeError("Index out of range");if(_<0)throw new RangeError("Index out of range")}function Ce(P,I,_,U,K){return I=+I,_=_>>>0,K||ge(P,I,_,4),t.write(P,I,_,U,23,4),_+4}o.prototype.writeFloatLE=function(I,_,U){return Ce(this,I,_,!0,U)},o.prototype.writeFloatBE=function(I,_,U){return Ce(this,I,_,!1,U)};function Dt(P,I,_,U,K){return I=+I,_=_>>>0,K||ge(P,I,_,8),t.write(P,I,_,U,52,8),_+8}o.prototype.writeDoubleLE=function(I,_,U){return Dt(this,I,_,!0,U)},o.prototype.writeDoubleBE=function(I,_,U){return Dt(this,I,_,!1,U)},o.prototype.copy=function(I,_,U,K){if(!o.isBuffer(I))throw new TypeError("argument should be a Buffer");if(U||(U=0),!K&&K!==0&&(K=this.length),_>=I.length&&(_=I.length),_||(_=0),K>0&&K=this.length)throw new RangeError("Index out of range");if(K<0)throw new RangeError("sourceEnd out of bounds");K>this.length&&(K=this.length),I.length-_>>0,U=U===void 0?this.length:U>>>0,I||(I=0);let ee;if(typeof I=="number")for(ee=_;eeln(2,32)?K=je(String(_)):typeof _=="bigint"&&(K=String(_),(_>ln(BigInt(2),BigInt(32))||_<-ln(BigInt(2),BigInt(32)))&&(K=je(K)),K+="n"),U+=` It must be ${I}. Received ${K}`,U},RangeError);function je(P){let I="",_=P.length,U=P[0]==="-"?1:0;for(;_>=U+4;_-=3)I=`_${P.slice(_-3,_)}${I}`;return`${P.slice(0,_)}${I}`}function He(P,I,_){it(I,"offset"),(P[I]===void 0||P[I+_]===void 0)&&wt(I,P.length-(_+1))}function Mt(P,I,_,U,K,ee){if(P>_||P3?I===0||I===BigInt(0)?Tt=`>= 0${ce} and < 2${ce} ** ${(ee+1)*8}${ce}`:Tt=`>= -(2${ce} ** ${(ee+1)*8-1}${ce}) and < 2 ** ${(ee+1)*8-1}${ce}`:Tt=`>= ${I}${ce} and <= ${_}${ce}`,new z.ERR_OUT_OF_RANGE("value",Tt,P)}He(U,K,ee)}function it(P,I){if(typeof P!="number")throw new z.ERR_INVALID_ARG_TYPE(I,"number",P)}function wt(P,I,_){throw Math.floor(P)!==P?(it(P,_),new z.ERR_OUT_OF_RANGE(_||"offset","an integer",P)):I<0?new z.ERR_BUFFER_OUT_OF_BOUNDS:new z.ERR_OUT_OF_RANGE(_||"offset",`>= ${_?1:0} and <= ${I}`,P)}let ps=/[^+/0-9A-Za-z-_]/g;function zr(P){if(P=P.split("=")[0],P=P.trim().replace(ps,""),P.length<2)return"";for(;P.length%4!==0;)P=P+"=";return P}function ms(P,I){I=I||1/0;let _,U=P.length,K=null,ee=[];for(let ce=0;ce55295&&_<57344){if(!K){if(_>56319){(I-=3)>-1&&ee.push(239,191,189);continue}else if(ce+1===U){(I-=3)>-1&&ee.push(239,191,189);continue}K=_;continue}if(_<56320){(I-=3)>-1&&ee.push(239,191,189),K=_;continue}_=(K-55296<<10|_-56320)+65536}else K&&(I-=3)>-1&&ee.push(239,191,189);if(K=null,_<128){if((I-=1)<0)break;ee.push(_)}else if(_<2048){if((I-=2)<0)break;ee.push(_>>6|192,_&63|128)}else if(_<65536){if((I-=3)<0)break;ee.push(_>>12|224,_>>6&63|128,_&63|128)}else if(_<1114112){if((I-=4)<0)break;ee.push(_>>18|240,_>>12&63|128,_>>6&63|128,_&63|128)}else throw new Error("Invalid code point")}return ee}function sl(P){let I=[];for(let _=0;_>8,K=_%256,ee.push(K),ee.push(U);return ee}function gr(P){return e.toByteArray(zr(P))}function li(P,I,_,U){let K;for(K=0;K=I.length||K>=P.length);++K)I[K+_]=P[K];return K}function jt(P,I){return P instanceof I||P!=null&&P.constructor!=null&&P.constructor.name!=null&&P.constructor.name===I.name}function _r(P){return P!==P}let Gu=function(){let P="0123456789abcdef",I=new Array(256);for(let _=0;_<16;++_){let U=_*16;for(let K=0;K<16;++K)I[U+K]=P[_]+P[K]}return I}();function ka(P){return typeof BigInt=="undefined"?Qu:P}function Qu(){throw new Error("BigInt not supported")}return ac}var zd,NF,tN,TF,ac,EF,sc,D,lme,dme,hF=nc(()=>{"use strict";m();T();N();zd={},NF=!1;tN={},TF=!1;ac={},EF=!1;sc=iH();sc.Buffer;sc.SlowBuffer;sc.INSPECT_MAX_BYTES;sc.kMaxLength;D=sc.Buffer,lme=sc.INSPECT_MAX_BYTES,dme=sc.kMaxLength});var T=nc(()=>{"use strict";hF()});var yF=F(_l=>{"use strict";m();T();N();Object.defineProperty(_l,"__esModule",{value:!0});_l.versionInfo=_l.version=void 0;var aH="16.9.0";_l.version=aH;var sH=Object.freeze({major:16,minor:9,patch:0,preReleaseTag:null});_l.versionInfo=sH});var Kr=F(sI=>{"use strict";m();T();N();Object.defineProperty(sI,"__esModule",{value:!0});sI.devAssert=oH;function oH(e,t){if(!!!e)throw new Error(t)}});var nN=F(oI=>{"use strict";m();T();N();Object.defineProperty(oI,"__esModule",{value:!0});oI.isPromise=uH;function uH(e){return typeof(e==null?void 0:e.then)=="function"}});var Va=F(uI=>{"use strict";m();T();N();Object.defineProperty(uI,"__esModule",{value:!0});uI.isObjectLike=cH;function cH(e){return typeof e=="object"&&e!==null}});var Pr=F(cI=>{"use strict";m();T();N();Object.defineProperty(cI,"__esModule",{value:!0});cI.invariant=lH;function lH(e,t){if(!!!e)throw new Error(t!=null?t:"Unexpected invariant triggered.")}});var rN=F(lI=>{"use strict";m();T();N();Object.defineProperty(lI,"__esModule",{value:!0});lI.getLocation=pH;var dH=Pr(),fH=/\r\n|[\n\r]/g;function pH(e,t){let n=0,r=1;for(let i of e.body.matchAll(fH)){if(typeof i.index=="number"||(0,dH.invariant)(!1),i.index>=t)break;n=i.index+i[0].length,r+=1}return{line:r,column:t+1-n}}});var dI=F(iN=>{"use strict";m();T();N();Object.defineProperty(iN,"__esModule",{value:!0});iN.printLocation=NH;iN.printSourceLocation=gF;var mH=rN();function NH(e){return gF(e.source,(0,mH.getLocation)(e.source,e.start))}function gF(e,t){let n=e.locationOffset.column-1,r="".padStart(n)+e.body,i=t.line-1,a=e.locationOffset.line-1,o=t.line+a,u=t.line===1?n:0,l=t.column+u,d=`${e.name}:${o}:${l} -`,p=r.split(/\r\n|[\n\r]/g),E=p[i];if(E.length>120){let y=Math.floor(l/80),v=l%80,R=[];for(let B=0;B["|",B]),["|","^".padStart(v)],["|",R[y+1]]])}return d+IF([[`${o-1} |`,p[i-1]],[`${o} |`,E],["|","^".padStart(l)],[`${o+1} |`,p[i+1]]])}function IF(e){let t=e.filter(([r,i])=>i!==void 0),n=Math.max(...t.map(([r])=>r.length));return t.map(([r,i])=>r.padStart(n)+(i?" "+i:"")).join(` -`)}});var Xe=F(vl=>{"use strict";m();T();N();Object.defineProperty(vl,"__esModule",{value:!0});vl.GraphQLError=void 0;vl.formatError=yH;vl.printError=hH;var TH=Va(),_F=rN(),vF=dI();function EH(e){let t=e[0];return t==null||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}var fI=class e extends Error{constructor(t,...n){var r,i,a;let{nodes:o,source:u,positions:l,path:d,originalError:p,extensions:E}=EH(n);super(t),this.name="GraphQLError",this.path=d!=null?d:void 0,this.originalError=p!=null?p:void 0,this.nodes=SF(Array.isArray(o)?o:o?[o]:void 0);let y=SF((r=this.nodes)===null||r===void 0?void 0:r.map(R=>R.loc).filter(R=>R!=null));this.source=u!=null?u:y==null||(i=y[0])===null||i===void 0?void 0:i.source,this.positions=l!=null?l:y==null?void 0:y.map(R=>R.start),this.locations=l&&u?l.map(R=>(0,_F.getLocation)(u,R)):y==null?void 0:y.map(R=>(0,_F.getLocation)(R.source,R.start));let v=(0,TH.isObjectLike)(p==null?void 0:p.extensions)?p==null?void 0:p.extensions:void 0;this.extensions=(a=E!=null?E:v)!==null&&a!==void 0?a:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),p!=null&&p.stack?Object.defineProperty(this,"stack",{value:p.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,e):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let t=this.message;if(this.nodes)for(let n of this.nodes)n.loc&&(t+=` - -`+(0,vF.printLocation)(n.loc));else if(this.source&&this.locations)for(let n of this.locations)t+=` - -`+(0,vF.printSourceLocation)(this.source,n);return t}toJSON(){let t={message:this.message};return this.locations!=null&&(t.locations=this.locations),this.path!=null&&(t.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(t.extensions=this.extensions),t}};vl.GraphQLError=fI;function SF(e){return e===void 0||e.length===0?void 0:e}function hH(e){return e.toString()}function yH(e){return e.toJSON()}});var aN=F(pI=>{"use strict";m();T();N();Object.defineProperty(pI,"__esModule",{value:!0});pI.syntaxError=gH;var IH=Xe();function gH(e,t,n){return new IH.GraphQLError(`Syntax Error: ${n}`,{source:e,positions:[t]})}});var ja=F(Ci=>{"use strict";m();T();N();Object.defineProperty(Ci,"__esModule",{value:!0});Ci.Token=Ci.QueryDocumentKeys=Ci.OperationTypeNode=Ci.Location=void 0;Ci.isNode=vH;var mI=class{constructor(t,n,r){this.start=t.start,this.end=n.end,this.startToken=t,this.endToken=n,this.source=r}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}};Ci.Location=mI;var NI=class{constructor(t,n,r,i,a,o){this.kind=t,this.start=n,this.end=r,this.line=i,this.column=a,this.value=o,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}};Ci.Token=NI;var OF={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};Ci.QueryDocumentKeys=OF;var _H=new Set(Object.keys(OF));function vH(e){let t=e==null?void 0:e.kind;return typeof t=="string"&&_H.has(t)}var TI;Ci.OperationTypeNode=TI;(function(e){e.QUERY="query",e.MUTATION="mutation",e.SUBSCRIPTION="subscription"})(TI||(Ci.OperationTypeNode=TI={}))});var Sl=F(Hd=>{"use strict";m();T();N();Object.defineProperty(Hd,"__esModule",{value:!0});Hd.DirectiveLocation=void 0;var EI;Hd.DirectiveLocation=EI;(function(e){e.QUERY="QUERY",e.MUTATION="MUTATION",e.SUBSCRIPTION="SUBSCRIPTION",e.FIELD="FIELD",e.FRAGMENT_DEFINITION="FRAGMENT_DEFINITION",e.FRAGMENT_SPREAD="FRAGMENT_SPREAD",e.INLINE_FRAGMENT="INLINE_FRAGMENT",e.VARIABLE_DEFINITION="VARIABLE_DEFINITION",e.SCHEMA="SCHEMA",e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.FIELD_DEFINITION="FIELD_DEFINITION",e.ARGUMENT_DEFINITION="ARGUMENT_DEFINITION",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.ENUM_VALUE="ENUM_VALUE",e.INPUT_OBJECT="INPUT_OBJECT",e.INPUT_FIELD_DEFINITION="INPUT_FIELD_DEFINITION"})(EI||(Hd.DirectiveLocation=EI={}))});var Ct=F(Wd=>{"use strict";m();T();N();Object.defineProperty(Wd,"__esModule",{value:!0});Wd.Kind=void 0;var hI;Wd.Kind=hI;(function(e){e.NAME="Name",e.DOCUMENT="Document",e.OPERATION_DEFINITION="OperationDefinition",e.VARIABLE_DEFINITION="VariableDefinition",e.SELECTION_SET="SelectionSet",e.FIELD="Field",e.ARGUMENT="Argument",e.FRAGMENT_SPREAD="FragmentSpread",e.INLINE_FRAGMENT="InlineFragment",e.FRAGMENT_DEFINITION="FragmentDefinition",e.VARIABLE="Variable",e.INT="IntValue",e.FLOAT="FloatValue",e.STRING="StringValue",e.BOOLEAN="BooleanValue",e.NULL="NullValue",e.ENUM="EnumValue",e.LIST="ListValue",e.OBJECT="ObjectValue",e.OBJECT_FIELD="ObjectField",e.DIRECTIVE="Directive",e.NAMED_TYPE="NamedType",e.LIST_TYPE="ListType",e.NON_NULL_TYPE="NonNullType",e.SCHEMA_DEFINITION="SchemaDefinition",e.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",e.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",e.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",e.FIELD_DEFINITION="FieldDefinition",e.INPUT_VALUE_DEFINITION="InputValueDefinition",e.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",e.UNION_TYPE_DEFINITION="UnionTypeDefinition",e.ENUM_TYPE_DEFINITION="EnumTypeDefinition",e.ENUM_VALUE_DEFINITION="EnumValueDefinition",e.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",e.DIRECTIVE_DEFINITION="DirectiveDefinition",e.SCHEMA_EXTENSION="SchemaExtension",e.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",e.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",e.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",e.UNION_TYPE_EXTENSION="UnionTypeExtension",e.ENUM_TYPE_EXTENSION="EnumTypeExtension",e.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension"})(hI||(Wd.Kind=hI={}))});var sN=F(oc=>{"use strict";m();T();N();Object.defineProperty(oc,"__esModule",{value:!0});oc.isDigit=DF;oc.isLetter=yI;oc.isNameContinue=DH;oc.isNameStart=OH;oc.isWhiteSpace=SH;function SH(e){return e===9||e===32}function DF(e){return e>=48&&e<=57}function yI(e){return e>=97&&e<=122||e>=65&&e<=90}function OH(e){return yI(e)||e===95}function DH(e){return yI(e)||DF(e)||e===95}});var Zd=F(Xd=>{"use strict";m();T();N();Object.defineProperty(Xd,"__esModule",{value:!0});Xd.dedentBlockStringLines=bH;Xd.isPrintableAsBlockString=RH;Xd.printBlockString=PH;var II=sN();function bH(e){var t;let n=Number.MAX_SAFE_INTEGER,r=null,i=-1;for(let o=0;ou===0?o:o.slice(n)).slice((t=r)!==null&&t!==void 0?t:0,i+1)}function AH(e){let t=0;for(;t1&&r.slice(1).every(v=>v.length===0||(0,II.isWhiteSpace)(v.charCodeAt(0))),o=n.endsWith('\\"""'),u=e.endsWith('"')&&!o,l=e.endsWith("\\"),d=u||l,p=!(t!=null&&t.minimize)&&(!i||e.length>70||d||a||o),E="",y=i&&(0,II.isWhiteSpace)(e.charCodeAt(0));return(p&&!y||a)&&(E+=` -`),E+=n,(p||d)&&(E+=` -`),'"""'+E+'"""'}});var tf=F(ef=>{"use strict";m();T();N();Object.defineProperty(ef,"__esModule",{value:!0});ef.TokenKind=void 0;var gI;ef.TokenKind=gI;(function(e){e.SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment"})(gI||(ef.TokenKind=gI={}))});var uN=F(rf=>{"use strict";m();T();N();Object.defineProperty(rf,"__esModule",{value:!0});rf.Lexer=void 0;rf.isPunctuatorTokenKind=wH;var la=aN(),AF=ja(),FH=Zd(),uc=sN(),St=tf(),vI=class{constructor(t){let n=new AF.Token(St.TokenKind.SOF,0,0,0,0);this.source=t,this.lastToken=n,this.token=n,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){return this.lastToken=this.token,this.token=this.lookahead()}lookahead(){let t=this.token;if(t.kind!==St.TokenKind.EOF)do if(t.next)t=t.next;else{let n=LH(this,t.end);t.next=n,n.prev=t,t=n}while(t.kind===St.TokenKind.COMMENT);return t}};rf.Lexer=vI;function wH(e){return e===St.TokenKind.BANG||e===St.TokenKind.DOLLAR||e===St.TokenKind.AMP||e===St.TokenKind.PAREN_L||e===St.TokenKind.PAREN_R||e===St.TokenKind.SPREAD||e===St.TokenKind.COLON||e===St.TokenKind.EQUALS||e===St.TokenKind.AT||e===St.TokenKind.BRACKET_L||e===St.TokenKind.BRACKET_R||e===St.TokenKind.BRACE_L||e===St.TokenKind.PIPE||e===St.TokenKind.BRACE_R}function Ol(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}function oN(e,t){return RF(e.charCodeAt(t))&&PF(e.charCodeAt(t+1))}function RF(e){return e>=55296&&e<=56319}function PF(e){return e>=56320&&e<=57343}function cc(e,t){let n=e.source.body.codePointAt(t);if(n===void 0)return St.TokenKind.EOF;if(n>=32&&n<=126){let r=String.fromCodePoint(n);return r==='"'?`'"'`:`"${r}"`}return"U+"+n.toString(16).toUpperCase().padStart(4,"0")}function zn(e,t,n,r,i){let a=e.line,o=1+n-e.lineStart;return new AF.Token(t,n,r,a,o,i)}function LH(e,t){let n=e.source.body,r=n.length,i=t;for(;i=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function xH(e,t){let n=e.source.body;switch(n.charCodeAt(t+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:` -`,size:2};case 114:return{value:"\r",size:2};case 116:return{value:" ",size:2}}throw(0,la.syntaxError)(e.source,t,`Invalid character escape sequence: "${n.slice(t,t+2)}".`)}function qH(e,t){let n=e.source.body,r=n.length,i=e.lineStart,a=t+3,o=a,u="",l=[];for(;a{"use strict";m();T();N();Object.defineProperty(SI,"__esModule",{value:!0});SI.inspect=KH;var jH=10,FF=2;function KH(e){return cN(e,[])}function cN(e,t){switch(typeof e){case"string":return JSON.stringify(e);case"function":return e.name?`[function ${e.name}]`:"[function]";case"object":return $H(e,t);default:return String(e)}}function $H(e,t){if(e===null)return"null";if(t.includes(e))return"[Circular]";let n=[...t,e];if(GH(e)){let r=e.toJSON();if(r!==e)return typeof r=="string"?r:cN(r,n)}else if(Array.isArray(e))return YH(e,n);return QH(e,n)}function GH(e){return typeof e.toJSON=="function"}function QH(e,t){let n=Object.entries(e);return n.length===0?"{}":t.length>FF?"["+JH(e)+"]":"{ "+n.map(([i,a])=>i+": "+cN(a,t)).join(", ")+" }"}function YH(e,t){if(e.length===0)return"[]";if(t.length>FF)return"[Array]";let n=Math.min(jH,e.length),r=e.length-n,i=[];for(let a=0;a1&&i.push(`... ${r} more items`),"["+i.join(", ")+"]"}function JH(e){let t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if(t==="Object"&&typeof e.constructor=="function"){let n=e.constructor.name;if(typeof n=="string"&&n!=="")return n}return t}});var af=F(lN=>{"use strict";m();T();N();Object.defineProperty(lN,"__esModule",{value:!0});lN.instanceOf=void 0;var zH=en(),HH=globalThis.process&&O.env.NODE_ENV==="production",WH=HH?function(t,n){return t instanceof n}:function(t,n){if(t instanceof n)return!0;if(typeof t=="object"&&t!==null){var r;let i=n.prototype[Symbol.toStringTag],a=Symbol.toStringTag in t?t[Symbol.toStringTag]:(r=t.constructor)===null||r===void 0?void 0:r.name;if(i===a){let o=(0,zH.inspect)(t);throw new Error(`Cannot use ${i} "${o}" from another module or realm. - -Ensure that there is only one instance of "graphql" in the node_modules -directory. If different versions of "graphql" are the dependencies of other -relied on modules, use "resolutions" to ensure only one version is installed. - -https://yarnpkg.com/en/docs/selective-version-resolutions - -Duplicate "graphql" modules cannot be used at the same time since different -versions may have different capabilities and behavior. The data from one -version used in the function from another could produce confusing and -spurious results.`)}}return!1};lN.instanceOf=WH});var fN=F(sf=>{"use strict";m();T();N();Object.defineProperty(sf,"__esModule",{value:!0});sf.Source=void 0;sf.isSource=e3;var OI=Kr(),XH=en(),ZH=af(),dN=class{constructor(t,n="GraphQL request",r={line:1,column:1}){typeof t=="string"||(0,OI.devAssert)(!1,`Body must be a string. Received: ${(0,XH.inspect)(t)}.`),this.body=t,this.name=n,this.locationOffset=r,this.locationOffset.line>0||(0,OI.devAssert)(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,OI.devAssert)(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}};sf.Source=dN;function e3(e){return(0,ZH.instanceOf)(e,dN)}});var Dl=F(Tu=>{"use strict";m();T();N();Object.defineProperty(Tu,"__esModule",{value:!0});Tu.Parser=void 0;Tu.parse=n3;Tu.parseConstValue=i3;Tu.parseType=a3;Tu.parseValue=r3;var lc=aN(),of=ja(),t3=Sl(),ct=Ct(),LF=uN(),wF=fN(),De=tf();function n3(e,t){return new dc(e,t).parseDocument()}function r3(e,t){let n=new dc(e,t);n.expectToken(De.TokenKind.SOF);let r=n.parseValueLiteral(!1);return n.expectToken(De.TokenKind.EOF),r}function i3(e,t){let n=new dc(e,t);n.expectToken(De.TokenKind.SOF);let r=n.parseConstValueLiteral();return n.expectToken(De.TokenKind.EOF),r}function a3(e,t){let n=new dc(e,t);n.expectToken(De.TokenKind.SOF);let r=n.parseTypeReference();return n.expectToken(De.TokenKind.EOF),r}var dc=class{constructor(t,n={}){let r=(0,wF.isSource)(t)?t:new wF.Source(t);this._lexer=new LF.Lexer(r),this._options=n,this._tokenCounter=0}parseName(){let t=this.expectToken(De.TokenKind.NAME);return this.node(t,{kind:ct.Kind.NAME,value:t.value})}parseDocument(){return this.node(this._lexer.token,{kind:ct.Kind.DOCUMENT,definitions:this.many(De.TokenKind.SOF,this.parseDefinition,De.TokenKind.EOF)})}parseDefinition(){if(this.peek(De.TokenKind.BRACE_L))return this.parseOperationDefinition();let t=this.peekDescription(),n=t?this._lexer.lookahead():this._lexer.token;if(n.kind===De.TokenKind.NAME){switch(n.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(t)throw(0,lc.syntaxError)(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(n.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(n)}parseOperationDefinition(){let t=this._lexer.token;if(this.peek(De.TokenKind.BRACE_L))return this.node(t,{kind:ct.Kind.OPERATION_DEFINITION,operation:of.OperationTypeNode.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});let n=this.parseOperationType(),r;return this.peek(De.TokenKind.NAME)&&(r=this.parseName()),this.node(t,{kind:ct.Kind.OPERATION_DEFINITION,operation:n,name:r,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){let t=this.expectToken(De.TokenKind.NAME);switch(t.value){case"query":return of.OperationTypeNode.QUERY;case"mutation":return of.OperationTypeNode.MUTATION;case"subscription":return of.OperationTypeNode.SUBSCRIPTION}throw this.unexpected(t)}parseVariableDefinitions(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseVariableDefinition,De.TokenKind.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:ct.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(De.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(De.TokenKind.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){let t=this._lexer.token;return this.expectToken(De.TokenKind.DOLLAR),this.node(t,{kind:ct.Kind.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:ct.Kind.SELECTION_SET,selections:this.many(De.TokenKind.BRACE_L,this.parseSelection,De.TokenKind.BRACE_R)})}parseSelection(){return this.peek(De.TokenKind.SPREAD)?this.parseFragment():this.parseField()}parseField(){let t=this._lexer.token,n=this.parseName(),r,i;return this.expectOptionalToken(De.TokenKind.COLON)?(r=n,i=this.parseName()):i=n,this.node(t,{kind:ct.Kind.FIELD,alias:r,name:i,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(De.TokenKind.BRACE_L)?this.parseSelectionSet():void 0})}parseArguments(t){let n=t?this.parseConstArgument:this.parseArgument;return this.optionalMany(De.TokenKind.PAREN_L,n,De.TokenKind.PAREN_R)}parseArgument(t=!1){let n=this._lexer.token,r=this.parseName();return this.expectToken(De.TokenKind.COLON),this.node(n,{kind:ct.Kind.ARGUMENT,name:r,value:this.parseValueLiteral(t)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){let t=this._lexer.token;this.expectToken(De.TokenKind.SPREAD);let n=this.expectOptionalKeyword("on");return!n&&this.peek(De.TokenKind.NAME)?this.node(t,{kind:ct.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(t,{kind:ct.Kind.INLINE_FRAGMENT,typeCondition:n?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){let t=this._lexer.token;return this.expectKeyword("fragment"),this._options.allowLegacyFragmentVariables===!0?this.node(t,{kind:ct.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(t,{kind:ct.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if(this._lexer.token.value==="on")throw this.unexpected();return this.parseName()}parseValueLiteral(t){let n=this._lexer.token;switch(n.kind){case De.TokenKind.BRACKET_L:return this.parseList(t);case De.TokenKind.BRACE_L:return this.parseObject(t);case De.TokenKind.INT:return this.advanceLexer(),this.node(n,{kind:ct.Kind.INT,value:n.value});case De.TokenKind.FLOAT:return this.advanceLexer(),this.node(n,{kind:ct.Kind.FLOAT,value:n.value});case De.TokenKind.STRING:case De.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case De.TokenKind.NAME:switch(this.advanceLexer(),n.value){case"true":return this.node(n,{kind:ct.Kind.BOOLEAN,value:!0});case"false":return this.node(n,{kind:ct.Kind.BOOLEAN,value:!1});case"null":return this.node(n,{kind:ct.Kind.NULL});default:return this.node(n,{kind:ct.Kind.ENUM,value:n.value})}case De.TokenKind.DOLLAR:if(t)if(this.expectToken(De.TokenKind.DOLLAR),this._lexer.token.kind===De.TokenKind.NAME){let r=this._lexer.token.value;throw(0,lc.syntaxError)(this._lexer.source,n.start,`Unexpected variable "$${r}" in constant value.`)}else throw this.unexpected(n);return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){let t=this._lexer.token;return this.advanceLexer(),this.node(t,{kind:ct.Kind.STRING,value:t.value,block:t.kind===De.TokenKind.BLOCK_STRING})}parseList(t){let n=()=>this.parseValueLiteral(t);return this.node(this._lexer.token,{kind:ct.Kind.LIST,values:this.any(De.TokenKind.BRACKET_L,n,De.TokenKind.BRACKET_R)})}parseObject(t){let n=()=>this.parseObjectField(t);return this.node(this._lexer.token,{kind:ct.Kind.OBJECT,fields:this.any(De.TokenKind.BRACE_L,n,De.TokenKind.BRACE_R)})}parseObjectField(t){let n=this._lexer.token,r=this.parseName();return this.expectToken(De.TokenKind.COLON),this.node(n,{kind:ct.Kind.OBJECT_FIELD,name:r,value:this.parseValueLiteral(t)})}parseDirectives(t){let n=[];for(;this.peek(De.TokenKind.AT);)n.push(this.parseDirective(t));return n}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(t){let n=this._lexer.token;return this.expectToken(De.TokenKind.AT),this.node(n,{kind:ct.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(t)})}parseTypeReference(){let t=this._lexer.token,n;if(this.expectOptionalToken(De.TokenKind.BRACKET_L)){let r=this.parseTypeReference();this.expectToken(De.TokenKind.BRACKET_R),n=this.node(t,{kind:ct.Kind.LIST_TYPE,type:r})}else n=this.parseNamedType();return this.expectOptionalToken(De.TokenKind.BANG)?this.node(t,{kind:ct.Kind.NON_NULL_TYPE,type:n}):n}parseNamedType(){return this.node(this._lexer.token,{kind:ct.Kind.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(De.TokenKind.STRING)||this.peek(De.TokenKind.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("schema");let r=this.parseConstDirectives(),i=this.many(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);return this.node(t,{kind:ct.Kind.SCHEMA_DEFINITION,description:n,directives:r,operationTypes:i})}parseOperationTypeDefinition(){let t=this._lexer.token,n=this.parseOperationType();this.expectToken(De.TokenKind.COLON);let r=this.parseNamedType();return this.node(t,{kind:ct.Kind.OPERATION_TYPE_DEFINITION,operation:n,type:r})}parseScalarTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("scalar");let r=this.parseName(),i=this.parseConstDirectives();return this.node(t,{kind:ct.Kind.SCALAR_TYPE_DEFINITION,description:n,name:r,directives:i})}parseObjectTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("type");let r=this.parseName(),i=this.parseImplementsInterfaces(),a=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(t,{kind:ct.Kind.OBJECT_TYPE_DEFINITION,description:n,name:r,interfaces:i,directives:a,fields:o})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(De.TokenKind.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseFieldDefinition,De.TokenKind.BRACE_R)}parseFieldDefinition(){let t=this._lexer.token,n=this.parseDescription(),r=this.parseName(),i=this.parseArgumentDefs();this.expectToken(De.TokenKind.COLON);let a=this.parseTypeReference(),o=this.parseConstDirectives();return this.node(t,{kind:ct.Kind.FIELD_DEFINITION,description:n,name:r,arguments:i,type:a,directives:o})}parseArgumentDefs(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseInputValueDef,De.TokenKind.PAREN_R)}parseInputValueDef(){let t=this._lexer.token,n=this.parseDescription(),r=this.parseName();this.expectToken(De.TokenKind.COLON);let i=this.parseTypeReference(),a;this.expectOptionalToken(De.TokenKind.EQUALS)&&(a=this.parseConstValueLiteral());let o=this.parseConstDirectives();return this.node(t,{kind:ct.Kind.INPUT_VALUE_DEFINITION,description:n,name:r,type:i,defaultValue:a,directives:o})}parseInterfaceTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("interface");let r=this.parseName(),i=this.parseImplementsInterfaces(),a=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(t,{kind:ct.Kind.INTERFACE_TYPE_DEFINITION,description:n,name:r,interfaces:i,directives:a,fields:o})}parseUnionTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("union");let r=this.parseName(),i=this.parseConstDirectives(),a=this.parseUnionMemberTypes();return this.node(t,{kind:ct.Kind.UNION_TYPE_DEFINITION,description:n,name:r,directives:i,types:a})}parseUnionMemberTypes(){return this.expectOptionalToken(De.TokenKind.EQUALS)?this.delimitedMany(De.TokenKind.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("enum");let r=this.parseName(),i=this.parseConstDirectives(),a=this.parseEnumValuesDefinition();return this.node(t,{kind:ct.Kind.ENUM_TYPE_DEFINITION,description:n,name:r,directives:i,values:a})}parseEnumValuesDefinition(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseEnumValueDefinition,De.TokenKind.BRACE_R)}parseEnumValueDefinition(){let t=this._lexer.token,n=this.parseDescription(),r=this.parseEnumValueName(),i=this.parseConstDirectives();return this.node(t,{kind:ct.Kind.ENUM_VALUE_DEFINITION,description:n,name:r,directives:i})}parseEnumValueName(){if(this._lexer.token.value==="true"||this._lexer.token.value==="false"||this._lexer.token.value==="null")throw(0,lc.syntaxError)(this._lexer.source,this._lexer.token.start,`${pN(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("input");let r=this.parseName(),i=this.parseConstDirectives(),a=this.parseInputFieldsDefinition();return this.node(t,{kind:ct.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:n,name:r,directives:i,fields:a})}parseInputFieldsDefinition(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseInputValueDef,De.TokenKind.BRACE_R)}parseTypeSystemExtension(){let t=this._lexer.lookahead();if(t.kind===De.TokenKind.NAME)switch(t.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(t)}parseSchemaExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");let n=this.parseConstDirectives(),r=this.optionalMany(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);if(n.length===0&&r.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.SCHEMA_EXTENSION,directives:n,operationTypes:r})}parseScalarTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");let n=this.parseName(),r=this.parseConstDirectives();if(r.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.SCALAR_TYPE_EXTENSION,name:n,directives:r})}parseObjectTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");let n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),a=this.parseFieldsDefinition();if(r.length===0&&i.length===0&&a.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.OBJECT_TYPE_EXTENSION,name:n,interfaces:r,directives:i,fields:a})}parseInterfaceTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");let n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),a=this.parseFieldsDefinition();if(r.length===0&&i.length===0&&a.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.INTERFACE_TYPE_EXTENSION,name:n,interfaces:r,directives:i,fields:a})}parseUnionTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");let n=this.parseName(),r=this.parseConstDirectives(),i=this.parseUnionMemberTypes();if(r.length===0&&i.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.UNION_TYPE_EXTENSION,name:n,directives:r,types:i})}parseEnumTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");let n=this.parseName(),r=this.parseConstDirectives(),i=this.parseEnumValuesDefinition();if(r.length===0&&i.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.ENUM_TYPE_EXTENSION,name:n,directives:r,values:i})}parseInputObjectTypeExtension(){let t=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");let n=this.parseName(),r=this.parseConstDirectives(),i=this.parseInputFieldsDefinition();if(r.length===0&&i.length===0)throw this.unexpected();return this.node(t,{kind:ct.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:n,directives:r,fields:i})}parseDirectiveDefinition(){let t=this._lexer.token,n=this.parseDescription();this.expectKeyword("directive"),this.expectToken(De.TokenKind.AT);let r=this.parseName(),i=this.parseArgumentDefs(),a=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");let o=this.parseDirectiveLocations();return this.node(t,{kind:ct.Kind.DIRECTIVE_DEFINITION,description:n,name:r,arguments:i,repeatable:a,locations:o})}parseDirectiveLocations(){return this.delimitedMany(De.TokenKind.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){let t=this._lexer.token,n=this.parseName();if(Object.prototype.hasOwnProperty.call(t3.DirectiveLocation,n.value))return n;throw this.unexpected(t)}node(t,n){return this._options.noLocation!==!0&&(n.loc=new of.Location(t,this._lexer.lastToken,this._lexer.source)),n}peek(t){return this._lexer.token.kind===t}expectToken(t){let n=this._lexer.token;if(n.kind===t)return this.advanceLexer(),n;throw(0,lc.syntaxError)(this._lexer.source,n.start,`Expected ${CF(t)}, found ${pN(n)}.`)}expectOptionalToken(t){return this._lexer.token.kind===t?(this.advanceLexer(),!0):!1}expectKeyword(t){let n=this._lexer.token;if(n.kind===De.TokenKind.NAME&&n.value===t)this.advanceLexer();else throw(0,lc.syntaxError)(this._lexer.source,n.start,`Expected "${t}", found ${pN(n)}.`)}expectOptionalKeyword(t){let n=this._lexer.token;return n.kind===De.TokenKind.NAME&&n.value===t?(this.advanceLexer(),!0):!1}unexpected(t){let n=t!=null?t:this._lexer.token;return(0,lc.syntaxError)(this._lexer.source,n.start,`Unexpected ${pN(n)}.`)}any(t,n,r){this.expectToken(t);let i=[];for(;!this.expectOptionalToken(r);)i.push(n.call(this));return i}optionalMany(t,n,r){if(this.expectOptionalToken(t)){let i=[];do i.push(n.call(this));while(!this.expectOptionalToken(r));return i}return[]}many(t,n,r){this.expectToken(t);let i=[];do i.push(n.call(this));while(!this.expectOptionalToken(r));return i}delimitedMany(t,n){this.expectOptionalToken(t);let r=[];do r.push(n.call(this));while(this.expectOptionalToken(t));return r}advanceLexer(){let{maxTokens:t}=this._options,n=this._lexer.advance();if(t!==void 0&&n.kind!==De.TokenKind.EOF&&(++this._tokenCounter,this._tokenCounter>t))throw(0,lc.syntaxError)(this._lexer.source,n.start,`Document contains more that ${t} tokens. Parsing aborted.`)}};Tu.Parser=dc;function pN(e){let t=e.value;return CF(e.kind)+(t!=null?` "${t}"`:"")}function CF(e){return(0,LF.isPunctuatorTokenKind)(e)?`"${e}"`:e}});var Eu=F(DI=>{"use strict";m();T();N();Object.defineProperty(DI,"__esModule",{value:!0});DI.didYouMean=o3;var s3=5;function o3(e,t){let[n,r]=t?[e,t]:[void 0,e],i=" Did you mean ";n&&(i+=n+" ");let a=r.map(l=>`"${l}"`);switch(a.length){case 0:return"";case 1:return i+a[0]+"?";case 2:return i+a[0]+" or "+a[1]+"?"}let o=a.slice(0,s3),u=o.pop();return i+o.join(", ")+", or "+u+"?"}});var UF=F(bI=>{"use strict";m();T();N();Object.defineProperty(bI,"__esModule",{value:!0});bI.identityFunc=u3;function u3(e){return e}});var hu=F(AI=>{"use strict";m();T();N();Object.defineProperty(AI,"__esModule",{value:!0});AI.keyMap=c3;function c3(e,t){let n=Object.create(null);for(let r of e)n[t(r)]=r;return n}});var uf=F(RI=>{"use strict";m();T();N();Object.defineProperty(RI,"__esModule",{value:!0});RI.keyValMap=l3;function l3(e,t,n){let r=Object.create(null);for(let i of e)r[t(i)]=n(i);return r}});var FI=F(PI=>{"use strict";m();T();N();Object.defineProperty(PI,"__esModule",{value:!0});PI.mapValue=d3;function d3(e,t){let n=Object.create(null);for(let r of Object.keys(e))n[r]=t(e[r],r);return n}});var cf=F(LI=>{"use strict";m();T();N();Object.defineProperty(LI,"__esModule",{value:!0});LI.naturalCompare=f3;function f3(e,t){let n=0,r=0;for(;n0);let u=0;do++r,u=u*10+a-wI,a=t.charCodeAt(r);while(mN(a)&&u>0);if(ou)return 1}else{if(ia)return 1;++n,++r}}return e.length-t.length}var wI=48,p3=57;function mN(e){return!isNaN(e)&&wI<=e&&e<=p3}});var yu=F(UI=>{"use strict";m();T();N();Object.defineProperty(UI,"__esModule",{value:!0});UI.suggestionList=N3;var m3=cf();function N3(e,t){let n=Object.create(null),r=new CI(e),i=Math.floor(e.length*.4)+1;for(let a of t){let o=r.measure(a,i);o!==void 0&&(n[a]=o)}return Object.keys(n).sort((a,o)=>{let u=n[a]-n[o];return u!==0?u:(0,m3.naturalCompare)(a,o)})}var CI=class{constructor(t){this._input=t,this._inputLowerCase=t.toLowerCase(),this._inputArray=BF(this._inputLowerCase),this._rows=[new Array(t.length+1).fill(0),new Array(t.length+1).fill(0),new Array(t.length+1).fill(0)]}measure(t,n){if(this._input===t)return 0;let r=t.toLowerCase();if(this._inputLowerCase===r)return 1;let i=BF(r),a=this._inputArray;if(i.lengthn)return;let l=this._rows;for(let p=0;p<=u;p++)l[0][p]=p;for(let p=1;p<=o;p++){let E=l[(p-1)%3],y=l[p%3],v=y[0]=p;for(let R=1;R<=u;R++){let B=i[p-1]===a[R-1]?0:1,V=Math.min(E[R]+1,y[R-1]+1,E[R-1]+B);if(p>1&&R>1&&i[p-1]===a[R-2]&&i[p-2]===a[R-1]){let J=l[(p-2)%3][R-2];V=Math.min(V,J+1)}Vn)return}let d=l[o%3][u];return d<=n?d:void 0}};function BF(e){let t=e.length,n=new Array(t);for(let r=0;r{"use strict";m();T();N();Object.defineProperty(BI,"__esModule",{value:!0});BI.toObjMap=T3;function T3(e){if(e==null)return Object.create(null);if(Object.getPrototypeOf(e)===null)return e;let t=Object.create(null);for(let[n,r]of Object.entries(e))t[n]=r;return t}});var kF=F(kI=>{"use strict";m();T();N();Object.defineProperty(kI,"__esModule",{value:!0});kI.printString=E3;function E3(e){return`"${e.replace(h3,y3)}"`}var h3=/[\x00-\x1f\x22\x5c\x7f-\x9f]/g;function y3(e){return I3[e.charCodeAt(0)]}var I3=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000B","\\f","\\r","\\u000E","\\u000F","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001A","\\u001B","\\u001C","\\u001D","\\u001E","\\u001F","","",'\\"',"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\u007F","\\u0080","\\u0081","\\u0082","\\u0083","\\u0084","\\u0085","\\u0086","\\u0087","\\u0088","\\u0089","\\u008A","\\u008B","\\u008C","\\u008D","\\u008E","\\u008F","\\u0090","\\u0091","\\u0092","\\u0093","\\u0094","\\u0095","\\u0096","\\u0097","\\u0098","\\u0099","\\u009A","\\u009B","\\u009C","\\u009D","\\u009E","\\u009F"]});var fc=F(Iu=>{"use strict";m();T();N();Object.defineProperty(Iu,"__esModule",{value:!0});Iu.BREAK=void 0;Iu.getEnterLeaveForKind=TN;Iu.getVisitFn=O3;Iu.visit=v3;Iu.visitInParallel=S3;var g3=Kr(),_3=en(),MI=ja(),MF=Ct(),bl=Object.freeze({});Iu.BREAK=bl;function v3(e,t,n=MI.QueryDocumentKeys){let r=new Map;for(let J of Object.values(MF.Kind))r.set(J,TN(t,J));let i,a=Array.isArray(e),o=[e],u=-1,l=[],d=e,p,E,y=[],v=[];do{u++;let J=u===o.length,ne=J&&l.length!==0;if(J){if(p=v.length===0?void 0:y[y.length-1],d=E,E=v.pop(),ne)if(a){d=d.slice();let Ne=0;for(let[Ee,he]of l){let we=Ee-Ne;he===null?(d.splice(we,1),Ne++):d[we]=he}}else{d=Object.defineProperties({},Object.getOwnPropertyDescriptors(d));for(let[Ne,Ee]of l)d[Ne]=Ee}u=i.index,o=i.keys,l=i.edits,a=i.inArray,i=i.prev}else if(E){if(p=a?u:o[u],d=E[p],d==null)continue;y.push(p)}let te;if(!Array.isArray(d)){var R,B;(0,MI.isNode)(d)||(0,g3.devAssert)(!1,`Invalid AST Node: ${(0,_3.inspect)(d)}.`);let Ne=J?(R=r.get(d.kind))===null||R===void 0?void 0:R.leave:(B=r.get(d.kind))===null||B===void 0?void 0:B.enter;if(te=Ne==null?void 0:Ne.call(t,d,p,E,y,v),te===bl)break;if(te===!1){if(!J){y.pop();continue}}else if(te!==void 0&&(l.push([p,te]),!J))if((0,MI.isNode)(te))d=te;else{y.pop();continue}}if(te===void 0&&ne&&l.push([p,d]),J)y.pop();else{var V;i={inArray:a,index:u,keys:o,edits:l,prev:i},a=Array.isArray(d),o=a?d:(V=n[d.kind])!==null&&V!==void 0?V:[],u=-1,l=[],E&&v.push(E),E=d}}while(i!==void 0);return l.length!==0?l[l.length-1][1]:e}function S3(e){let t=new Array(e.length).fill(null),n=Object.create(null);for(let r of Object.values(MF.Kind)){let i=!1,a=new Array(e.length).fill(void 0),o=new Array(e.length).fill(void 0);for(let l=0;l{"use strict";m();T();N();Object.defineProperty(xI,"__esModule",{value:!0});xI.print=R3;var D3=Zd(),b3=kF(),A3=fc();function R3(e){return(0,A3.visit)(e,F3)}var P3=80,F3={Name:{leave:e=>e.value},Variable:{leave:e=>"$"+e.name},Document:{leave:e=>Ke(e.definitions,` - -`)},OperationDefinition:{leave(e){let t=Rt("(",Ke(e.variableDefinitions,", "),")"),n=Ke([e.operation,Ke([e.name,t]),Ke(e.directives," ")]," ");return(n==="query"?"":n+" ")+e.selectionSet}},VariableDefinition:{leave:({variable:e,type:t,defaultValue:n,directives:r})=>e+": "+t+Rt(" = ",n)+Rt(" ",Ke(r," "))},SelectionSet:{leave:({selections:e})=>da(e)},Field:{leave({alias:e,name:t,arguments:n,directives:r,selectionSet:i}){let a=Rt("",e,": ")+t,o=a+Rt("(",Ke(n,", "),")");return o.length>P3&&(o=a+Rt(`( -`,EN(Ke(n,` -`)),` -)`)),Ke([o,Ke(r," "),i]," ")}},Argument:{leave:({name:e,value:t})=>e+": "+t},FragmentSpread:{leave:({name:e,directives:t})=>"..."+e+Rt(" ",Ke(t," "))},InlineFragment:{leave:({typeCondition:e,directives:t,selectionSet:n})=>Ke(["...",Rt("on ",e),Ke(t," "),n]," ")},FragmentDefinition:{leave:({name:e,typeCondition:t,variableDefinitions:n,directives:r,selectionSet:i})=>`fragment ${e}${Rt("(",Ke(n,", "),")")} on ${t} ${Rt("",Ke(r," ")," ")}`+i},IntValue:{leave:({value:e})=>e},FloatValue:{leave:({value:e})=>e},StringValue:{leave:({value:e,block:t})=>t?(0,D3.printBlockString)(e):(0,b3.printString)(e)},BooleanValue:{leave:({value:e})=>e?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:e})=>e},ListValue:{leave:({values:e})=>"["+Ke(e,", ")+"]"},ObjectValue:{leave:({fields:e})=>"{"+Ke(e,", ")+"}"},ObjectField:{leave:({name:e,value:t})=>e+": "+t},Directive:{leave:({name:e,arguments:t})=>"@"+e+Rt("(",Ke(t,", "),")")},NamedType:{leave:({name:e})=>e},ListType:{leave:({type:e})=>"["+e+"]"},NonNullType:{leave:({type:e})=>e+"!"},SchemaDefinition:{leave:({description:e,directives:t,operationTypes:n})=>Rt("",e,` -`)+Ke(["schema",Ke(t," "),da(n)]," ")},OperationTypeDefinition:{leave:({operation:e,type:t})=>e+": "+t},ScalarTypeDefinition:{leave:({description:e,name:t,directives:n})=>Rt("",e,` -`)+Ke(["scalar",t,Ke(n," ")]," ")},ObjectTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Rt("",e,` -`)+Ke(["type",t,Rt("implements ",Ke(n," & ")),Ke(r," "),da(i)]," ")},FieldDefinition:{leave:({description:e,name:t,arguments:n,type:r,directives:i})=>Rt("",e,` -`)+t+(xF(n)?Rt(`( -`,EN(Ke(n,` -`)),` -)`):Rt("(",Ke(n,", "),")"))+": "+r+Rt(" ",Ke(i," "))},InputValueDefinition:{leave:({description:e,name:t,type:n,defaultValue:r,directives:i})=>Rt("",e,` -`)+Ke([t+": "+n,Rt("= ",r),Ke(i," ")]," ")},InterfaceTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Rt("",e,` -`)+Ke(["interface",t,Rt("implements ",Ke(n," & ")),Ke(r," "),da(i)]," ")},UnionTypeDefinition:{leave:({description:e,name:t,directives:n,types:r})=>Rt("",e,` -`)+Ke(["union",t,Ke(n," "),Rt("= ",Ke(r," | "))]," ")},EnumTypeDefinition:{leave:({description:e,name:t,directives:n,values:r})=>Rt("",e,` -`)+Ke(["enum",t,Ke(n," "),da(r)]," ")},EnumValueDefinition:{leave:({description:e,name:t,directives:n})=>Rt("",e,` -`)+Ke([t,Ke(n," ")]," ")},InputObjectTypeDefinition:{leave:({description:e,name:t,directives:n,fields:r})=>Rt("",e,` -`)+Ke(["input",t,Ke(n," "),da(r)]," ")},DirectiveDefinition:{leave:({description:e,name:t,arguments:n,repeatable:r,locations:i})=>Rt("",e,` -`)+"directive @"+t+(xF(n)?Rt(`( -`,EN(Ke(n,` -`)),` -)`):Rt("(",Ke(n,", "),")"))+(r?" repeatable":"")+" on "+Ke(i," | ")},SchemaExtension:{leave:({directives:e,operationTypes:t})=>Ke(["extend schema",Ke(e," "),da(t)]," ")},ScalarTypeExtension:{leave:({name:e,directives:t})=>Ke(["extend scalar",e,Ke(t," ")]," ")},ObjectTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ke(["extend type",e,Rt("implements ",Ke(t," & ")),Ke(n," "),da(r)]," ")},InterfaceTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ke(["extend interface",e,Rt("implements ",Ke(t," & ")),Ke(n," "),da(r)]," ")},UnionTypeExtension:{leave:({name:e,directives:t,types:n})=>Ke(["extend union",e,Ke(t," "),Rt("= ",Ke(n," | "))]," ")},EnumTypeExtension:{leave:({name:e,directives:t,values:n})=>Ke(["extend enum",e,Ke(t," "),da(n)]," ")},InputObjectTypeExtension:{leave:({name:e,directives:t,fields:n})=>Ke(["extend input",e,Ke(t," "),da(n)]," ")}};function Ke(e,t=""){var n;return(n=e==null?void 0:e.filter(r=>r).join(t))!==null&&n!==void 0?n:""}function da(e){return Rt(`{ -`,EN(Ke(e,` -`)),` -}`)}function Rt(e,t,n=""){return t!=null&&t!==""?e+t+n:""}function EN(e){return Rt(" ",e.replace(/\n/g,` - `))}function xF(e){var t;return(t=e==null?void 0:e.some(n=>n.includes(` -`)))!==null&&t!==void 0?t:!1}});var jI=F(VI=>{"use strict";m();T();N();Object.defineProperty(VI,"__esModule",{value:!0});VI.valueFromASTUntyped=qI;var w3=uf(),Ds=Ct();function qI(e,t){switch(e.kind){case Ds.Kind.NULL:return null;case Ds.Kind.INT:return parseInt(e.value,10);case Ds.Kind.FLOAT:return parseFloat(e.value);case Ds.Kind.STRING:case Ds.Kind.ENUM:case Ds.Kind.BOOLEAN:return e.value;case Ds.Kind.LIST:return e.values.map(n=>qI(n,t));case Ds.Kind.OBJECT:return(0,w3.keyValMap)(e.fields,n=>n.name.value,n=>qI(n.value,t));case Ds.Kind.VARIABLE:return t==null?void 0:t[e.name.value]}}});var lf=F(yN=>{"use strict";m();T();N();Object.defineProperty(yN,"__esModule",{value:!0});yN.assertEnumValueName=L3;yN.assertName=jF;var qF=Kr(),hN=Xe(),VF=sN();function jF(e){if(e!=null||(0,qF.devAssert)(!1,"Must provide name."),typeof e=="string"||(0,qF.devAssert)(!1,"Expected name to be a string."),e.length===0)throw new hN.GraphQLError("Expected name to be a non-empty string.");for(let t=1;t{"use strict";m();T();N();Object.defineProperty(Ge,"__esModule",{value:!0});Ge.GraphQLUnionType=Ge.GraphQLScalarType=Ge.GraphQLObjectType=Ge.GraphQLNonNull=Ge.GraphQLList=Ge.GraphQLInterfaceType=Ge.GraphQLInputObjectType=Ge.GraphQLEnumType=void 0;Ge.argsToArgsConfig=tw;Ge.assertAbstractType=Z3;Ge.assertCompositeType=X3;Ge.assertEnumType=G3;Ge.assertInputObjectType=Q3;Ge.assertInputType=z3;Ge.assertInterfaceType=K3;Ge.assertLeafType=W3;Ge.assertListType=Y3;Ge.assertNamedType=rW;Ge.assertNonNullType=J3;Ge.assertNullableType=tW;Ge.assertObjectType=j3;Ge.assertOutputType=H3;Ge.assertScalarType=V3;Ge.assertType=q3;Ge.assertUnionType=$3;Ge.assertWrappingType=eW;Ge.defineArguments=ZF;Ge.getNamedType=iW;Ge.getNullableType=nW;Ge.isAbstractType=zF;Ge.isCompositeType=JF;Ge.isEnumType=Tc;Ge.isInputObjectType=ff;Ge.isInputType=KI;Ge.isInterfaceType=mc;Ge.isLeafType=YF;Ge.isListType=FN;Ge.isNamedType=HF;Ge.isNonNullType=_u;Ge.isNullableType=GI;Ge.isObjectType=Rl;Ge.isOutputType=$I;Ge.isRequiredArgument=aW;Ge.isRequiredInputField=uW;Ge.isScalarType=pc;Ge.isType=PN;Ge.isUnionType=Nc;Ge.isWrappingType=pf;Ge.resolveObjMapThunk=YI;Ge.resolveReadonlyArrayThunk=QI;var mr=Kr(),C3=Eu(),KF=UF(),Tn=en(),gu=af(),U3=Va(),B3=hu(),QF=uf(),RN=FI(),k3=yu(),Ka=NN(),df=Xe(),M3=Ct(),$F=hi(),x3=jI(),$a=lf();function PN(e){return pc(e)||Rl(e)||mc(e)||Nc(e)||Tc(e)||ff(e)||FN(e)||_u(e)}function q3(e){if(!PN(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL type.`);return e}function pc(e){return(0,gu.instanceOf)(e,vN)}function V3(e){if(!pc(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Scalar type.`);return e}function Rl(e){return(0,gu.instanceOf)(e,SN)}function j3(e){if(!Rl(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Object type.`);return e}function mc(e){return(0,gu.instanceOf)(e,ON)}function K3(e){if(!mc(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Interface type.`);return e}function Nc(e){return(0,gu.instanceOf)(e,DN)}function $3(e){if(!Nc(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Union type.`);return e}function Tc(e){return(0,gu.instanceOf)(e,bN)}function G3(e){if(!Tc(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Enum type.`);return e}function ff(e){return(0,gu.instanceOf)(e,AN)}function Q3(e){if(!ff(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Input Object type.`);return e}function FN(e){return(0,gu.instanceOf)(e,gN)}function Y3(e){if(!FN(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL List type.`);return e}function _u(e){return(0,gu.instanceOf)(e,_N)}function J3(e){if(!_u(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL Non-Null type.`);return e}function KI(e){return pc(e)||Tc(e)||ff(e)||pf(e)&&KI(e.ofType)}function z3(e){if(!KI(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL input type.`);return e}function $I(e){return pc(e)||Rl(e)||mc(e)||Nc(e)||Tc(e)||pf(e)&&$I(e.ofType)}function H3(e){if(!$I(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL output type.`);return e}function YF(e){return pc(e)||Tc(e)}function W3(e){if(!YF(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL leaf type.`);return e}function JF(e){return Rl(e)||mc(e)||Nc(e)}function X3(e){if(!JF(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL composite type.`);return e}function zF(e){return mc(e)||Nc(e)}function Z3(e){if(!zF(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL abstract type.`);return e}var gN=class{constructor(t){PN(t)||(0,mr.devAssert)(!1,`Expected ${(0,Tn.inspect)(t)} to be a GraphQL type.`),this.ofType=t}get[Symbol.toStringTag](){return"GraphQLList"}toString(){return"["+String(this.ofType)+"]"}toJSON(){return this.toString()}};Ge.GraphQLList=gN;var _N=class{constructor(t){GI(t)||(0,mr.devAssert)(!1,`Expected ${(0,Tn.inspect)(t)} to be a GraphQL nullable type.`),this.ofType=t}get[Symbol.toStringTag](){return"GraphQLNonNull"}toString(){return String(this.ofType)+"!"}toJSON(){return this.toString()}};Ge.GraphQLNonNull=_N;function pf(e){return FN(e)||_u(e)}function eW(e){if(!pf(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL wrapping type.`);return e}function GI(e){return PN(e)&&!_u(e)}function tW(e){if(!GI(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL nullable type.`);return e}function nW(e){if(e)return _u(e)?e.ofType:e}function HF(e){return pc(e)||Rl(e)||mc(e)||Nc(e)||Tc(e)||ff(e)}function rW(e){if(!HF(e))throw new Error(`Expected ${(0,Tn.inspect)(e)} to be a GraphQL named type.`);return e}function iW(e){if(e){let t=e;for(;pf(t);)t=t.ofType;return t}}function QI(e){return typeof e=="function"?e():e}function YI(e){return typeof e=="function"?e():e}var vN=class{constructor(t){var n,r,i,a;let o=(n=t.parseValue)!==null&&n!==void 0?n:KF.identityFunc;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.specifiedByURL=t.specifiedByURL,this.serialize=(r=t.serialize)!==null&&r!==void 0?r:KF.identityFunc,this.parseValue=o,this.parseLiteral=(i=t.parseLiteral)!==null&&i!==void 0?i:(u,l)=>o((0,x3.valueFromASTUntyped)(u,l)),this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(a=t.extensionASTNodes)!==null&&a!==void 0?a:[],t.specifiedByURL==null||typeof t.specifiedByURL=="string"||(0,mr.devAssert)(!1,`${this.name} must provide "specifiedByURL" as a string, but got: ${(0,Tn.inspect)(t.specifiedByURL)}.`),t.serialize==null||typeof t.serialize=="function"||(0,mr.devAssert)(!1,`${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`),t.parseLiteral&&(typeof t.parseValue=="function"&&typeof t.parseLiteral=="function"||(0,mr.devAssert)(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLScalarType=vN;var SN=class{constructor(t){var n;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.isTypeOf=t.isTypeOf,this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._fields=()=>XF(t),this._interfaces=()=>WF(t),t.isTypeOf==null||typeof t.isTypeOf=="function"||(0,mr.devAssert)(!1,`${this.name} must provide "isTypeOf" as a function, but got: ${(0,Tn.inspect)(t.isTypeOf)}.`)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:ew(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLObjectType=SN;function WF(e){var t;let n=QI((t=e.interfaces)!==null&&t!==void 0?t:[]);return Array.isArray(n)||(0,mr.devAssert)(!1,`${e.name} interfaces must be an Array or a function which returns an Array.`),n}function XF(e){let t=YI(e.fields);return Al(t)||(0,mr.devAssert)(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),(0,RN.mapValue)(t,(n,r)=>{var i;Al(n)||(0,mr.devAssert)(!1,`${e.name}.${r} field config must be an object.`),n.resolve==null||typeof n.resolve=="function"||(0,mr.devAssert)(!1,`${e.name}.${r} field resolver must be a function if provided, but got: ${(0,Tn.inspect)(n.resolve)}.`);let a=(i=n.args)!==null&&i!==void 0?i:{};return Al(a)||(0,mr.devAssert)(!1,`${e.name}.${r} args must be an object with argument names as keys.`),{name:(0,$a.assertName)(r),description:n.description,type:n.type,args:ZF(a),resolve:n.resolve,subscribe:n.subscribe,deprecationReason:n.deprecationReason,extensions:(0,Ka.toObjMap)(n.extensions),astNode:n.astNode}})}function ZF(e){return Object.entries(e).map(([t,n])=>({name:(0,$a.assertName)(t),description:n.description,type:n.type,defaultValue:n.defaultValue,deprecationReason:n.deprecationReason,extensions:(0,Ka.toObjMap)(n.extensions),astNode:n.astNode}))}function Al(e){return(0,U3.isObjectLike)(e)&&!Array.isArray(e)}function ew(e){return(0,RN.mapValue)(e,t=>({description:t.description,type:t.type,args:tw(t.args),resolve:t.resolve,subscribe:t.subscribe,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}))}function tw(e){return(0,QF.keyValMap)(e,t=>t.name,t=>({description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}))}function aW(e){return _u(e.type)&&e.defaultValue===void 0}var ON=class{constructor(t){var n;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.resolveType=t.resolveType,this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._fields=XF.bind(void 0,t),this._interfaces=WF.bind(void 0,t),t.resolveType==null||typeof t.resolveType=="function"||(0,mr.devAssert)(!1,`${this.name} must provide "resolveType" as a function, but got: ${(0,Tn.inspect)(t.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:ew(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLInterfaceType=ON;var DN=class{constructor(t){var n;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.resolveType=t.resolveType,this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._types=sW.bind(void 0,t),t.resolveType==null||typeof t.resolveType=="function"||(0,mr.devAssert)(!1,`${this.name} must provide "resolveType" as a function, but got: ${(0,Tn.inspect)(t.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return typeof this._types=="function"&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLUnionType=DN;function sW(e){let t=QI(e.types);return Array.isArray(t)||(0,mr.devAssert)(!1,`Must provide Array of types or a function which returns such an array for Union ${e.name}.`),t}var bN=class{constructor(t){var n;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._values=typeof t.values=="function"?t.values:GF(this.name,t.values),this._valueLookup=null,this._nameLookup=null}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return typeof this._values=="function"&&(this._values=GF(this.name,this._values())),this._values}getValue(t){return this._nameLookup===null&&(this._nameLookup=(0,B3.keyMap)(this.getValues(),n=>n.name)),this._nameLookup[t]}serialize(t){this._valueLookup===null&&(this._valueLookup=new Map(this.getValues().map(r=>[r.value,r])));let n=this._valueLookup.get(t);if(n===void 0)throw new df.GraphQLError(`Enum "${this.name}" cannot represent value: ${(0,Tn.inspect)(t)}`);return n.name}parseValue(t){if(typeof t!="string"){let r=(0,Tn.inspect)(t);throw new df.GraphQLError(`Enum "${this.name}" cannot represent non-string value: ${r}.`+IN(this,r))}let n=this.getValue(t);if(n==null)throw new df.GraphQLError(`Value "${t}" does not exist in "${this.name}" enum.`+IN(this,t));return n.value}parseLiteral(t,n){if(t.kind!==M3.Kind.ENUM){let i=(0,$F.print)(t);throw new df.GraphQLError(`Enum "${this.name}" cannot represent non-enum value: ${i}.`+IN(this,i),{nodes:t})}let r=this.getValue(t.value);if(r==null){let i=(0,$F.print)(t);throw new df.GraphQLError(`Value "${i}" does not exist in "${this.name}" enum.`+IN(this,i),{nodes:t})}return r.value}toConfig(){let t=(0,QF.keyValMap)(this.getValues(),n=>n.name,n=>({description:n.description,value:n.value,deprecationReason:n.deprecationReason,extensions:n.extensions,astNode:n.astNode}));return{name:this.name,description:this.description,values:t,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLEnumType=bN;function IN(e,t){let n=e.getValues().map(i=>i.name),r=(0,k3.suggestionList)(t,n);return(0,C3.didYouMean)("the enum value",r)}function GF(e,t){return Al(t)||(0,mr.devAssert)(!1,`${e} values must be an object with value names as keys.`),Object.entries(t).map(([n,r])=>(Al(r)||(0,mr.devAssert)(!1,`${e}.${n} must refer to an object with a "value" key representing an internal value but got: ${(0,Tn.inspect)(r)}.`),{name:(0,$a.assertEnumValueName)(n),description:r.description,value:r.value!==void 0?r.value:n,deprecationReason:r.deprecationReason,extensions:(0,Ka.toObjMap)(r.extensions),astNode:r.astNode}))}var AN=class{constructor(t){var n,r;this.name=(0,$a.assertName)(t.name),this.description=t.description,this.extensions=(0,Ka.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this.isOneOf=(r=t.isOneOf)!==null&&r!==void 0?r:!1,this._fields=oW.bind(void 0,t)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}toConfig(){let t=(0,RN.mapValue)(this.getFields(),n=>({description:n.description,type:n.type,defaultValue:n.defaultValue,deprecationReason:n.deprecationReason,extensions:n.extensions,astNode:n.astNode}));return{name:this.name,description:this.description,fields:t,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,isOneOf:this.isOneOf}}toString(){return this.name}toJSON(){return this.toString()}};Ge.GraphQLInputObjectType=AN;function oW(e){let t=YI(e.fields);return Al(t)||(0,mr.devAssert)(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),(0,RN.mapValue)(t,(n,r)=>(!("resolve"in n)||(0,mr.devAssert)(!1,`${e.name}.${r} field has a resolve property, but Input Types cannot define resolvers.`),{name:(0,$a.assertName)(r),description:n.description,type:n.type,defaultValue:n.defaultValue,deprecationReason:n.deprecationReason,extensions:(0,Ka.toObjMap)(n.extensions),astNode:n.astNode}))}function uW(e){return _u(e.type)&&e.defaultValue===void 0}});var Nf=F(mf=>{"use strict";m();T();N();Object.defineProperty(mf,"__esModule",{value:!0});mf.doTypesOverlap=cW;mf.isEqualType=JI;mf.isTypeSubTypeOf=wN;var Fr=Ut();function JI(e,t){return e===t?!0:(0,Fr.isNonNullType)(e)&&(0,Fr.isNonNullType)(t)||(0,Fr.isListType)(e)&&(0,Fr.isListType)(t)?JI(e.ofType,t.ofType):!1}function wN(e,t,n){return t===n?!0:(0,Fr.isNonNullType)(n)?(0,Fr.isNonNullType)(t)?wN(e,t.ofType,n.ofType):!1:(0,Fr.isNonNullType)(t)?wN(e,t.ofType,n):(0,Fr.isListType)(n)?(0,Fr.isListType)(t)?wN(e,t.ofType,n.ofType):!1:(0,Fr.isListType)(t)?!1:(0,Fr.isAbstractType)(n)&&((0,Fr.isInterfaceType)(t)||(0,Fr.isObjectType)(t))&&e.isSubType(n,t)}function cW(e,t,n){return t===n?!0:(0,Fr.isAbstractType)(t)?(0,Fr.isAbstractType)(n)?e.getPossibleTypes(t).some(r=>e.isSubType(n,r)):e.isSubType(t,n):(0,Fr.isAbstractType)(n)?e.isSubType(n,t):!1}});var Ga=F(ar=>{"use strict";m();T();N();Object.defineProperty(ar,"__esModule",{value:!0});ar.GraphQLString=ar.GraphQLInt=ar.GraphQLID=ar.GraphQLFloat=ar.GraphQLBoolean=ar.GRAPHQL_MIN_INT=ar.GRAPHQL_MAX_INT=void 0;ar.isSpecifiedScalarType=lW;ar.specifiedScalarTypes=void 0;var fa=en(),nw=Va(),Nr=Xe(),Ec=Ct(),Tf=hi(),Ef=Ut(),LN=2147483647;ar.GRAPHQL_MAX_INT=LN;var CN=-2147483648;ar.GRAPHQL_MIN_INT=CN;var rw=new Ef.GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize(e){let t=hf(e);if(typeof t=="boolean")return t?1:0;let n=t;if(typeof t=="string"&&t!==""&&(n=Number(t)),typeof n!="number"||!Number.isInteger(n))throw new Nr.GraphQLError(`Int cannot represent non-integer value: ${(0,fa.inspect)(t)}`);if(n>LN||nLN||eLN||te.name===t)}function hf(e){if((0,nw.isObjectLike)(e)){if(typeof e.valueOf=="function"){let t=e.valueOf();if(!(0,nw.isObjectLike)(t))return t}if(typeof e.toJSON=="function")return e.toJSON()}return e}});var ei=F(jn=>{"use strict";m();T();N();Object.defineProperty(jn,"__esModule",{value:!0});jn.GraphQLSpecifiedByDirective=jn.GraphQLSkipDirective=jn.GraphQLOneOfDirective=jn.GraphQLIncludeDirective=jn.GraphQLDirective=jn.GraphQLDeprecatedDirective=jn.DEFAULT_DEPRECATION_REASON=void 0;jn.assertDirective=TW;jn.isDirective=lw;jn.isSpecifiedDirective=EW;jn.specifiedDirectives=void 0;var cw=Kr(),dW=en(),fW=af(),pW=Va(),mW=NN(),Ui=Sl(),NW=lf(),yf=Ut(),UN=Ga();function lw(e){return(0,fW.instanceOf)(e,bs)}function TW(e){if(!lw(e))throw new Error(`Expected ${(0,dW.inspect)(e)} to be a GraphQL directive.`);return e}var bs=class{constructor(t){var n,r;this.name=(0,NW.assertName)(t.name),this.description=t.description,this.locations=t.locations,this.isRepeatable=(n=t.isRepeatable)!==null&&n!==void 0?n:!1,this.extensions=(0,mW.toObjMap)(t.extensions),this.astNode=t.astNode,Array.isArray(t.locations)||(0,cw.devAssert)(!1,`@${t.name} locations must be an Array.`);let i=(r=t.args)!==null&&r!==void 0?r:{};(0,pW.isObjectLike)(i)&&!Array.isArray(i)||(0,cw.devAssert)(!1,`@${t.name} args must be an object with argument names as keys.`),this.args=(0,yf.defineArguments)(i)}get[Symbol.toStringTag](){return"GraphQLDirective"}toConfig(){return{name:this.name,description:this.description,locations:this.locations,args:(0,yf.argsToArgsConfig)(this.args),isRepeatable:this.isRepeatable,extensions:this.extensions,astNode:this.astNode}}toString(){return"@"+this.name}toJSON(){return this.toString()}};jn.GraphQLDirective=bs;var dw=new bs({name:"include",description:"Directs the executor to include this field or fragment only when the `if` argument is true.",locations:[Ui.DirectiveLocation.FIELD,Ui.DirectiveLocation.FRAGMENT_SPREAD,Ui.DirectiveLocation.INLINE_FRAGMENT],args:{if:{type:new yf.GraphQLNonNull(UN.GraphQLBoolean),description:"Included when true."}}});jn.GraphQLIncludeDirective=dw;var fw=new bs({name:"skip",description:"Directs the executor to skip this field or fragment when the `if` argument is true.",locations:[Ui.DirectiveLocation.FIELD,Ui.DirectiveLocation.FRAGMENT_SPREAD,Ui.DirectiveLocation.INLINE_FRAGMENT],args:{if:{type:new yf.GraphQLNonNull(UN.GraphQLBoolean),description:"Skipped when true."}}});jn.GraphQLSkipDirective=fw;var pw="No longer supported";jn.DEFAULT_DEPRECATION_REASON=pw;var mw=new bs({name:"deprecated",description:"Marks an element of a GraphQL schema as no longer supported.",locations:[Ui.DirectiveLocation.FIELD_DEFINITION,Ui.DirectiveLocation.ARGUMENT_DEFINITION,Ui.DirectiveLocation.INPUT_FIELD_DEFINITION,Ui.DirectiveLocation.ENUM_VALUE],args:{reason:{type:UN.GraphQLString,description:"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).",defaultValue:pw}}});jn.GraphQLDeprecatedDirective=mw;var Nw=new bs({name:"specifiedBy",description:"Exposes a URL that specifies the behavior of this scalar.",locations:[Ui.DirectiveLocation.SCALAR],args:{url:{type:new yf.GraphQLNonNull(UN.GraphQLString),description:"The URL that specifies the behavior of this scalar."}}});jn.GraphQLSpecifiedByDirective=Nw;var Tw=new bs({name:"oneOf",description:"Indicates exactly one field must be supplied and this field must not be `null`.",locations:[Ui.DirectiveLocation.INPUT_OBJECT],args:{}});jn.GraphQLOneOfDirective=Tw;var Ew=Object.freeze([dw,fw,mw,Nw,Tw]);jn.specifiedDirectives=Ew;function EW(e){return Ew.some(({name:t})=>t===e.name)}});var BN=F(zI=>{"use strict";m();T();N();Object.defineProperty(zI,"__esModule",{value:!0});zI.isIterableObject=hW;function hW(e){return typeof e=="object"&&typeof(e==null?void 0:e[Symbol.iterator])=="function"}});var _f=F(HI=>{"use strict";m();T();N();Object.defineProperty(HI,"__esModule",{value:!0});HI.astFromValue=gf;var hw=en(),yW=Pr(),IW=BN(),gW=Va(),Bi=Ct(),If=Ut(),_W=Ga();function gf(e,t){if((0,If.isNonNullType)(t)){let n=gf(e,t.ofType);return(n==null?void 0:n.kind)===Bi.Kind.NULL?null:n}if(e===null)return{kind:Bi.Kind.NULL};if(e===void 0)return null;if((0,If.isListType)(t)){let n=t.ofType;if((0,IW.isIterableObject)(e)){let r=[];for(let i of e){let a=gf(i,n);a!=null&&r.push(a)}return{kind:Bi.Kind.LIST,values:r}}return gf(e,n)}if((0,If.isInputObjectType)(t)){if(!(0,gW.isObjectLike)(e))return null;let n=[];for(let r of Object.values(t.getFields())){let i=gf(e[r.name],r.type);i&&n.push({kind:Bi.Kind.OBJECT_FIELD,name:{kind:Bi.Kind.NAME,value:r.name},value:i})}return{kind:Bi.Kind.OBJECT,fields:n}}if((0,If.isLeafType)(t)){let n=t.serialize(e);if(n==null)return null;if(typeof n=="boolean")return{kind:Bi.Kind.BOOLEAN,value:n};if(typeof n=="number"&&Number.isFinite(n)){let r=String(n);return yw.test(r)?{kind:Bi.Kind.INT,value:r}:{kind:Bi.Kind.FLOAT,value:r}}if(typeof n=="string")return(0,If.isEnumType)(t)?{kind:Bi.Kind.ENUM,value:n}:t===_W.GraphQLID&&yw.test(n)?{kind:Bi.Kind.INT,value:n}:{kind:Bi.Kind.STRING,value:n};throw new TypeError(`Cannot convert value to AST: ${(0,hw.inspect)(n)}.`)}(0,yW.invariant)(!1,"Unexpected input type: "+(0,hw.inspect)(t))}var yw=/^-?(?:0|[1-9][0-9]*)$/});var Mi=F(tn=>{"use strict";m();T();N();Object.defineProperty(tn,"__esModule",{value:!0});tn.introspectionTypes=tn.__TypeKind=tn.__Type=tn.__Schema=tn.__InputValue=tn.__Field=tn.__EnumValue=tn.__DirectiveLocation=tn.__Directive=tn.TypeNameMetaFieldDef=tn.TypeMetaFieldDef=tn.TypeKind=tn.SchemaMetaFieldDef=void 0;tn.isIntrospectionType=PW;var vW=en(),SW=Pr(),sr=Sl(),OW=hi(),DW=_f(),qe=Ut(),dn=Ga(),WI=new qe.GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:()=>({description:{type:dn.GraphQLString,resolve:e=>e.description},types:{description:"A list of all types supported by this server.",type:new qe.GraphQLNonNull(new qe.GraphQLList(new qe.GraphQLNonNull(ki))),resolve(e){return Object.values(e.getTypeMap())}},queryType:{description:"The type that query operations will be rooted at.",type:new qe.GraphQLNonNull(ki),resolve:e=>e.getQueryType()},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:ki,resolve:e=>e.getMutationType()},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:ki,resolve:e=>e.getSubscriptionType()},directives:{description:"A list of all directives supported by this server.",type:new qe.GraphQLNonNull(new qe.GraphQLList(new qe.GraphQLNonNull(XI))),resolve:e=>e.getDirectives()}})});tn.__Schema=WI;var XI=new qe.GraphQLObjectType({name:"__Directive",description:`A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document. - -In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.`,fields:()=>({name:{type:new qe.GraphQLNonNull(dn.GraphQLString),resolve:e=>e.name},description:{type:dn.GraphQLString,resolve:e=>e.description},isRepeatable:{type:new qe.GraphQLNonNull(dn.GraphQLBoolean),resolve:e=>e.isRepeatable},locations:{type:new qe.GraphQLNonNull(new qe.GraphQLList(new qe.GraphQLNonNull(ZI))),resolve:e=>e.locations},args:{type:new qe.GraphQLNonNull(new qe.GraphQLList(new qe.GraphQLNonNull(vf))),args:{includeDeprecated:{type:dn.GraphQLBoolean,defaultValue:!1}},resolve(e,{includeDeprecated:t}){return t?e.args:e.args.filter(n=>n.deprecationReason==null)}}})});tn.__Directive=XI;var ZI=new qe.GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:sr.DirectiveLocation.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:sr.DirectiveLocation.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:sr.DirectiveLocation.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:sr.DirectiveLocation.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:sr.DirectiveLocation.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:sr.DirectiveLocation.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:sr.DirectiveLocation.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:sr.DirectiveLocation.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:sr.DirectiveLocation.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:sr.DirectiveLocation.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:sr.DirectiveLocation.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:sr.DirectiveLocation.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:sr.DirectiveLocation.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:sr.DirectiveLocation.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:sr.DirectiveLocation.UNION,description:"Location adjacent to a union definition."},ENUM:{value:sr.DirectiveLocation.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:sr.DirectiveLocation.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:sr.DirectiveLocation.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:sr.DirectiveLocation.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}});tn.__DirectiveLocation=ZI;var ki=new qe.GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:()=>({kind:{type:new qe.GraphQLNonNull(ng),resolve(e){if((0,qe.isScalarType)(e))return or.SCALAR;if((0,qe.isObjectType)(e))return or.OBJECT;if((0,qe.isInterfaceType)(e))return or.INTERFACE;if((0,qe.isUnionType)(e))return or.UNION;if((0,qe.isEnumType)(e))return or.ENUM;if((0,qe.isInputObjectType)(e))return or.INPUT_OBJECT;if((0,qe.isListType)(e))return or.LIST;if((0,qe.isNonNullType)(e))return or.NON_NULL;(0,SW.invariant)(!1,`Unexpected type: "${(0,vW.inspect)(e)}".`)}},name:{type:dn.GraphQLString,resolve:e=>"name"in e?e.name:void 0},description:{type:dn.GraphQLString,resolve:e=>"description"in e?e.description:void 0},specifiedByURL:{type:dn.GraphQLString,resolve:e=>"specifiedByURL"in e?e.specifiedByURL:void 0},fields:{type:new qe.GraphQLList(new qe.GraphQLNonNull(eg)),args:{includeDeprecated:{type:dn.GraphQLBoolean,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if((0,qe.isObjectType)(e)||(0,qe.isInterfaceType)(e)){let n=Object.values(e.getFields());return t?n:n.filter(r=>r.deprecationReason==null)}}},interfaces:{type:new qe.GraphQLList(new qe.GraphQLNonNull(ki)),resolve(e){if((0,qe.isObjectType)(e)||(0,qe.isInterfaceType)(e))return e.getInterfaces()}},possibleTypes:{type:new qe.GraphQLList(new qe.GraphQLNonNull(ki)),resolve(e,t,n,{schema:r}){if((0,qe.isAbstractType)(e))return r.getPossibleTypes(e)}},enumValues:{type:new qe.GraphQLList(new qe.GraphQLNonNull(tg)),args:{includeDeprecated:{type:dn.GraphQLBoolean,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if((0,qe.isEnumType)(e)){let n=e.getValues();return t?n:n.filter(r=>r.deprecationReason==null)}}},inputFields:{type:new qe.GraphQLList(new qe.GraphQLNonNull(vf)),args:{includeDeprecated:{type:dn.GraphQLBoolean,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if((0,qe.isInputObjectType)(e)){let n=Object.values(e.getFields());return t?n:n.filter(r=>r.deprecationReason==null)}}},ofType:{type:ki,resolve:e=>"ofType"in e?e.ofType:void 0},isOneOf:{type:dn.GraphQLBoolean,resolve:e=>{if((0,qe.isInputObjectType)(e))return e.isOneOf}}})});tn.__Type=ki;var eg=new qe.GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:()=>({name:{type:new qe.GraphQLNonNull(dn.GraphQLString),resolve:e=>e.name},description:{type:dn.GraphQLString,resolve:e=>e.description},args:{type:new qe.GraphQLNonNull(new qe.GraphQLList(new qe.GraphQLNonNull(vf))),args:{includeDeprecated:{type:dn.GraphQLBoolean,defaultValue:!1}},resolve(e,{includeDeprecated:t}){return t?e.args:e.args.filter(n=>n.deprecationReason==null)}},type:{type:new qe.GraphQLNonNull(ki),resolve:e=>e.type},isDeprecated:{type:new qe.GraphQLNonNull(dn.GraphQLBoolean),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:dn.GraphQLString,resolve:e=>e.deprecationReason}})});tn.__Field=eg;var vf=new qe.GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:()=>({name:{type:new qe.GraphQLNonNull(dn.GraphQLString),resolve:e=>e.name},description:{type:dn.GraphQLString,resolve:e=>e.description},type:{type:new qe.GraphQLNonNull(ki),resolve:e=>e.type},defaultValue:{type:dn.GraphQLString,description:"A GraphQL-formatted string representing the default value for this input value.",resolve(e){let{type:t,defaultValue:n}=e,r=(0,DW.astFromValue)(n,t);return r?(0,OW.print)(r):null}},isDeprecated:{type:new qe.GraphQLNonNull(dn.GraphQLBoolean),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:dn.GraphQLString,resolve:e=>e.deprecationReason}})});tn.__InputValue=vf;var tg=new qe.GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:()=>({name:{type:new qe.GraphQLNonNull(dn.GraphQLString),resolve:e=>e.name},description:{type:dn.GraphQLString,resolve:e=>e.description},isDeprecated:{type:new qe.GraphQLNonNull(dn.GraphQLBoolean),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:dn.GraphQLString,resolve:e=>e.deprecationReason}})});tn.__EnumValue=tg;var or;tn.TypeKind=or;(function(e){e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.INPUT_OBJECT="INPUT_OBJECT",e.LIST="LIST",e.NON_NULL="NON_NULL"})(or||(tn.TypeKind=or={}));var ng=new qe.GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:or.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:or.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:or.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:or.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:or.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:or.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:or.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:or.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}});tn.__TypeKind=ng;var bW={name:"__schema",type:new qe.GraphQLNonNull(WI),description:"Access the current type schema of this server.",args:[],resolve:(e,t,n,{schema:r})=>r,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0};tn.SchemaMetaFieldDef=bW;var AW={name:"__type",type:ki,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new qe.GraphQLNonNull(dn.GraphQLString),defaultValue:void 0,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0}],resolve:(e,{name:t},n,{schema:r})=>r.getType(t),deprecationReason:void 0,extensions:Object.create(null),astNode:void 0};tn.TypeMetaFieldDef=AW;var RW={name:"__typename",type:new qe.GraphQLNonNull(dn.GraphQLString),description:"The name of the current Object type at runtime.",args:[],resolve:(e,t,n,{parentType:r})=>r.name,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0};tn.TypeNameMetaFieldDef=RW;var Iw=Object.freeze([WI,XI,ZI,ki,eg,vf,tg,ng]);tn.introspectionTypes=Iw;function PW(e){return Iw.some(({name:t})=>e.name===t)}});var hc=F(Pl=>{"use strict";m();T();N();Object.defineProperty(Pl,"__esModule",{value:!0});Pl.GraphQLSchema=void 0;Pl.assertSchema=UW;Pl.isSchema=_w;var kN=Kr(),ig=en(),FW=af(),wW=Va(),LW=NN(),rg=ja(),pa=Ut(),gw=ei(),CW=Mi();function _w(e){return(0,FW.instanceOf)(e,MN)}function UW(e){if(!_w(e))throw new Error(`Expected ${(0,ig.inspect)(e)} to be a GraphQL schema.`);return e}var MN=class{constructor(t){var n,r;this.__validationErrors=t.assumeValid===!0?[]:void 0,(0,wW.isObjectLike)(t)||(0,kN.devAssert)(!1,"Must provide configuration object."),!t.types||Array.isArray(t.types)||(0,kN.devAssert)(!1,`"types" must be Array if provided but got: ${(0,ig.inspect)(t.types)}.`),!t.directives||Array.isArray(t.directives)||(0,kN.devAssert)(!1,`"directives" must be Array if provided but got: ${(0,ig.inspect)(t.directives)}.`),this.description=t.description,this.extensions=(0,LW.toObjMap)(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._queryType=t.query,this._mutationType=t.mutation,this._subscriptionType=t.subscription,this._directives=(r=t.directives)!==null&&r!==void 0?r:gw.specifiedDirectives;let i=new Set(t.types);if(t.types!=null)for(let a of t.types)i.delete(a),ma(a,i);this._queryType!=null&&ma(this._queryType,i),this._mutationType!=null&&ma(this._mutationType,i),this._subscriptionType!=null&&ma(this._subscriptionType,i);for(let a of this._directives)if((0,gw.isDirective)(a))for(let o of a.args)ma(o.type,i);ma(CW.__Schema,i),this._typeMap=Object.create(null),this._subTypeMap=Object.create(null),this._implementationsMap=Object.create(null);for(let a of i){if(a==null)continue;let o=a.name;if(o||(0,kN.devAssert)(!1,"One of the provided types for building the Schema is missing a name."),this._typeMap[o]!==void 0)throw new Error(`Schema must contain uniquely named types but contains multiple types named "${o}".`);if(this._typeMap[o]=a,(0,pa.isInterfaceType)(a)){for(let u of a.getInterfaces())if((0,pa.isInterfaceType)(u)){let l=this._implementationsMap[u.name];l===void 0&&(l=this._implementationsMap[u.name]={objects:[],interfaces:[]}),l.interfaces.push(a)}}else if((0,pa.isObjectType)(a)){for(let u of a.getInterfaces())if((0,pa.isInterfaceType)(u)){let l=this._implementationsMap[u.name];l===void 0&&(l=this._implementationsMap[u.name]={objects:[],interfaces:[]}),l.objects.push(a)}}}}get[Symbol.toStringTag](){return"GraphQLSchema"}getQueryType(){return this._queryType}getMutationType(){return this._mutationType}getSubscriptionType(){return this._subscriptionType}getRootType(t){switch(t){case rg.OperationTypeNode.QUERY:return this.getQueryType();case rg.OperationTypeNode.MUTATION:return this.getMutationType();case rg.OperationTypeNode.SUBSCRIPTION:return this.getSubscriptionType()}}getTypeMap(){return this._typeMap}getType(t){return this.getTypeMap()[t]}getPossibleTypes(t){return(0,pa.isUnionType)(t)?t.getTypes():this.getImplementations(t).objects}getImplementations(t){let n=this._implementationsMap[t.name];return n!=null?n:{objects:[],interfaces:[]}}isSubType(t,n){let r=this._subTypeMap[t.name];if(r===void 0){if(r=Object.create(null),(0,pa.isUnionType)(t))for(let i of t.getTypes())r[i.name]=!0;else{let i=this.getImplementations(t);for(let a of i.objects)r[a.name]=!0;for(let a of i.interfaces)r[a.name]=!0}this._subTypeMap[t.name]=r}return r[n.name]!==void 0}getDirectives(){return this._directives}getDirective(t){return this.getDirectives().find(n=>n.name===t)}toConfig(){return{description:this.description,query:this.getQueryType(),mutation:this.getMutationType(),subscription:this.getSubscriptionType(),types:Object.values(this.getTypeMap()),directives:this.getDirectives(),extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,assumeValid:this.__validationErrors!==void 0}}};Pl.GraphQLSchema=MN;function ma(e,t){let n=(0,pa.getNamedType)(e);if(!t.has(n)){if(t.add(n),(0,pa.isUnionType)(n))for(let r of n.getTypes())ma(r,t);else if((0,pa.isObjectType)(n)||(0,pa.isInterfaceType)(n)){for(let r of n.getInterfaces())ma(r,t);for(let r of Object.values(n.getFields())){ma(r.type,t);for(let i of r.args)ma(i.type,t)}}else if((0,pa.isInputObjectType)(n))for(let r of Object.values(n.getFields()))ma(r.type,t)}return t}});var Of=F(xN=>{"use strict";m();T();N();Object.defineProperty(xN,"__esModule",{value:!0});xN.assertValidSchema=xW;xN.validateSchema=Aw;var wr=en(),BW=Xe(),ag=ja(),vw=Nf(),Un=Ut(),bw=ei(),kW=Mi(),MW=hc();function Aw(e){if((0,MW.assertSchema)(e),e.__validationErrors)return e.__validationErrors;let t=new og(e);qW(t),VW(t),jW(t);let n=t.getErrors();return e.__validationErrors=n,n}function xW(e){let t=Aw(e);if(t.length!==0)throw new Error(t.map(n=>n.message).join(` - -`))}var og=class{constructor(t){this._errors=[],this.schema=t}reportError(t,n){let r=Array.isArray(n)?n.filter(Boolean):n;this._errors.push(new BW.GraphQLError(t,{nodes:r}))}getErrors(){return this._errors}};function qW(e){let t=e.schema,n=t.getQueryType();if(!n)e.reportError("Query root type must be provided.",t.astNode);else if(!(0,Un.isObjectType)(n)){var r;e.reportError(`Query root type must be Object type, it cannot be ${(0,wr.inspect)(n)}.`,(r=sg(t,ag.OperationTypeNode.QUERY))!==null&&r!==void 0?r:n.astNode)}let i=t.getMutationType();if(i&&!(0,Un.isObjectType)(i)){var a;e.reportError(`Mutation root type must be Object type if provided, it cannot be ${(0,wr.inspect)(i)}.`,(a=sg(t,ag.OperationTypeNode.MUTATION))!==null&&a!==void 0?a:i.astNode)}let o=t.getSubscriptionType();if(o&&!(0,Un.isObjectType)(o)){var u;e.reportError(`Subscription root type must be Object type if provided, it cannot be ${(0,wr.inspect)(o)}.`,(u=sg(t,ag.OperationTypeNode.SUBSCRIPTION))!==null&&u!==void 0?u:o.astNode)}}function sg(e,t){var n;return(n=[e.astNode,...e.extensionASTNodes].flatMap(r=>{var i;return(i=r==null?void 0:r.operationTypes)!==null&&i!==void 0?i:[]}).find(r=>r.operation===t))===null||n===void 0?void 0:n.type}function VW(e){for(let n of e.schema.getDirectives()){if(!(0,bw.isDirective)(n)){e.reportError(`Expected directive but got: ${(0,wr.inspect)(n)}.`,n==null?void 0:n.astNode);continue}yc(e,n);for(let r of n.args)if(yc(e,r),(0,Un.isInputType)(r.type)||e.reportError(`The type of @${n.name}(${r.name}:) must be Input Type but got: ${(0,wr.inspect)(r.type)}.`,r.astNode),(0,Un.isRequiredArgument)(r)&&r.deprecationReason!=null){var t;e.reportError(`Required argument @${n.name}(${r.name}:) cannot be deprecated.`,[ug(r.astNode),(t=r.astNode)===null||t===void 0?void 0:t.type])}}}function yc(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function jW(e){let t=zW(e),n=e.schema.getTypeMap();for(let r of Object.values(n)){if(!(0,Un.isNamedType)(r)){e.reportError(`Expected GraphQL named type but got: ${(0,wr.inspect)(r)}.`,r.astNode);continue}(0,kW.isIntrospectionType)(r)||yc(e,r),(0,Un.isObjectType)(r)||(0,Un.isInterfaceType)(r)?(Sw(e,r),Ow(e,r)):(0,Un.isUnionType)(r)?GW(e,r):(0,Un.isEnumType)(r)?QW(e,r):(0,Un.isInputObjectType)(r)&&(YW(e,r),t(r))}}function Sw(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let o of n){if(yc(e,o),!(0,Un.isOutputType)(o.type)){var r;e.reportError(`The type of ${t.name}.${o.name} must be Output Type but got: ${(0,wr.inspect)(o.type)}.`,(r=o.astNode)===null||r===void 0?void 0:r.type)}for(let u of o.args){let l=u.name;if(yc(e,u),!(0,Un.isInputType)(u.type)){var i;e.reportError(`The type of ${t.name}.${o.name}(${l}:) must be Input Type but got: ${(0,wr.inspect)(u.type)}.`,(i=u.astNode)===null||i===void 0?void 0:i.type)}if((0,Un.isRequiredArgument)(u)&&u.deprecationReason!=null){var a;e.reportError(`Required argument ${t.name}.${o.name}(${l}:) cannot be deprecated.`,[ug(u.astNode),(a=u.astNode)===null||a===void 0?void 0:a.type])}}}}function Ow(e,t){let n=Object.create(null);for(let r of t.getInterfaces()){if(!(0,Un.isInterfaceType)(r)){e.reportError(`Type ${(0,wr.inspect)(t)} must only implement Interface types, it cannot implement ${(0,wr.inspect)(r)}.`,Sf(t,r));continue}if(t===r){e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,Sf(t,r));continue}if(n[r.name]){e.reportError(`Type ${t.name} can only implement ${r.name} once.`,Sf(t,r));continue}n[r.name]=!0,$W(e,t,r),KW(e,t,r)}}function KW(e,t,n){let r=t.getFields();for(let l of Object.values(n.getFields())){let d=l.name,p=r[d];if(!p){e.reportError(`Interface field ${n.name}.${d} expected but ${t.name} does not provide it.`,[l.astNode,t.astNode,...t.extensionASTNodes]);continue}if(!(0,vw.isTypeSubTypeOf)(e.schema,p.type,l.type)){var i,a;e.reportError(`Interface field ${n.name}.${d} expects type ${(0,wr.inspect)(l.type)} but ${t.name}.${d} is type ${(0,wr.inspect)(p.type)}.`,[(i=l.astNode)===null||i===void 0?void 0:i.type,(a=p.astNode)===null||a===void 0?void 0:a.type])}for(let E of l.args){let y=E.name,v=p.args.find(R=>R.name===y);if(!v){e.reportError(`Interface field argument ${n.name}.${d}(${y}:) expected but ${t.name}.${d} does not provide it.`,[E.astNode,p.astNode]);continue}if(!(0,vw.isEqualType)(E.type,v.type)){var o,u;e.reportError(`Interface field argument ${n.name}.${d}(${y}:) expects type ${(0,wr.inspect)(E.type)} but ${t.name}.${d}(${y}:) is type ${(0,wr.inspect)(v.type)}.`,[(o=E.astNode)===null||o===void 0?void 0:o.type,(u=v.astNode)===null||u===void 0?void 0:u.type])}}for(let E of p.args){let y=E.name;!l.args.find(R=>R.name===y)&&(0,Un.isRequiredArgument)(E)&&e.reportError(`Object field ${t.name}.${d} includes required argument ${y} that is missing from the Interface field ${n.name}.${d}.`,[E.astNode,l.astNode])}}}function $W(e,t,n){let r=t.getInterfaces();for(let i of n.getInterfaces())r.includes(i)||e.reportError(i===t?`Type ${t.name} cannot implement ${n.name} because it would create a circular reference.`:`Type ${t.name} must implement ${i.name} because it is implemented by ${n.name}.`,[...Sf(n,i),...Sf(t,n)])}function GW(e,t){let n=t.getTypes();n.length===0&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);let r=Object.create(null);for(let i of n){if(r[i.name]){e.reportError(`Union type ${t.name} can only include type ${i.name} once.`,Dw(t,i.name));continue}r[i.name]=!0,(0,Un.isObjectType)(i)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${(0,wr.inspect)(i)}.`,Dw(t,String(i)))}}function QW(e,t){let n=t.getValues();n.length===0&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(let r of n)yc(e,r)}function YW(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let a of n){if(yc(e,a),!(0,Un.isInputType)(a.type)){var r;e.reportError(`The type of ${t.name}.${a.name} must be Input Type but got: ${(0,wr.inspect)(a.type)}.`,(r=a.astNode)===null||r===void 0?void 0:r.type)}if((0,Un.isRequiredInputField)(a)&&a.deprecationReason!=null){var i;e.reportError(`Required input field ${t.name}.${a.name} cannot be deprecated.`,[ug(a.astNode),(i=a.astNode)===null||i===void 0?void 0:i.type])}t.isOneOf&&JW(t,a,e)}}function JW(e,t,n){if((0,Un.isNonNullType)(t.type)){var r;n.reportError(`OneOf input field ${e.name}.${t.name} must be nullable.`,(r=t.astNode)===null||r===void 0?void 0:r.type)}t.defaultValue!==void 0&&n.reportError(`OneOf input field ${e.name}.${t.name} cannot have a default value.`,t.astNode)}function zW(e){let t=Object.create(null),n=[],r=Object.create(null);return i;function i(a){if(t[a.name])return;t[a.name]=!0,r[a.name]=n.length;let o=Object.values(a.getFields());for(let u of o)if((0,Un.isNonNullType)(u.type)&&(0,Un.isInputObjectType)(u.type.ofType)){let l=u.type.ofType,d=r[l.name];if(n.push(u),d===void 0)i(l);else{let p=n.slice(d),E=p.map(y=>y.name).join(".");e.reportError(`Cannot reference Input Object "${l.name}" within itself through a series of non-null fields: "${E}".`,p.map(y=>y.astNode))}n.pop()}r[a.name]=void 0}}function Sf(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(a=>{var o;return(o=a.interfaces)!==null&&o!==void 0?o:[]}).filter(a=>a.name.value===t.name)}function Dw(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(a=>{var o;return(o=a.types)!==null&&o!==void 0?o:[]}).filter(a=>a.name.value===t)}function ug(e){var t;return e==null||(t=e.directives)===null||t===void 0?void 0:t.find(n=>n.name.value===bw.GraphQLDeprecatedDirective.name)}});var Qa=F(dg=>{"use strict";m();T();N();Object.defineProperty(dg,"__esModule",{value:!0});dg.typeFromAST=lg;var cg=Ct(),Rw=Ut();function lg(e,t){switch(t.kind){case cg.Kind.LIST_TYPE:{let n=lg(e,t.type);return n&&new Rw.GraphQLList(n)}case cg.Kind.NON_NULL_TYPE:{let n=lg(e,t.type);return n&&new Rw.GraphQLNonNull(n)}case cg.Kind.NAMED_TYPE:return e.getType(t.name.value)}}});var qN=F(Df=>{"use strict";m();T();N();Object.defineProperty(Df,"__esModule",{value:!0});Df.TypeInfo=void 0;Df.visitWithTypeInfo=XW;var HW=ja(),Bn=Ct(),Pw=fc(),kn=Ut(),Fl=Mi(),Fw=Qa(),fg=class{constructor(t,n,r){this._schema=t,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=r!=null?r:WW,n&&((0,kn.isInputType)(n)&&this._inputTypeStack.push(n),(0,kn.isCompositeType)(n)&&this._parentTypeStack.push(n),(0,kn.isOutputType)(n)&&this._typeStack.push(n))}get[Symbol.toStringTag](){return"TypeInfo"}getType(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]}getParentType(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]}getInputType(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]}getParentInputType(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]}getFieldDef(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]}getDefaultValue(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]}getDirective(){return this._directive}getArgument(){return this._argument}getEnumValue(){return this._enumValue}enter(t){let n=this._schema;switch(t.kind){case Bn.Kind.SELECTION_SET:{let i=(0,kn.getNamedType)(this.getType());this._parentTypeStack.push((0,kn.isCompositeType)(i)?i:void 0);break}case Bn.Kind.FIELD:{let i=this.getParentType(),a,o;i&&(a=this._getFieldDef(n,i,t),a&&(o=a.type)),this._fieldDefStack.push(a),this._typeStack.push((0,kn.isOutputType)(o)?o:void 0);break}case Bn.Kind.DIRECTIVE:this._directive=n.getDirective(t.name.value);break;case Bn.Kind.OPERATION_DEFINITION:{let i=n.getRootType(t.operation);this._typeStack.push((0,kn.isObjectType)(i)?i:void 0);break}case Bn.Kind.INLINE_FRAGMENT:case Bn.Kind.FRAGMENT_DEFINITION:{let i=t.typeCondition,a=i?(0,Fw.typeFromAST)(n,i):(0,kn.getNamedType)(this.getType());this._typeStack.push((0,kn.isOutputType)(a)?a:void 0);break}case Bn.Kind.VARIABLE_DEFINITION:{let i=(0,Fw.typeFromAST)(n,t.type);this._inputTypeStack.push((0,kn.isInputType)(i)?i:void 0);break}case Bn.Kind.ARGUMENT:{var r;let i,a,o=(r=this.getDirective())!==null&&r!==void 0?r:this.getFieldDef();o&&(i=o.args.find(u=>u.name===t.name.value),i&&(a=i.type)),this._argument=i,this._defaultValueStack.push(i?i.defaultValue:void 0),this._inputTypeStack.push((0,kn.isInputType)(a)?a:void 0);break}case Bn.Kind.LIST:{let i=(0,kn.getNullableType)(this.getInputType()),a=(0,kn.isListType)(i)?i.ofType:i;this._defaultValueStack.push(void 0),this._inputTypeStack.push((0,kn.isInputType)(a)?a:void 0);break}case Bn.Kind.OBJECT_FIELD:{let i=(0,kn.getNamedType)(this.getInputType()),a,o;(0,kn.isInputObjectType)(i)&&(o=i.getFields()[t.name.value],o&&(a=o.type)),this._defaultValueStack.push(o?o.defaultValue:void 0),this._inputTypeStack.push((0,kn.isInputType)(a)?a:void 0);break}case Bn.Kind.ENUM:{let i=(0,kn.getNamedType)(this.getInputType()),a;(0,kn.isEnumType)(i)&&(a=i.getValue(t.value)),this._enumValue=a;break}default:}}leave(t){switch(t.kind){case Bn.Kind.SELECTION_SET:this._parentTypeStack.pop();break;case Bn.Kind.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case Bn.Kind.DIRECTIVE:this._directive=null;break;case Bn.Kind.OPERATION_DEFINITION:case Bn.Kind.INLINE_FRAGMENT:case Bn.Kind.FRAGMENT_DEFINITION:this._typeStack.pop();break;case Bn.Kind.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case Bn.Kind.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Bn.Kind.LIST:case Bn.Kind.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Bn.Kind.ENUM:this._enumValue=null;break;default:}}};Df.TypeInfo=fg;function WW(e,t,n){let r=n.name.value;if(r===Fl.SchemaMetaFieldDef.name&&e.getQueryType()===t)return Fl.SchemaMetaFieldDef;if(r===Fl.TypeMetaFieldDef.name&&e.getQueryType()===t)return Fl.TypeMetaFieldDef;if(r===Fl.TypeNameMetaFieldDef.name&&(0,kn.isCompositeType)(t))return Fl.TypeNameMetaFieldDef;if((0,kn.isObjectType)(t)||(0,kn.isInterfaceType)(t))return t.getFields()[r]}function XW(e,t){return{enter(...n){let r=n[0];e.enter(r);let i=(0,Pw.getEnterLeaveForKind)(t,r.kind).enter;if(i){let a=i.apply(t,n);return a!==void 0&&(e.leave(r),(0,HW.isNode)(a)&&e.enter(a)),a}},leave(...n){let r=n[0],i=(0,Pw.getEnterLeaveForKind)(t,r.kind).leave,a;return i&&(a=i.apply(t,n)),e.leave(r),a}}}});var Ic=F(xi=>{"use strict";m();T();N();Object.defineProperty(xi,"__esModule",{value:!0});xi.isConstValueNode=pg;xi.isDefinitionNode=ZW;xi.isExecutableDefinitionNode=ww;xi.isSelectionNode=e6;xi.isTypeDefinitionNode=Uw;xi.isTypeExtensionNode=kw;xi.isTypeNode=t6;xi.isTypeSystemDefinitionNode=Cw;xi.isTypeSystemExtensionNode=Bw;xi.isValueNode=Lw;var Bt=Ct();function ZW(e){return ww(e)||Cw(e)||Bw(e)}function ww(e){return e.kind===Bt.Kind.OPERATION_DEFINITION||e.kind===Bt.Kind.FRAGMENT_DEFINITION}function e6(e){return e.kind===Bt.Kind.FIELD||e.kind===Bt.Kind.FRAGMENT_SPREAD||e.kind===Bt.Kind.INLINE_FRAGMENT}function Lw(e){return e.kind===Bt.Kind.VARIABLE||e.kind===Bt.Kind.INT||e.kind===Bt.Kind.FLOAT||e.kind===Bt.Kind.STRING||e.kind===Bt.Kind.BOOLEAN||e.kind===Bt.Kind.NULL||e.kind===Bt.Kind.ENUM||e.kind===Bt.Kind.LIST||e.kind===Bt.Kind.OBJECT}function pg(e){return Lw(e)&&(e.kind===Bt.Kind.LIST?e.values.some(pg):e.kind===Bt.Kind.OBJECT?e.fields.some(t=>pg(t.value)):e.kind!==Bt.Kind.VARIABLE)}function t6(e){return e.kind===Bt.Kind.NAMED_TYPE||e.kind===Bt.Kind.LIST_TYPE||e.kind===Bt.Kind.NON_NULL_TYPE}function Cw(e){return e.kind===Bt.Kind.SCHEMA_DEFINITION||Uw(e)||e.kind===Bt.Kind.DIRECTIVE_DEFINITION}function Uw(e){return e.kind===Bt.Kind.SCALAR_TYPE_DEFINITION||e.kind===Bt.Kind.OBJECT_TYPE_DEFINITION||e.kind===Bt.Kind.INTERFACE_TYPE_DEFINITION||e.kind===Bt.Kind.UNION_TYPE_DEFINITION||e.kind===Bt.Kind.ENUM_TYPE_DEFINITION||e.kind===Bt.Kind.INPUT_OBJECT_TYPE_DEFINITION}function Bw(e){return e.kind===Bt.Kind.SCHEMA_EXTENSION||kw(e)}function kw(e){return e.kind===Bt.Kind.SCALAR_TYPE_EXTENSION||e.kind===Bt.Kind.OBJECT_TYPE_EXTENSION||e.kind===Bt.Kind.INTERFACE_TYPE_EXTENSION||e.kind===Bt.Kind.UNION_TYPE_EXTENSION||e.kind===Bt.Kind.ENUM_TYPE_EXTENSION||e.kind===Bt.Kind.INPUT_OBJECT_TYPE_EXTENSION}});var Ng=F(mg=>{"use strict";m();T();N();Object.defineProperty(mg,"__esModule",{value:!0});mg.ExecutableDefinitionsRule=i6;var n6=Xe(),Mw=Ct(),r6=Ic();function i6(e){return{Document(t){for(let n of t.definitions)if(!(0,r6.isExecutableDefinitionNode)(n)){let r=n.kind===Mw.Kind.SCHEMA_DEFINITION||n.kind===Mw.Kind.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new n6.GraphQLError(`The ${r} definition is not executable.`,{nodes:n}))}return!1}}}});var Eg=F(Tg=>{"use strict";m();T();N();Object.defineProperty(Tg,"__esModule",{value:!0});Tg.FieldsOnCorrectTypeRule=u6;var xw=Eu(),a6=cf(),s6=yu(),o6=Xe(),bf=Ut();function u6(e){return{Field(t){let n=e.getParentType();if(n&&!e.getFieldDef()){let i=e.getSchema(),a=t.name.value,o=(0,xw.didYouMean)("to use an inline fragment on",c6(i,n,a));o===""&&(o=(0,xw.didYouMean)(l6(n,a))),e.reportError(new o6.GraphQLError(`Cannot query field "${a}" on type "${n.name}".`+o,{nodes:t}))}}}}function c6(e,t,n){if(!(0,bf.isAbstractType)(t))return[];let r=new Set,i=Object.create(null);for(let o of e.getPossibleTypes(t))if(o.getFields()[n]){r.add(o),i[o.name]=1;for(let u of o.getInterfaces()){var a;u.getFields()[n]&&(r.add(u),i[u.name]=((a=i[u.name])!==null&&a!==void 0?a:0)+1)}}return[...r].sort((o,u)=>{let l=i[u.name]-i[o.name];return l!==0?l:(0,bf.isInterfaceType)(o)&&e.isSubType(o,u)?-1:(0,bf.isInterfaceType)(u)&&e.isSubType(u,o)?1:(0,a6.naturalCompare)(o.name,u.name)}).map(o=>o.name)}function l6(e,t){if((0,bf.isObjectType)(e)||(0,bf.isInterfaceType)(e)){let n=Object.keys(e.getFields());return(0,s6.suggestionList)(t,n)}return[]}});var yg=F(hg=>{"use strict";m();T();N();Object.defineProperty(hg,"__esModule",{value:!0});hg.FragmentsOnCompositeTypesRule=d6;var qw=Xe(),Vw=hi(),jw=Ut(),Kw=Qa();function d6(e){return{InlineFragment(t){let n=t.typeCondition;if(n){let r=(0,Kw.typeFromAST)(e.getSchema(),n);if(r&&!(0,jw.isCompositeType)(r)){let i=(0,Vw.print)(n);e.reportError(new qw.GraphQLError(`Fragment cannot condition on non composite type "${i}".`,{nodes:n}))}}},FragmentDefinition(t){let n=(0,Kw.typeFromAST)(e.getSchema(),t.typeCondition);if(n&&!(0,jw.isCompositeType)(n)){let r=(0,Vw.print)(t.typeCondition);e.reportError(new qw.GraphQLError(`Fragment "${t.name.value}" cannot condition on non composite type "${r}".`,{nodes:t.typeCondition}))}}}}});var Ig=F(VN=>{"use strict";m();T();N();Object.defineProperty(VN,"__esModule",{value:!0});VN.KnownArgumentNamesOnDirectivesRule=Yw;VN.KnownArgumentNamesRule=m6;var $w=Eu(),Gw=yu(),Qw=Xe(),f6=Ct(),p6=ei();function m6(e){return $(M({},Yw(e)),{Argument(t){let n=e.getArgument(),r=e.getFieldDef(),i=e.getParentType();if(!n&&r&&i){let a=t.name.value,o=r.args.map(l=>l.name),u=(0,Gw.suggestionList)(a,o);e.reportError(new Qw.GraphQLError(`Unknown argument "${a}" on field "${i.name}.${r.name}".`+(0,$w.didYouMean)(u),{nodes:t}))}}})}function Yw(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():p6.specifiedDirectives;for(let o of r)t[o.name]=o.args.map(u=>u.name);let i=e.getDocument().definitions;for(let o of i)if(o.kind===f6.Kind.DIRECTIVE_DEFINITION){var a;let u=(a=o.arguments)!==null&&a!==void 0?a:[];t[o.name.value]=u.map(l=>l.name.value)}return{Directive(o){let u=o.name.value,l=t[u];if(o.arguments&&l)for(let d of o.arguments){let p=d.name.value;if(!l.includes(p)){let E=(0,Gw.suggestionList)(p,l);e.reportError(new Qw.GraphQLError(`Unknown argument "${p}" on directive "@${u}".`+(0,$w.didYouMean)(E),{nodes:d}))}}return!1}}}});var Sg=F(vg=>{"use strict";m();T();N();Object.defineProperty(vg,"__esModule",{value:!0});vg.KnownDirectivesRule=E6;var N6=en(),gg=Pr(),Jw=Xe(),_g=ja(),ur=Sl(),_n=Ct(),T6=ei();function E6(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():T6.specifiedDirectives;for(let a of r)t[a.name]=a.locations;let i=e.getDocument().definitions;for(let a of i)a.kind===_n.Kind.DIRECTIVE_DEFINITION&&(t[a.name.value]=a.locations.map(o=>o.value));return{Directive(a,o,u,l,d){let p=a.name.value,E=t[p];if(!E){e.reportError(new Jw.GraphQLError(`Unknown directive "@${p}".`,{nodes:a}));return}let y=h6(d);y&&!E.includes(y)&&e.reportError(new Jw.GraphQLError(`Directive "@${p}" may not be used on ${y}.`,{nodes:a}))}}}function h6(e){let t=e[e.length-1];switch("kind"in t||(0,gg.invariant)(!1),t.kind){case _n.Kind.OPERATION_DEFINITION:return y6(t.operation);case _n.Kind.FIELD:return ur.DirectiveLocation.FIELD;case _n.Kind.FRAGMENT_SPREAD:return ur.DirectiveLocation.FRAGMENT_SPREAD;case _n.Kind.INLINE_FRAGMENT:return ur.DirectiveLocation.INLINE_FRAGMENT;case _n.Kind.FRAGMENT_DEFINITION:return ur.DirectiveLocation.FRAGMENT_DEFINITION;case _n.Kind.VARIABLE_DEFINITION:return ur.DirectiveLocation.VARIABLE_DEFINITION;case _n.Kind.SCHEMA_DEFINITION:case _n.Kind.SCHEMA_EXTENSION:return ur.DirectiveLocation.SCHEMA;case _n.Kind.SCALAR_TYPE_DEFINITION:case _n.Kind.SCALAR_TYPE_EXTENSION:return ur.DirectiveLocation.SCALAR;case _n.Kind.OBJECT_TYPE_DEFINITION:case _n.Kind.OBJECT_TYPE_EXTENSION:return ur.DirectiveLocation.OBJECT;case _n.Kind.FIELD_DEFINITION:return ur.DirectiveLocation.FIELD_DEFINITION;case _n.Kind.INTERFACE_TYPE_DEFINITION:case _n.Kind.INTERFACE_TYPE_EXTENSION:return ur.DirectiveLocation.INTERFACE;case _n.Kind.UNION_TYPE_DEFINITION:case _n.Kind.UNION_TYPE_EXTENSION:return ur.DirectiveLocation.UNION;case _n.Kind.ENUM_TYPE_DEFINITION:case _n.Kind.ENUM_TYPE_EXTENSION:return ur.DirectiveLocation.ENUM;case _n.Kind.ENUM_VALUE_DEFINITION:return ur.DirectiveLocation.ENUM_VALUE;case _n.Kind.INPUT_OBJECT_TYPE_DEFINITION:case _n.Kind.INPUT_OBJECT_TYPE_EXTENSION:return ur.DirectiveLocation.INPUT_OBJECT;case _n.Kind.INPUT_VALUE_DEFINITION:{let n=e[e.length-3];return"kind"in n||(0,gg.invariant)(!1),n.kind===_n.Kind.INPUT_OBJECT_TYPE_DEFINITION?ur.DirectiveLocation.INPUT_FIELD_DEFINITION:ur.DirectiveLocation.ARGUMENT_DEFINITION}default:(0,gg.invariant)(!1,"Unexpected kind: "+(0,N6.inspect)(t.kind))}}function y6(e){switch(e){case _g.OperationTypeNode.QUERY:return ur.DirectiveLocation.QUERY;case _g.OperationTypeNode.MUTATION:return ur.DirectiveLocation.MUTATION;case _g.OperationTypeNode.SUBSCRIPTION:return ur.DirectiveLocation.SUBSCRIPTION}}});var Dg=F(Og=>{"use strict";m();T();N();Object.defineProperty(Og,"__esModule",{value:!0});Og.KnownFragmentNamesRule=g6;var I6=Xe();function g6(e){return{FragmentSpread(t){let n=t.name.value;e.getFragment(n)||e.reportError(new I6.GraphQLError(`Unknown fragment "${n}".`,{nodes:t.name}))}}}});var Rg=F(Ag=>{"use strict";m();T();N();Object.defineProperty(Ag,"__esModule",{value:!0});Ag.KnownTypeNamesRule=b6;var _6=Eu(),v6=yu(),S6=Xe(),bg=Ic(),O6=Mi(),D6=Ga();function b6(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);for(let a of e.getDocument().definitions)(0,bg.isTypeDefinitionNode)(a)&&(r[a.name.value]=!0);let i=[...Object.keys(n),...Object.keys(r)];return{NamedType(a,o,u,l,d){let p=a.name.value;if(!n[p]&&!r[p]){var E;let y=(E=d[2])!==null&&E!==void 0?E:u,v=y!=null&&A6(y);if(v&&zw.includes(p))return;let R=(0,v6.suggestionList)(p,v?zw.concat(i):i);e.reportError(new S6.GraphQLError(`Unknown type "${p}".`+(0,_6.didYouMean)(R),{nodes:a}))}}}}var zw=[...D6.specifiedScalarTypes,...O6.introspectionTypes].map(e=>e.name);function A6(e){return"kind"in e&&((0,bg.isTypeSystemDefinitionNode)(e)||(0,bg.isTypeSystemExtensionNode)(e))}});var Fg=F(Pg=>{"use strict";m();T();N();Object.defineProperty(Pg,"__esModule",{value:!0});Pg.LoneAnonymousOperationRule=F6;var R6=Xe(),P6=Ct();function F6(e){let t=0;return{Document(n){t=n.definitions.filter(r=>r.kind===P6.Kind.OPERATION_DEFINITION).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new R6.GraphQLError("This anonymous operation must be the only defined operation.",{nodes:n}))}}}});var Lg=F(wg=>{"use strict";m();T();N();Object.defineProperty(wg,"__esModule",{value:!0});wg.LoneSchemaDefinitionRule=w6;var Hw=Xe();function w6(e){var t,n,r;let i=e.getSchema(),a=(t=(n=(r=i==null?void 0:i.astNode)!==null&&r!==void 0?r:i==null?void 0:i.getQueryType())!==null&&n!==void 0?n:i==null?void 0:i.getMutationType())!==null&&t!==void 0?t:i==null?void 0:i.getSubscriptionType(),o=0;return{SchemaDefinition(u){if(a){e.reportError(new Hw.GraphQLError("Cannot define a new schema within a schema extension.",{nodes:u}));return}o>0&&e.reportError(new Hw.GraphQLError("Must provide only one schema definition.",{nodes:u})),++o}}}});var Ug=F(Cg=>{"use strict";m();T();N();Object.defineProperty(Cg,"__esModule",{value:!0});Cg.MaxIntrospectionDepthRule=U6;var L6=Xe(),Ww=Ct(),C6=3;function U6(e){function t(n,r=Object.create(null),i=0){if(n.kind===Ww.Kind.FRAGMENT_SPREAD){let a=n.name.value;if(r[a]===!0)return!1;let o=e.getFragment(a);if(!o)return!1;try{return r[a]=!0,t(o,r,i)}finally{r[a]=void 0}}if(n.kind===Ww.Kind.FIELD&&(n.name.value==="fields"||n.name.value==="interfaces"||n.name.value==="possibleTypes"||n.name.value==="inputFields")&&(i++,i>=C6))return!0;if("selectionSet"in n&&n.selectionSet){for(let a of n.selectionSet.selections)if(t(a,r,i))return!0}return!1}return{Field(n){if((n.name.value==="__schema"||n.name.value==="__type")&&t(n))return e.reportError(new L6.GraphQLError("Maximum introspection depth exceeded",{nodes:[n]})),!1}}}});var kg=F(Bg=>{"use strict";m();T();N();Object.defineProperty(Bg,"__esModule",{value:!0});Bg.NoFragmentCyclesRule=k6;var B6=Xe();function k6(e){let t=Object.create(null),n=[],r=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(a){return i(a),!1}};function i(a){if(t[a.name.value])return;let o=a.name.value;t[o]=!0;let u=e.getFragmentSpreads(a.selectionSet);if(u.length!==0){r[o]=n.length;for(let l of u){let d=l.name.value,p=r[d];if(n.push(l),p===void 0){let E=e.getFragment(d);E&&i(E)}else{let E=n.slice(p),y=E.slice(0,-1).map(v=>'"'+v.name.value+'"').join(", ");e.reportError(new B6.GraphQLError(`Cannot spread fragment "${d}" within itself`+(y!==""?` via ${y}.`:"."),{nodes:E}))}n.pop()}r[o]=void 0}}}});var xg=F(Mg=>{"use strict";m();T();N();Object.defineProperty(Mg,"__esModule",{value:!0});Mg.NoUndefinedVariablesRule=x6;var M6=Xe();function x6(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i}of r){let a=i.name.value;t[a]!==!0&&e.reportError(new M6.GraphQLError(n.name?`Variable "$${a}" is not defined by operation "${n.name.value}".`:`Variable "$${a}" is not defined.`,{nodes:[i,n]}))}}},VariableDefinition(n){t[n.variable.name.value]=!0}}}});var Vg=F(qg=>{"use strict";m();T();N();Object.defineProperty(qg,"__esModule",{value:!0});qg.NoUnusedFragmentsRule=V6;var q6=Xe();function V6(e){let t=[],n=[];return{OperationDefinition(r){return t.push(r),!1},FragmentDefinition(r){return n.push(r),!1},Document:{leave(){let r=Object.create(null);for(let i of t)for(let a of e.getRecursivelyReferencedFragments(i))r[a.name.value]=!0;for(let i of n){let a=i.name.value;r[a]!==!0&&e.reportError(new q6.GraphQLError(`Fragment "${a}" is never used.`,{nodes:i}))}}}}}});var Kg=F(jg=>{"use strict";m();T();N();Object.defineProperty(jg,"__esModule",{value:!0});jg.NoUnusedVariablesRule=K6;var j6=Xe();function K6(e){let t=[];return{OperationDefinition:{enter(){t=[]},leave(n){let r=Object.create(null),i=e.getRecursiveVariableUsages(n);for(let{node:a}of i)r[a.name.value]=!0;for(let a of t){let o=a.variable.name.value;r[o]!==!0&&e.reportError(new j6.GraphQLError(n.name?`Variable "$${o}" is never used in operation "${n.name.value}".`:`Variable "$${o}" is never used.`,{nodes:a}))}}},VariableDefinition(n){t.push(n)}}}});var Qg=F(Gg=>{"use strict";m();T();N();Object.defineProperty(Gg,"__esModule",{value:!0});Gg.sortValueNode=$g;var $6=cf(),As=Ct();function $g(e){switch(e.kind){case As.Kind.OBJECT:return $(M({},e),{fields:G6(e.fields)});case As.Kind.LIST:return $(M({},e),{values:e.values.map($g)});case As.Kind.INT:case As.Kind.FLOAT:case As.Kind.STRING:case As.Kind.BOOLEAN:case As.Kind.NULL:case As.Kind.ENUM:case As.Kind.VARIABLE:return e}}function G6(e){return e.map(t=>$(M({},t),{value:$g(t.value)})).sort((t,n)=>(0,$6.naturalCompare)(t.name.value,n.name.value))}});var Zg=F(Xg=>{"use strict";m();T();N();Object.defineProperty(Xg,"__esModule",{value:!0});Xg.OverlappingFieldsCanBeMergedRule=z6;var Xw=en(),Q6=Xe(),Yg=Ct(),Y6=hi(),ti=Ut(),J6=Qg(),eL=Qa();function tL(e){return Array.isArray(e)?e.map(([t,n])=>`subfields "${t}" conflict because `+tL(n)).join(" and "):e}function z6(e){let t=new Hg,n=new Map;return{SelectionSet(r){let i=H6(e,n,t,e.getParentType(),r);for(let[[a,o],u,l]of i){let d=tL(o);e.reportError(new Q6.GraphQLError(`Fields "${a}" conflict because ${d}. Use different aliases on the fields to fetch both if this was intentional.`,{nodes:u.concat(l)}))}}}}function H6(e,t,n,r,i){let a=[],[o,u]=$N(e,t,r,i);if(X6(e,a,t,n,o),u.length!==0)for(let l=0;l1)for(let u=0;u[a.value,o]));return n.every(a=>{let o=a.value,u=i.get(a.name.value);return u===void 0?!1:Zw(o)===Zw(u)})}function Zw(e){return(0,Y6.print)((0,J6.sortValueNode)(e))}function Jg(e,t){return(0,ti.isListType)(e)?(0,ti.isListType)(t)?Jg(e.ofType,t.ofType):!0:(0,ti.isListType)(t)?!0:(0,ti.isNonNullType)(e)?(0,ti.isNonNullType)(t)?Jg(e.ofType,t.ofType):!0:(0,ti.isNonNullType)(t)?!0:(0,ti.isLeafType)(e)||(0,ti.isLeafType)(t)?e!==t:!1}function $N(e,t,n,r){let i=t.get(r);if(i)return i;let a=Object.create(null),o=Object.create(null);rL(e,n,r,a,o);let u=[a,Object.keys(o)];return t.set(r,u),u}function zg(e,t,n){let r=t.get(n.selectionSet);if(r)return r;let i=(0,eL.typeFromAST)(e.getSchema(),n.typeCondition);return $N(e,t,i,n.selectionSet)}function rL(e,t,n,r,i){for(let a of n.selections)switch(a.kind){case Yg.Kind.FIELD:{let o=a.name.value,u;((0,ti.isObjectType)(t)||(0,ti.isInterfaceType)(t))&&(u=t.getFields()[o]);let l=a.alias?a.alias.value:o;r[l]||(r[l]=[]),r[l].push([t,a,u]);break}case Yg.Kind.FRAGMENT_SPREAD:i[a.name.value]=!0;break;case Yg.Kind.INLINE_FRAGMENT:{let o=a.typeCondition,u=o?(0,eL.typeFromAST)(e.getSchema(),o):t;rL(e,u,a.selectionSet,r,i);break}}}function e4(e,t,n,r){if(e.length>0)return[[t,e.map(([i])=>i)],[n,...e.map(([,i])=>i).flat()],[r,...e.map(([,,i])=>i).flat()]]}var Hg=class{constructor(){this._data=new Map}has(t,n,r){var i;let[a,o]=t{"use strict";m();T();N();Object.defineProperty(t_,"__esModule",{value:!0});t_.PossibleFragmentSpreadsRule=n4;var GN=en(),iL=Xe(),e_=Ut(),aL=Nf(),t4=Qa();function n4(e){return{InlineFragment(t){let n=e.getType(),r=e.getParentType();if((0,e_.isCompositeType)(n)&&(0,e_.isCompositeType)(r)&&!(0,aL.doTypesOverlap)(e.getSchema(),n,r)){let i=(0,GN.inspect)(r),a=(0,GN.inspect)(n);e.reportError(new iL.GraphQLError(`Fragment cannot be spread here as objects of type "${i}" can never be of type "${a}".`,{nodes:t}))}},FragmentSpread(t){let n=t.name.value,r=r4(e,n),i=e.getParentType();if(r&&i&&!(0,aL.doTypesOverlap)(e.getSchema(),r,i)){let a=(0,GN.inspect)(i),o=(0,GN.inspect)(r);e.reportError(new iL.GraphQLError(`Fragment "${n}" cannot be spread here as objects of type "${a}" can never be of type "${o}".`,{nodes:t}))}}}}function r4(e,t){let n=e.getFragment(t);if(n){let r=(0,t4.typeFromAST)(e.getSchema(),n.typeCondition);if((0,e_.isCompositeType)(r))return r}}});var i_=F(r_=>{"use strict";m();T();N();Object.defineProperty(r_,"__esModule",{value:!0});r_.PossibleTypeExtensionsRule=o4;var i4=Eu(),oL=en(),uL=Pr(),a4=yu(),sL=Xe(),On=Ct(),s4=Ic(),wl=Ut();function o4(e){let t=e.getSchema(),n=Object.create(null);for(let i of e.getDocument().definitions)(0,s4.isTypeDefinitionNode)(i)&&(n[i.name.value]=i);return{ScalarTypeExtension:r,ObjectTypeExtension:r,InterfaceTypeExtension:r,UnionTypeExtension:r,EnumTypeExtension:r,InputObjectTypeExtension:r};function r(i){let a=i.name.value,o=n[a],u=t==null?void 0:t.getType(a),l;if(o?l=u4[o.kind]:u&&(l=c4(u)),l){if(l!==i.kind){let d=l4(i.kind);e.reportError(new sL.GraphQLError(`Cannot extend non-${d} type "${a}".`,{nodes:o?[o,i]:i}))}}else{let d=Object.keys(M(M({},n),t==null?void 0:t.getTypeMap())),p=(0,a4.suggestionList)(a,d);e.reportError(new sL.GraphQLError(`Cannot extend type "${a}" because it is not defined.`+(0,i4.didYouMean)(p),{nodes:i.name}))}}}var u4={[On.Kind.SCALAR_TYPE_DEFINITION]:On.Kind.SCALAR_TYPE_EXTENSION,[On.Kind.OBJECT_TYPE_DEFINITION]:On.Kind.OBJECT_TYPE_EXTENSION,[On.Kind.INTERFACE_TYPE_DEFINITION]:On.Kind.INTERFACE_TYPE_EXTENSION,[On.Kind.UNION_TYPE_DEFINITION]:On.Kind.UNION_TYPE_EXTENSION,[On.Kind.ENUM_TYPE_DEFINITION]:On.Kind.ENUM_TYPE_EXTENSION,[On.Kind.INPUT_OBJECT_TYPE_DEFINITION]:On.Kind.INPUT_OBJECT_TYPE_EXTENSION};function c4(e){if((0,wl.isScalarType)(e))return On.Kind.SCALAR_TYPE_EXTENSION;if((0,wl.isObjectType)(e))return On.Kind.OBJECT_TYPE_EXTENSION;if((0,wl.isInterfaceType)(e))return On.Kind.INTERFACE_TYPE_EXTENSION;if((0,wl.isUnionType)(e))return On.Kind.UNION_TYPE_EXTENSION;if((0,wl.isEnumType)(e))return On.Kind.ENUM_TYPE_EXTENSION;if((0,wl.isInputObjectType)(e))return On.Kind.INPUT_OBJECT_TYPE_EXTENSION;(0,uL.invariant)(!1,"Unexpected type: "+(0,oL.inspect)(e))}function l4(e){switch(e){case On.Kind.SCALAR_TYPE_EXTENSION:return"scalar";case On.Kind.OBJECT_TYPE_EXTENSION:return"object";case On.Kind.INTERFACE_TYPE_EXTENSION:return"interface";case On.Kind.UNION_TYPE_EXTENSION:return"union";case On.Kind.ENUM_TYPE_EXTENSION:return"enum";case On.Kind.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:(0,uL.invariant)(!1,"Unexpected kind: "+(0,oL.inspect)(e))}}});var s_=F(QN=>{"use strict";m();T();N();Object.defineProperty(QN,"__esModule",{value:!0});QN.ProvidedRequiredArgumentsOnDirectivesRule=pL;QN.ProvidedRequiredArgumentsRule=p4;var lL=en(),cL=hu(),dL=Xe(),fL=Ct(),d4=hi(),a_=Ut(),f4=ei();function p4(e){return $(M({},pL(e)),{Field:{leave(t){var n;let r=e.getFieldDef();if(!r)return!1;let i=new Set((n=t.arguments)===null||n===void 0?void 0:n.map(a=>a.name.value));for(let a of r.args)if(!i.has(a.name)&&(0,a_.isRequiredArgument)(a)){let o=(0,lL.inspect)(a.type);e.reportError(new dL.GraphQLError(`Field "${r.name}" argument "${a.name}" of type "${o}" is required, but it was not provided.`,{nodes:t}))}}}})}function pL(e){var t;let n=Object.create(null),r=e.getSchema(),i=(t=r==null?void 0:r.getDirectives())!==null&&t!==void 0?t:f4.specifiedDirectives;for(let u of i)n[u.name]=(0,cL.keyMap)(u.args.filter(a_.isRequiredArgument),l=>l.name);let a=e.getDocument().definitions;for(let u of a)if(u.kind===fL.Kind.DIRECTIVE_DEFINITION){var o;let l=(o=u.arguments)!==null&&o!==void 0?o:[];n[u.name.value]=(0,cL.keyMap)(l.filter(m4),d=>d.name.value)}return{Directive:{leave(u){let l=u.name.value,d=n[l];if(d){var p;let E=(p=u.arguments)!==null&&p!==void 0?p:[],y=new Set(E.map(v=>v.name.value));for(let[v,R]of Object.entries(d))if(!y.has(v)){let B=(0,a_.isType)(R.type)?(0,lL.inspect)(R.type):(0,d4.print)(R.type);e.reportError(new dL.GraphQLError(`Directive "@${l}" argument "${v}" of type "${B}" is required, but it was not provided.`,{nodes:u}))}}}}}}function m4(e){return e.type.kind===fL.Kind.NON_NULL_TYPE&&e.defaultValue==null}});var u_=F(o_=>{"use strict";m();T();N();Object.defineProperty(o_,"__esModule",{value:!0});o_.ScalarLeafsRule=N4;var mL=en(),NL=Xe(),TL=Ut();function N4(e){return{Field(t){let n=e.getType(),r=t.selectionSet;if(n){if((0,TL.isLeafType)((0,TL.getNamedType)(n))){if(r){let i=t.name.value,a=(0,mL.inspect)(n);e.reportError(new NL.GraphQLError(`Field "${i}" must not have a selection since type "${a}" has no subfields.`,{nodes:r}))}}else if(!r){let i=t.name.value,a=(0,mL.inspect)(n);e.reportError(new NL.GraphQLError(`Field "${i}" of type "${a}" must have a selection of subfields. Did you mean "${i} { ... }"?`,{nodes:t}))}}}}}});var l_=F(c_=>{"use strict";m();T();N();Object.defineProperty(c_,"__esModule",{value:!0});c_.printPathArray=T4;function T4(e){return e.map(t=>typeof t=="number"?"["+t.toString()+"]":"."+t).join("")}});var Af=F(YN=>{"use strict";m();T();N();Object.defineProperty(YN,"__esModule",{value:!0});YN.addPath=E4;YN.pathToArray=h4;function E4(e,t,n){return{prev:e,key:t,typename:n}}function h4(e){let t=[],n=e;for(;n;)t.push(n.key),n=n.prev;return t.reverse()}});var f_=F(d_=>{"use strict";m();T();N();Object.defineProperty(d_,"__esModule",{value:!0});d_.coerceInputValue=O4;var y4=Eu(),JN=en(),I4=Pr(),g4=BN(),_4=Va(),Na=Af(),v4=l_(),S4=yu(),Rs=Xe(),Rf=Ut();function O4(e,t,n=D4){return Pf(e,t,n,void 0)}function D4(e,t,n){let r="Invalid value "+(0,JN.inspect)(t);throw e.length>0&&(r+=` at "value${(0,v4.printPathArray)(e)}"`),n.message=r+": "+n.message,n}function Pf(e,t,n,r){if((0,Rf.isNonNullType)(t)){if(e!=null)return Pf(e,t.ofType,n,r);n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Expected non-nullable type "${(0,JN.inspect)(t)}" not to be null.`));return}if(e==null)return null;if((0,Rf.isListType)(t)){let i=t.ofType;return(0,g4.isIterableObject)(e)?Array.from(e,(a,o)=>{let u=(0,Na.addPath)(r,o,void 0);return Pf(a,i,n,u)}):[Pf(e,i,n,r)]}if((0,Rf.isInputObjectType)(t)){if(!(0,_4.isObjectLike)(e)){n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Expected type "${t.name}" to be an object.`));return}let i={},a=t.getFields();for(let o of Object.values(a)){let u=e[o.name];if(u===void 0){if(o.defaultValue!==void 0)i[o.name]=o.defaultValue;else if((0,Rf.isNonNullType)(o.type)){let l=(0,JN.inspect)(o.type);n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Field "${o.name}" of required type "${l}" was not provided.`))}continue}i[o.name]=Pf(u,o.type,n,(0,Na.addPath)(r,o.name,t.name))}for(let o of Object.keys(e))if(!a[o]){let u=(0,S4.suggestionList)(o,Object.keys(t.getFields()));n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Field "${o}" is not defined by type "${t.name}".`+(0,y4.didYouMean)(u)))}if(t.isOneOf){let o=Object.keys(i);o.length!==1&&n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Exactly one key must be specified for OneOf type "${t.name}".`));let u=o[0],l=i[u];l===null&&n((0,Na.pathToArray)(r).concat(u),l,new Rs.GraphQLError(`Field "${u}" must be non-null.`))}return i}if((0,Rf.isLeafType)(t)){let i;try{i=t.parseValue(e)}catch(a){a instanceof Rs.GraphQLError?n((0,Na.pathToArray)(r),e,a):n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Expected type "${t.name}". `+a.message,{originalError:a}));return}return i===void 0&&n((0,Na.pathToArray)(r),e,new Rs.GraphQLError(`Expected type "${t.name}".`)),i}(0,I4.invariant)(!1,"Unexpected input type: "+(0,JN.inspect)(t))}});var wf=F(p_=>{"use strict";m();T();N();Object.defineProperty(p_,"__esModule",{value:!0});p_.valueFromAST=Ff;var b4=en(),A4=Pr(),R4=hu(),Ll=Ct(),gc=Ut();function Ff(e,t,n){if(e){if(e.kind===Ll.Kind.VARIABLE){let r=e.name.value;if(n==null||n[r]===void 0)return;let i=n[r];return i===null&&(0,gc.isNonNullType)(t)?void 0:i}if((0,gc.isNonNullType)(t))return e.kind===Ll.Kind.NULL?void 0:Ff(e,t.ofType,n);if(e.kind===Ll.Kind.NULL)return null;if((0,gc.isListType)(t)){let r=t.ofType;if(e.kind===Ll.Kind.LIST){let a=[];for(let o of e.values)if(EL(o,n)){if((0,gc.isNonNullType)(r))return;a.push(null)}else{let u=Ff(o,r,n);if(u===void 0)return;a.push(u)}return a}let i=Ff(e,r,n);return i===void 0?void 0:[i]}if((0,gc.isInputObjectType)(t)){if(e.kind!==Ll.Kind.OBJECT)return;let r=Object.create(null),i=(0,R4.keyMap)(e.fields,a=>a.name.value);for(let a of Object.values(t.getFields())){let o=i[a.name];if(!o||EL(o.value,n)){if(a.defaultValue!==void 0)r[a.name]=a.defaultValue;else if((0,gc.isNonNullType)(a.type))return;continue}let u=Ff(o.value,a.type,n);if(u===void 0)return;r[a.name]=u}if(t.isOneOf){let a=Object.keys(r);if(a.length!==1||r[a[0]]===null)return}return r}if((0,gc.isLeafType)(t)){let r;try{r=t.parseLiteral(e,n)}catch(i){return}return r===void 0?void 0:r}(0,A4.invariant)(!1,"Unexpected input type: "+(0,b4.inspect)(t))}}function EL(e,t){return e.kind===Ll.Kind.VARIABLE&&(t==null||t[e.name.value]===void 0)}});var Bl=F(Lf=>{"use strict";m();T();N();Object.defineProperty(Lf,"__esModule",{value:!0});Lf.getArgumentValues=gL;Lf.getDirectiveValues=B4;Lf.getVariableValues=C4;var Cl=en(),P4=hu(),F4=l_(),Ps=Xe(),hL=Ct(),yL=hi(),Ul=Ut(),w4=f_(),L4=Qa(),IL=wf();function C4(e,t,n,r){let i=[],a=r==null?void 0:r.maxErrors;try{let o=U4(e,t,n,u=>{if(a!=null&&i.length>=a)throw new Ps.GraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");i.push(u)});if(i.length===0)return{coerced:o}}catch(o){i.push(o)}return{errors:i}}function U4(e,t,n,r){let i={};for(let a of t){let o=a.variable.name.value,u=(0,L4.typeFromAST)(e,a.type);if(!(0,Ul.isInputType)(u)){let d=(0,yL.print)(a.type);r(new Ps.GraphQLError(`Variable "$${o}" expected value of type "${d}" which cannot be used as an input type.`,{nodes:a.type}));continue}if(!_L(n,o)){if(a.defaultValue)i[o]=(0,IL.valueFromAST)(a.defaultValue,u);else if((0,Ul.isNonNullType)(u)){let d=(0,Cl.inspect)(u);r(new Ps.GraphQLError(`Variable "$${o}" of required type "${d}" was not provided.`,{nodes:a}))}continue}let l=n[o];if(l===null&&(0,Ul.isNonNullType)(u)){let d=(0,Cl.inspect)(u);r(new Ps.GraphQLError(`Variable "$${o}" of non-null type "${d}" must not be null.`,{nodes:a}));continue}i[o]=(0,w4.coerceInputValue)(l,u,(d,p,E)=>{let y=`Variable "$${o}" got invalid value `+(0,Cl.inspect)(p);d.length>0&&(y+=` at "${o}${(0,F4.printPathArray)(d)}"`),r(new Ps.GraphQLError(y+"; "+E.message,{nodes:a,originalError:E}))})}return i}function gL(e,t,n){var r;let i={},a=(r=t.arguments)!==null&&r!==void 0?r:[],o=(0,P4.keyMap)(a,u=>u.name.value);for(let u of e.args){let l=u.name,d=u.type,p=o[l];if(!p){if(u.defaultValue!==void 0)i[l]=u.defaultValue;else if((0,Ul.isNonNullType)(d))throw new Ps.GraphQLError(`Argument "${l}" of required type "${(0,Cl.inspect)(d)}" was not provided.`,{nodes:t});continue}let E=p.value,y=E.kind===hL.Kind.NULL;if(E.kind===hL.Kind.VARIABLE){let R=E.name.value;if(n==null||!_L(n,R)){if(u.defaultValue!==void 0)i[l]=u.defaultValue;else if((0,Ul.isNonNullType)(d))throw new Ps.GraphQLError(`Argument "${l}" of required type "${(0,Cl.inspect)(d)}" was provided the variable "$${R}" which was not provided a runtime value.`,{nodes:E});continue}y=n[R]==null}if(y&&(0,Ul.isNonNullType)(d))throw new Ps.GraphQLError(`Argument "${l}" of non-null type "${(0,Cl.inspect)(d)}" must not be null.`,{nodes:E});let v=(0,IL.valueFromAST)(E,d,n);if(v===void 0)throw new Ps.GraphQLError(`Argument "${l}" has invalid value ${(0,yL.print)(E)}.`,{nodes:E});i[l]=v}return i}function B4(e,t,n){var r;let i=(r=t.directives)===null||r===void 0?void 0:r.find(a=>a.name.value===e.name);if(i)return gL(e,i,n)}function _L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}});var WN=F(HN=>{"use strict";m();T();N();Object.defineProperty(HN,"__esModule",{value:!0});HN.collectFields=x4;HN.collectSubfields=q4;var m_=Ct(),k4=Ut(),vL=ei(),M4=Qa(),SL=Bl();function x4(e,t,n,r,i){let a=new Map;return zN(e,t,n,r,i,a,new Set),a}function q4(e,t,n,r,i){let a=new Map,o=new Set;for(let u of i)u.selectionSet&&zN(e,t,n,r,u.selectionSet,a,o);return a}function zN(e,t,n,r,i,a,o){for(let u of i.selections)switch(u.kind){case m_.Kind.FIELD:{if(!N_(n,u))continue;let l=V4(u),d=a.get(l);d!==void 0?d.push(u):a.set(l,[u]);break}case m_.Kind.INLINE_FRAGMENT:{if(!N_(n,u)||!OL(e,u,r))continue;zN(e,t,n,r,u.selectionSet,a,o);break}case m_.Kind.FRAGMENT_SPREAD:{let l=u.name.value;if(o.has(l)||!N_(n,u))continue;o.add(l);let d=t[l];if(!d||!OL(e,d,r))continue;zN(e,t,n,r,d.selectionSet,a,o);break}}}function N_(e,t){let n=(0,SL.getDirectiveValues)(vL.GraphQLSkipDirective,t,e);if((n==null?void 0:n.if)===!0)return!1;let r=(0,SL.getDirectiveValues)(vL.GraphQLIncludeDirective,t,e);return(r==null?void 0:r.if)!==!1}function OL(e,t,n){let r=t.typeCondition;if(!r)return!0;let i=(0,M4.typeFromAST)(e,r);return i===n?!0:(0,k4.isAbstractType)(i)?e.isSubType(i,n):!1}function V4(e){return e.alias?e.alias.value:e.name.value}});var E_=F(T_=>{"use strict";m();T();N();Object.defineProperty(T_,"__esModule",{value:!0});T_.SingleFieldSubscriptionsRule=$4;var DL=Xe(),j4=Ct(),K4=WN();function $4(e){return{OperationDefinition(t){if(t.operation==="subscription"){let n=e.getSchema(),r=n.getSubscriptionType();if(r){let i=t.name?t.name.value:null,a=Object.create(null),o=e.getDocument(),u=Object.create(null);for(let d of o.definitions)d.kind===j4.Kind.FRAGMENT_DEFINITION&&(u[d.name.value]=d);let l=(0,K4.collectFields)(n,u,a,r,t.selectionSet);if(l.size>1){let E=[...l.values()].slice(1).flat();e.reportError(new DL.GraphQLError(i!=null?`Subscription "${i}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",{nodes:E}))}for(let d of l.values())d[0].name.value.startsWith("__")&&e.reportError(new DL.GraphQLError(i!=null?`Subscription "${i}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",{nodes:d}))}}}}}});var XN=F(h_=>{"use strict";m();T();N();Object.defineProperty(h_,"__esModule",{value:!0});h_.groupBy=G4;function G4(e,t){let n=new Map;for(let r of e){let i=t(r),a=n.get(i);a===void 0?n.set(i,[r]):a.push(r)}return n}});var I_=F(y_=>{"use strict";m();T();N();Object.defineProperty(y_,"__esModule",{value:!0});y_.UniqueArgumentDefinitionNamesRule=J4;var Q4=XN(),Y4=Xe();function J4(e){return{DirectiveDefinition(r){var i;let a=(i=r.arguments)!==null&&i!==void 0?i:[];return n(`@${r.name.value}`,a)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(r){var i;let a=r.name.value,o=(i=r.fields)!==null&&i!==void 0?i:[];for(let l of o){var u;let d=l.name.value,p=(u=l.arguments)!==null&&u!==void 0?u:[];n(`${a}.${d}`,p)}return!1}function n(r,i){let a=(0,Q4.groupBy)(i,o=>o.name.value);for(let[o,u]of a)u.length>1&&e.reportError(new Y4.GraphQLError(`Argument "${r}(${o}:)" can only be defined once.`,{nodes:u.map(l=>l.name)}));return!1}}});var __=F(g_=>{"use strict";m();T();N();Object.defineProperty(g_,"__esModule",{value:!0});g_.UniqueArgumentNamesRule=W4;var z4=XN(),H4=Xe();function W4(e){return{Field:t,Directive:t};function t(n){var r;let i=(r=n.arguments)!==null&&r!==void 0?r:[],a=(0,z4.groupBy)(i,o=>o.name.value);for(let[o,u]of a)u.length>1&&e.reportError(new H4.GraphQLError(`There can be only one argument named "${o}".`,{nodes:u.map(l=>l.name)}))}}});var S_=F(v_=>{"use strict";m();T();N();Object.defineProperty(v_,"__esModule",{value:!0});v_.UniqueDirectiveNamesRule=X4;var bL=Xe();function X4(e){let t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(r){let i=r.name.value;if(n!=null&&n.getDirective(i)){e.reportError(new bL.GraphQLError(`Directive "@${i}" already exists in the schema. It cannot be redefined.`,{nodes:r.name}));return}return t[i]?e.reportError(new bL.GraphQLError(`There can be only one directive named "@${i}".`,{nodes:[t[i],r.name]})):t[i]=r.name,!1}}}});var b_=F(D_=>{"use strict";m();T();N();Object.defineProperty(D_,"__esModule",{value:!0});D_.UniqueDirectivesPerLocationRule=t8;var Z4=Xe(),O_=Ct(),AL=Ic(),e8=ei();function t8(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():e8.specifiedDirectives;for(let u of r)t[u.name]=!u.isRepeatable;let i=e.getDocument().definitions;for(let u of i)u.kind===O_.Kind.DIRECTIVE_DEFINITION&&(t[u.name.value]=!u.repeatable);let a=Object.create(null),o=Object.create(null);return{enter(u){if(!("directives"in u)||!u.directives)return;let l;if(u.kind===O_.Kind.SCHEMA_DEFINITION||u.kind===O_.Kind.SCHEMA_EXTENSION)l=a;else if((0,AL.isTypeDefinitionNode)(u)||(0,AL.isTypeExtensionNode)(u)){let d=u.name.value;l=o[d],l===void 0&&(o[d]=l=Object.create(null))}else l=Object.create(null);for(let d of u.directives){let p=d.name.value;t[p]&&(l[p]?e.reportError(new Z4.GraphQLError(`The directive "@${p}" can only be used once at this location.`,{nodes:[l[p],d]})):l[p]=d)}}}}});var R_=F(A_=>{"use strict";m();T();N();Object.defineProperty(A_,"__esModule",{value:!0});A_.UniqueEnumValueNamesRule=r8;var RL=Xe(),n8=Ut();function r8(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(a){var o;let u=a.name.value;r[u]||(r[u]=Object.create(null));let l=(o=a.values)!==null&&o!==void 0?o:[],d=r[u];for(let p of l){let E=p.name.value,y=n[u];(0,n8.isEnumType)(y)&&y.getValue(E)?e.reportError(new RL.GraphQLError(`Enum value "${u}.${E}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:p.name})):d[E]?e.reportError(new RL.GraphQLError(`Enum value "${u}.${E}" can only be defined once.`,{nodes:[d[E],p.name]})):d[E]=p.name}return!1}}});var w_=F(F_=>{"use strict";m();T();N();Object.defineProperty(F_,"__esModule",{value:!0});F_.UniqueFieldDefinitionNamesRule=i8;var PL=Xe(),P_=Ut();function i8(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{InputObjectTypeDefinition:i,InputObjectTypeExtension:i,InterfaceTypeDefinition:i,InterfaceTypeExtension:i,ObjectTypeDefinition:i,ObjectTypeExtension:i};function i(a){var o;let u=a.name.value;r[u]||(r[u]=Object.create(null));let l=(o=a.fields)!==null&&o!==void 0?o:[],d=r[u];for(let p of l){let E=p.name.value;a8(n[u],E)?e.reportError(new PL.GraphQLError(`Field "${u}.${E}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:p.name})):d[E]?e.reportError(new PL.GraphQLError(`Field "${u}.${E}" can only be defined once.`,{nodes:[d[E],p.name]})):d[E]=p.name}return!1}}function a8(e,t){return(0,P_.isObjectType)(e)||(0,P_.isInterfaceType)(e)||(0,P_.isInputObjectType)(e)?e.getFields()[t]!=null:!1}});var C_=F(L_=>{"use strict";m();T();N();Object.defineProperty(L_,"__esModule",{value:!0});L_.UniqueFragmentNamesRule=o8;var s8=Xe();function o8(e){let t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){let r=n.name.value;return t[r]?e.reportError(new s8.GraphQLError(`There can be only one fragment named "${r}".`,{nodes:[t[r],n.name]})):t[r]=n.name,!1}}}});var B_=F(U_=>{"use strict";m();T();N();Object.defineProperty(U_,"__esModule",{value:!0});U_.UniqueInputFieldNamesRule=l8;var u8=Pr(),c8=Xe();function l8(e){let t=[],n=Object.create(null);return{ObjectValue:{enter(){t.push(n),n=Object.create(null)},leave(){let r=t.pop();r||(0,u8.invariant)(!1),n=r}},ObjectField(r){let i=r.name.value;n[i]?e.reportError(new c8.GraphQLError(`There can be only one input field named "${i}".`,{nodes:[n[i],r.name]})):n[i]=r.name}}}});var M_=F(k_=>{"use strict";m();T();N();Object.defineProperty(k_,"__esModule",{value:!0});k_.UniqueOperationNamesRule=f8;var d8=Xe();function f8(e){let t=Object.create(null);return{OperationDefinition(n){let r=n.name;return r&&(t[r.value]?e.reportError(new d8.GraphQLError(`There can be only one operation named "${r.value}".`,{nodes:[t[r.value],r]})):t[r.value]=r),!1},FragmentDefinition:()=>!1}}});var q_=F(x_=>{"use strict";m();T();N();Object.defineProperty(x_,"__esModule",{value:!0});x_.UniqueOperationTypesRule=p8;var FL=Xe();function p8(e){let t=e.getSchema(),n=Object.create(null),r=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:i,SchemaExtension:i};function i(a){var o;let u=(o=a.operationTypes)!==null&&o!==void 0?o:[];for(let l of u){let d=l.operation,p=n[d];r[d]?e.reportError(new FL.GraphQLError(`Type for ${d} already defined in the schema. It cannot be redefined.`,{nodes:l})):p?e.reportError(new FL.GraphQLError(`There can be only one ${d} type in schema.`,{nodes:[p,l]})):n[d]=l}return!1}}});var j_=F(V_=>{"use strict";m();T();N();Object.defineProperty(V_,"__esModule",{value:!0});V_.UniqueTypeNamesRule=m8;var wL=Xe();function m8(e){let t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:r,ObjectTypeDefinition:r,InterfaceTypeDefinition:r,UnionTypeDefinition:r,EnumTypeDefinition:r,InputObjectTypeDefinition:r};function r(i){let a=i.name.value;if(n!=null&&n.getType(a)){e.reportError(new wL.GraphQLError(`Type "${a}" already exists in the schema. It cannot also be defined in this type definition.`,{nodes:i.name}));return}return t[a]?e.reportError(new wL.GraphQLError(`There can be only one type named "${a}".`,{nodes:[t[a],i.name]})):t[a]=i.name,!1}}});var $_=F(K_=>{"use strict";m();T();N();Object.defineProperty(K_,"__esModule",{value:!0});K_.UniqueVariableNamesRule=E8;var N8=XN(),T8=Xe();function E8(e){return{OperationDefinition(t){var n;let r=(n=t.variableDefinitions)!==null&&n!==void 0?n:[],i=(0,N8.groupBy)(r,a=>a.variable.name.value);for(let[a,o]of i)o.length>1&&e.reportError(new T8.GraphQLError(`There can be only one variable named "$${a}".`,{nodes:o.map(u=>u.variable.name)}))}}}});var Y_=F(Q_=>{"use strict";m();T();N();Object.defineProperty(Q_,"__esModule",{value:!0});Q_.ValuesOfCorrectTypeRule=g8;var h8=Eu(),Cf=en(),y8=hu(),I8=yu(),Ja=Xe(),G_=Ct(),ZN=hi(),Ya=Ut();function g8(e){let t={};return{OperationDefinition:{enter(){t={}}},VariableDefinition(n){t[n.variable.name.value]=n},ListValue(n){let r=(0,Ya.getNullableType)(e.getParentInputType());if(!(0,Ya.isListType)(r))return _c(e,n),!1},ObjectValue(n){let r=(0,Ya.getNamedType)(e.getInputType());if(!(0,Ya.isInputObjectType)(r))return _c(e,n),!1;let i=(0,y8.keyMap)(n.fields,a=>a.name.value);for(let a of Object.values(r.getFields()))if(!i[a.name]&&(0,Ya.isRequiredInputField)(a)){let u=(0,Cf.inspect)(a.type);e.reportError(new Ja.GraphQLError(`Field "${r.name}.${a.name}" of required type "${u}" was not provided.`,{nodes:n}))}r.isOneOf&&_8(e,n,r,i,t)},ObjectField(n){let r=(0,Ya.getNamedType)(e.getParentInputType());if(!e.getInputType()&&(0,Ya.isInputObjectType)(r)){let a=(0,I8.suggestionList)(n.name.value,Object.keys(r.getFields()));e.reportError(new Ja.GraphQLError(`Field "${n.name.value}" is not defined by type "${r.name}".`+(0,h8.didYouMean)(a),{nodes:n}))}},NullValue(n){let r=e.getInputType();(0,Ya.isNonNullType)(r)&&e.reportError(new Ja.GraphQLError(`Expected value of type "${(0,Cf.inspect)(r)}", found ${(0,ZN.print)(n)}.`,{nodes:n}))},EnumValue:n=>_c(e,n),IntValue:n=>_c(e,n),FloatValue:n=>_c(e,n),StringValue:n=>_c(e,n),BooleanValue:n=>_c(e,n)}}function _c(e,t){let n=e.getInputType();if(!n)return;let r=(0,Ya.getNamedType)(n);if(!(0,Ya.isLeafType)(r)){let i=(0,Cf.inspect)(n);e.reportError(new Ja.GraphQLError(`Expected value of type "${i}", found ${(0,ZN.print)(t)}.`,{nodes:t}));return}try{if(r.parseLiteral(t,void 0)===void 0){let a=(0,Cf.inspect)(n);e.reportError(new Ja.GraphQLError(`Expected value of type "${a}", found ${(0,ZN.print)(t)}.`,{nodes:t}))}}catch(i){let a=(0,Cf.inspect)(n);i instanceof Ja.GraphQLError?e.reportError(i):e.reportError(new Ja.GraphQLError(`Expected value of type "${a}", found ${(0,ZN.print)(t)}; `+i.message,{nodes:t,originalError:i}))}}function _8(e,t,n,r,i){var a;let o=Object.keys(r);if(o.length!==1){e.reportError(new Ja.GraphQLError(`OneOf Input Object "${n.name}" must specify exactly one key.`,{nodes:[t]}));return}let l=(a=r[o[0]])===null||a===void 0?void 0:a.value,d=!l||l.kind===G_.Kind.NULL,p=(l==null?void 0:l.kind)===G_.Kind.VARIABLE;if(d){e.reportError(new Ja.GraphQLError(`Field "${n.name}.${o[0]}" must be non-null.`,{nodes:[t]}));return}if(p){let E=l.name.value;i[E].type.kind!==G_.Kind.NON_NULL_TYPE&&e.reportError(new Ja.GraphQLError(`Variable "${E}" must be non-nullable to be used for OneOf Input Object "${n.name}".`,{nodes:[t]}))}}});var z_=F(J_=>{"use strict";m();T();N();Object.defineProperty(J_,"__esModule",{value:!0});J_.VariablesAreInputTypesRule=b8;var v8=Xe(),S8=hi(),O8=Ut(),D8=Qa();function b8(e){return{VariableDefinition(t){let n=(0,D8.typeFromAST)(e.getSchema(),t.type);if(n!==void 0&&!(0,O8.isInputType)(n)){let r=t.variable.name.value,i=(0,S8.print)(t.type);e.reportError(new v8.GraphQLError(`Variable "$${r}" cannot be non-input type "${i}".`,{nodes:t.type}))}}}}});var W_=F(H_=>{"use strict";m();T();N();Object.defineProperty(H_,"__esModule",{value:!0});H_.VariablesInAllowedPositionRule=F8;var LL=en(),A8=Xe(),R8=Ct(),CL=Ut(),UL=Nf(),P8=Qa();function F8(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i,type:a,defaultValue:o}of r){let u=i.name.value,l=t[u];if(l&&a){let d=e.getSchema(),p=(0,P8.typeFromAST)(d,l.type);if(p&&!w8(d,p,l.defaultValue,a,o)){let E=(0,LL.inspect)(p),y=(0,LL.inspect)(a);e.reportError(new A8.GraphQLError(`Variable "$${u}" of type "${E}" used in position expecting type "${y}".`,{nodes:[l,i]}))}}}}},VariableDefinition(n){t[n.variable.name.value]=n}}}function w8(e,t,n,r,i){if((0,CL.isNonNullType)(r)&&!(0,CL.isNonNullType)(t)){if(!(n!=null&&n.kind!==R8.Kind.NULL)&&!(i!==void 0))return!1;let u=r.ofType;return(0,UL.isTypeSubTypeOf)(e,t,u)}return(0,UL.isTypeSubTypeOf)(e,t,r)}});var X_=F(vu=>{"use strict";m();T();N();Object.defineProperty(vu,"__esModule",{value:!0});vu.specifiedSDLRules=vu.specifiedRules=vu.recommendedRules=void 0;var L8=Ng(),C8=Eg(),U8=yg(),BL=Ig(),kL=Sg(),B8=Dg(),ML=Rg(),k8=Fg(),M8=Lg(),x8=Ug(),q8=kg(),V8=xg(),j8=Vg(),K8=Kg(),$8=Zg(),G8=n_(),Q8=i_(),xL=s_(),Y8=u_(),J8=E_(),z8=I_(),qL=__(),H8=S_(),VL=b_(),W8=R_(),X8=w_(),Z8=C_(),jL=B_(),eX=M_(),tX=q_(),nX=j_(),rX=$_(),iX=Y_(),aX=z_(),sX=W_(),KL=Object.freeze([x8.MaxIntrospectionDepthRule]);vu.recommendedRules=KL;var oX=Object.freeze([L8.ExecutableDefinitionsRule,eX.UniqueOperationNamesRule,k8.LoneAnonymousOperationRule,J8.SingleFieldSubscriptionsRule,ML.KnownTypeNamesRule,U8.FragmentsOnCompositeTypesRule,aX.VariablesAreInputTypesRule,Y8.ScalarLeafsRule,C8.FieldsOnCorrectTypeRule,Z8.UniqueFragmentNamesRule,B8.KnownFragmentNamesRule,j8.NoUnusedFragmentsRule,G8.PossibleFragmentSpreadsRule,q8.NoFragmentCyclesRule,rX.UniqueVariableNamesRule,V8.NoUndefinedVariablesRule,K8.NoUnusedVariablesRule,kL.KnownDirectivesRule,VL.UniqueDirectivesPerLocationRule,BL.KnownArgumentNamesRule,qL.UniqueArgumentNamesRule,iX.ValuesOfCorrectTypeRule,xL.ProvidedRequiredArgumentsRule,sX.VariablesInAllowedPositionRule,$8.OverlappingFieldsCanBeMergedRule,jL.UniqueInputFieldNamesRule,...KL]);vu.specifiedRules=oX;var uX=Object.freeze([M8.LoneSchemaDefinitionRule,tX.UniqueOperationTypesRule,nX.UniqueTypeNamesRule,W8.UniqueEnumValueNamesRule,X8.UniqueFieldDefinitionNamesRule,z8.UniqueArgumentDefinitionNamesRule,H8.UniqueDirectiveNamesRule,ML.KnownTypeNamesRule,kL.KnownDirectivesRule,VL.UniqueDirectivesPerLocationRule,Q8.PossibleTypeExtensionsRule,BL.KnownArgumentNamesOnDirectivesRule,qL.UniqueArgumentNamesRule,jL.UniqueInputFieldNamesRule,xL.ProvidedRequiredArgumentsOnDirectivesRule]);vu.specifiedSDLRules=uX});var tv=F(Su=>{"use strict";m();T();N();Object.defineProperty(Su,"__esModule",{value:!0});Su.ValidationContext=Su.SDLValidationContext=Su.ASTValidationContext=void 0;var $L=Ct(),cX=fc(),GL=qN(),Uf=class{constructor(t,n){this._ast=t,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(t){this._onError(t)}getDocument(){return this._ast}getFragment(t){let n;if(this._fragments)n=this._fragments;else{n=Object.create(null);for(let r of this.getDocument().definitions)r.kind===$L.Kind.FRAGMENT_DEFINITION&&(n[r.name.value]=r);this._fragments=n}return n[t]}getFragmentSpreads(t){let n=this._fragmentSpreads.get(t);if(!n){n=[];let r=[t],i;for(;i=r.pop();)for(let a of i.selections)a.kind===$L.Kind.FRAGMENT_SPREAD?n.push(a):a.selectionSet&&r.push(a.selectionSet);this._fragmentSpreads.set(t,n)}return n}getRecursivelyReferencedFragments(t){let n=this._recursivelyReferencedFragments.get(t);if(!n){n=[];let r=Object.create(null),i=[t.selectionSet],a;for(;a=i.pop();)for(let o of this.getFragmentSpreads(a)){let u=o.name.value;if(r[u]!==!0){r[u]=!0;let l=this.getFragment(u);l&&(n.push(l),i.push(l.selectionSet))}}this._recursivelyReferencedFragments.set(t,n)}return n}};Su.ASTValidationContext=Uf;var Z_=class extends Uf{constructor(t,n,r){super(t,r),this._schema=n}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}};Su.SDLValidationContext=Z_;var ev=class extends Uf{constructor(t,n,r,i){super(n,i),this._schema=t,this._typeInfo=r,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(t){let n=this._variableUsages.get(t);if(!n){let r=[],i=new GL.TypeInfo(this._schema);(0,cX.visit)(t,(0,GL.visitWithTypeInfo)(i,{VariableDefinition:()=>!1,Variable(a){r.push({node:a,type:i.getInputType(),defaultValue:i.getDefaultValue()})}})),n=r,this._variableUsages.set(t,n)}return n}getRecursiveVariableUsages(t){let n=this._recursiveVariableUsages.get(t);if(!n){n=this.getVariableUsages(t);for(let r of this.getRecursivelyReferencedFragments(t))n=n.concat(this.getVariableUsages(r));this._recursiveVariableUsages.set(t,n)}return n}getType(){return this._typeInfo.getType()}getParentType(){return this._typeInfo.getParentType()}getInputType(){return this._typeInfo.getInputType()}getParentInputType(){return this._typeInfo.getParentInputType()}getFieldDef(){return this._typeInfo.getFieldDef()}getDirective(){return this._typeInfo.getDirective()}getArgument(){return this._typeInfo.getArgument()}getEnumValue(){return this._typeInfo.getEnumValue()}};Su.ValidationContext=ev});var Ml=F(kl=>{"use strict";m();T();N();Object.defineProperty(kl,"__esModule",{value:!0});kl.assertValidSDL=mX;kl.assertValidSDLExtension=NX;kl.validate=pX;kl.validateSDL=nv;var lX=Kr(),dX=Xe(),eT=fc(),fX=Of(),QL=qN(),YL=X_(),JL=tv();function pX(e,t,n=YL.specifiedRules,r,i=new QL.TypeInfo(e)){var a;let o=(a=r==null?void 0:r.maxErrors)!==null&&a!==void 0?a:100;t||(0,lX.devAssert)(!1,"Must provide document."),(0,fX.assertValidSchema)(e);let u=Object.freeze({}),l=[],d=new JL.ValidationContext(e,t,i,E=>{if(l.length>=o)throw l.push(new dX.GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),u;l.push(E)}),p=(0,eT.visitInParallel)(n.map(E=>E(d)));try{(0,eT.visit)(t,(0,QL.visitWithTypeInfo)(i,p))}catch(E){if(E!==u)throw E}return l}function nv(e,t,n=YL.specifiedSDLRules){let r=[],i=new JL.SDLValidationContext(e,t,o=>{r.push(o)}),a=n.map(o=>o(i));return(0,eT.visit)(e,(0,eT.visitInParallel)(a)),r}function mX(e){let t=nv(e);if(t.length!==0)throw new Error(t.map(n=>n.message).join(` - -`))}function NX(e,t){let n=nv(e,t);if(n.length!==0)throw new Error(n.map(r=>r.message).join(` - -`))}});var zL=F(rv=>{"use strict";m();T();N();Object.defineProperty(rv,"__esModule",{value:!0});rv.memoize3=TX;function TX(e){let t;return function(r,i,a){t===void 0&&(t=new WeakMap);let o=t.get(r);o===void 0&&(o=new WeakMap,t.set(r,o));let u=o.get(i);u===void 0&&(u=new WeakMap,o.set(i,u));let l=u.get(a);return l===void 0&&(l=e(r,i,a),u.set(a,l)),l}}});var HL=F(iv=>{"use strict";m();T();N();Object.defineProperty(iv,"__esModule",{value:!0});iv.promiseForObject=EX;function EX(e){return Promise.all(Object.values(e)).then(t=>{let n=Object.create(null);for(let[r,i]of Object.keys(e).entries())n[i]=t[r];return n})}});var WL=F(av=>{"use strict";m();T();N();Object.defineProperty(av,"__esModule",{value:!0});av.promiseReduce=yX;var hX=nN();function yX(e,t,n){let r=n;for(let i of e)r=(0,hX.isPromise)(r)?r.then(a=>t(a,i)):t(r,i);return r}});var XL=F(ov=>{"use strict";m();T();N();Object.defineProperty(ov,"__esModule",{value:!0});ov.toError=gX;var IX=en();function gX(e){return e instanceof Error?e:new sv(e)}var sv=class extends Error{constructor(t){super("Unexpected error value: "+(0,IX.inspect)(t)),this.name="NonErrorThrown",this.thrownValue=t}}});var tT=F(uv=>{"use strict";m();T();N();Object.defineProperty(uv,"__esModule",{value:!0});uv.locatedError=SX;var _X=XL(),vX=Xe();function SX(e,t,n){var r;let i=(0,_X.toError)(e);return OX(i)?i:new vX.GraphQLError(i.message,{nodes:(r=i.nodes)!==null&&r!==void 0?r:t,source:i.source,positions:i.positions,path:n,originalError:i})}function OX(e){return Array.isArray(e.path)}});var kf=F(Vi=>{"use strict";m();T();N();Object.defineProperty(Vi,"__esModule",{value:!0});Vi.assertValidExecutionArguments=sC;Vi.buildExecutionContext=oC;Vi.buildResolveInfo=cC;Vi.defaultTypeResolver=Vi.defaultFieldResolver=void 0;Vi.execute=aC;Vi.executeSync=wX;Vi.getFieldDef=dC;var lv=Kr(),vc=en(),DX=Pr(),bX=BN(),pv=Va(),Ta=nN(),AX=zL(),Sc=Af(),ZL=HL(),RX=WL(),qi=Xe(),rT=tT(),cv=ja(),eC=Ct(),Ou=Ut(),xl=Mi(),PX=Of(),rC=WN(),iC=Bl(),FX=(0,AX.memoize3)((e,t,n)=>(0,rC.collectSubfields)(e.schema,e.fragments,e.variableValues,t,n));function aC(e){arguments.length<2||(0,lv.devAssert)(!1,"graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");let{schema:t,document:n,variableValues:r,rootValue:i}=e;sC(t,n,r);let a=oC(e);if(!("schema"in a))return{errors:a};try{let{operation:o}=a,u=LX(a,o,i);return(0,Ta.isPromise)(u)?u.then(l=>nT(l,a.errors),l=>(a.errors.push(l),nT(null,a.errors))):nT(u,a.errors)}catch(o){return a.errors.push(o),nT(null,a.errors)}}function wX(e){let t=aC(e);if((0,Ta.isPromise)(t))throw new Error("GraphQL execution failed to complete synchronously.");return t}function nT(e,t){return t.length===0?{data:e}:{errors:t,data:e}}function sC(e,t,n){t||(0,lv.devAssert)(!1,"Must provide document."),(0,PX.assertValidSchema)(e),n==null||(0,pv.isObjectLike)(n)||(0,lv.devAssert)(!1,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function oC(e){var t,n;let{schema:r,document:i,rootValue:a,contextValue:o,variableValues:u,operationName:l,fieldResolver:d,typeResolver:p,subscribeFieldResolver:E}=e,y,v=Object.create(null);for(let V of i.definitions)switch(V.kind){case eC.Kind.OPERATION_DEFINITION:if(l==null){if(y!==void 0)return[new qi.GraphQLError("Must provide operation name if query contains multiple operations.")];y=V}else((t=V.name)===null||t===void 0?void 0:t.value)===l&&(y=V);break;case eC.Kind.FRAGMENT_DEFINITION:v[V.name.value]=V;break;default:}if(!y)return l!=null?[new qi.GraphQLError(`Unknown operation named "${l}".`)]:[new qi.GraphQLError("Must provide an operation.")];let R=(n=y.variableDefinitions)!==null&&n!==void 0?n:[],B=(0,iC.getVariableValues)(r,R,u!=null?u:{},{maxErrors:50});return B.errors?B.errors:{schema:r,fragments:v,rootValue:a,contextValue:o,operation:y,variableValues:B.coerced,fieldResolver:d!=null?d:fv,typeResolver:p!=null?p:lC,subscribeFieldResolver:E!=null?E:fv,errors:[]}}function LX(e,t,n){let r=e.schema.getRootType(t.operation);if(r==null)throw new qi.GraphQLError(`Schema is not configured to execute ${t.operation} operation.`,{nodes:t});let i=(0,rC.collectFields)(e.schema,e.fragments,e.variableValues,r,t.selectionSet),a=void 0;switch(t.operation){case cv.OperationTypeNode.QUERY:return iT(e,r,n,a,i);case cv.OperationTypeNode.MUTATION:return CX(e,r,n,a,i);case cv.OperationTypeNode.SUBSCRIPTION:return iT(e,r,n,a,i)}}function CX(e,t,n,r,i){return(0,RX.promiseReduce)(i.entries(),(a,[o,u])=>{let l=(0,Sc.addPath)(r,o,t.name),d=uC(e,t,n,u,l);return d===void 0?a:(0,Ta.isPromise)(d)?d.then(p=>(a[o]=p,a)):(a[o]=d,a)},Object.create(null))}function iT(e,t,n,r,i){let a=Object.create(null),o=!1;try{for(let[u,l]of i.entries()){let d=(0,Sc.addPath)(r,u,t.name),p=uC(e,t,n,l,d);p!==void 0&&(a[u]=p,(0,Ta.isPromise)(p)&&(o=!0))}}catch(u){if(o)return(0,ZL.promiseForObject)(a).finally(()=>{throw u});throw u}return o?(0,ZL.promiseForObject)(a):a}function uC(e,t,n,r,i){var a;let o=dC(e.schema,t,r[0]);if(!o)return;let u=o.type,l=(a=o.resolve)!==null&&a!==void 0?a:e.fieldResolver,d=cC(e,o,r,t,i);try{let p=(0,iC.getArgumentValues)(o,r[0],e.variableValues),E=e.contextValue,y=l(n,p,E,d),v;return(0,Ta.isPromise)(y)?v=y.then(R=>Bf(e,u,r,d,i,R)):v=Bf(e,u,r,d,i,y),(0,Ta.isPromise)(v)?v.then(void 0,R=>{let B=(0,rT.locatedError)(R,r,(0,Sc.pathToArray)(i));return aT(B,u,e)}):v}catch(p){let E=(0,rT.locatedError)(p,r,(0,Sc.pathToArray)(i));return aT(E,u,e)}}function cC(e,t,n,r,i){return{fieldName:t.name,fieldNodes:n,returnType:t.type,parentType:r,path:i,schema:e.schema,fragments:e.fragments,rootValue:e.rootValue,operation:e.operation,variableValues:e.variableValues}}function aT(e,t,n){if((0,Ou.isNonNullType)(t))throw e;return n.errors.push(e),null}function Bf(e,t,n,r,i,a){if(a instanceof Error)throw a;if((0,Ou.isNonNullType)(t)){let o=Bf(e,t.ofType,n,r,i,a);if(o===null)throw new Error(`Cannot return null for non-nullable field ${r.parentType.name}.${r.fieldName}.`);return o}if(a==null)return null;if((0,Ou.isListType)(t))return UX(e,t,n,r,i,a);if((0,Ou.isLeafType)(t))return BX(t,a);if((0,Ou.isAbstractType)(t))return kX(e,t,n,r,i,a);if((0,Ou.isObjectType)(t))return dv(e,t,n,r,i,a);(0,DX.invariant)(!1,"Cannot complete value of unexpected output type: "+(0,vc.inspect)(t))}function UX(e,t,n,r,i,a){if(!(0,bX.isIterableObject)(a))throw new qi.GraphQLError(`Expected Iterable, but did not find one for field "${r.parentType.name}.${r.fieldName}".`);let o=t.ofType,u=!1,l=Array.from(a,(d,p)=>{let E=(0,Sc.addPath)(i,p,void 0);try{let y;return(0,Ta.isPromise)(d)?y=d.then(v=>Bf(e,o,n,r,E,v)):y=Bf(e,o,n,r,E,d),(0,Ta.isPromise)(y)?(u=!0,y.then(void 0,v=>{let R=(0,rT.locatedError)(v,n,(0,Sc.pathToArray)(E));return aT(R,o,e)})):y}catch(y){let v=(0,rT.locatedError)(y,n,(0,Sc.pathToArray)(E));return aT(v,o,e)}});return u?Promise.all(l):l}function BX(e,t){let n=e.serialize(t);if(n==null)throw new Error(`Expected \`${(0,vc.inspect)(e)}.serialize(${(0,vc.inspect)(t)})\` to return non-nullable value, returned: ${(0,vc.inspect)(n)}`);return n}function kX(e,t,n,r,i,a){var o;let u=(o=t.resolveType)!==null&&o!==void 0?o:e.typeResolver,l=e.contextValue,d=u(a,l,r,t);return(0,Ta.isPromise)(d)?d.then(p=>dv(e,tC(p,e,t,n,r,a),n,r,i,a)):dv(e,tC(d,e,t,n,r,a),n,r,i,a)}function tC(e,t,n,r,i,a){if(e==null)throw new qi.GraphQLError(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}". Either the "${n.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`,r);if((0,Ou.isObjectType)(e))throw new qi.GraphQLError("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");if(typeof e!="string")throw new qi.GraphQLError(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}" with value ${(0,vc.inspect)(a)}, received "${(0,vc.inspect)(e)}".`);let o=t.schema.getType(e);if(o==null)throw new qi.GraphQLError(`Abstract type "${n.name}" was resolved to a type "${e}" that does not exist inside the schema.`,{nodes:r});if(!(0,Ou.isObjectType)(o))throw new qi.GraphQLError(`Abstract type "${n.name}" was resolved to a non-object type "${e}".`,{nodes:r});if(!t.schema.isSubType(n,o))throw new qi.GraphQLError(`Runtime Object type "${o.name}" is not a possible type for "${n.name}".`,{nodes:r});return o}function dv(e,t,n,r,i,a){let o=FX(e,t,n);if(t.isTypeOf){let u=t.isTypeOf(a,e.contextValue,r);if((0,Ta.isPromise)(u))return u.then(l=>{if(!l)throw nC(t,a,n);return iT(e,t,a,i,o)});if(!u)throw nC(t,a,n)}return iT(e,t,a,i,o)}function nC(e,t,n){return new qi.GraphQLError(`Expected value of type "${e.name}" but got: ${(0,vc.inspect)(t)}.`,{nodes:n})}var lC=function(e,t,n,r){if((0,pv.isObjectLike)(e)&&typeof e.__typename=="string")return e.__typename;let i=n.schema.getPossibleTypes(r),a=[];for(let o=0;o{for(let u=0;u{"use strict";m();T();N();Object.defineProperty(sT,"__esModule",{value:!0});sT.graphql=$X;sT.graphqlSync=GX;var MX=Kr(),xX=nN(),qX=Dl(),VX=Of(),jX=Ml(),KX=kf();function $X(e){return new Promise(t=>t(fC(e)))}function GX(e){let t=fC(e);if((0,xX.isPromise)(t))throw new Error("GraphQL execution failed to complete synchronously.");return t}function fC(e){arguments.length<2||(0,MX.devAssert)(!1,"graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");let{schema:t,source:n,rootValue:r,contextValue:i,variableValues:a,operationName:o,fieldResolver:u,typeResolver:l}=e,d=(0,VX.validateSchema)(t);if(d.length>0)return{errors:d};let p;try{p=(0,qX.parse)(n)}catch(y){return{errors:[y]}}let E=(0,jX.validate)(t,p);return E.length>0?{errors:E}:(0,KX.execute)({schema:t,document:p,rootValue:r,contextValue:i,variableValues:a,operationName:o,fieldResolver:u,typeResolver:l})}});var TC=F(ye=>{"use strict";m();T();N();Object.defineProperty(ye,"__esModule",{value:!0});Object.defineProperty(ye,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Ea.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(ye,"GRAPHQL_MAX_INT",{enumerable:!0,get:function(){return Fs.GRAPHQL_MAX_INT}});Object.defineProperty(ye,"GRAPHQL_MIN_INT",{enumerable:!0,get:function(){return Fs.GRAPHQL_MIN_INT}});Object.defineProperty(ye,"GraphQLBoolean",{enumerable:!0,get:function(){return Fs.GraphQLBoolean}});Object.defineProperty(ye,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Ea.GraphQLDeprecatedDirective}});Object.defineProperty(ye,"GraphQLDirective",{enumerable:!0,get:function(){return Ea.GraphQLDirective}});Object.defineProperty(ye,"GraphQLEnumType",{enumerable:!0,get:function(){return at.GraphQLEnumType}});Object.defineProperty(ye,"GraphQLFloat",{enumerable:!0,get:function(){return Fs.GraphQLFloat}});Object.defineProperty(ye,"GraphQLID",{enumerable:!0,get:function(){return Fs.GraphQLID}});Object.defineProperty(ye,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Ea.GraphQLIncludeDirective}});Object.defineProperty(ye,"GraphQLInputObjectType",{enumerable:!0,get:function(){return at.GraphQLInputObjectType}});Object.defineProperty(ye,"GraphQLInt",{enumerable:!0,get:function(){return Fs.GraphQLInt}});Object.defineProperty(ye,"GraphQLInterfaceType",{enumerable:!0,get:function(){return at.GraphQLInterfaceType}});Object.defineProperty(ye,"GraphQLList",{enumerable:!0,get:function(){return at.GraphQLList}});Object.defineProperty(ye,"GraphQLNonNull",{enumerable:!0,get:function(){return at.GraphQLNonNull}});Object.defineProperty(ye,"GraphQLObjectType",{enumerable:!0,get:function(){return at.GraphQLObjectType}});Object.defineProperty(ye,"GraphQLOneOfDirective",{enumerable:!0,get:function(){return Ea.GraphQLOneOfDirective}});Object.defineProperty(ye,"GraphQLScalarType",{enumerable:!0,get:function(){return at.GraphQLScalarType}});Object.defineProperty(ye,"GraphQLSchema",{enumerable:!0,get:function(){return mv.GraphQLSchema}});Object.defineProperty(ye,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Ea.GraphQLSkipDirective}});Object.defineProperty(ye,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Ea.GraphQLSpecifiedByDirective}});Object.defineProperty(ye,"GraphQLString",{enumerable:!0,get:function(){return Fs.GraphQLString}});Object.defineProperty(ye,"GraphQLUnionType",{enumerable:!0,get:function(){return at.GraphQLUnionType}});Object.defineProperty(ye,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return ni.SchemaMetaFieldDef}});Object.defineProperty(ye,"TypeKind",{enumerable:!0,get:function(){return ni.TypeKind}});Object.defineProperty(ye,"TypeMetaFieldDef",{enumerable:!0,get:function(){return ni.TypeMetaFieldDef}});Object.defineProperty(ye,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return ni.TypeNameMetaFieldDef}});Object.defineProperty(ye,"__Directive",{enumerable:!0,get:function(){return ni.__Directive}});Object.defineProperty(ye,"__DirectiveLocation",{enumerable:!0,get:function(){return ni.__DirectiveLocation}});Object.defineProperty(ye,"__EnumValue",{enumerable:!0,get:function(){return ni.__EnumValue}});Object.defineProperty(ye,"__Field",{enumerable:!0,get:function(){return ni.__Field}});Object.defineProperty(ye,"__InputValue",{enumerable:!0,get:function(){return ni.__InputValue}});Object.defineProperty(ye,"__Schema",{enumerable:!0,get:function(){return ni.__Schema}});Object.defineProperty(ye,"__Type",{enumerable:!0,get:function(){return ni.__Type}});Object.defineProperty(ye,"__TypeKind",{enumerable:!0,get:function(){return ni.__TypeKind}});Object.defineProperty(ye,"assertAbstractType",{enumerable:!0,get:function(){return at.assertAbstractType}});Object.defineProperty(ye,"assertCompositeType",{enumerable:!0,get:function(){return at.assertCompositeType}});Object.defineProperty(ye,"assertDirective",{enumerable:!0,get:function(){return Ea.assertDirective}});Object.defineProperty(ye,"assertEnumType",{enumerable:!0,get:function(){return at.assertEnumType}});Object.defineProperty(ye,"assertEnumValueName",{enumerable:!0,get:function(){return NC.assertEnumValueName}});Object.defineProperty(ye,"assertInputObjectType",{enumerable:!0,get:function(){return at.assertInputObjectType}});Object.defineProperty(ye,"assertInputType",{enumerable:!0,get:function(){return at.assertInputType}});Object.defineProperty(ye,"assertInterfaceType",{enumerable:!0,get:function(){return at.assertInterfaceType}});Object.defineProperty(ye,"assertLeafType",{enumerable:!0,get:function(){return at.assertLeafType}});Object.defineProperty(ye,"assertListType",{enumerable:!0,get:function(){return at.assertListType}});Object.defineProperty(ye,"assertName",{enumerable:!0,get:function(){return NC.assertName}});Object.defineProperty(ye,"assertNamedType",{enumerable:!0,get:function(){return at.assertNamedType}});Object.defineProperty(ye,"assertNonNullType",{enumerable:!0,get:function(){return at.assertNonNullType}});Object.defineProperty(ye,"assertNullableType",{enumerable:!0,get:function(){return at.assertNullableType}});Object.defineProperty(ye,"assertObjectType",{enumerable:!0,get:function(){return at.assertObjectType}});Object.defineProperty(ye,"assertOutputType",{enumerable:!0,get:function(){return at.assertOutputType}});Object.defineProperty(ye,"assertScalarType",{enumerable:!0,get:function(){return at.assertScalarType}});Object.defineProperty(ye,"assertSchema",{enumerable:!0,get:function(){return mv.assertSchema}});Object.defineProperty(ye,"assertType",{enumerable:!0,get:function(){return at.assertType}});Object.defineProperty(ye,"assertUnionType",{enumerable:!0,get:function(){return at.assertUnionType}});Object.defineProperty(ye,"assertValidSchema",{enumerable:!0,get:function(){return mC.assertValidSchema}});Object.defineProperty(ye,"assertWrappingType",{enumerable:!0,get:function(){return at.assertWrappingType}});Object.defineProperty(ye,"getNamedType",{enumerable:!0,get:function(){return at.getNamedType}});Object.defineProperty(ye,"getNullableType",{enumerable:!0,get:function(){return at.getNullableType}});Object.defineProperty(ye,"introspectionTypes",{enumerable:!0,get:function(){return ni.introspectionTypes}});Object.defineProperty(ye,"isAbstractType",{enumerable:!0,get:function(){return at.isAbstractType}});Object.defineProperty(ye,"isCompositeType",{enumerable:!0,get:function(){return at.isCompositeType}});Object.defineProperty(ye,"isDirective",{enumerable:!0,get:function(){return Ea.isDirective}});Object.defineProperty(ye,"isEnumType",{enumerable:!0,get:function(){return at.isEnumType}});Object.defineProperty(ye,"isInputObjectType",{enumerable:!0,get:function(){return at.isInputObjectType}});Object.defineProperty(ye,"isInputType",{enumerable:!0,get:function(){return at.isInputType}});Object.defineProperty(ye,"isInterfaceType",{enumerable:!0,get:function(){return at.isInterfaceType}});Object.defineProperty(ye,"isIntrospectionType",{enumerable:!0,get:function(){return ni.isIntrospectionType}});Object.defineProperty(ye,"isLeafType",{enumerable:!0,get:function(){return at.isLeafType}});Object.defineProperty(ye,"isListType",{enumerable:!0,get:function(){return at.isListType}});Object.defineProperty(ye,"isNamedType",{enumerable:!0,get:function(){return at.isNamedType}});Object.defineProperty(ye,"isNonNullType",{enumerable:!0,get:function(){return at.isNonNullType}});Object.defineProperty(ye,"isNullableType",{enumerable:!0,get:function(){return at.isNullableType}});Object.defineProperty(ye,"isObjectType",{enumerable:!0,get:function(){return at.isObjectType}});Object.defineProperty(ye,"isOutputType",{enumerable:!0,get:function(){return at.isOutputType}});Object.defineProperty(ye,"isRequiredArgument",{enumerable:!0,get:function(){return at.isRequiredArgument}});Object.defineProperty(ye,"isRequiredInputField",{enumerable:!0,get:function(){return at.isRequiredInputField}});Object.defineProperty(ye,"isScalarType",{enumerable:!0,get:function(){return at.isScalarType}});Object.defineProperty(ye,"isSchema",{enumerable:!0,get:function(){return mv.isSchema}});Object.defineProperty(ye,"isSpecifiedDirective",{enumerable:!0,get:function(){return Ea.isSpecifiedDirective}});Object.defineProperty(ye,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Fs.isSpecifiedScalarType}});Object.defineProperty(ye,"isType",{enumerable:!0,get:function(){return at.isType}});Object.defineProperty(ye,"isUnionType",{enumerable:!0,get:function(){return at.isUnionType}});Object.defineProperty(ye,"isWrappingType",{enumerable:!0,get:function(){return at.isWrappingType}});Object.defineProperty(ye,"resolveObjMapThunk",{enumerable:!0,get:function(){return at.resolveObjMapThunk}});Object.defineProperty(ye,"resolveReadonlyArrayThunk",{enumerable:!0,get:function(){return at.resolveReadonlyArrayThunk}});Object.defineProperty(ye,"specifiedDirectives",{enumerable:!0,get:function(){return Ea.specifiedDirectives}});Object.defineProperty(ye,"specifiedScalarTypes",{enumerable:!0,get:function(){return Fs.specifiedScalarTypes}});Object.defineProperty(ye,"validateSchema",{enumerable:!0,get:function(){return mC.validateSchema}});var mv=hc(),at=Ut(),Ea=ei(),Fs=Ga(),ni=Mi(),mC=Of(),NC=lf()});var hC=F(xt=>{"use strict";m();T();N();Object.defineProperty(xt,"__esModule",{value:!0});Object.defineProperty(xt,"BREAK",{enumerable:!0,get:function(){return Mf.BREAK}});Object.defineProperty(xt,"DirectiveLocation",{enumerable:!0,get:function(){return XX.DirectiveLocation}});Object.defineProperty(xt,"Kind",{enumerable:!0,get:function(){return JX.Kind}});Object.defineProperty(xt,"Lexer",{enumerable:!0,get:function(){return HX.Lexer}});Object.defineProperty(xt,"Location",{enumerable:!0,get:function(){return Nv.Location}});Object.defineProperty(xt,"OperationTypeNode",{enumerable:!0,get:function(){return Nv.OperationTypeNode}});Object.defineProperty(xt,"Source",{enumerable:!0,get:function(){return QX.Source}});Object.defineProperty(xt,"Token",{enumerable:!0,get:function(){return Nv.Token}});Object.defineProperty(xt,"TokenKind",{enumerable:!0,get:function(){return zX.TokenKind}});Object.defineProperty(xt,"getEnterLeaveForKind",{enumerable:!0,get:function(){return Mf.getEnterLeaveForKind}});Object.defineProperty(xt,"getLocation",{enumerable:!0,get:function(){return YX.getLocation}});Object.defineProperty(xt,"getVisitFn",{enumerable:!0,get:function(){return Mf.getVisitFn}});Object.defineProperty(xt,"isConstValueNode",{enumerable:!0,get:function(){return za.isConstValueNode}});Object.defineProperty(xt,"isDefinitionNode",{enumerable:!0,get:function(){return za.isDefinitionNode}});Object.defineProperty(xt,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return za.isExecutableDefinitionNode}});Object.defineProperty(xt,"isSelectionNode",{enumerable:!0,get:function(){return za.isSelectionNode}});Object.defineProperty(xt,"isTypeDefinitionNode",{enumerable:!0,get:function(){return za.isTypeDefinitionNode}});Object.defineProperty(xt,"isTypeExtensionNode",{enumerable:!0,get:function(){return za.isTypeExtensionNode}});Object.defineProperty(xt,"isTypeNode",{enumerable:!0,get:function(){return za.isTypeNode}});Object.defineProperty(xt,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return za.isTypeSystemDefinitionNode}});Object.defineProperty(xt,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return za.isTypeSystemExtensionNode}});Object.defineProperty(xt,"isValueNode",{enumerable:!0,get:function(){return za.isValueNode}});Object.defineProperty(xt,"parse",{enumerable:!0,get:function(){return oT.parse}});Object.defineProperty(xt,"parseConstValue",{enumerable:!0,get:function(){return oT.parseConstValue}});Object.defineProperty(xt,"parseType",{enumerable:!0,get:function(){return oT.parseType}});Object.defineProperty(xt,"parseValue",{enumerable:!0,get:function(){return oT.parseValue}});Object.defineProperty(xt,"print",{enumerable:!0,get:function(){return WX.print}});Object.defineProperty(xt,"printLocation",{enumerable:!0,get:function(){return EC.printLocation}});Object.defineProperty(xt,"printSourceLocation",{enumerable:!0,get:function(){return EC.printSourceLocation}});Object.defineProperty(xt,"visit",{enumerable:!0,get:function(){return Mf.visit}});Object.defineProperty(xt,"visitInParallel",{enumerable:!0,get:function(){return Mf.visitInParallel}});var QX=fN(),YX=rN(),EC=dI(),JX=Ct(),zX=tf(),HX=uN(),oT=Dl(),WX=hi(),Mf=fc(),Nv=ja(),za=Ic(),XX=Sl()});var yC=F(Tv=>{"use strict";m();T();N();Object.defineProperty(Tv,"__esModule",{value:!0});Tv.isAsyncIterable=ZX;function ZX(e){return typeof(e==null?void 0:e[Symbol.asyncIterator])=="function"}});var IC=F(Ev=>{"use strict";m();T();N();Object.defineProperty(Ev,"__esModule",{value:!0});Ev.mapAsyncIterator=e5;function e5(e,t){let n=e[Symbol.asyncIterator]();function r(a){return Li(this,null,function*(){if(a.done)return a;try{return{value:yield t(a.value),done:!1}}catch(o){if(typeof n.return=="function")try{yield n.return()}catch(u){}throw o}})}return{next(){return Li(this,null,function*(){return r(yield n.next())})},return(){return Li(this,null,function*(){return typeof n.return=="function"?r(yield n.return()):{value:void 0,done:!0}})},throw(a){return Li(this,null,function*(){if(typeof n.throw=="function")return r(yield n.throw(a));throw a})},[Symbol.asyncIterator](){return this}}}});var SC=F(uT=>{"use strict";m();T();N();Object.defineProperty(uT,"__esModule",{value:!0});uT.createSourceEventStream=vC;uT.subscribe=o5;var t5=Kr(),n5=en(),_C=yC(),gC=Af(),hv=Xe(),r5=tT(),i5=WN(),xf=kf(),a5=IC(),s5=Bl();function o5(t){return Li(this,arguments,function*(e){arguments.length<2||(0,t5.devAssert)(!1,"graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");let n=yield vC(e);if(!(0,_C.isAsyncIterable)(n))return n;let r=i=>(0,xf.execute)($(M({},e),{rootValue:i}));return(0,a5.mapAsyncIterator)(n,r)})}function u5(e){let t=e[0];return t&&"document"in t?t:{schema:t,document:e[1],rootValue:e[2],contextValue:e[3],variableValues:e[4],operationName:e[5],subscribeFieldResolver:e[6]}}function vC(...e){return Li(this,null,function*(){let t=u5(e),{schema:n,document:r,variableValues:i}=t;(0,xf.assertValidExecutionArguments)(n,r,i);let a=(0,xf.buildExecutionContext)(t);if(!("schema"in a))return{errors:a};try{let o=yield c5(a);if(!(0,_C.isAsyncIterable)(o))throw new Error(`Subscription field must return Async Iterable. Received: ${(0,n5.inspect)(o)}.`);return o}catch(o){if(o instanceof hv.GraphQLError)return{errors:[o]};throw o}})}function c5(e){return Li(this,null,function*(){let{schema:t,fragments:n,operation:r,variableValues:i,rootValue:a}=e,o=t.getSubscriptionType();if(o==null)throw new hv.GraphQLError("Schema is not configured to execute subscription operation.",{nodes:r});let u=(0,i5.collectFields)(t,n,i,o,r.selectionSet),[l,d]=[...u.entries()][0],p=(0,xf.getFieldDef)(t,o,d[0]);if(!p){let R=d[0].name.value;throw new hv.GraphQLError(`The subscription field "${R}" is not defined.`,{nodes:d})}let E=(0,gC.addPath)(void 0,l,o.name),y=(0,xf.buildResolveInfo)(e,p,d,o,E);try{var v;let R=(0,s5.getArgumentValues)(p,d[0],i),B=e.contextValue,J=yield((v=p.subscribe)!==null&&v!==void 0?v:e.subscribeFieldResolver)(a,R,B,y);if(J instanceof Error)throw J;return J}catch(R){throw(0,r5.locatedError)(R,d,(0,gC.pathToArray)(E))}})}});var DC=F(ji=>{"use strict";m();T();N();Object.defineProperty(ji,"__esModule",{value:!0});Object.defineProperty(ji,"createSourceEventStream",{enumerable:!0,get:function(){return OC.createSourceEventStream}});Object.defineProperty(ji,"defaultFieldResolver",{enumerable:!0,get:function(){return cT.defaultFieldResolver}});Object.defineProperty(ji,"defaultTypeResolver",{enumerable:!0,get:function(){return cT.defaultTypeResolver}});Object.defineProperty(ji,"execute",{enumerable:!0,get:function(){return cT.execute}});Object.defineProperty(ji,"executeSync",{enumerable:!0,get:function(){return cT.executeSync}});Object.defineProperty(ji,"getArgumentValues",{enumerable:!0,get:function(){return yv.getArgumentValues}});Object.defineProperty(ji,"getDirectiveValues",{enumerable:!0,get:function(){return yv.getDirectiveValues}});Object.defineProperty(ji,"getVariableValues",{enumerable:!0,get:function(){return yv.getVariableValues}});Object.defineProperty(ji,"responsePathAsArray",{enumerable:!0,get:function(){return l5.pathToArray}});Object.defineProperty(ji,"subscribe",{enumerable:!0,get:function(){return OC.subscribe}});var l5=Af(),cT=kf(),OC=SC(),yv=Bl()});var bC=F(_v=>{"use strict";m();T();N();Object.defineProperty(_v,"__esModule",{value:!0});_v.NoDeprecatedCustomRule=d5;var Iv=Pr(),qf=Xe(),gv=Ut();function d5(e){return{Field(t){let n=e.getFieldDef(),r=n==null?void 0:n.deprecationReason;if(n&&r!=null){let i=e.getParentType();i!=null||(0,Iv.invariant)(!1),e.reportError(new qf.GraphQLError(`The field ${i.name}.${n.name} is deprecated. ${r}`,{nodes:t}))}},Argument(t){let n=e.getArgument(),r=n==null?void 0:n.deprecationReason;if(n&&r!=null){let i=e.getDirective();if(i!=null)e.reportError(new qf.GraphQLError(`Directive "@${i.name}" argument "${n.name}" is deprecated. ${r}`,{nodes:t}));else{let a=e.getParentType(),o=e.getFieldDef();a!=null&&o!=null||(0,Iv.invariant)(!1),e.reportError(new qf.GraphQLError(`Field "${a.name}.${o.name}" argument "${n.name}" is deprecated. ${r}`,{nodes:t}))}}},ObjectField(t){let n=(0,gv.getNamedType)(e.getParentInputType());if((0,gv.isInputObjectType)(n)){let r=n.getFields()[t.name.value],i=r==null?void 0:r.deprecationReason;i!=null&&e.reportError(new qf.GraphQLError(`The input field ${n.name}.${r.name} is deprecated. ${i}`,{nodes:t}))}},EnumValue(t){let n=e.getEnumValue(),r=n==null?void 0:n.deprecationReason;if(n&&r!=null){let i=(0,gv.getNamedType)(e.getInputType());i!=null||(0,Iv.invariant)(!1),e.reportError(new qf.GraphQLError(`The enum value "${i.name}.${n.name}" is deprecated. ${r}`,{nodes:t}))}}}}});var AC=F(vv=>{"use strict";m();T();N();Object.defineProperty(vv,"__esModule",{value:!0});vv.NoSchemaIntrospectionCustomRule=N5;var f5=Xe(),p5=Ut(),m5=Mi();function N5(e){return{Field(t){let n=(0,p5.getNamedType)(e.getType());n&&(0,m5.isIntrospectionType)(n)&&e.reportError(new f5.GraphQLError(`GraphQL introspection has been disabled, but the requested query contained the field "${t.name.value}".`,{nodes:t}))}}}});var PC=F(mt=>{"use strict";m();T();N();Object.defineProperty(mt,"__esModule",{value:!0});Object.defineProperty(mt,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return h5.ExecutableDefinitionsRule}});Object.defineProperty(mt,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return y5.FieldsOnCorrectTypeRule}});Object.defineProperty(mt,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return I5.FragmentsOnCompositeTypesRule}});Object.defineProperty(mt,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return g5.KnownArgumentNamesRule}});Object.defineProperty(mt,"KnownDirectivesRule",{enumerable:!0,get:function(){return _5.KnownDirectivesRule}});Object.defineProperty(mt,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return v5.KnownFragmentNamesRule}});Object.defineProperty(mt,"KnownTypeNamesRule",{enumerable:!0,get:function(){return S5.KnownTypeNamesRule}});Object.defineProperty(mt,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return O5.LoneAnonymousOperationRule}});Object.defineProperty(mt,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return G5.LoneSchemaDefinitionRule}});Object.defineProperty(mt,"MaxIntrospectionDepthRule",{enumerable:!0,get:function(){return $5.MaxIntrospectionDepthRule}});Object.defineProperty(mt,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return Z5.NoDeprecatedCustomRule}});Object.defineProperty(mt,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return D5.NoFragmentCyclesRule}});Object.defineProperty(mt,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return e9.NoSchemaIntrospectionCustomRule}});Object.defineProperty(mt,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return b5.NoUndefinedVariablesRule}});Object.defineProperty(mt,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return A5.NoUnusedFragmentsRule}});Object.defineProperty(mt,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return R5.NoUnusedVariablesRule}});Object.defineProperty(mt,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return P5.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(mt,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return F5.PossibleFragmentSpreadsRule}});Object.defineProperty(mt,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return X5.PossibleTypeExtensionsRule}});Object.defineProperty(mt,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return w5.ProvidedRequiredArgumentsRule}});Object.defineProperty(mt,"ScalarLeafsRule",{enumerable:!0,get:function(){return L5.ScalarLeafsRule}});Object.defineProperty(mt,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return C5.SingleFieldSubscriptionsRule}});Object.defineProperty(mt,"UniqueArgumentDefinitionNamesRule",{enumerable:!0,get:function(){return H5.UniqueArgumentDefinitionNamesRule}});Object.defineProperty(mt,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return U5.UniqueArgumentNamesRule}});Object.defineProperty(mt,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return W5.UniqueDirectiveNamesRule}});Object.defineProperty(mt,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return B5.UniqueDirectivesPerLocationRule}});Object.defineProperty(mt,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return J5.UniqueEnumValueNamesRule}});Object.defineProperty(mt,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return z5.UniqueFieldDefinitionNamesRule}});Object.defineProperty(mt,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return k5.UniqueFragmentNamesRule}});Object.defineProperty(mt,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return M5.UniqueInputFieldNamesRule}});Object.defineProperty(mt,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return x5.UniqueOperationNamesRule}});Object.defineProperty(mt,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return Q5.UniqueOperationTypesRule}});Object.defineProperty(mt,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return Y5.UniqueTypeNamesRule}});Object.defineProperty(mt,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return q5.UniqueVariableNamesRule}});Object.defineProperty(mt,"ValidationContext",{enumerable:!0,get:function(){return E5.ValidationContext}});Object.defineProperty(mt,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return V5.ValuesOfCorrectTypeRule}});Object.defineProperty(mt,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return j5.VariablesAreInputTypesRule}});Object.defineProperty(mt,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return K5.VariablesInAllowedPositionRule}});Object.defineProperty(mt,"recommendedRules",{enumerable:!0,get:function(){return RC.recommendedRules}});Object.defineProperty(mt,"specifiedRules",{enumerable:!0,get:function(){return RC.specifiedRules}});Object.defineProperty(mt,"validate",{enumerable:!0,get:function(){return T5.validate}});var T5=Ml(),E5=tv(),RC=X_(),h5=Ng(),y5=Eg(),I5=yg(),g5=Ig(),_5=Sg(),v5=Dg(),S5=Rg(),O5=Fg(),D5=kg(),b5=xg(),A5=Vg(),R5=Kg(),P5=Zg(),F5=n_(),w5=s_(),L5=u_(),C5=E_(),U5=__(),B5=b_(),k5=C_(),M5=B_(),x5=M_(),q5=$_(),V5=Y_(),j5=z_(),K5=W_(),$5=Ug(),G5=Lg(),Q5=q_(),Y5=j_(),J5=R_(),z5=w_(),H5=I_(),W5=S_(),X5=i_(),Z5=bC(),e9=AC()});var FC=F(Oc=>{"use strict";m();T();N();Object.defineProperty(Oc,"__esModule",{value:!0});Object.defineProperty(Oc,"GraphQLError",{enumerable:!0,get:function(){return Sv.GraphQLError}});Object.defineProperty(Oc,"formatError",{enumerable:!0,get:function(){return Sv.formatError}});Object.defineProperty(Oc,"locatedError",{enumerable:!0,get:function(){return n9.locatedError}});Object.defineProperty(Oc,"printError",{enumerable:!0,get:function(){return Sv.printError}});Object.defineProperty(Oc,"syntaxError",{enumerable:!0,get:function(){return t9.syntaxError}});var Sv=Xe(),t9=aN(),n9=tT()});var Dv=F(Ov=>{"use strict";m();T();N();Object.defineProperty(Ov,"__esModule",{value:!0});Ov.getIntrospectionQuery=r9;function r9(e){let t=M({descriptions:!0,specifiedByUrl:!1,directiveIsRepeatable:!1,schemaDescription:!1,inputValueDeprecation:!1,oneOf:!1},e),n=t.descriptions?"description":"",r=t.specifiedByUrl?"specifiedByURL":"",i=t.directiveIsRepeatable?"isRepeatable":"",a=t.schemaDescription?n:"";function o(l){return t.inputValueDeprecation?l:""}let u=t.oneOf?"isOneOf":"";return` - query IntrospectionQuery { - __schema { - ${a} - queryType { name } - mutationType { name } - subscriptionType { name } - types { - ...FullType - } - directives { - name - ${n} - ${i} - locations - args${o("(includeDeprecated: true)")} { - ...InputValue - } - } - } - } - - fragment FullType on __Type { - kind - name - ${n} - ${r} - ${u} - fields(includeDeprecated: true) { - name - ${n} - args${o("(includeDeprecated: true)")} { - ...InputValue - } - type { - ...TypeRef - } - isDeprecated - deprecationReason - } - inputFields${o("(includeDeprecated: true)")} { - ...InputValue - } - interfaces { - ...TypeRef - } - enumValues(includeDeprecated: true) { - name - ${n} - isDeprecated - deprecationReason - } - possibleTypes { - ...TypeRef - } - } - - fragment InputValue on __InputValue { - name - ${n} - type { ...TypeRef } - defaultValue - ${o("isDeprecated")} - ${o("deprecationReason")} - } - - fragment TypeRef on __Type { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - } - } - } - } - } - } - } - } - } - } - `}});var wC=F(bv=>{"use strict";m();T();N();Object.defineProperty(bv,"__esModule",{value:!0});bv.getOperationAST=a9;var i9=Ct();function a9(e,t){let n=null;for(let i of e.definitions)if(i.kind===i9.Kind.OPERATION_DEFINITION){var r;if(t==null){if(n)return null;n=i}else if(((r=i.name)===null||r===void 0?void 0:r.value)===t)return i}return n}});var LC=F(Av=>{"use strict";m();T();N();Object.defineProperty(Av,"__esModule",{value:!0});Av.getOperationRootType=s9;var lT=Xe();function s9(e,t){if(t.operation==="query"){let n=e.getQueryType();if(!n)throw new lT.GraphQLError("Schema does not define the required query root type.",{nodes:t});return n}if(t.operation==="mutation"){let n=e.getMutationType();if(!n)throw new lT.GraphQLError("Schema is not configured for mutations.",{nodes:t});return n}if(t.operation==="subscription"){let n=e.getSubscriptionType();if(!n)throw new lT.GraphQLError("Schema is not configured for subscriptions.",{nodes:t});return n}throw new lT.GraphQLError("Can only have query, mutation and subscription operations.",{nodes:t})}});var CC=F(Rv=>{"use strict";m();T();N();Object.defineProperty(Rv,"__esModule",{value:!0});Rv.introspectionFromSchema=d9;var o9=Pr(),u9=Dl(),c9=kf(),l9=Dv();function d9(e,t){let n=M({specifiedByUrl:!0,directiveIsRepeatable:!0,schemaDescription:!0,inputValueDeprecation:!0,oneOf:!0},t),r=(0,u9.parse)((0,l9.getIntrospectionQuery)(n)),i=(0,c9.executeSync)({schema:e,document:r});return!i.errors&&i.data||(0,o9.invariant)(!1),i.data}});var BC=F(Pv=>{"use strict";m();T();N();Object.defineProperty(Pv,"__esModule",{value:!0});Pv.buildClientSchema=h9;var f9=Kr(),yi=en(),UC=Va(),dT=uf(),p9=Dl(),Ii=Ut(),m9=ei(),Ha=Mi(),N9=Ga(),T9=hc(),E9=wf();function h9(e,t){(0,UC.isObjectLike)(e)&&(0,UC.isObjectLike)(e.__schema)||(0,f9.devAssert)(!1,`Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${(0,yi.inspect)(e)}.`);let n=e.__schema,r=(0,dT.keyValMap)(n.types,Z=>Z.name,Z=>y(Z));for(let Z of[...N9.specifiedScalarTypes,...Ha.introspectionTypes])r[Z.name]&&(r[Z.name]=Z);let i=n.queryType?p(n.queryType):null,a=n.mutationType?p(n.mutationType):null,o=n.subscriptionType?p(n.subscriptionType):null,u=n.directives?n.directives.map(Qe):[];return new T9.GraphQLSchema({description:n.description,query:i,mutation:a,subscription:o,types:Object.values(r),directives:u,assumeValid:t==null?void 0:t.assumeValid});function l(Z){if(Z.kind===Ha.TypeKind.LIST){let Se=Z.ofType;if(!Se)throw new Error("Decorated type deeper than introspection query.");return new Ii.GraphQLList(l(Se))}if(Z.kind===Ha.TypeKind.NON_NULL){let Se=Z.ofType;if(!Se)throw new Error("Decorated type deeper than introspection query.");let ht=l(Se);return new Ii.GraphQLNonNull((0,Ii.assertNullableType)(ht))}return d(Z)}function d(Z){let Se=Z.name;if(!Se)throw new Error(`Unknown type reference: ${(0,yi.inspect)(Z)}.`);let ht=r[Se];if(!ht)throw new Error(`Invalid or incomplete schema, unknown type: ${Se}. Ensure that a full introspection query is used in order to build a client schema.`);return ht}function p(Z){return(0,Ii.assertObjectType)(d(Z))}function E(Z){return(0,Ii.assertInterfaceType)(d(Z))}function y(Z){if(Z!=null&&Z.name!=null&&Z.kind!=null)switch(Z.kind){case Ha.TypeKind.SCALAR:return v(Z);case Ha.TypeKind.OBJECT:return B(Z);case Ha.TypeKind.INTERFACE:return V(Z);case Ha.TypeKind.UNION:return J(Z);case Ha.TypeKind.ENUM:return ne(Z);case Ha.TypeKind.INPUT_OBJECT:return te(Z)}let Se=(0,yi.inspect)(Z);throw new Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${Se}.`)}function v(Z){return new Ii.GraphQLScalarType({name:Z.name,description:Z.description,specifiedByURL:Z.specifiedByURL})}function R(Z){if(Z.interfaces===null&&Z.kind===Ha.TypeKind.INTERFACE)return[];if(!Z.interfaces){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing interfaces: ${Se}.`)}return Z.interfaces.map(E)}function B(Z){return new Ii.GraphQLObjectType({name:Z.name,description:Z.description,interfaces:()=>R(Z),fields:()=>Ne(Z)})}function V(Z){return new Ii.GraphQLInterfaceType({name:Z.name,description:Z.description,interfaces:()=>R(Z),fields:()=>Ne(Z)})}function J(Z){if(!Z.possibleTypes){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing possibleTypes: ${Se}.`)}return new Ii.GraphQLUnionType({name:Z.name,description:Z.description,types:()=>Z.possibleTypes.map(p)})}function ne(Z){if(!Z.enumValues){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing enumValues: ${Se}.`)}return new Ii.GraphQLEnumType({name:Z.name,description:Z.description,values:(0,dT.keyValMap)(Z.enumValues,Se=>Se.name,Se=>({description:Se.description,deprecationReason:Se.deprecationReason}))})}function te(Z){if(!Z.inputFields){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing inputFields: ${Se}.`)}return new Ii.GraphQLInputObjectType({name:Z.name,description:Z.description,fields:()=>he(Z.inputFields),isOneOf:Z.isOneOf})}function Ne(Z){if(!Z.fields)throw new Error(`Introspection result missing fields: ${(0,yi.inspect)(Z)}.`);return(0,dT.keyValMap)(Z.fields,Se=>Se.name,Ee)}function Ee(Z){let Se=l(Z.type);if(!(0,Ii.isOutputType)(Se)){let ht=(0,yi.inspect)(Se);throw new Error(`Introspection must provide output type for fields, but received: ${ht}.`)}if(!Z.args){let ht=(0,yi.inspect)(Z);throw new Error(`Introspection result missing field args: ${ht}.`)}return{description:Z.description,deprecationReason:Z.deprecationReason,type:Se,args:he(Z.args)}}function he(Z){return(0,dT.keyValMap)(Z,Se=>Se.name,we)}function we(Z){let Se=l(Z.type);if(!(0,Ii.isInputType)(Se)){let on=(0,yi.inspect)(Se);throw new Error(`Introspection must provide input type for arguments, but received: ${on}.`)}let ht=Z.defaultValue!=null?(0,E9.valueFromAST)((0,p9.parseValue)(Z.defaultValue),Se):void 0;return{description:Z.description,type:Se,defaultValue:ht,deprecationReason:Z.deprecationReason}}function Qe(Z){if(!Z.args){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing directive args: ${Se}.`)}if(!Z.locations){let Se=(0,yi.inspect)(Z);throw new Error(`Introspection result missing directive locations: ${Se}.`)}return new m9.GraphQLDirective({name:Z.name,description:Z.description,isRepeatable:Z.isRepeatable,locations:Z.locations.slice(),args:he(Z.args)})}}});var wv=F(pT=>{"use strict";m();T();N();Object.defineProperty(pT,"__esModule",{value:!0});pT.extendSchema=S9;pT.extendSchemaImpl=$C;var y9=Kr(),I9=en(),g9=Pr(),_9=hu(),Vf=FI(),Ki=Ct(),kC=Ic(),Dn=Ut(),jf=ei(),jC=Mi(),KC=Ga(),MC=hc(),v9=Ml(),Fv=Bl(),xC=wf();function S9(e,t,n){(0,MC.assertSchema)(e),t!=null&&t.kind===Ki.Kind.DOCUMENT||(0,y9.devAssert)(!1,"Must provide valid Document AST."),(n==null?void 0:n.assumeValid)!==!0&&(n==null?void 0:n.assumeValidSDL)!==!0&&(0,v9.assertValidSDLExtension)(t,e);let r=e.toConfig(),i=$C(r,t,n);return r===i?e:new MC.GraphQLSchema(i)}function $C(e,t,n){var r,i,a,o;let u=[],l=Object.create(null),d=[],p,E=[];for(let se of t.definitions)if(se.kind===Ki.Kind.SCHEMA_DEFINITION)p=se;else if(se.kind===Ki.Kind.SCHEMA_EXTENSION)E.push(se);else if((0,kC.isTypeDefinitionNode)(se))u.push(se);else if((0,kC.isTypeExtensionNode)(se)){let be=se.name.value,ge=l[be];l[be]=ge?ge.concat([se]):[se]}else se.kind===Ki.Kind.DIRECTIVE_DEFINITION&&d.push(se);if(Object.keys(l).length===0&&u.length===0&&d.length===0&&E.length===0&&p==null)return e;let y=Object.create(null);for(let se of e.types)y[se.name]=ne(se);for(let se of u){var v;let be=se.name.value;y[be]=(v=qC[be])!==null&&v!==void 0?v:Ln(se)}let R=M(M({query:e.query&&V(e.query),mutation:e.mutation&&V(e.mutation),subscription:e.subscription&&V(e.subscription)},p&&ht([p])),ht(E));return $(M({description:(r=p)===null||r===void 0||(i=r.description)===null||i===void 0?void 0:i.value},R),{types:Object.values(y),directives:[...e.directives.map(J),...d.map(un)],extensions:Object.create(null),astNode:(a=p)!==null&&a!==void 0?a:e.astNode,extensionASTNodes:e.extensionASTNodes.concat(E),assumeValid:(o=n==null?void 0:n.assumeValid)!==null&&o!==void 0?o:!1});function B(se){return(0,Dn.isListType)(se)?new Dn.GraphQLList(B(se.ofType)):(0,Dn.isNonNullType)(se)?new Dn.GraphQLNonNull(B(se.ofType)):V(se)}function V(se){return y[se.name]}function J(se){let be=se.toConfig();return new jf.GraphQLDirective($(M({},be),{args:(0,Vf.mapValue)(be.args,Se)}))}function ne(se){if((0,jC.isIntrospectionType)(se)||(0,KC.isSpecifiedScalarType)(se))return se;if((0,Dn.isScalarType)(se))return Ee(se);if((0,Dn.isObjectType)(se))return he(se);if((0,Dn.isInterfaceType)(se))return we(se);if((0,Dn.isUnionType)(se))return Qe(se);if((0,Dn.isEnumType)(se))return Ne(se);if((0,Dn.isInputObjectType)(se))return te(se);(0,g9.invariant)(!1,"Unexpected type: "+(0,I9.inspect)(se))}function te(se){var be;let ge=se.toConfig(),Ce=(be=l[ge.name])!==null&&be!==void 0?be:[];return new Dn.GraphQLInputObjectType($(M({},ge),{fields:()=>M(M({},(0,Vf.mapValue)(ge.fields,Dt=>$(M({},Dt),{type:B(Dt.type)}))),xr(Ce)),extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function Ne(se){var be;let ge=se.toConfig(),Ce=(be=l[se.name])!==null&&be!==void 0?be:[];return new Dn.GraphQLEnumType($(M({},ge),{values:M(M({},ge.values),nr(Ce)),extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function Ee(se){var be;let ge=se.toConfig(),Ce=(be=l[ge.name])!==null&&be!==void 0?be:[],Dt=ge.specifiedByURL;for(let ae of Ce){var z;Dt=(z=VC(ae))!==null&&z!==void 0?z:Dt}return new Dn.GraphQLScalarType($(M({},ge),{specifiedByURL:Dt,extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function he(se){var be;let ge=se.toConfig(),Ce=(be=l[ge.name])!==null&&be!==void 0?be:[];return new Dn.GraphQLObjectType($(M({},ge),{interfaces:()=>[...se.getInterfaces().map(V),...hn(Ce)],fields:()=>M(M({},(0,Vf.mapValue)(ge.fields,Z)),Ft(Ce)),extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function we(se){var be;let ge=se.toConfig(),Ce=(be=l[ge.name])!==null&&be!==void 0?be:[];return new Dn.GraphQLInterfaceType($(M({},ge),{interfaces:()=>[...se.getInterfaces().map(V),...hn(Ce)],fields:()=>M(M({},(0,Vf.mapValue)(ge.fields,Z)),Ft(Ce)),extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function Qe(se){var be;let ge=se.toConfig(),Ce=(be=l[ge.name])!==null&&be!==void 0?be:[];return new Dn.GraphQLUnionType($(M({},ge),{types:()=>[...se.getTypes().map(V),...Xt(Ce)],extensionASTNodes:ge.extensionASTNodes.concat(Ce)}))}function Z(se){return $(M({},se),{type:B(se.type),args:se.args&&(0,Vf.mapValue)(se.args,Se)})}function Se(se){return $(M({},se),{type:B(se.type)})}function ht(se){let be={};for(let Ce of se){var ge;let Dt=(ge=Ce.operationTypes)!==null&&ge!==void 0?ge:[];for(let z of Dt)be[z.operation]=on(z.type)}return be}function on(se){var be;let ge=se.name.value,Ce=(be=qC[ge])!==null&&be!==void 0?be:y[ge];if(Ce===void 0)throw new Error(`Unknown type: "${ge}".`);return Ce}function En(se){return se.kind===Ki.Kind.LIST_TYPE?new Dn.GraphQLList(En(se.type)):se.kind===Ki.Kind.NON_NULL_TYPE?new Dn.GraphQLNonNull(En(se.type)):on(se)}function un(se){var be;return new jf.GraphQLDirective({name:se.name.value,description:(be=se.description)===null||be===void 0?void 0:be.value,locations:se.locations.map(({value:ge})=>ge),isRepeatable:se.repeatable,args:rn(se.arguments),astNode:se})}function Ft(se){let be=Object.create(null);for(let Dt of se){var ge;let z=(ge=Dt.fields)!==null&&ge!==void 0?ge:[];for(let ae of z){var Ce;be[ae.name.value]={type:En(ae.type),description:(Ce=ae.description)===null||Ce===void 0?void 0:Ce.value,args:rn(ae.arguments),deprecationReason:fT(ae),astNode:ae}}}return be}function rn(se){let be=se!=null?se:[],ge=Object.create(null);for(let Dt of be){var Ce;let z=En(Dt.type);ge[Dt.name.value]={type:z,description:(Ce=Dt.description)===null||Ce===void 0?void 0:Ce.value,defaultValue:(0,xC.valueFromAST)(Dt.defaultValue,z),deprecationReason:fT(Dt),astNode:Dt}}return ge}function xr(se){let be=Object.create(null);for(let Dt of se){var ge;let z=(ge=Dt.fields)!==null&&ge!==void 0?ge:[];for(let ae of z){var Ce;let je=En(ae.type);be[ae.name.value]={type:je,description:(Ce=ae.description)===null||Ce===void 0?void 0:Ce.value,defaultValue:(0,xC.valueFromAST)(ae.defaultValue,je),deprecationReason:fT(ae),astNode:ae}}}return be}function nr(se){let be=Object.create(null);for(let Dt of se){var ge;let z=(ge=Dt.values)!==null&&ge!==void 0?ge:[];for(let ae of z){var Ce;be[ae.name.value]={description:(Ce=ae.description)===null||Ce===void 0?void 0:Ce.value,deprecationReason:fT(ae),astNode:ae}}}return be}function hn(se){return se.flatMap(be=>{var ge,Ce;return(ge=(Ce=be.interfaces)===null||Ce===void 0?void 0:Ce.map(on))!==null&&ge!==void 0?ge:[]})}function Xt(se){return se.flatMap(be=>{var ge,Ce;return(ge=(Ce=be.types)===null||Ce===void 0?void 0:Ce.map(on))!==null&&ge!==void 0?ge:[]})}function Ln(se){var be;let ge=se.name.value,Ce=(be=l[ge])!==null&&be!==void 0?be:[];switch(se.kind){case Ki.Kind.OBJECT_TYPE_DEFINITION:{var Dt;let it=[se,...Ce];return new Dn.GraphQLObjectType({name:ge,description:(Dt=se.description)===null||Dt===void 0?void 0:Dt.value,interfaces:()=>hn(it),fields:()=>Ft(it),astNode:se,extensionASTNodes:Ce})}case Ki.Kind.INTERFACE_TYPE_DEFINITION:{var z;let it=[se,...Ce];return new Dn.GraphQLInterfaceType({name:ge,description:(z=se.description)===null||z===void 0?void 0:z.value,interfaces:()=>hn(it),fields:()=>Ft(it),astNode:se,extensionASTNodes:Ce})}case Ki.Kind.ENUM_TYPE_DEFINITION:{var ae;let it=[se,...Ce];return new Dn.GraphQLEnumType({name:ge,description:(ae=se.description)===null||ae===void 0?void 0:ae.value,values:nr(it),astNode:se,extensionASTNodes:Ce})}case Ki.Kind.UNION_TYPE_DEFINITION:{var je;let it=[se,...Ce];return new Dn.GraphQLUnionType({name:ge,description:(je=se.description)===null||je===void 0?void 0:je.value,types:()=>Xt(it),astNode:se,extensionASTNodes:Ce})}case Ki.Kind.SCALAR_TYPE_DEFINITION:{var He;return new Dn.GraphQLScalarType({name:ge,description:(He=se.description)===null||He===void 0?void 0:He.value,specifiedByURL:VC(se),astNode:se,extensionASTNodes:Ce})}case Ki.Kind.INPUT_OBJECT_TYPE_DEFINITION:{var Mt;let it=[se,...Ce];return new Dn.GraphQLInputObjectType({name:ge,description:(Mt=se.description)===null||Mt===void 0?void 0:Mt.value,fields:()=>xr(it),astNode:se,extensionASTNodes:Ce,isOneOf:O9(se)})}}}}var qC=(0,_9.keyMap)([...KC.specifiedScalarTypes,...jC.introspectionTypes],e=>e.name);function fT(e){let t=(0,Fv.getDirectiveValues)(jf.GraphQLDeprecatedDirective,e);return t==null?void 0:t.reason}function VC(e){let t=(0,Fv.getDirectiveValues)(jf.GraphQLSpecifiedByDirective,e);return t==null?void 0:t.url}function O9(e){return!!(0,Fv.getDirectiveValues)(jf.GraphQLOneOfDirective,e)}});var QC=F(mT=>{"use strict";m();T();N();Object.defineProperty(mT,"__esModule",{value:!0});mT.buildASTSchema=GC;mT.buildSchema=L9;var D9=Kr(),b9=Ct(),A9=Dl(),R9=ei(),P9=hc(),F9=Ml(),w9=wv();function GC(e,t){e!=null&&e.kind===b9.Kind.DOCUMENT||(0,D9.devAssert)(!1,"Must provide valid Document AST."),(t==null?void 0:t.assumeValid)!==!0&&(t==null?void 0:t.assumeValidSDL)!==!0&&(0,F9.assertValidSDL)(e);let n={description:void 0,types:[],directives:[],extensions:Object.create(null),extensionASTNodes:[],assumeValid:!1},r=(0,w9.extendSchemaImpl)(n,e,t);if(r.astNode==null)for(let a of r.types)switch(a.name){case"Query":r.query=a;break;case"Mutation":r.mutation=a;break;case"Subscription":r.subscription=a;break}let i=[...r.directives,...R9.specifiedDirectives.filter(a=>r.directives.every(o=>o.name!==a.name))];return new P9.GraphQLSchema($(M({},r),{directives:i}))}function L9(e,t){let n=(0,A9.parse)(e,{noLocation:t==null?void 0:t.noLocation,allowLegacyFragmentVariables:t==null?void 0:t.allowLegacyFragmentVariables});return GC(n,{assumeValidSDL:t==null?void 0:t.assumeValidSDL,assumeValid:t==null?void 0:t.assumeValid})}});var zC=F(Cv=>{"use strict";m();T();N();Object.defineProperty(Cv,"__esModule",{value:!0});Cv.lexicographicSortSchema=q9;var C9=en(),U9=Pr(),B9=uf(),YC=cf(),$r=Ut(),k9=ei(),M9=Mi(),x9=hc();function q9(e){let t=e.toConfig(),n=(0,B9.keyValMap)(Lv(t.types),y=>y.name,E);return new x9.GraphQLSchema($(M({},t),{types:Object.values(n),directives:Lv(t.directives).map(o),query:a(t.query),mutation:a(t.mutation),subscription:a(t.subscription)}));function r(y){return(0,$r.isListType)(y)?new $r.GraphQLList(r(y.ofType)):(0,$r.isNonNullType)(y)?new $r.GraphQLNonNull(r(y.ofType)):i(y)}function i(y){return n[y.name]}function a(y){return y&&i(y)}function o(y){let v=y.toConfig();return new k9.GraphQLDirective($(M({},v),{locations:JC(v.locations,R=>R),args:u(v.args)}))}function u(y){return NT(y,v=>$(M({},v),{type:r(v.type)}))}function l(y){return NT(y,v=>$(M({},v),{type:r(v.type),args:v.args&&u(v.args)}))}function d(y){return NT(y,v=>$(M({},v),{type:r(v.type)}))}function p(y){return Lv(y).map(i)}function E(y){if((0,$r.isScalarType)(y)||(0,M9.isIntrospectionType)(y))return y;if((0,$r.isObjectType)(y)){let v=y.toConfig();return new $r.GraphQLObjectType($(M({},v),{interfaces:()=>p(v.interfaces),fields:()=>l(v.fields)}))}if((0,$r.isInterfaceType)(y)){let v=y.toConfig();return new $r.GraphQLInterfaceType($(M({},v),{interfaces:()=>p(v.interfaces),fields:()=>l(v.fields)}))}if((0,$r.isUnionType)(y)){let v=y.toConfig();return new $r.GraphQLUnionType($(M({},v),{types:()=>p(v.types)}))}if((0,$r.isEnumType)(y)){let v=y.toConfig();return new $r.GraphQLEnumType($(M({},v),{values:NT(v.values,R=>R)}))}if((0,$r.isInputObjectType)(y)){let v=y.toConfig();return new $r.GraphQLInputObjectType($(M({},v),{fields:()=>d(v.fields)}))}(0,U9.invariant)(!1,"Unexpected type: "+(0,C9.inspect)(y))}}function NT(e,t){let n=Object.create(null);for(let r of Object.keys(e).sort(YC.naturalCompare))n[r]=t(e[r]);return n}function Lv(e){return JC(e,t=>t.name)}function JC(e,t){return e.slice().sort((n,r)=>{let i=t(n),a=t(r);return(0,YC.naturalCompare)(i,a)})}});var nU=F(Kf=>{"use strict";m();T();N();Object.defineProperty(Kf,"__esModule",{value:!0});Kf.printIntrospectionSchema=Y9;Kf.printSchema=Q9;Kf.printType=XC;var V9=en(),j9=Pr(),K9=Zd(),Bv=Ct(),TT=hi(),ql=Ut(),kv=ei(),HC=Mi(),$9=Ga(),G9=_f();function Q9(e){return WC(e,t=>!(0,kv.isSpecifiedDirective)(t),J9)}function Y9(e){return WC(e,kv.isSpecifiedDirective,HC.isIntrospectionType)}function J9(e){return!(0,$9.isSpecifiedScalarType)(e)&&!(0,HC.isIntrospectionType)(e)}function WC(e,t,n){let r=e.getDirectives().filter(t),i=Object.values(e.getTypeMap()).filter(n);return[z9(e),...r.map(a=>r7(a)),...i.map(a=>XC(a))].filter(Boolean).join(` - -`)}function z9(e){if(e.description==null&&H9(e))return;let t=[],n=e.getQueryType();n&&t.push(` query: ${n.name}`);let r=e.getMutationType();r&&t.push(` mutation: ${r.name}`);let i=e.getSubscriptionType();return i&&t.push(` subscription: ${i.name}`),$i(e)+`schema { -${t.join(` -`)} -}`}function H9(e){let t=e.getQueryType();if(t&&t.name!=="Query")return!1;let n=e.getMutationType();if(n&&n.name!=="Mutation")return!1;let r=e.getSubscriptionType();return!(r&&r.name!=="Subscription")}function XC(e){if((0,ql.isScalarType)(e))return W9(e);if((0,ql.isObjectType)(e))return X9(e);if((0,ql.isInterfaceType)(e))return Z9(e);if((0,ql.isUnionType)(e))return e7(e);if((0,ql.isEnumType)(e))return t7(e);if((0,ql.isInputObjectType)(e))return n7(e);(0,j9.invariant)(!1,"Unexpected type: "+(0,V9.inspect)(e))}function W9(e){return $i(e)+`scalar ${e.name}`+i7(e)}function ZC(e){let t=e.getInterfaces();return t.length?" implements "+t.map(n=>n.name).join(" & "):""}function X9(e){return $i(e)+`type ${e.name}`+ZC(e)+eU(e)}function Z9(e){return $i(e)+`interface ${e.name}`+ZC(e)+eU(e)}function e7(e){let t=e.getTypes(),n=t.length?" = "+t.join(" | "):"";return $i(e)+"union "+e.name+n}function t7(e){let t=e.getValues().map((n,r)=>$i(n," ",!r)+" "+n.name+xv(n.deprecationReason));return $i(e)+`enum ${e.name}`+Mv(t)}function n7(e){let t=Object.values(e.getFields()).map((n,r)=>$i(n," ",!r)+" "+Uv(n));return $i(e)+`input ${e.name}`+(e.isOneOf?" @oneOf":"")+Mv(t)}function eU(e){let t=Object.values(e.getFields()).map((n,r)=>$i(n," ",!r)+" "+n.name+tU(n.args," ")+": "+String(n.type)+xv(n.deprecationReason));return Mv(t)}function Mv(e){return e.length!==0?` { -`+e.join(` -`)+` -}`:""}function tU(e,t=""){return e.length===0?"":e.every(n=>!n.description)?"("+e.map(Uv).join(", ")+")":`( -`+e.map((n,r)=>$i(n," "+t,!r)+" "+t+Uv(n)).join(` -`)+` -`+t+")"}function Uv(e){let t=(0,G9.astFromValue)(e.defaultValue,e.type),n=e.name+": "+String(e.type);return t&&(n+=` = ${(0,TT.print)(t)}`),n+xv(e.deprecationReason)}function r7(e){return $i(e)+"directive @"+e.name+tU(e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}function xv(e){return e==null?"":e!==kv.DEFAULT_DEPRECATION_REASON?` @deprecated(reason: ${(0,TT.print)({kind:Bv.Kind.STRING,value:e})})`:" @deprecated"}function i7(e){return e.specifiedByURL==null?"":` @specifiedBy(url: ${(0,TT.print)({kind:Bv.Kind.STRING,value:e.specifiedByURL})})`}function $i(e,t="",n=!0){let{description:r}=e;if(r==null)return"";let i=(0,TT.print)({kind:Bv.Kind.STRING,value:r,block:(0,K9.isPrintableAsBlockString)(r)});return(t&&!n?` -`+t:t)+i.replace(/\n/g,` -`+t)+` -`}});var rU=F(qv=>{"use strict";m();T();N();Object.defineProperty(qv,"__esModule",{value:!0});qv.concatAST=s7;var a7=Ct();function s7(e){let t=[];for(let n of e)t.push(...n.definitions);return{kind:a7.Kind.DOCUMENT,definitions:t}}});var sU=F(Vv=>{"use strict";m();T();N();Object.defineProperty(Vv,"__esModule",{value:!0});Vv.separateOperations=u7;var ET=Ct(),o7=fc();function u7(e){let t=[],n=Object.create(null);for(let i of e.definitions)switch(i.kind){case ET.Kind.OPERATION_DEFINITION:t.push(i);break;case ET.Kind.FRAGMENT_DEFINITION:n[i.name.value]=iU(i.selectionSet);break;default:}let r=Object.create(null);for(let i of t){let a=new Set;for(let u of iU(i.selectionSet))aU(a,n,u);let o=i.name?i.name.value:"";r[o]={kind:ET.Kind.DOCUMENT,definitions:e.definitions.filter(u=>u===i||u.kind===ET.Kind.FRAGMENT_DEFINITION&&a.has(u.name.value))}}return r}function aU(e,t,n){if(!e.has(n)){e.add(n);let r=t[n];if(r!==void 0)for(let i of r)aU(e,t,i)}}function iU(e){let t=[];return(0,o7.visit)(e,{FragmentSpread(n){t.push(n.name.value)}}),t}});var cU=F(Kv=>{"use strict";m();T();N();Object.defineProperty(Kv,"__esModule",{value:!0});Kv.stripIgnoredCharacters=l7;var c7=Zd(),oU=uN(),uU=fN(),jv=tf();function l7(e){let t=(0,uU.isSource)(e)?e:new uU.Source(e),n=t.body,r=new oU.Lexer(t),i="",a=!1;for(;r.advance().kind!==jv.TokenKind.EOF;){let o=r.token,u=o.kind,l=!(0,oU.isPunctuatorTokenKind)(o.kind);a&&(l||o.kind===jv.TokenKind.SPREAD)&&(i+=" ");let d=n.slice(o.start,o.end);u===jv.TokenKind.BLOCK_STRING?i+=(0,c7.printBlockString)(o.value,{minimize:!0}):i+=d,a=l}return i}});var dU=F(hT=>{"use strict";m();T();N();Object.defineProperty(hT,"__esModule",{value:!0});hT.assertValidName=m7;hT.isValidNameError=lU;var d7=Kr(),f7=Xe(),p7=lf();function m7(e){let t=lU(e);if(t)throw t;return e}function lU(e){if(typeof e=="string"||(0,d7.devAssert)(!1,"Expected name to be a string."),e.startsWith("__"))return new f7.GraphQLError(`Name "${e}" must not begin with "__", which is reserved by GraphQL introspection.`);try{(0,p7.assertName)(e)}catch(t){return t}}});var yU=F(Wa=>{"use strict";m();T();N();Object.defineProperty(Wa,"__esModule",{value:!0});Wa.DangerousChangeType=Wa.BreakingChangeType=void 0;Wa.findBreakingChanges=I7;Wa.findDangerousChanges=g7;var N7=en(),EU=Pr(),fU=hu(),T7=hi(),Kt=Ut(),E7=Ga(),h7=_f(),y7=Qg(),Mn;Wa.BreakingChangeType=Mn;(function(e){e.TYPE_REMOVED="TYPE_REMOVED",e.TYPE_CHANGED_KIND="TYPE_CHANGED_KIND",e.TYPE_REMOVED_FROM_UNION="TYPE_REMOVED_FROM_UNION",e.VALUE_REMOVED_FROM_ENUM="VALUE_REMOVED_FROM_ENUM",e.REQUIRED_INPUT_FIELD_ADDED="REQUIRED_INPUT_FIELD_ADDED",e.IMPLEMENTED_INTERFACE_REMOVED="IMPLEMENTED_INTERFACE_REMOVED",e.FIELD_REMOVED="FIELD_REMOVED",e.FIELD_CHANGED_KIND="FIELD_CHANGED_KIND",e.REQUIRED_ARG_ADDED="REQUIRED_ARG_ADDED",e.ARG_REMOVED="ARG_REMOVED",e.ARG_CHANGED_KIND="ARG_CHANGED_KIND",e.DIRECTIVE_REMOVED="DIRECTIVE_REMOVED",e.DIRECTIVE_ARG_REMOVED="DIRECTIVE_ARG_REMOVED",e.REQUIRED_DIRECTIVE_ARG_ADDED="REQUIRED_DIRECTIVE_ARG_ADDED",e.DIRECTIVE_REPEATABLE_REMOVED="DIRECTIVE_REPEATABLE_REMOVED",e.DIRECTIVE_LOCATION_REMOVED="DIRECTIVE_LOCATION_REMOVED"})(Mn||(Wa.BreakingChangeType=Mn={}));var ha;Wa.DangerousChangeType=ha;(function(e){e.VALUE_ADDED_TO_ENUM="VALUE_ADDED_TO_ENUM",e.TYPE_ADDED_TO_UNION="TYPE_ADDED_TO_UNION",e.OPTIONAL_INPUT_FIELD_ADDED="OPTIONAL_INPUT_FIELD_ADDED",e.OPTIONAL_ARG_ADDED="OPTIONAL_ARG_ADDED",e.IMPLEMENTED_INTERFACE_ADDED="IMPLEMENTED_INTERFACE_ADDED",e.ARG_DEFAULT_VALUE_CHANGE="ARG_DEFAULT_VALUE_CHANGE"})(ha||(Wa.DangerousChangeType=ha={}));function I7(e,t){return hU(e,t).filter(n=>n.type in Mn)}function g7(e,t){return hU(e,t).filter(n=>n.type in ha)}function hU(e,t){return[...v7(e,t),..._7(e,t)]}function _7(e,t){let n=[],r=ws(e.getDirectives(),t.getDirectives());for(let i of r.removed)n.push({type:Mn.DIRECTIVE_REMOVED,description:`${i.name} was removed.`});for(let[i,a]of r.persisted){let o=ws(i.args,a.args);for(let u of o.added)(0,Kt.isRequiredArgument)(u)&&n.push({type:Mn.REQUIRED_DIRECTIVE_ARG_ADDED,description:`A required arg ${u.name} on directive ${i.name} was added.`});for(let u of o.removed)n.push({type:Mn.DIRECTIVE_ARG_REMOVED,description:`${u.name} was removed from ${i.name}.`});i.isRepeatable&&!a.isRepeatable&&n.push({type:Mn.DIRECTIVE_REPEATABLE_REMOVED,description:`Repeatable flag was removed from ${i.name}.`});for(let u of i.locations)a.locations.includes(u)||n.push({type:Mn.DIRECTIVE_LOCATION_REMOVED,description:`${u} was removed from ${i.name}.`})}return n}function v7(e,t){let n=[],r=ws(Object.values(e.getTypeMap()),Object.values(t.getTypeMap()));for(let i of r.removed)n.push({type:Mn.TYPE_REMOVED,description:(0,E7.isSpecifiedScalarType)(i)?`Standard scalar ${i.name} was removed because it is not referenced anymore.`:`${i.name} was removed.`});for(let[i,a]of r.persisted)(0,Kt.isEnumType)(i)&&(0,Kt.isEnumType)(a)?n.push(...D7(i,a)):(0,Kt.isUnionType)(i)&&(0,Kt.isUnionType)(a)?n.push(...O7(i,a)):(0,Kt.isInputObjectType)(i)&&(0,Kt.isInputObjectType)(a)?n.push(...S7(i,a)):(0,Kt.isObjectType)(i)&&(0,Kt.isObjectType)(a)?n.push(...mU(i,a),...pU(i,a)):(0,Kt.isInterfaceType)(i)&&(0,Kt.isInterfaceType)(a)?n.push(...mU(i,a),...pU(i,a)):i.constructor!==a.constructor&&n.push({type:Mn.TYPE_CHANGED_KIND,description:`${i.name} changed from ${NU(i)} to ${NU(a)}.`});return n}function S7(e,t){let n=[],r=ws(Object.values(e.getFields()),Object.values(t.getFields()));for(let i of r.added)(0,Kt.isRequiredInputField)(i)?n.push({type:Mn.REQUIRED_INPUT_FIELD_ADDED,description:`A required field ${i.name} on input type ${e.name} was added.`}):n.push({type:ha.OPTIONAL_INPUT_FIELD_ADDED,description:`An optional field ${i.name} on input type ${e.name} was added.`});for(let i of r.removed)n.push({type:Mn.FIELD_REMOVED,description:`${e.name}.${i.name} was removed.`});for(let[i,a]of r.persisted)Gf(i.type,a.type)||n.push({type:Mn.FIELD_CHANGED_KIND,description:`${e.name}.${i.name} changed type from ${String(i.type)} to ${String(a.type)}.`});return n}function O7(e,t){let n=[],r=ws(e.getTypes(),t.getTypes());for(let i of r.added)n.push({type:ha.TYPE_ADDED_TO_UNION,description:`${i.name} was added to union type ${e.name}.`});for(let i of r.removed)n.push({type:Mn.TYPE_REMOVED_FROM_UNION,description:`${i.name} was removed from union type ${e.name}.`});return n}function D7(e,t){let n=[],r=ws(e.getValues(),t.getValues());for(let i of r.added)n.push({type:ha.VALUE_ADDED_TO_ENUM,description:`${i.name} was added to enum type ${e.name}.`});for(let i of r.removed)n.push({type:Mn.VALUE_REMOVED_FROM_ENUM,description:`${i.name} was removed from enum type ${e.name}.`});return n}function pU(e,t){let n=[],r=ws(e.getInterfaces(),t.getInterfaces());for(let i of r.added)n.push({type:ha.IMPLEMENTED_INTERFACE_ADDED,description:`${i.name} added to interfaces implemented by ${e.name}.`});for(let i of r.removed)n.push({type:Mn.IMPLEMENTED_INTERFACE_REMOVED,description:`${e.name} no longer implements interface ${i.name}.`});return n}function mU(e,t){let n=[],r=ws(Object.values(e.getFields()),Object.values(t.getFields()));for(let i of r.removed)n.push({type:Mn.FIELD_REMOVED,description:`${e.name}.${i.name} was removed.`});for(let[i,a]of r.persisted)n.push(...b7(e,i,a)),$f(i.type,a.type)||n.push({type:Mn.FIELD_CHANGED_KIND,description:`${e.name}.${i.name} changed type from ${String(i.type)} to ${String(a.type)}.`});return n}function b7(e,t,n){let r=[],i=ws(t.args,n.args);for(let a of i.removed)r.push({type:Mn.ARG_REMOVED,description:`${e.name}.${t.name} arg ${a.name} was removed.`});for(let[a,o]of i.persisted)if(!Gf(a.type,o.type))r.push({type:Mn.ARG_CHANGED_KIND,description:`${e.name}.${t.name} arg ${a.name} has changed type from ${String(a.type)} to ${String(o.type)}.`});else if(a.defaultValue!==void 0)if(o.defaultValue===void 0)r.push({type:ha.ARG_DEFAULT_VALUE_CHANGE,description:`${e.name}.${t.name} arg ${a.name} defaultValue was removed.`});else{let l=TU(a.defaultValue,a.type),d=TU(o.defaultValue,o.type);l!==d&&r.push({type:ha.ARG_DEFAULT_VALUE_CHANGE,description:`${e.name}.${t.name} arg ${a.name} has changed defaultValue from ${l} to ${d}.`})}for(let a of i.added)(0,Kt.isRequiredArgument)(a)?r.push({type:Mn.REQUIRED_ARG_ADDED,description:`A required arg ${a.name} on ${e.name}.${t.name} was added.`}):r.push({type:ha.OPTIONAL_ARG_ADDED,description:`An optional arg ${a.name} on ${e.name}.${t.name} was added.`});return r}function $f(e,t){return(0,Kt.isListType)(e)?(0,Kt.isListType)(t)&&$f(e.ofType,t.ofType)||(0,Kt.isNonNullType)(t)&&$f(e,t.ofType):(0,Kt.isNonNullType)(e)?(0,Kt.isNonNullType)(t)&&$f(e.ofType,t.ofType):(0,Kt.isNamedType)(t)&&e.name===t.name||(0,Kt.isNonNullType)(t)&&$f(e,t.ofType)}function Gf(e,t){return(0,Kt.isListType)(e)?(0,Kt.isListType)(t)&&Gf(e.ofType,t.ofType):(0,Kt.isNonNullType)(e)?(0,Kt.isNonNullType)(t)&&Gf(e.ofType,t.ofType)||!(0,Kt.isNonNullType)(t)&&Gf(e.ofType,t):(0,Kt.isNamedType)(t)&&e.name===t.name}function NU(e){if((0,Kt.isScalarType)(e))return"a Scalar type";if((0,Kt.isObjectType)(e))return"an Object type";if((0,Kt.isInterfaceType)(e))return"an Interface type";if((0,Kt.isUnionType)(e))return"a Union type";if((0,Kt.isEnumType)(e))return"an Enum type";if((0,Kt.isInputObjectType)(e))return"an Input type";(0,EU.invariant)(!1,"Unexpected type: "+(0,N7.inspect)(e))}function TU(e,t){let n=(0,h7.astFromValue)(e,t);return n!=null||(0,EU.invariant)(!1),(0,T7.print)((0,y7.sortValueNode)(n))}function ws(e,t){let n=[],r=[],i=[],a=(0,fU.keyMap)(e,({name:u})=>u),o=(0,fU.keyMap)(t,({name:u})=>u);for(let u of e){let l=o[u.name];l===void 0?r.push(u):i.push([u,l])}for(let u of t)a[u.name]===void 0&&n.push(u);return{added:n,persisted:i,removed:r}}});var vU=F(qt=>{"use strict";m();T();N();Object.defineProperty(qt,"__esModule",{value:!0});Object.defineProperty(qt,"BreakingChangeType",{enumerable:!0,get:function(){return yT.BreakingChangeType}});Object.defineProperty(qt,"DangerousChangeType",{enumerable:!0,get:function(){return yT.DangerousChangeType}});Object.defineProperty(qt,"TypeInfo",{enumerable:!0,get:function(){return gU.TypeInfo}});Object.defineProperty(qt,"assertValidName",{enumerable:!0,get:function(){return _U.assertValidName}});Object.defineProperty(qt,"astFromValue",{enumerable:!0,get:function(){return M7.astFromValue}});Object.defineProperty(qt,"buildASTSchema",{enumerable:!0,get:function(){return IU.buildASTSchema}});Object.defineProperty(qt,"buildClientSchema",{enumerable:!0,get:function(){return w7.buildClientSchema}});Object.defineProperty(qt,"buildSchema",{enumerable:!0,get:function(){return IU.buildSchema}});Object.defineProperty(qt,"coerceInputValue",{enumerable:!0,get:function(){return x7.coerceInputValue}});Object.defineProperty(qt,"concatAST",{enumerable:!0,get:function(){return q7.concatAST}});Object.defineProperty(qt,"doTypesOverlap",{enumerable:!0,get:function(){return Gv.doTypesOverlap}});Object.defineProperty(qt,"extendSchema",{enumerable:!0,get:function(){return L7.extendSchema}});Object.defineProperty(qt,"findBreakingChanges",{enumerable:!0,get:function(){return yT.findBreakingChanges}});Object.defineProperty(qt,"findDangerousChanges",{enumerable:!0,get:function(){return yT.findDangerousChanges}});Object.defineProperty(qt,"getIntrospectionQuery",{enumerable:!0,get:function(){return A7.getIntrospectionQuery}});Object.defineProperty(qt,"getOperationAST",{enumerable:!0,get:function(){return R7.getOperationAST}});Object.defineProperty(qt,"getOperationRootType",{enumerable:!0,get:function(){return P7.getOperationRootType}});Object.defineProperty(qt,"introspectionFromSchema",{enumerable:!0,get:function(){return F7.introspectionFromSchema}});Object.defineProperty(qt,"isEqualType",{enumerable:!0,get:function(){return Gv.isEqualType}});Object.defineProperty(qt,"isTypeSubTypeOf",{enumerable:!0,get:function(){return Gv.isTypeSubTypeOf}});Object.defineProperty(qt,"isValidNameError",{enumerable:!0,get:function(){return _U.isValidNameError}});Object.defineProperty(qt,"lexicographicSortSchema",{enumerable:!0,get:function(){return C7.lexicographicSortSchema}});Object.defineProperty(qt,"printIntrospectionSchema",{enumerable:!0,get:function(){return $v.printIntrospectionSchema}});Object.defineProperty(qt,"printSchema",{enumerable:!0,get:function(){return $v.printSchema}});Object.defineProperty(qt,"printType",{enumerable:!0,get:function(){return $v.printType}});Object.defineProperty(qt,"separateOperations",{enumerable:!0,get:function(){return V7.separateOperations}});Object.defineProperty(qt,"stripIgnoredCharacters",{enumerable:!0,get:function(){return j7.stripIgnoredCharacters}});Object.defineProperty(qt,"typeFromAST",{enumerable:!0,get:function(){return U7.typeFromAST}});Object.defineProperty(qt,"valueFromAST",{enumerable:!0,get:function(){return B7.valueFromAST}});Object.defineProperty(qt,"valueFromASTUntyped",{enumerable:!0,get:function(){return k7.valueFromASTUntyped}});Object.defineProperty(qt,"visitWithTypeInfo",{enumerable:!0,get:function(){return gU.visitWithTypeInfo}});var A7=Dv(),R7=wC(),P7=LC(),F7=CC(),w7=BC(),IU=QC(),L7=wv(),C7=zC(),$v=nU(),U7=Qa(),B7=wf(),k7=jI(),M7=_f(),gU=qN(),x7=f_(),q7=rU(),V7=sU(),j7=cU(),Gv=Nf(),_U=dU(),yT=yU()});var _e=F(q=>{"use strict";m();T();N();Object.defineProperty(q,"__esModule",{value:!0});Object.defineProperty(q,"BREAK",{enumerable:!0,get:function(){return Ht.BREAK}});Object.defineProperty(q,"BreakingChangeType",{enumerable:!0,get:function(){return Wt.BreakingChangeType}});Object.defineProperty(q,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Ie.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(q,"DangerousChangeType",{enumerable:!0,get:function(){return Wt.DangerousChangeType}});Object.defineProperty(q,"DirectiveLocation",{enumerable:!0,get:function(){return Ht.DirectiveLocation}});Object.defineProperty(q,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return It.ExecutableDefinitionsRule}});Object.defineProperty(q,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return It.FieldsOnCorrectTypeRule}});Object.defineProperty(q,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return It.FragmentsOnCompositeTypesRule}});Object.defineProperty(q,"GRAPHQL_MAX_INT",{enumerable:!0,get:function(){return Ie.GRAPHQL_MAX_INT}});Object.defineProperty(q,"GRAPHQL_MIN_INT",{enumerable:!0,get:function(){return Ie.GRAPHQL_MIN_INT}});Object.defineProperty(q,"GraphQLBoolean",{enumerable:!0,get:function(){return Ie.GraphQLBoolean}});Object.defineProperty(q,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Ie.GraphQLDeprecatedDirective}});Object.defineProperty(q,"GraphQLDirective",{enumerable:!0,get:function(){return Ie.GraphQLDirective}});Object.defineProperty(q,"GraphQLEnumType",{enumerable:!0,get:function(){return Ie.GraphQLEnumType}});Object.defineProperty(q,"GraphQLError",{enumerable:!0,get:function(){return Qf.GraphQLError}});Object.defineProperty(q,"GraphQLFloat",{enumerable:!0,get:function(){return Ie.GraphQLFloat}});Object.defineProperty(q,"GraphQLID",{enumerable:!0,get:function(){return Ie.GraphQLID}});Object.defineProperty(q,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Ie.GraphQLIncludeDirective}});Object.defineProperty(q,"GraphQLInputObjectType",{enumerable:!0,get:function(){return Ie.GraphQLInputObjectType}});Object.defineProperty(q,"GraphQLInt",{enumerable:!0,get:function(){return Ie.GraphQLInt}});Object.defineProperty(q,"GraphQLInterfaceType",{enumerable:!0,get:function(){return Ie.GraphQLInterfaceType}});Object.defineProperty(q,"GraphQLList",{enumerable:!0,get:function(){return Ie.GraphQLList}});Object.defineProperty(q,"GraphQLNonNull",{enumerable:!0,get:function(){return Ie.GraphQLNonNull}});Object.defineProperty(q,"GraphQLObjectType",{enumerable:!0,get:function(){return Ie.GraphQLObjectType}});Object.defineProperty(q,"GraphQLOneOfDirective",{enumerable:!0,get:function(){return Ie.GraphQLOneOfDirective}});Object.defineProperty(q,"GraphQLScalarType",{enumerable:!0,get:function(){return Ie.GraphQLScalarType}});Object.defineProperty(q,"GraphQLSchema",{enumerable:!0,get:function(){return Ie.GraphQLSchema}});Object.defineProperty(q,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Ie.GraphQLSkipDirective}});Object.defineProperty(q,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Ie.GraphQLSpecifiedByDirective}});Object.defineProperty(q,"GraphQLString",{enumerable:!0,get:function(){return Ie.GraphQLString}});Object.defineProperty(q,"GraphQLUnionType",{enumerable:!0,get:function(){return Ie.GraphQLUnionType}});Object.defineProperty(q,"Kind",{enumerable:!0,get:function(){return Ht.Kind}});Object.defineProperty(q,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return It.KnownArgumentNamesRule}});Object.defineProperty(q,"KnownDirectivesRule",{enumerable:!0,get:function(){return It.KnownDirectivesRule}});Object.defineProperty(q,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return It.KnownFragmentNamesRule}});Object.defineProperty(q,"KnownTypeNamesRule",{enumerable:!0,get:function(){return It.KnownTypeNamesRule}});Object.defineProperty(q,"Lexer",{enumerable:!0,get:function(){return Ht.Lexer}});Object.defineProperty(q,"Location",{enumerable:!0,get:function(){return Ht.Location}});Object.defineProperty(q,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return It.LoneAnonymousOperationRule}});Object.defineProperty(q,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return It.LoneSchemaDefinitionRule}});Object.defineProperty(q,"MaxIntrospectionDepthRule",{enumerable:!0,get:function(){return It.MaxIntrospectionDepthRule}});Object.defineProperty(q,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return It.NoDeprecatedCustomRule}});Object.defineProperty(q,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return It.NoFragmentCyclesRule}});Object.defineProperty(q,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return It.NoSchemaIntrospectionCustomRule}});Object.defineProperty(q,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return It.NoUndefinedVariablesRule}});Object.defineProperty(q,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return It.NoUnusedFragmentsRule}});Object.defineProperty(q,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return It.NoUnusedVariablesRule}});Object.defineProperty(q,"OperationTypeNode",{enumerable:!0,get:function(){return Ht.OperationTypeNode}});Object.defineProperty(q,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return It.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(q,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return It.PossibleFragmentSpreadsRule}});Object.defineProperty(q,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return It.PossibleTypeExtensionsRule}});Object.defineProperty(q,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return It.ProvidedRequiredArgumentsRule}});Object.defineProperty(q,"ScalarLeafsRule",{enumerable:!0,get:function(){return It.ScalarLeafsRule}});Object.defineProperty(q,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return Ie.SchemaMetaFieldDef}});Object.defineProperty(q,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return It.SingleFieldSubscriptionsRule}});Object.defineProperty(q,"Source",{enumerable:!0,get:function(){return Ht.Source}});Object.defineProperty(q,"Token",{enumerable:!0,get:function(){return Ht.Token}});Object.defineProperty(q,"TokenKind",{enumerable:!0,get:function(){return Ht.TokenKind}});Object.defineProperty(q,"TypeInfo",{enumerable:!0,get:function(){return Wt.TypeInfo}});Object.defineProperty(q,"TypeKind",{enumerable:!0,get:function(){return Ie.TypeKind}});Object.defineProperty(q,"TypeMetaFieldDef",{enumerable:!0,get:function(){return Ie.TypeMetaFieldDef}});Object.defineProperty(q,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return Ie.TypeNameMetaFieldDef}});Object.defineProperty(q,"UniqueArgumentDefinitionNamesRule",{enumerable:!0,get:function(){return It.UniqueArgumentDefinitionNamesRule}});Object.defineProperty(q,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return It.UniqueArgumentNamesRule}});Object.defineProperty(q,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return It.UniqueDirectiveNamesRule}});Object.defineProperty(q,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return It.UniqueDirectivesPerLocationRule}});Object.defineProperty(q,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return It.UniqueEnumValueNamesRule}});Object.defineProperty(q,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return It.UniqueFieldDefinitionNamesRule}});Object.defineProperty(q,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return It.UniqueFragmentNamesRule}});Object.defineProperty(q,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return It.UniqueInputFieldNamesRule}});Object.defineProperty(q,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return It.UniqueOperationNamesRule}});Object.defineProperty(q,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return It.UniqueOperationTypesRule}});Object.defineProperty(q,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return It.UniqueTypeNamesRule}});Object.defineProperty(q,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return It.UniqueVariableNamesRule}});Object.defineProperty(q,"ValidationContext",{enumerable:!0,get:function(){return It.ValidationContext}});Object.defineProperty(q,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return It.ValuesOfCorrectTypeRule}});Object.defineProperty(q,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return It.VariablesAreInputTypesRule}});Object.defineProperty(q,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return It.VariablesInAllowedPositionRule}});Object.defineProperty(q,"__Directive",{enumerable:!0,get:function(){return Ie.__Directive}});Object.defineProperty(q,"__DirectiveLocation",{enumerable:!0,get:function(){return Ie.__DirectiveLocation}});Object.defineProperty(q,"__EnumValue",{enumerable:!0,get:function(){return Ie.__EnumValue}});Object.defineProperty(q,"__Field",{enumerable:!0,get:function(){return Ie.__Field}});Object.defineProperty(q,"__InputValue",{enumerable:!0,get:function(){return Ie.__InputValue}});Object.defineProperty(q,"__Schema",{enumerable:!0,get:function(){return Ie.__Schema}});Object.defineProperty(q,"__Type",{enumerable:!0,get:function(){return Ie.__Type}});Object.defineProperty(q,"__TypeKind",{enumerable:!0,get:function(){return Ie.__TypeKind}});Object.defineProperty(q,"assertAbstractType",{enumerable:!0,get:function(){return Ie.assertAbstractType}});Object.defineProperty(q,"assertCompositeType",{enumerable:!0,get:function(){return Ie.assertCompositeType}});Object.defineProperty(q,"assertDirective",{enumerable:!0,get:function(){return Ie.assertDirective}});Object.defineProperty(q,"assertEnumType",{enumerable:!0,get:function(){return Ie.assertEnumType}});Object.defineProperty(q,"assertEnumValueName",{enumerable:!0,get:function(){return Ie.assertEnumValueName}});Object.defineProperty(q,"assertInputObjectType",{enumerable:!0,get:function(){return Ie.assertInputObjectType}});Object.defineProperty(q,"assertInputType",{enumerable:!0,get:function(){return Ie.assertInputType}});Object.defineProperty(q,"assertInterfaceType",{enumerable:!0,get:function(){return Ie.assertInterfaceType}});Object.defineProperty(q,"assertLeafType",{enumerable:!0,get:function(){return Ie.assertLeafType}});Object.defineProperty(q,"assertListType",{enumerable:!0,get:function(){return Ie.assertListType}});Object.defineProperty(q,"assertName",{enumerable:!0,get:function(){return Ie.assertName}});Object.defineProperty(q,"assertNamedType",{enumerable:!0,get:function(){return Ie.assertNamedType}});Object.defineProperty(q,"assertNonNullType",{enumerable:!0,get:function(){return Ie.assertNonNullType}});Object.defineProperty(q,"assertNullableType",{enumerable:!0,get:function(){return Ie.assertNullableType}});Object.defineProperty(q,"assertObjectType",{enumerable:!0,get:function(){return Ie.assertObjectType}});Object.defineProperty(q,"assertOutputType",{enumerable:!0,get:function(){return Ie.assertOutputType}});Object.defineProperty(q,"assertScalarType",{enumerable:!0,get:function(){return Ie.assertScalarType}});Object.defineProperty(q,"assertSchema",{enumerable:!0,get:function(){return Ie.assertSchema}});Object.defineProperty(q,"assertType",{enumerable:!0,get:function(){return Ie.assertType}});Object.defineProperty(q,"assertUnionType",{enumerable:!0,get:function(){return Ie.assertUnionType}});Object.defineProperty(q,"assertValidName",{enumerable:!0,get:function(){return Wt.assertValidName}});Object.defineProperty(q,"assertValidSchema",{enumerable:!0,get:function(){return Ie.assertValidSchema}});Object.defineProperty(q,"assertWrappingType",{enumerable:!0,get:function(){return Ie.assertWrappingType}});Object.defineProperty(q,"astFromValue",{enumerable:!0,get:function(){return Wt.astFromValue}});Object.defineProperty(q,"buildASTSchema",{enumerable:!0,get:function(){return Wt.buildASTSchema}});Object.defineProperty(q,"buildClientSchema",{enumerable:!0,get:function(){return Wt.buildClientSchema}});Object.defineProperty(q,"buildSchema",{enumerable:!0,get:function(){return Wt.buildSchema}});Object.defineProperty(q,"coerceInputValue",{enumerable:!0,get:function(){return Wt.coerceInputValue}});Object.defineProperty(q,"concatAST",{enumerable:!0,get:function(){return Wt.concatAST}});Object.defineProperty(q,"createSourceEventStream",{enumerable:!0,get:function(){return Xa.createSourceEventStream}});Object.defineProperty(q,"defaultFieldResolver",{enumerable:!0,get:function(){return Xa.defaultFieldResolver}});Object.defineProperty(q,"defaultTypeResolver",{enumerable:!0,get:function(){return Xa.defaultTypeResolver}});Object.defineProperty(q,"doTypesOverlap",{enumerable:!0,get:function(){return Wt.doTypesOverlap}});Object.defineProperty(q,"execute",{enumerable:!0,get:function(){return Xa.execute}});Object.defineProperty(q,"executeSync",{enumerable:!0,get:function(){return Xa.executeSync}});Object.defineProperty(q,"extendSchema",{enumerable:!0,get:function(){return Wt.extendSchema}});Object.defineProperty(q,"findBreakingChanges",{enumerable:!0,get:function(){return Wt.findBreakingChanges}});Object.defineProperty(q,"findDangerousChanges",{enumerable:!0,get:function(){return Wt.findDangerousChanges}});Object.defineProperty(q,"formatError",{enumerable:!0,get:function(){return Qf.formatError}});Object.defineProperty(q,"getArgumentValues",{enumerable:!0,get:function(){return Xa.getArgumentValues}});Object.defineProperty(q,"getDirectiveValues",{enumerable:!0,get:function(){return Xa.getDirectiveValues}});Object.defineProperty(q,"getEnterLeaveForKind",{enumerable:!0,get:function(){return Ht.getEnterLeaveForKind}});Object.defineProperty(q,"getIntrospectionQuery",{enumerable:!0,get:function(){return Wt.getIntrospectionQuery}});Object.defineProperty(q,"getLocation",{enumerable:!0,get:function(){return Ht.getLocation}});Object.defineProperty(q,"getNamedType",{enumerable:!0,get:function(){return Ie.getNamedType}});Object.defineProperty(q,"getNullableType",{enumerable:!0,get:function(){return Ie.getNullableType}});Object.defineProperty(q,"getOperationAST",{enumerable:!0,get:function(){return Wt.getOperationAST}});Object.defineProperty(q,"getOperationRootType",{enumerable:!0,get:function(){return Wt.getOperationRootType}});Object.defineProperty(q,"getVariableValues",{enumerable:!0,get:function(){return Xa.getVariableValues}});Object.defineProperty(q,"getVisitFn",{enumerable:!0,get:function(){return Ht.getVisitFn}});Object.defineProperty(q,"graphql",{enumerable:!0,get:function(){return OU.graphql}});Object.defineProperty(q,"graphqlSync",{enumerable:!0,get:function(){return OU.graphqlSync}});Object.defineProperty(q,"introspectionFromSchema",{enumerable:!0,get:function(){return Wt.introspectionFromSchema}});Object.defineProperty(q,"introspectionTypes",{enumerable:!0,get:function(){return Ie.introspectionTypes}});Object.defineProperty(q,"isAbstractType",{enumerable:!0,get:function(){return Ie.isAbstractType}});Object.defineProperty(q,"isCompositeType",{enumerable:!0,get:function(){return Ie.isCompositeType}});Object.defineProperty(q,"isConstValueNode",{enumerable:!0,get:function(){return Ht.isConstValueNode}});Object.defineProperty(q,"isDefinitionNode",{enumerable:!0,get:function(){return Ht.isDefinitionNode}});Object.defineProperty(q,"isDirective",{enumerable:!0,get:function(){return Ie.isDirective}});Object.defineProperty(q,"isEnumType",{enumerable:!0,get:function(){return Ie.isEnumType}});Object.defineProperty(q,"isEqualType",{enumerable:!0,get:function(){return Wt.isEqualType}});Object.defineProperty(q,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return Ht.isExecutableDefinitionNode}});Object.defineProperty(q,"isInputObjectType",{enumerable:!0,get:function(){return Ie.isInputObjectType}});Object.defineProperty(q,"isInputType",{enumerable:!0,get:function(){return Ie.isInputType}});Object.defineProperty(q,"isInterfaceType",{enumerable:!0,get:function(){return Ie.isInterfaceType}});Object.defineProperty(q,"isIntrospectionType",{enumerable:!0,get:function(){return Ie.isIntrospectionType}});Object.defineProperty(q,"isLeafType",{enumerable:!0,get:function(){return Ie.isLeafType}});Object.defineProperty(q,"isListType",{enumerable:!0,get:function(){return Ie.isListType}});Object.defineProperty(q,"isNamedType",{enumerable:!0,get:function(){return Ie.isNamedType}});Object.defineProperty(q,"isNonNullType",{enumerable:!0,get:function(){return Ie.isNonNullType}});Object.defineProperty(q,"isNullableType",{enumerable:!0,get:function(){return Ie.isNullableType}});Object.defineProperty(q,"isObjectType",{enumerable:!0,get:function(){return Ie.isObjectType}});Object.defineProperty(q,"isOutputType",{enumerable:!0,get:function(){return Ie.isOutputType}});Object.defineProperty(q,"isRequiredArgument",{enumerable:!0,get:function(){return Ie.isRequiredArgument}});Object.defineProperty(q,"isRequiredInputField",{enumerable:!0,get:function(){return Ie.isRequiredInputField}});Object.defineProperty(q,"isScalarType",{enumerable:!0,get:function(){return Ie.isScalarType}});Object.defineProperty(q,"isSchema",{enumerable:!0,get:function(){return Ie.isSchema}});Object.defineProperty(q,"isSelectionNode",{enumerable:!0,get:function(){return Ht.isSelectionNode}});Object.defineProperty(q,"isSpecifiedDirective",{enumerable:!0,get:function(){return Ie.isSpecifiedDirective}});Object.defineProperty(q,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Ie.isSpecifiedScalarType}});Object.defineProperty(q,"isType",{enumerable:!0,get:function(){return Ie.isType}});Object.defineProperty(q,"isTypeDefinitionNode",{enumerable:!0,get:function(){return Ht.isTypeDefinitionNode}});Object.defineProperty(q,"isTypeExtensionNode",{enumerable:!0,get:function(){return Ht.isTypeExtensionNode}});Object.defineProperty(q,"isTypeNode",{enumerable:!0,get:function(){return Ht.isTypeNode}});Object.defineProperty(q,"isTypeSubTypeOf",{enumerable:!0,get:function(){return Wt.isTypeSubTypeOf}});Object.defineProperty(q,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return Ht.isTypeSystemDefinitionNode}});Object.defineProperty(q,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return Ht.isTypeSystemExtensionNode}});Object.defineProperty(q,"isUnionType",{enumerable:!0,get:function(){return Ie.isUnionType}});Object.defineProperty(q,"isValidNameError",{enumerable:!0,get:function(){return Wt.isValidNameError}});Object.defineProperty(q,"isValueNode",{enumerable:!0,get:function(){return Ht.isValueNode}});Object.defineProperty(q,"isWrappingType",{enumerable:!0,get:function(){return Ie.isWrappingType}});Object.defineProperty(q,"lexicographicSortSchema",{enumerable:!0,get:function(){return Wt.lexicographicSortSchema}});Object.defineProperty(q,"locatedError",{enumerable:!0,get:function(){return Qf.locatedError}});Object.defineProperty(q,"parse",{enumerable:!0,get:function(){return Ht.parse}});Object.defineProperty(q,"parseConstValue",{enumerable:!0,get:function(){return Ht.parseConstValue}});Object.defineProperty(q,"parseType",{enumerable:!0,get:function(){return Ht.parseType}});Object.defineProperty(q,"parseValue",{enumerable:!0,get:function(){return Ht.parseValue}});Object.defineProperty(q,"print",{enumerable:!0,get:function(){return Ht.print}});Object.defineProperty(q,"printError",{enumerable:!0,get:function(){return Qf.printError}});Object.defineProperty(q,"printIntrospectionSchema",{enumerable:!0,get:function(){return Wt.printIntrospectionSchema}});Object.defineProperty(q,"printLocation",{enumerable:!0,get:function(){return Ht.printLocation}});Object.defineProperty(q,"printSchema",{enumerable:!0,get:function(){return Wt.printSchema}});Object.defineProperty(q,"printSourceLocation",{enumerable:!0,get:function(){return Ht.printSourceLocation}});Object.defineProperty(q,"printType",{enumerable:!0,get:function(){return Wt.printType}});Object.defineProperty(q,"recommendedRules",{enumerable:!0,get:function(){return It.recommendedRules}});Object.defineProperty(q,"resolveObjMapThunk",{enumerable:!0,get:function(){return Ie.resolveObjMapThunk}});Object.defineProperty(q,"resolveReadonlyArrayThunk",{enumerable:!0,get:function(){return Ie.resolveReadonlyArrayThunk}});Object.defineProperty(q,"responsePathAsArray",{enumerable:!0,get:function(){return Xa.responsePathAsArray}});Object.defineProperty(q,"separateOperations",{enumerable:!0,get:function(){return Wt.separateOperations}});Object.defineProperty(q,"specifiedDirectives",{enumerable:!0,get:function(){return Ie.specifiedDirectives}});Object.defineProperty(q,"specifiedRules",{enumerable:!0,get:function(){return It.specifiedRules}});Object.defineProperty(q,"specifiedScalarTypes",{enumerable:!0,get:function(){return Ie.specifiedScalarTypes}});Object.defineProperty(q,"stripIgnoredCharacters",{enumerable:!0,get:function(){return Wt.stripIgnoredCharacters}});Object.defineProperty(q,"subscribe",{enumerable:!0,get:function(){return Xa.subscribe}});Object.defineProperty(q,"syntaxError",{enumerable:!0,get:function(){return Qf.syntaxError}});Object.defineProperty(q,"typeFromAST",{enumerable:!0,get:function(){return Wt.typeFromAST}});Object.defineProperty(q,"validate",{enumerable:!0,get:function(){return It.validate}});Object.defineProperty(q,"validateSchema",{enumerable:!0,get:function(){return Ie.validateSchema}});Object.defineProperty(q,"valueFromAST",{enumerable:!0,get:function(){return Wt.valueFromAST}});Object.defineProperty(q,"valueFromASTUntyped",{enumerable:!0,get:function(){return Wt.valueFromASTUntyped}});Object.defineProperty(q,"version",{enumerable:!0,get:function(){return SU.version}});Object.defineProperty(q,"versionInfo",{enumerable:!0,get:function(){return SU.versionInfo}});Object.defineProperty(q,"visit",{enumerable:!0,get:function(){return Ht.visit}});Object.defineProperty(q,"visitInParallel",{enumerable:!0,get:function(){return Ht.visitInParallel}});Object.defineProperty(q,"visitWithTypeInfo",{enumerable:!0,get:function(){return Wt.visitWithTypeInfo}});var SU=yF(),OU=pC(),Ie=TC(),Ht=hC(),Xa=DC(),It=PC(),Qf=FC(),Wt=vU()});var Hn=F(A=>{"use strict";m();T();N();Object.defineProperty(A,"__esModule",{value:!0});A.FIELD=A.EXTENSIONS=A.EXTENDS=A.EXTERNAL=A.EXECUTION=A.ENUM_VALUE_UPPER=A.ENUM_VALUE=A.ENUM_UPPER=A.ENUM=A.ENTITY_UNION=A.ENTITIES_FIELD=A.ENTITIES=A.EDFS_REDIS_SUBSCRIBE=A.EDFS_REDIS_PUBLISH=A.EDFS_NATS_STREAM_CONFIGURATION=A.EDFS_PUBLISH_RESULT=A.EDFS_NATS_SUBSCRIBE=A.EDFS_NATS_REQUEST=A.EDFS_NATS_PUBLISH=A.EDFS_KAFKA_SUBSCRIBE=A.EDFS_KAFKA_PUBLISH=A.DIRECTIVE_DEFINITION=A.DESCRIPTION_OVERRIDE=A.DEPRECATED_DEFAULT_ARGUMENT_VALUE=A.DEPRECATED=A.DEFAULT_SUBSCRIPTION=A.DEFAULT_QUERY=A.DEFAULT_MUTATION=A.DEFAULT_EDFS_PROVIDER_ID=A.DEFAULT=A.COST=A.CONTEXT=A.CONNECT_FIELD_RESOLVER=A.CONSUMER_NAME=A.CONSUMER_INACTIVE_THRESHOLD=A.CONFIGURE_CHILD_DESCRIPTIONS=A.CONFIGURE_DESCRIPTION=A.CONDITION=A.COMPOSE_DIRECTIVE=A.CHANNELS=A.CHANNEL=A.BOOLEAN_SCALAR=A.BOOLEAN=A.ARGUMENT_DEFINITION_UPPER=A.AUTHENTICATED=A.ARGUMENT=A.ANY_SCALAR=A.AND_UPPER=A.ASSUMED_SIZE=A.AS=void 0;A.NON_NULLABLE_BOOLEAN=A.NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT=A.NAME=A.NOT_APPLICABLE=A.PROVIDER_TYPE_REDIS=A.PROVIDER_TYPE_NATS=A.PROVIDER_TYPE_KAFKA=A.PROPAGATE=A.MUTATION_UPPER=A.MUTATION=A.NUMBER=A.LITERAL_PERIOD=A.LITERAL_NEW_LINE=A.LITERAL_SPACE=A.LIST=A.LINK_PURPOSE=A.LINK_IMPORT=A.LIST_SIZE=A.LINK=A.LEVELS=A.LEFT_PARENTHESIS=A.KEY=A.INTERFACE_OBJECT=A.INTERFACE_UPPER=A.INTERFACE=A.INT_SCALAR=A.INPUT_VALUE=A.INPUT_OBJECT_UPPER=A.INPUT_OBJECT=A.INPUT_FIELD_DEFINITION_UPPER=A.INPUT_FIELD=A.INPUT=A.INLINE_FRAGMENT_UPPER=A.INLINE_FRAGMENT=A.INACCESSIBLE=A.IN_UPPER=A.IMPORT=A.ID_SCALAR=A.HYPHEN_JOIN=A.FROM=A.FRAGMENT_SPREAD_UPPER=A.FRAGMENT_DEFINITION_UPPER=A.FOR=A.FLOAT_SCALAR=A.FIRST_ORDINAL=A.FIELD_DEFINITION_UPPER=A.FIELDS=A.FIELD_SET_SCALAR=A.FIELD_UPPER=A.FIELD_PATH=void 0;A.SUBSCRIPTION_FILTER=A.SUBSCRIPTION_FIELD_CONDITION=A.SUBSCRIPTION=A.SUBJECTS=A.SUBJECT=A.STRING_SCALAR=A.STRING=A.STREAM_NAME=A.STREAM_CONFIGURATION=A.SPECIFIED_BY=A.SLICING_ARGUMENTS=A.SIZED_FIELDS=A.SHAREABLE=A.SERVICE_FIELD=A.SERVICE_OBJECT=A.SEMANTIC_NON_NULL=A.SELECTION_REPRESENTATION=A.SECURITY=A.SCOPE_SCALAR=A.SCOPES=A.SCHEMA_UPPER=A.SCHEMA=A.SCALAR_UPPER=A.SCALAR=A.RESOLVABLE=A.REQUIRES_SCOPES=A.REQUIRES=A.REQUIRE_ONE_SLICING_ARGUMENT=A.REQUIRE_FETCH_REASONS=A.REQUEST=A.REASON=A.QUOTATION_JOIN=A.QUERY_UPPER=A.QUERY=A.PUBLISH=A.PROVIDES=A.PROVIDER_ID=A.PARENT_EXTENSION_DATA_MAP=A.PARENT_DEFINITION_DATA_MAP=A.PARENT_DEFINITION_DATA=A.OVERRIDE=A.OR_UPPER=A.OBJECT_UPPER=A.OBJECT=A.OPERATION_TO_DEFAULT=A.ONE_OF=A.NULL=A.NOT_UPPER=A.NON_NULLABLE_STRING=A.NON_NULLABLE_INT=void 0;A.NON_REPEATABLE_PERSISTED_DIRECTIVES=A.OUTPUT_NODE_KINDS=A.INPUT_NODE_KINDS=A.IGNORED_FIELDS=A.INHERITABLE_DIRECTIVE_NAMES=A.PERSISTED_CLIENT_DIRECTIVES=A.AUTHORIZATION_DIRECTIVES=A.ROOT_TYPE_NAMES=A.EXECUTABLE_DIRECTIVE_LOCATIONS=A.WEIGHT=A.VARIABLE_DEFINITION_UPPER=A.VALUES=A.URL_LOWER=A.UNION_UPPER=A.UNION=A.TYPENAME=A.TOPICS=A.TOPIC=A.TAG=A.SUCCESS=A.SUBSCRIPTION_UPPER=A.SUBSCRIBE=A.SUBSCRIPTION_FILTER_VALUE=A.SUBSCRIPTION_FILTER_CONDITION=void 0;var Du=_e();A.AS="as";A.ASSUMED_SIZE="assumedSize";A.AND_UPPER="AND";A.ANY_SCALAR="_Any";A.ARGUMENT="argument";A.AUTHENTICATED="authenticated";A.ARGUMENT_DEFINITION_UPPER="ARGUMENT_DEFINITION";A.BOOLEAN="boolean";A.BOOLEAN_SCALAR="Boolean";A.CHANNEL="channel";A.CHANNELS="channels";A.COMPOSE_DIRECTIVE="composeDirective";A.CONDITION="condition";A.CONFIGURE_DESCRIPTION="openfed__configureDescription";A.CONFIGURE_CHILD_DESCRIPTIONS="openfed__configureChildDescriptions";A.CONSUMER_INACTIVE_THRESHOLD="consumerInactiveThreshold";A.CONSUMER_NAME="consumerName";A.CONNECT_FIELD_RESOLVER="connect__fieldResolver";A.CONTEXT="context";A.COST="cost";A.DEFAULT="default";A.DEFAULT_EDFS_PROVIDER_ID="default";A.DEFAULT_MUTATION="Mutation";A.DEFAULT_QUERY="Query";A.DEFAULT_SUBSCRIPTION="Subscription";A.DEPRECATED="deprecated";A.DEPRECATED_DEFAULT_ARGUMENT_VALUE="No longer supported";A.DESCRIPTION_OVERRIDE="descriptionOverride";A.DIRECTIVE_DEFINITION="directive definition";A.EDFS_KAFKA_PUBLISH="edfs__kafkaPublish";A.EDFS_KAFKA_SUBSCRIBE="edfs__kafkaSubscribe";A.EDFS_NATS_PUBLISH="edfs__natsPublish";A.EDFS_NATS_REQUEST="edfs__natsRequest";A.EDFS_NATS_SUBSCRIBE="edfs__natsSubscribe";A.EDFS_PUBLISH_RESULT="edfs__PublishResult";A.EDFS_NATS_STREAM_CONFIGURATION="edfs__NatsStreamConfiguration";A.EDFS_REDIS_PUBLISH="edfs__redisPublish";A.EDFS_REDIS_SUBSCRIBE="edfs__redisSubscribe";A.ENTITIES="entities";A.ENTITIES_FIELD="_entities";A.ENTITY_UNION="_Entity";A.ENUM="Enum";A.ENUM_UPPER="ENUM";A.ENUM_VALUE="Enum Value";A.ENUM_VALUE_UPPER="ENUM_VALUE";A.EXECUTION="EXECUTION";A.EXTERNAL="external";A.EXTENDS="extends";A.EXTENSIONS="extensions";A.FIELD="field";A.FIELD_PATH="fieldPath";A.FIELD_UPPER="FIELD";A.FIELD_SET_SCALAR="openfed__FieldSet";A.FIELDS="fields";A.FIELD_DEFINITION_UPPER="FIELD_DEFINITION";A.FIRST_ORDINAL="1st";A.FLOAT_SCALAR="Float";A.FOR="for";A.FRAGMENT_DEFINITION_UPPER="FRAGMENT_DEFINITION";A.FRAGMENT_SPREAD_UPPER="FRAGMENT_SPREAD";A.FROM="from";A.HYPHEN_JOIN=` - -`;A.ID_SCALAR="ID";A.IMPORT="import";A.IN_UPPER="IN";A.INACCESSIBLE="inaccessible";A.INLINE_FRAGMENT="inlineFragment";A.INLINE_FRAGMENT_UPPER="INLINE_FRAGMENT";A.INPUT="Input";A.INPUT_FIELD="Input field";A.INPUT_FIELD_DEFINITION_UPPER="INPUT_FIELD_DEFINITION";A.INPUT_OBJECT="Input Object";A.INPUT_OBJECT_UPPER="INPUT_OBJECT";A.INPUT_VALUE="Input Value";A.INT_SCALAR="Int";A.INTERFACE="Interface";A.INTERFACE_UPPER="INTERFACE";A.INTERFACE_OBJECT="interfaceObject";A.KEY="key";A.LEFT_PARENTHESIS="(";A.LEVELS="levels";A.LINK="link";A.LIST_SIZE="listSize";A.LINK_IMPORT="link__Import";A.LINK_PURPOSE="link__Purpose";A.LIST="list";A.LITERAL_SPACE=" ";A.LITERAL_NEW_LINE=` -`;A.LITERAL_PERIOD=".";A.NUMBER="number";A.MUTATION="Mutation";A.MUTATION_UPPER="MUTATION";A.PROPAGATE="propagate";A.PROVIDER_TYPE_KAFKA="kafka";A.PROVIDER_TYPE_NATS="nats";A.PROVIDER_TYPE_REDIS="redis";A.NOT_APPLICABLE="N/A";A.NAME="name";A.NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT="edfs__PublishResult!";A.NON_NULLABLE_BOOLEAN="Boolean!";A.NON_NULLABLE_INT="Int!";A.NON_NULLABLE_STRING="String!";A.NOT_UPPER="NOT";A.NULL="Null";A.ONE_OF="oneOf";A.OPERATION_TO_DEFAULT="operationTypeNodeToDefaultType";A.OBJECT="Object";A.OBJECT_UPPER="OBJECT";A.OR_UPPER="OR";A.OVERRIDE="override";A.PARENT_DEFINITION_DATA="parentDefinitionDataByTypeName";A.PARENT_DEFINITION_DATA_MAP="parentDefinitionDataByParentTypeName";A.PARENT_EXTENSION_DATA_MAP="parentExtensionDataByParentTypeName";A.PROVIDER_ID="providerId";A.PROVIDES="provides";A.PUBLISH="publish";A.QUERY="Query";A.QUERY_UPPER="QUERY";A.QUOTATION_JOIN='", "';A.REASON="reason";A.REQUEST="request";A.REQUIRE_FETCH_REASONS="openfed__requireFetchReasons";A.REQUIRE_ONE_SLICING_ARGUMENT="requireOneSlicingArgument";A.REQUIRES="requires";A.REQUIRES_SCOPES="requiresScopes";A.RESOLVABLE="resolvable";A.SCALAR="Scalar";A.SCALAR_UPPER="SCALAR";A.SCHEMA="schema";A.SCHEMA_UPPER="SCHEMA";A.SCOPES="scopes";A.SCOPE_SCALAR="openfed__Scope";A.SECURITY="SECURITY";A.SELECTION_REPRESENTATION=" { ... }";A.SEMANTIC_NON_NULL="semanticNonNull";A.SERVICE_OBJECT="_Service";A.SERVICE_FIELD="_service";A.SHAREABLE="shareable";A.SIZED_FIELDS="sizedFields";A.SLICING_ARGUMENTS="slicingArguments";A.SPECIFIED_BY="specifiedBy";A.STREAM_CONFIGURATION="streamConfiguration";A.STREAM_NAME="streamName";A.STRING="string";A.STRING_SCALAR="String";A.SUBJECT="subject";A.SUBJECTS="subjects";A.SUBSCRIPTION="Subscription";A.SUBSCRIPTION_FIELD_CONDITION="openfed__SubscriptionFieldCondition";A.SUBSCRIPTION_FILTER="openfed__subscriptionFilter";A.SUBSCRIPTION_FILTER_CONDITION="openfed__SubscriptionFilterCondition";A.SUBSCRIPTION_FILTER_VALUE="openfed__SubscriptionFilterValue";A.SUBSCRIBE="subscribe";A.SUBSCRIPTION_UPPER="SUBSCRIPTION";A.SUCCESS="success";A.TAG="tag";A.TOPIC="topic";A.TOPICS="topics";A.TYPENAME="__typename";A.UNION="Union";A.UNION_UPPER="UNION";A.URL_LOWER="url";A.VALUES="values";A.VARIABLE_DEFINITION_UPPER="VARIABLE_DEFINITION";A.WEIGHT="weight";A.EXECUTABLE_DIRECTIVE_LOCATIONS=new Set([A.FIELD_UPPER,A.FRAGMENT_DEFINITION_UPPER,A.FRAGMENT_SPREAD_UPPER,A.INLINE_FRAGMENT_UPPER,A.MUTATION_UPPER,A.QUERY_UPPER,A.SUBSCRIPTION_UPPER]);A.ROOT_TYPE_NAMES=new Set([A.MUTATION,A.QUERY,A.SUBSCRIPTION]);A.AUTHORIZATION_DIRECTIVES=new Set([A.AUTHENTICATED,A.REQUIRES_SCOPES]);A.PERSISTED_CLIENT_DIRECTIVES=new Set([A.DEPRECATED,A.ONE_OF,A.SEMANTIC_NON_NULL]);A.INHERITABLE_DIRECTIVE_NAMES=new Set([A.EXTERNAL,A.REQUIRE_FETCH_REASONS,A.SHAREABLE]);A.IGNORED_FIELDS=new Set([A.ENTITIES_FIELD,A.SERVICE_FIELD]);A.INPUT_NODE_KINDS=new Set([Du.Kind.ENUM_TYPE_DEFINITION,Du.Kind.INPUT_OBJECT_TYPE_DEFINITION,Du.Kind.SCALAR_TYPE_DEFINITION]);A.OUTPUT_NODE_KINDS=new Set([Du.Kind.ENUM_TYPE_DEFINITION,Du.Kind.INTERFACE_TYPE_DEFINITION,Du.Kind.OBJECT_TYPE_DEFINITION,Du.Kind.SCALAR_TYPE_DEFINITION,Du.Kind.UNION_TYPE_DEFINITION]);A.NON_REPEATABLE_PERSISTED_DIRECTIVES=new Set([A.INACCESSIBLE,A.ONE_OF,A.SEMANTIC_NON_NULL])});var Lr=F(Wn=>{"use strict";m();T();N();Object.defineProperty(Wn,"__esModule",{value:!0});Wn.operationTypeNodeToDefaultType=void 0;Wn.isObjectLikeNodeEntity=K7;Wn.isNodeInterfaceObject=$7;Wn.stringToNameNode=gT;Wn.stringArrayToNameNodeArray=G7;Wn.setToNameNodeArray=Q7;Wn.stringToNamedTypeNode=DU;Wn.setToNamedTypeNodeArray=Y7;Wn.nodeKindToDirectiveLocation=J7;Wn.isKindAbstract=z7;Wn.extractExecutableDirectiveLocations=H7;Wn.formatDescription=W7;Wn.lexicographicallySortArgumentNodes=bU;Wn.lexicographicallySortSelectionSetNode=IT;Wn.lexicographicallySortDocumentNode=X7;Wn.parse=AU;Wn.safeParse=Z7;var Vt=_e(),Rn=Hn();function K7(e){var t;if(!((t=e.directives)!=null&&t.length))return!1;for(let n of e.directives)if(n.name.value===Rn.KEY)return!0;return!1}function $7(e){var t;if(!((t=e.directives)!=null&&t.length))return!1;for(let n of e.directives)if(n.name.value===Rn.INTERFACE_OBJECT)return!0;return!1}function gT(e){return{kind:Vt.Kind.NAME,value:e}}function G7(e){let t=[];for(let n of e)t.push(gT(n));return t}function Q7(e){let t=[];for(let n of e)t.push(gT(n));return t}function DU(e){return{kind:Vt.Kind.NAMED_TYPE,name:gT(e)}}function Y7(e){let t=[];for(let n of e)t.push(DU(n));return t}function J7(e){switch(e){case Vt.Kind.ARGUMENT:return Rn.ARGUMENT_DEFINITION_UPPER;case Vt.Kind.ENUM_TYPE_DEFINITION:case Vt.Kind.ENUM_TYPE_EXTENSION:return Rn.ENUM_UPPER;case Vt.Kind.ENUM_VALUE_DEFINITION:return Rn.ENUM_VALUE_UPPER;case Vt.Kind.FIELD_DEFINITION:return Rn.FIELD_DEFINITION_UPPER;case Vt.Kind.FRAGMENT_DEFINITION:return Rn.FRAGMENT_DEFINITION_UPPER;case Vt.Kind.FRAGMENT_SPREAD:return Rn.FRAGMENT_SPREAD_UPPER;case Vt.Kind.INLINE_FRAGMENT:return Rn.INLINE_FRAGMENT_UPPER;case Vt.Kind.INPUT_VALUE_DEFINITION:return Rn.INPUT_FIELD_DEFINITION_UPPER;case Vt.Kind.INPUT_OBJECT_TYPE_DEFINITION:case Vt.Kind.INPUT_OBJECT_TYPE_EXTENSION:return Rn.INPUT_OBJECT_UPPER;case Vt.Kind.INTERFACE_TYPE_DEFINITION:case Vt.Kind.INTERFACE_TYPE_EXTENSION:return Rn.INTERFACE_UPPER;case Vt.Kind.OBJECT_TYPE_DEFINITION:case Vt.Kind.OBJECT_TYPE_EXTENSION:return Rn.OBJECT_UPPER;case Vt.Kind.SCALAR_TYPE_DEFINITION:case Vt.Kind.SCALAR_TYPE_EXTENSION:return Rn.SCALAR_UPPER;case Vt.Kind.SCHEMA_DEFINITION:case Vt.Kind.SCHEMA_EXTENSION:return Rn.SCHEMA_UPPER;case Vt.Kind.UNION_TYPE_DEFINITION:case Vt.Kind.UNION_TYPE_EXTENSION:return Rn.UNION_UPPER;default:return e}}Wn.operationTypeNodeToDefaultType=new Map([[Vt.OperationTypeNode.MUTATION,Rn.MUTATION],[Vt.OperationTypeNode.QUERY,Rn.QUERY],[Vt.OperationTypeNode.SUBSCRIPTION,Rn.SUBSCRIPTION]]);function z7(e){return e===Vt.Kind.INTERFACE_TYPE_DEFINITION||e===Vt.Kind.UNION_TYPE_DEFINITION}function H7(e,t){for(let n of e){let r=n.value;Rn.EXECUTABLE_DIRECTIVE_LOCATIONS.has(r)&&t.add(r)}return t}function W7(e){if(!e)return e;let t=e.value;if(e.block){let n=t.split(` -`);n.length>1&&(t=n.map(r=>r.trimStart()).join(` -`))}return $(M({},e),{value:t,block:!0})}function bU(e){return e.arguments?e.arguments.sort((n,r)=>n.name.value.localeCompare(r.name.value)):e.arguments}function IT(e){let t=e.selections;return $(M({},e),{selections:t.sort((n,r)=>{var a,o,u,l;return Rn.NAME in n?Rn.NAME in r?n.name.value.localeCompare(r.name.value):-1:Rn.NAME in r?1:((o=(a=n.typeCondition)==null?void 0:a.name.value)!=null?o:"").localeCompare((l=(u=r.typeCondition)==null?void 0:u.name.value)!=null?l:"")}).map(n=>{switch(n.kind){case Vt.Kind.FIELD:return $(M({},n),{arguments:bU(n),selectionSet:n.selectionSet?IT(n.selectionSet):n.selectionSet});case Vt.Kind.FRAGMENT_SPREAD:return n;case Vt.Kind.INLINE_FRAGMENT:return $(M({},n),{selectionSet:IT(n.selectionSet)})}})})}function X7(e){return $(M({},e),{definitions:e.definitions.map(t=>t.kind!==Vt.Kind.OPERATION_DEFINITION?t:$(M({},t),{selectionSet:IT(t.selectionSet)}))})}function AU(e,t=!0){return(0,Vt.parse)(e,{noLocation:t})}function Z7(e,t=!0){try{return{documentNode:AU(e,t)}}catch(n){return{error:n}}}});var FU=F(jl=>{"use strict";m();T();N();Object.defineProperty(jl,"__esModule",{value:!0});jl.AccumulatorMap=void 0;jl.mapValue=Vl;jl.extendSchemaImpl=eZ;var Be=_e(),Ls=class extends Map{get[Symbol.toStringTag](){return"AccumulatorMap"}add(t,n){let r=this.get(t);r===void 0?this.set(t,[n]):r.push(n)}};jl.AccumulatorMap=Ls;function Vl(e,t){let n=Object.create(null);for(let r of Object.keys(e))n[r]=t(e[r],r);return n}function eZ(e,t,n){var be,ge,Ce,Dt;let r=[],i=new Ls,a=new Ls,o=new Ls,u=new Ls,l=new Ls,d=new Ls,p=[],E,y=[],v=!1;for(let z of t.definitions){switch(z.kind){case Be.Kind.SCHEMA_DEFINITION:E=z;break;case Be.Kind.SCHEMA_EXTENSION:y.push(z);break;case Be.Kind.DIRECTIVE_DEFINITION:p.push(z);break;case Be.Kind.SCALAR_TYPE_DEFINITION:case Be.Kind.OBJECT_TYPE_DEFINITION:case Be.Kind.INTERFACE_TYPE_DEFINITION:case Be.Kind.UNION_TYPE_DEFINITION:case Be.Kind.ENUM_TYPE_DEFINITION:case Be.Kind.INPUT_OBJECT_TYPE_DEFINITION:r.push(z);break;case Be.Kind.SCALAR_TYPE_EXTENSION:i.add(z.name.value,z);break;case Be.Kind.OBJECT_TYPE_EXTENSION:a.add(z.name.value,z);break;case Be.Kind.INTERFACE_TYPE_EXTENSION:o.add(z.name.value,z);break;case Be.Kind.UNION_TYPE_EXTENSION:u.add(z.name.value,z);break;case Be.Kind.ENUM_TYPE_EXTENSION:l.add(z.name.value,z);break;case Be.Kind.INPUT_OBJECT_TYPE_EXTENSION:d.add(z.name.value,z);break;default:continue}v=!0}if(!v)return e;let R=new Map;for(let z of e.types){let ae=te(z);ae&&R.set(z.name,ae)}for(let z of r){let ae=z.name.value;R.set(ae,(be=RU.get(ae))!=null?be:se(z))}for(let[z,ae]of a)R.set(z,new Be.GraphQLObjectType({name:z,interfaces:()=>Xt(ae),fields:()=>rn(ae),extensionASTNodes:ae}));if(n!=null&&n.addInvalidExtensionOrphans){for(let[z,ae]of o)R.set(z,new Be.GraphQLInterfaceType({name:z,interfaces:()=>Xt(ae),fields:()=>rn(ae),extensionASTNodes:ae}));for(let[z,ae]of l)R.set(z,new Be.GraphQLEnumType({name:z,values:hn(ae),extensionASTNodes:ae}));for(let[z,ae]of u)R.set(z,new Be.GraphQLUnionType({name:z,types:()=>Ln(ae),extensionASTNodes:ae}));for(let[z,ae]of i)R.set(z,new Be.GraphQLScalarType({name:z,extensionASTNodes:ae}));for(let[z,ae]of d)R.set(z,new Be.GraphQLInputObjectType({name:z,fields:()=>nr(ae),extensionASTNodes:ae}))}let B=M(M({query:e.query&&J(e.query),mutation:e.mutation&&J(e.mutation),subscription:e.subscription&&J(e.subscription)},E&&on([E])),on(y));return $(M({description:(Ce=(ge=E==null?void 0:E.description)==null?void 0:ge.value)!=null?Ce:e.description},B),{types:Array.from(R.values()),directives:[...e.directives.map(ne),...p.map(Ft)],extensions:e.extensions,astNode:E!=null?E:e.astNode,extensionASTNodes:e.extensionASTNodes.concat(y),assumeValid:(Dt=n==null?void 0:n.assumeValid)!=null?Dt:!1});function V(z){return(0,Be.isListType)(z)?new Be.GraphQLList(V(z.ofType)):(0,Be.isNonNullType)(z)?new Be.GraphQLNonNull(V(z.ofType)):J(z)}function J(z){return R.get(z.name)}function ne(z){if((0,Be.isSpecifiedDirective)(z))return z;let ae=z.toConfig();return new Be.GraphQLDirective($(M({},ae),{args:Vl(ae.args,ht)}))}function te(z){if((0,Be.isIntrospectionType)(z)||(0,Be.isSpecifiedScalarType)(z))return z;if((0,Be.isScalarType)(z))return he(z);if((0,Be.isObjectType)(z))return we(z);if((0,Be.isInterfaceType)(z))return Qe(z);if((0,Be.isUnionType)(z))return Z(z);if((0,Be.isEnumType)(z))return Ee(z);if((0,Be.isInputObjectType)(z))return Ne(z)}function Ne(z){var He;let ae=z.toConfig(),je=(He=d.get(ae.name))!=null?He:[];return new Be.GraphQLInputObjectType($(M({},ae),{fields:()=>M(M({},Vl(ae.fields,Mt=>$(M({},Mt),{type:V(Mt.type)}))),nr(je)),extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function Ee(z){var He;let ae=z.toConfig(),je=(He=l.get(z.name))!=null?He:[];return new Be.GraphQLEnumType($(M({},ae),{values:M(M({},ae.values),hn(je)),extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function he(z){var Mt,it;let ae=z.toConfig(),je=(Mt=i.get(ae.name))!=null?Mt:[],He=ae.specifiedByURL;for(let wt of je)He=(it=PU(wt))!=null?it:He;return new Be.GraphQLScalarType($(M({},ae),{specifiedByURL:He,extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function we(z){var He;let ae=z.toConfig(),je=(He=a.get(ae.name))!=null?He:[];return new Be.GraphQLObjectType($(M({},ae),{interfaces:()=>[...z.getInterfaces().map(J),...Xt(je)],fields:()=>M(M({},Vl(ae.fields,Se)),rn(je)),extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function Qe(z){var He;let ae=z.toConfig(),je=(He=o.get(ae.name))!=null?He:[];return new Be.GraphQLInterfaceType($(M({},ae),{interfaces:()=>[...z.getInterfaces().map(J),...Xt(je)],fields:()=>M(M({},Vl(ae.fields,Se)),rn(je)),extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function Z(z){var He;let ae=z.toConfig(),je=(He=u.get(ae.name))!=null?He:[];return new Be.GraphQLUnionType($(M({},ae),{types:()=>[...z.getTypes().map(J),...Ln(je)],extensionASTNodes:ae.extensionASTNodes.concat(je)}))}function Se(z){return $(M({},z),{type:V(z.type),args:z.args&&Vl(z.args,ht)})}function ht(z){return $(M({},z),{type:V(z.type)})}function on(z){var je;let ae={};for(let He of z){let Mt=(je=He.operationTypes)!=null?je:[];for(let it of Mt)ae[it.operation]=En(it.type)}return ae}function En(z){var He;let ae=z.name.value,je=(He=RU.get(ae))!=null?He:R.get(ae);if(je===void 0)throw new Error(`Unknown type: "${ae}".`);return je}function un(z){return z.kind===Be.Kind.LIST_TYPE?new Be.GraphQLList(un(z.type)):z.kind===Be.Kind.NON_NULL_TYPE?new Be.GraphQLNonNull(un(z.type)):En(z)}function Ft(z){var ae;return new Be.GraphQLDirective({name:z.name.value,description:(ae=z.description)==null?void 0:ae.value,locations:z.locations.map(({value:je})=>je),isRepeatable:z.repeatable,args:xr(z.arguments),astNode:z})}function rn(z){var je,He;let ae=Object.create(null);for(let Mt of z){let it=(je=Mt.fields)!=null?je:[];for(let wt of it)ae[wt.name.value]={type:un(wt.type),description:(He=wt.description)==null?void 0:He.value,args:xr(wt.arguments),deprecationReason:_T(wt),astNode:wt}}return ae}function xr(z){var He;let ae=z!=null?z:[],je=Object.create(null);for(let Mt of ae){let it=un(Mt.type);je[Mt.name.value]={type:it,description:(He=Mt.description)==null?void 0:He.value,defaultValue:(0,Be.valueFromAST)(Mt.defaultValue,it),deprecationReason:_T(Mt),astNode:Mt}}return je}function nr(z){var je,He;let ae=Object.create(null);for(let Mt of z){let it=(je=Mt.fields)!=null?je:[];for(let wt of it){let ps=un(wt.type);ae[wt.name.value]={type:ps,description:(He=wt.description)==null?void 0:He.value,defaultValue:(0,Be.valueFromAST)(wt.defaultValue,ps),deprecationReason:_T(wt),astNode:wt}}}return ae}function hn(z){var je,He;let ae=Object.create(null);for(let Mt of z){let it=(je=Mt.values)!=null?je:[];for(let wt of it)ae[wt.name.value]={description:(He=wt.description)==null?void 0:He.value,deprecationReason:_T(wt),astNode:wt}}return ae}function Xt(z){return z.flatMap(ae=>{var je,He;return(He=(je=ae.interfaces)==null?void 0:je.map(En))!=null?He:[]})}function Ln(z){return z.flatMap(ae=>{var je,He;return(He=(je=ae.types)==null?void 0:je.map(En))!=null?He:[]})}function se(z){var je,He,Mt,it,wt,ps,zr,ms,sl,Ba,gr,li;let ae=z.name.value;switch(z.kind){case Be.Kind.OBJECT_TYPE_DEFINITION:{let jt=(je=a.get(ae))!=null?je:[],_r=[z,...jt];return a.delete(ae),new Be.GraphQLObjectType({name:ae,description:(He=z.description)==null?void 0:He.value,interfaces:()=>Xt(_r),fields:()=>rn(_r),astNode:z,extensionASTNodes:jt})}case Be.Kind.INTERFACE_TYPE_DEFINITION:{let jt=(Mt=o.get(ae))!=null?Mt:[],_r=[z,...jt];return o.delete(ae),new Be.GraphQLInterfaceType({name:ae,description:(it=z.description)==null?void 0:it.value,interfaces:()=>Xt(_r),fields:()=>rn(_r),astNode:z,extensionASTNodes:jt})}case Be.Kind.ENUM_TYPE_DEFINITION:{let jt=(wt=l.get(ae))!=null?wt:[],_r=[z,...jt];return l.delete(ae),new Be.GraphQLEnumType({name:ae,description:(ps=z.description)==null?void 0:ps.value,values:hn(_r),astNode:z,extensionASTNodes:jt})}case Be.Kind.UNION_TYPE_DEFINITION:{let jt=(zr=u.get(ae))!=null?zr:[],_r=[z,...jt];return u.delete(ae),new Be.GraphQLUnionType({name:ae,description:(ms=z.description)==null?void 0:ms.value,types:()=>Ln(_r),astNode:z,extensionASTNodes:jt})}case Be.Kind.SCALAR_TYPE_DEFINITION:{let jt=(sl=i.get(ae))!=null?sl:[];return i.delete(ae),new Be.GraphQLScalarType({name:ae,description:(Ba=z.description)==null?void 0:Ba.value,specifiedByURL:PU(z),astNode:z,extensionASTNodes:jt})}case Be.Kind.INPUT_OBJECT_TYPE_DEFINITION:{let jt=(gr=d.get(ae))!=null?gr:[],_r=[z,...jt];return d.delete(ae),new Be.GraphQLInputObjectType({name:ae,description:(li=z.description)==null?void 0:li.value,fields:()=>nr(_r),astNode:z,extensionASTNodes:jt})}}}}var RU=new Map([...Be.specifiedScalarTypes,...Be.introspectionTypes].map(e=>[e.name,e]));function _T(e){let t=(0,Be.getDirectiveValues)(Be.GraphQLDeprecatedDirective,e);return t==null?void 0:t.reason}function PU(e){let t=(0,Be.getDirectiveValues)(Be.GraphQLSpecifiedByDirective,e);return t==null?void 0:t.url}});var Yv=F(Qv=>{"use strict";m();T();N();Object.defineProperty(Qv,"__esModule",{value:!0});Qv.buildASTSchema=rZ;var wU=_e(),tZ=Ml(),nZ=FU();function rZ(e,t){(t==null?void 0:t.assumeValid)!==!0&&(t==null?void 0:t.assumeValidSDL)!==!0&&(0,tZ.assertValidSDL)(e);let n={description:void 0,types:[],directives:[],extensions:Object.create(null),extensionASTNodes:[],assumeValid:!1},r=(0,nZ.extendSchemaImpl)(n,e,t);if(r.astNode==null)for(let a of r.types)switch(a.name){case"Query":r.query=a;break;case"Mutation":r.mutation=a;break;case"Subscription":r.subscription=a;break}let i=[...r.directives,...wU.specifiedDirectives.filter(a=>r.directives.every(o=>o.name!==a.name))];return new wU.GraphQLSchema($(M({},r),{directives:i}))}});var Kl=F(bu=>{"use strict";m();T();N();Object.defineProperty(bu,"__esModule",{value:!0});bu.MAX_INT32=bu.MAX_SUBSCRIPTION_FILTER_DEPTH=bu.MAXIMUM_TYPE_NESTING=void 0;bu.MAXIMUM_TYPE_NESTING=30;bu.MAX_SUBSCRIPTION_FILTER_DEPTH=5;bu.MAX_INT32=ln(2,31)-1});var Cr=F(cr=>{"use strict";m();T();N();Object.defineProperty(cr,"__esModule",{value:!0});cr.getOrThrowError=aZ;cr.getEntriesNotInHashSet=sZ;cr.numberToOrdinal=oZ;cr.addIterableToSet=uZ;cr.addOptionalIterableToSet=cZ;cr.addSets=lZ;cr.kindToNodeType=dZ;cr.getValueOrDefault=fZ;cr.add=pZ;cr.generateSimpleDirective=mZ;cr.generateRequiresScopesDirective=NZ;cr.generateSemanticNonNullDirective=TZ;cr.copyObjectValueMap=EZ;cr.addNewObjectValueMapEntries=hZ;cr.copyArrayValueMap=yZ;cr.addMapEntries=IZ;cr.getFirstEntry=gZ;var $t=_e(),Tr=Hn(),iZ=Gi(),Yf=Lr();function aZ(e,t,n){let r=e.get(t);if(r===void 0)throw(0,iZ.invalidKeyFatalError)(t,n);return r}function sZ(e,t){let n=[];for(let r of e)t.has(r)||n.push(r);return n}function oZ(e){let t=e.toString();switch(t[t.length-1]){case"1":return`${t}st`;case"2":return`${t}nd`;case"3":return`${t}rd`;default:return`${t}th`}}function uZ({source:e,target:t}){for(let n of e)t.add(n)}function cZ({source:e,target:t}){if(e)for(let n of e)t.add(n)}function lZ(e,t){let n=new Set(e);for(let r of t)n.add(r);return n}function dZ(e){switch(e){case $t.Kind.BOOLEAN:return Tr.BOOLEAN_SCALAR;case $t.Kind.ENUM:case $t.Kind.ENUM_TYPE_DEFINITION:return Tr.ENUM;case $t.Kind.ENUM_TYPE_EXTENSION:return"Enum extension";case $t.Kind.ENUM_VALUE_DEFINITION:return Tr.ENUM_VALUE;case $t.Kind.FIELD_DEFINITION:return Tr.FIELD;case $t.Kind.FLOAT:return Tr.FLOAT_SCALAR;case $t.Kind.INPUT_OBJECT_TYPE_DEFINITION:return Tr.INPUT_OBJECT;case $t.Kind.INPUT_OBJECT_TYPE_EXTENSION:return"Input Object extension";case $t.Kind.INPUT_VALUE_DEFINITION:return Tr.INPUT_VALUE;case $t.Kind.INT:return Tr.INT_SCALAR;case $t.Kind.INTERFACE_TYPE_DEFINITION:return Tr.INTERFACE;case $t.Kind.INTERFACE_TYPE_EXTENSION:return"Interface extension";case $t.Kind.NULL:return Tr.NULL;case $t.Kind.OBJECT:case $t.Kind.OBJECT_TYPE_DEFINITION:return Tr.OBJECT;case $t.Kind.OBJECT_TYPE_EXTENSION:return"Object extension";case $t.Kind.STRING:return Tr.STRING_SCALAR;case $t.Kind.SCALAR_TYPE_DEFINITION:return Tr.SCALAR;case $t.Kind.SCALAR_TYPE_EXTENSION:return"Scalar extension";case $t.Kind.UNION_TYPE_DEFINITION:return Tr.UNION;case $t.Kind.UNION_TYPE_EXTENSION:return"Union extension";default:return e}}function fZ(e,t,n){let r=e.get(t);if(r)return r;let i=n();return e.set(t,i),i}function pZ(e,t){return e.has(t)?!1:(e.add(t),!0)}function mZ(e){return{kind:$t.Kind.DIRECTIVE,name:(0,Yf.stringToNameNode)(e)}}function NZ(e){let t=[];for(let n of e){let r=[];for(let i of n)r.push({kind:$t.Kind.STRING,value:i});t.push({kind:$t.Kind.LIST,values:r})}return{kind:$t.Kind.DIRECTIVE,name:(0,Yf.stringToNameNode)(Tr.REQUIRES_SCOPES),arguments:[{kind:$t.Kind.ARGUMENT,name:(0,Yf.stringToNameNode)(Tr.SCOPES),value:{kind:$t.Kind.LIST,values:t}}]}}function TZ(e){let t=Array.from(e).sort((r,i)=>r-i),n=new Array;for(let r of t)n.push({kind:$t.Kind.INT,value:r.toString()});return{kind:$t.Kind.DIRECTIVE,name:(0,Yf.stringToNameNode)(Tr.SEMANTIC_NON_NULL),arguments:[{kind:$t.Kind.ARGUMENT,name:(0,Yf.stringToNameNode)(Tr.LEVELS),value:{kind:$t.Kind.LIST,values:n}}]}}function EZ(e){let t=new Map;for(let[n,r]of e)t.set(n,M({},r));return t}function hZ(e,t){for(let[n,r]of e)t.set(n,M({},r))}function yZ(e){let t=new Map;for(let[n,r]of e)t.set(n,[...r]);return t}function IZ({source:e,target:t}){for(let[n,r]of e)t.set(n,r)}function gZ(e){let{value:t,done:n}=e.values().next();if(!n)return t}});var Jf=F(vT=>{"use strict";m();T();N();Object.defineProperty(vT,"__esModule",{value:!0});vT.ExtensionType=void 0;var LU;(function(e){e[e.EXTENDS=0]="EXTENDS",e[e.NONE=1]="NONE",e[e.REAL=2]="REAL"})(LU||(vT.ExtensionType=LU={}))});var Au=F(Br=>{"use strict";m();T();N();Object.defineProperty(Br,"__esModule",{value:!0});Br.getMutableDirectiveDefinitionNode=vZ;Br.getMutableEnumNode=SZ;Br.getMutableEnumValueNode=OZ;Br.getMutableFieldNode=DZ;Br.getMutableInputObjectNode=bZ;Br.getMutableInputValueNode=AZ;Br.getMutableInterfaceNode=RZ;Br.getMutableObjectNode=PZ;Br.getMutableObjectExtensionNode=FZ;Br.getMutableScalarNode=wZ;Br.getMutableTypeNode=Jv;Br.getMutableUnionNode=LZ;Br.getTypeNodeNamedTypeName=zv;Br.getNamedTypeNode=UU;var Ur=_e(),$l=Lr(),CU=Gi(),_Z=Kl();function vZ(e){return{arguments:[],kind:e.kind,locations:[],name:M({},e.name),repeatable:e.repeatable,description:(0,$l.formatDescription)(e.description)}}function SZ(e){return{kind:Ur.Kind.ENUM_TYPE_DEFINITION,name:M({},e)}}function OZ(e){return{directives:[],kind:e.kind,name:M({},e.name),description:(0,$l.formatDescription)(e.description)}}function DZ(e,t,n){return{arguments:[],directives:[],kind:e.kind,name:M({},e.name),type:Jv(e.type,t,n),description:(0,$l.formatDescription)(e.description)}}function bZ(e){return{kind:Ur.Kind.INPUT_OBJECT_TYPE_DEFINITION,name:M({},e)}}function AZ(e,t,n){return{directives:[],kind:e.kind,name:M({},e.name),type:Jv(e.type,t,n),defaultValue:e.defaultValue,description:(0,$l.formatDescription)(e.description)}}function RZ(e){return{kind:Ur.Kind.INTERFACE_TYPE_DEFINITION,name:M({},e)}}function PZ(e){return{kind:Ur.Kind.OBJECT_TYPE_DEFINITION,name:M({},e)}}function FZ(e){let t=e.kind===Ur.Kind.OBJECT_TYPE_DEFINITION?e.description:void 0;return{kind:Ur.Kind.OBJECT_TYPE_EXTENSION,name:M({},e.name),description:(0,$l.formatDescription)(t)}}function wZ(e){return{kind:Ur.Kind.SCALAR_TYPE_DEFINITION,name:M({},e)}}function Jv(e,t,n){let r={kind:e.kind},i=r;for(let a=0;a<_Z.MAXIMUM_TYPE_NESTING;a++)switch(e.kind){case Ur.Kind.NAMED_TYPE:return i.name=M({},e.name),r;case Ur.Kind.LIST_TYPE:i.kind=e.kind,i.type={kind:e.type.kind},i=i.type,e=e.type;continue;case Ur.Kind.NON_NULL_TYPE:i.kind=e.kind,i.type={kind:e.type.kind},i=i.type,e=e.type;continue;default:throw(0,CU.unexpectedTypeNodeKindFatalError)(t)}return n.push((0,CU.maximumTypeNestingExceededError)(t)),{kind:Ur.Kind.NAMED_TYPE,name:(0,$l.stringToNameNode)(zv(e))}}function LZ(e){return{kind:Ur.Kind.UNION_TYPE_DEFINITION,name:M({},e)}}function zv(e){switch(e.kind){case Ur.Kind.NAMED_TYPE:return e.name.value;case Ur.Kind.LIST_TYPE:case Ur.Kind.NON_NULL_TYPE:return zv(e.type)}}function UU(e){switch(e.kind){case Ur.Kind.NAMED_TYPE:return e;default:return UU(e.type)}}});var ST=F(Gl=>{"use strict";m();T();N();Object.defineProperty(Gl,"__esModule",{value:!0});Gl.REQUIRED_FIELDSET_TYPE_NODE=Gl.REQUIRED_STRING_TYPE_NODE=void 0;var BU=_e(),kU=Lr(),MU=Hn();Gl.REQUIRED_STRING_TYPE_NODE={kind:BU.Kind.NON_NULL_TYPE,type:(0,kU.stringToNamedTypeNode)(MU.STRING_SCALAR)};Gl.REQUIRED_FIELDSET_TYPE_NODE={kind:BU.Kind.NON_NULL_TYPE,type:(0,kU.stringToNamedTypeNode)(MU.FIELD_SET_SCALAR)}});var zf=F(ke=>{"use strict";m();T();N();Object.defineProperty(ke,"__esModule",{value:!0});ke.TAG_DEFINITION=ke.SUBSCRIPTION_FILTER_DEFINITION=ke.SPECIFIED_BY_DEFINITION=ke.SHAREABLE_DEFINITION=ke.SEMANTIC_NON_NULL_DEFINITION=ke.REQUIRES_SCOPES_DEFINITION=ke.REQUIRES_DEFINITION=ke.REQUIRE_FETCH_REASONS_DEFINITION=ke.PROVIDES_DEFINITION=ke.OVERRIDE_DEFINITION=ke.ONE_OF_DEFINITION=ke.LIST_SIZE_DEFINITION=ke.LINK_DEFINITION=ke.KEY_DEFINITION=ke.INTERFACE_OBJECT_DEFINITION=ke.INACCESSIBLE_DEFINITION=ke.EDFS_REDIS_SUBSCRIBE_DEFINITION=ke.EDFS_REDIS_PUBLISH_DEFINITION=ke.EDFS_NATS_SUBSCRIBE_DEFINITION=ke.EDFS_NATS_REQUEST_DEFINITION=ke.EDFS_NATS_PUBLISH_DEFINITION=ke.EDFS_KAFKA_SUBSCRIBE_DEFINITION=ke.EDFS_KAFKA_PUBLISH_DEFINITION=ke.EXTERNAL_DEFINITION=ke.EXTENDS_DEFINITION=ke.DEPRECATED_DEFINITION=ke.COST_DEFINITION=ke.CONNECT_FIELD_RESOLVER_DEFINITION=ke.CONFIGURE_DESCRIPTION_DEFINITION=ke.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION=ke.COMPOSE_DIRECTIVE_DEFINITION=ke.AUTHENTICATED_DEFINITION=void 0;var le=_e(),oe=Lr(),G=Hn(),Sr=ST();ke.AUTHENTICATED_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ENUM_UPPER,G.FIELD_DEFINITION_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER]),name:(0,oe.stringToNameNode)(G.AUTHENTICATED),repeatable:!1};ke.COMPOSE_DIRECTIVE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.NAME),type:Sr.REQUIRED_STRING_TYPE_NODE}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.SCHEMA_UPPER]),name:(0,oe.stringToNameNode)(G.COMPOSE_DIRECTIVE),repeatable:!0};ke.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROPAGATE),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.BOOLEAN_SCALAR)},defaultValue:{kind:le.Kind.BOOLEAN,value:!0}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ENUM_UPPER,G.INPUT_OBJECT_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.CONFIGURE_CHILD_DESCRIPTIONS),repeatable:!1};ke.CONFIGURE_DESCRIPTION_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROPAGATE),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.BOOLEAN_SCALAR)},defaultValue:{kind:le.Kind.BOOLEAN,value:!0}},{directives:[],kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.DESCRIPTION_OVERRIDE),type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ARGUMENT_DEFINITION_UPPER,G.ENUM_UPPER,G.ENUM_VALUE_UPPER,G.FIELD_DEFINITION_UPPER,G.INTERFACE_UPPER,G.INPUT_OBJECT_UPPER,G.INPUT_FIELD_DEFINITION_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER,G.SCHEMA_UPPER,G.UNION_UPPER]),name:(0,oe.stringToNameNode)(G.CONFIGURE_DESCRIPTION),repeatable:!1};ke.CONNECT_FIELD_RESOLVER_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.CONTEXT),type:Sr.REQUIRED_FIELDSET_TYPE_NODE}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER]),name:(0,oe.stringToNameNode)(G.CONNECT_FIELD_RESOLVER),repeatable:!1};ke.COST_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.WEIGHT),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.INT_SCALAR)}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ARGUMENT_DEFINITION_UPPER,G.ENUM_UPPER,G.FIELD_DEFINITION_UPPER,G.INPUT_FIELD_DEFINITION_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER]),name:(0,oe.stringToNameNode)(G.COST),repeatable:!1};ke.DEPRECATED_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.REASON),type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR),defaultValue:{kind:le.Kind.STRING,value:le.DEFAULT_DEPRECATION_REASON}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ARGUMENT_DEFINITION_UPPER,G.ENUM_VALUE_UPPER,G.FIELD_DEFINITION_UPPER,G.INPUT_FIELD_DEFINITION_UPPER]),name:(0,oe.stringToNameNode)(G.DEPRECATED),repeatable:!1};ke.EXTENDS_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.INTERFACE_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.EXTENDS),repeatable:!1};ke.EXTERNAL_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.EXTERNAL),repeatable:!1};ke.EDFS_KAFKA_PUBLISH_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.TOPIC),type:Sr.REQUIRED_STRING_TYPE_NODE},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:Sr.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_KAFKA_PUBLISH),repeatable:!1};ke.EDFS_KAFKA_SUBSCRIBE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.TOPICS),type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:Sr.REQUIRED_STRING_TYPE_NODE}}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:Sr.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_KAFKA_SUBSCRIBE),repeatable:!1};ke.EDFS_NATS_PUBLISH_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SUBJECT),type:Sr.REQUIRED_STRING_TYPE_NODE},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)},defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_NATS_PUBLISH),repeatable:!1};ke.EDFS_NATS_REQUEST_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SUBJECT),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)},defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_NATS_REQUEST),repeatable:!1};ke.EDFS_NATS_SUBSCRIBE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SUBJECTS),type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:Sr.REQUIRED_STRING_TYPE_NODE}}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:Sr.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.STREAM_CONFIGURATION),type:(0,oe.stringToNamedTypeNode)(G.EDFS_NATS_STREAM_CONFIGURATION)}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_NATS_SUBSCRIBE),repeatable:!1};ke.EDFS_REDIS_PUBLISH_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.CHANNEL),type:Sr.REQUIRED_STRING_TYPE_NODE},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:Sr.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_REDIS_PUBLISH),repeatable:!1};ke.EDFS_REDIS_SUBSCRIBE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.CHANNELS),type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:Sr.REQUIRED_STRING_TYPE_NODE}}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.PROVIDER_ID),type:Sr.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:le.Kind.STRING,value:G.DEFAULT_EDFS_PROVIDER_ID}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.EDFS_REDIS_SUBSCRIBE),repeatable:!1};ke.INACCESSIBLE_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ARGUMENT_DEFINITION_UPPER,G.ENUM_UPPER,G.ENUM_VALUE_UPPER,G.FIELD_DEFINITION_UPPER,G.INPUT_FIELD_DEFINITION_UPPER,G.INPUT_OBJECT_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER,G.UNION_UPPER]),name:(0,oe.stringToNameNode)(G.INACCESSIBLE),repeatable:!1};ke.INTERFACE_OBJECT_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.INTERFACE_OBJECT),repeatable:!1};ke.KEY_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.FIELDS),type:Sr.REQUIRED_FIELDSET_TYPE_NODE},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.RESOLVABLE),type:(0,oe.stringToNamedTypeNode)(G.BOOLEAN_SCALAR),defaultValue:{kind:le.Kind.BOOLEAN,value:!0}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.INTERFACE_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.KEY),repeatable:!0};ke.LINK_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.URL_LOWER),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.AS),type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.FOR),type:(0,oe.stringToNamedTypeNode)(G.LINK_PURPOSE)},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.IMPORT),type:{kind:le.Kind.LIST_TYPE,type:(0,oe.stringToNamedTypeNode)(G.LINK_IMPORT)}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.SCHEMA_UPPER]),name:(0,oe.stringToNameNode)(G.LINK),repeatable:!0};ke.LIST_SIZE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.ASSUMED_SIZE),type:(0,oe.stringToNamedTypeNode)(G.INT_SCALAR)},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SLICING_ARGUMENTS),type:{kind:le.Kind.LIST_TYPE,type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SIZED_FIELDS),type:{kind:le.Kind.LIST_TYPE,type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}}},{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.REQUIRE_ONE_SLICING_ARGUMENT),type:(0,oe.stringToNamedTypeNode)(G.BOOLEAN_SCALAR),defaultValue:{kind:le.Kind.BOOLEAN,value:!0}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER]),name:(0,oe.stringToNameNode)(G.LIST_SIZE),repeatable:!1};ke.ONE_OF_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.INPUT_OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.ONE_OF),repeatable:!1};ke.OVERRIDE_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.FROM),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER]),name:(0,oe.stringToNameNode)(G.OVERRIDE),repeatable:!1};ke.PROVIDES_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.FIELDS),type:Sr.REQUIRED_FIELDSET_TYPE_NODE}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.PROVIDES),repeatable:!1};ke.REQUIRE_FETCH_REASONS_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.REQUIRE_FETCH_REASONS),repeatable:!0};ke.REQUIRES_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.FIELDS),type:Sr.REQUIRED_FIELDSET_TYPE_NODE}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.REQUIRES),repeatable:!1};ke.REQUIRES_SCOPES_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.SCOPES),type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.SCOPE_SCALAR)}}}}}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ENUM_UPPER,G.FIELD_DEFINITION_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER]),name:(0,oe.stringToNameNode)(G.REQUIRES_SCOPES),repeatable:!1};ke.SEMANTIC_NON_NULL_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.LEVELS),type:{kind:le.Kind.NON_NULL_TYPE,type:{kind:le.Kind.LIST_TYPE,type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.INT_SCALAR)}}},defaultValue:{kind:le.Kind.LIST,values:[{kind:le.Kind.INT,value:"0"}]}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:[(0,oe.stringToNameNode)(G.FIELD_DEFINITION_UPPER)],name:(0,oe.stringToNameNode)(G.SEMANTIC_NON_NULL),repeatable:!1};ke.SHAREABLE_DEFINITION={kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER,G.OBJECT_UPPER]),name:(0,oe.stringToNameNode)(G.SHAREABLE),repeatable:!0};ke.SPECIFIED_BY_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.URL_LOWER),type:Sr.REQUIRED_STRING_TYPE_NODE}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.SCALAR_UPPER]),name:(0,oe.stringToNameNode)(G.SPECIFIED_BY),repeatable:!1};ke.SUBSCRIPTION_FILTER_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.CONDITION),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.SUBSCRIPTION_FILTER_CONDITION)}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.FIELD_DEFINITION_UPPER]),name:(0,oe.stringToNameNode)(G.SUBSCRIPTION_FILTER),repeatable:!1};ke.TAG_DEFINITION={arguments:[{kind:le.Kind.INPUT_VALUE_DEFINITION,name:(0,oe.stringToNameNode)(G.NAME),type:{kind:le.Kind.NON_NULL_TYPE,type:(0,oe.stringToNamedTypeNode)(G.STRING_SCALAR)}}],kind:le.Kind.DIRECTIVE_DEFINITION,locations:(0,oe.stringArrayToNameNodeArray)([G.ARGUMENT_DEFINITION_UPPER,G.ENUM_UPPER,G.ENUM_VALUE_UPPER,G.FIELD_DEFINITION_UPPER,G.INPUT_FIELD_DEFINITION_UPPER,G.INPUT_OBJECT_UPPER,G.INTERFACE_UPPER,G.OBJECT_UPPER,G.SCALAR_UPPER,G.UNION_UPPER]),name:(0,oe.stringToNameNode)(G.TAG),repeatable:!0}});var Ru=F(Qi=>{"use strict";m();T();N();Object.defineProperty(Qi,"__esModule",{value:!0});Qi.MAX_OR_SCOPES=Qi.EDFS_ARGS_REGEXP=Qi.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME=Qi.BASE_SCALARS=Qi.DIRECTIVE_DEFINITION_BY_NAME=void 0;var ut=Hn(),_t=zf();Qi.DIRECTIVE_DEFINITION_BY_NAME=new Map([[ut.AUTHENTICATED,_t.AUTHENTICATED_DEFINITION],[ut.COMPOSE_DIRECTIVE,_t.COMPOSE_DIRECTIVE_DEFINITION],[ut.CONFIGURE_DESCRIPTION,_t.CONFIGURE_DESCRIPTION_DEFINITION],[ut.CONFIGURE_CHILD_DESCRIPTIONS,_t.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION],[ut.CONNECT_FIELD_RESOLVER,_t.CONNECT_FIELD_RESOLVER_DEFINITION],[ut.COST,_t.COST_DEFINITION],[ut.DEPRECATED,_t.DEPRECATED_DEFINITION],[ut.EDFS_KAFKA_PUBLISH,_t.EDFS_KAFKA_PUBLISH_DEFINITION],[ut.EDFS_KAFKA_SUBSCRIBE,_t.EDFS_KAFKA_SUBSCRIBE_DEFINITION],[ut.EDFS_NATS_PUBLISH,_t.EDFS_NATS_PUBLISH_DEFINITION],[ut.EDFS_NATS_REQUEST,_t.EDFS_NATS_REQUEST_DEFINITION],[ut.EDFS_NATS_SUBSCRIBE,_t.EDFS_NATS_SUBSCRIBE_DEFINITION],[ut.EDFS_REDIS_PUBLISH,_t.EDFS_REDIS_PUBLISH_DEFINITION],[ut.EDFS_REDIS_SUBSCRIBE,_t.EDFS_REDIS_SUBSCRIBE_DEFINITION],[ut.EXTENDS,_t.EXTENDS_DEFINITION],[ut.EXTERNAL,_t.EXTERNAL_DEFINITION],[ut.INACCESSIBLE,_t.INACCESSIBLE_DEFINITION],[ut.INTERFACE_OBJECT,_t.INTERFACE_OBJECT_DEFINITION],[ut.KEY,_t.KEY_DEFINITION],[ut.LINK,_t.LINK_DEFINITION],[ut.LIST_SIZE,_t.LIST_SIZE_DEFINITION],[ut.ONE_OF,_t.ONE_OF_DEFINITION],[ut.OVERRIDE,_t.OVERRIDE_DEFINITION],[ut.PROVIDES,_t.PROVIDES_DEFINITION],[ut.REQUIRE_FETCH_REASONS,_t.REQUIRE_FETCH_REASONS_DEFINITION],[ut.REQUIRES,_t.REQUIRES_DEFINITION],[ut.REQUIRES_SCOPES,_t.REQUIRES_SCOPES_DEFINITION],[ut.SEMANTIC_NON_NULL,_t.SEMANTIC_NON_NULL_DEFINITION],[ut.SHAREABLE,_t.SHAREABLE_DEFINITION],[ut.SPECIFIED_BY,_t.SPECIFIED_BY_DEFINITION],[ut.SUBSCRIPTION_FILTER,_t.SUBSCRIPTION_FILTER_DEFINITION],[ut.TAG,_t.TAG_DEFINITION]]);Qi.BASE_SCALARS=new Set(["_Any","_Entities",ut.BOOLEAN_SCALAR,ut.FLOAT_SCALAR,ut.ID_SCALAR,ut.INT_SCALAR,ut.FIELD_SET_SCALAR,ut.SCOPE_SCALAR,ut.STRING_SCALAR]);Qi.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME=new Map([[ut.AUTHENTICATED,_t.AUTHENTICATED_DEFINITION],[ut.COMPOSE_DIRECTIVE,_t.COMPOSE_DIRECTIVE_DEFINITION],[ut.INACCESSIBLE,_t.INACCESSIBLE_DEFINITION],[ut.INTERFACE_OBJECT,_t.INTERFACE_OBJECT_DEFINITION],[ut.LINK,_t.LINK_DEFINITION],[ut.OVERRIDE,_t.OVERRIDE_DEFINITION],[ut.REQUIRES_SCOPES,_t.REQUIRES_SCOPES_DEFINITION],[ut.SHAREABLE,_t.SHAREABLE_DEFINITION]]);Qi.EDFS_ARGS_REGEXP=/{{\s*args\.([a-zA-Z0-9_]+)\s*}}/g;Qi.MAX_OR_SCOPES=16});var OT=F(Dc=>{"use strict";m();T();N();Object.defineProperty(Dc,"__esModule",{value:!0});Dc.newParentTagData=MZ;Dc.newChildTagData=xZ;Dc.validateImplicitFieldSets=qZ;Dc.newContractTagOptionsFromArrays=VZ;Dc.getDescriptionFromString=jZ;var ri=_e(),CZ=Au(),UZ=Ru(),BZ=Lr(),xU=Cr(),kZ=Hn();function MZ(e){return{childTagDataByChildName:new Map,tagNames:new Set,typeName:e}}function xZ(e){return{name:e,tagNames:new Set,tagNamesByArgumentName:new Map}}function qZ({conditionalFieldDataByCoords:e,currentSubgraphName:t,entityData:n,implicitKeys:r,objectData:i,parentDefinitionDataByTypeName:a,graphNode:o}){let u=(0,xU.getValueOrDefault)(n.keyFieldSetDatasBySubgraphName,t,()=>new Map);for(let[l,d]of n.documentNodeByKeyFieldSet){if(u.has(l))continue;let p=[i],E=[],y=[],v=-1,R=!0,B=!0;(0,ri.visit)(d,{Argument:{enter(){return B=!1,ri.BREAK}},Field:{enter(V){let J=p[v];if(R)return B=!1,ri.BREAK;let ne=V.name.value;if(ne===kZ.TYPENAME)return;let te=J.fieldDataByName.get(ne);if(!te||te.argumentDataByName.size||E[v].has(ne))return B=!1,ri.BREAK;let{isUnconditionallyProvided:Ne}=(0,xU.getOrThrowError)(te.externalFieldDataBySubgraphName,t,`${te.originalParentTypeName}.${ne}.externalFieldDataBySubgraphName`),Ee=e.get(`${te.renamedParentTypeName}.${ne}`);if(Ee){if(Ee.providedBy.length>0)y.push(...Ee.providedBy);else if(Ee.requiredBy.length>0)return B=!1,ri.BREAK}else if(!Ne)return B=!1,ri.BREAK;E[v].add(ne);let he=(0,CZ.getTypeNodeNamedTypeName)(te.node.type);if(UZ.BASE_SCALARS.has(he))return;let we=a.get(he);if(!we)return B=!1,ri.BREAK;if(we.kind===ri.Kind.OBJECT_TYPE_DEFINITION){R=!0,p.push(we);return}if((0,BZ.isKindAbstract)(we.kind))return B=!1,ri.BREAK}},InlineFragment:{enter(){return B=!1,ri.BREAK}},SelectionSet:{enter(){if(!R||(v+=1,R=!1,v<0||v>=p.length))return B=!1,ri.BREAK;E.push(new Set)},leave(){if(R)return B=!1,ri.BREAK;v-=1,p.pop(),E.pop()}}}),B&&(r.push($(M({fieldName:"",selectionSet:l},y.length>0?{conditions:y}:{}),{disableEntityResolver:!0})),o&&o.satisfiedFieldSets.add(l))}}function VZ(e,t){return{tagNamesToExclude:new Set(e),tagNamesToInclude:new Set(t)}}function jZ(e){if(e)return{block:!0,kind:ri.Kind.STRING,value:e}}});var Yl=F(ft=>{"use strict";m();T();N();Object.defineProperty(ft,"__esModule",{value:!0});ft.MergeMethod=void 0;ft.newPersistedDirectivesData=$Z;ft.isNodeExternalOrShareable=GZ;ft.isTypeRequired=QZ;ft.isTypeNodeListType=VU;ft.areDefaultValuesCompatible=jU;ft.compareAndValidateInputValueDefaultValues=YZ;ft.setMutualExecutableLocations=JZ;ft.isTypeNameRootType=zZ;ft.getRenamedRootTypeName=HZ;ft.childMapToValueArray=XZ;ft.setLongestDescription=ZZ;ft.isParentDataRootType=KU;ft.isInterfaceDefinitionData=eee;ft.setParentDataExtensionType=tee;ft.upsertDeprecatedDirective=nee;ft.upsertTagDirectives=ree;ft.propagateAuthDirectives=iee;ft.propagateFieldAuthDirectives=aee;ft.generateDeprecatedDirective=Zv;ft.getClientPersistedDirectiveNodes=Wv;ft.getClientSchemaFieldNodeByFieldData=uee;ft.getNodeWithPersistedDirectivesByInputValueData=$U;ft.addValidPersistedDirectiveDefinitionNodeByData=lee;ft.newInvalidFieldNames=dee;ft.validateExternalAndShareable=fee;ft.isTypeValidImplementation=DT;ft.isNodeDataInaccessible=GU;ft.isLeafKind=pee;ft.getSubscriptionFilterValue=mee;ft.getParentTypeName=Nee;ft.newConditionalFieldData=Tee;ft.getDefinitionDataCoords=Eee;ft.isParentDataCompositeOutputType=hee;ft.newExternalFieldData=yee;ft.getInitialFederatedDescription=Iee;ft.areKindsEqual=gee;ft.isFieldData=eS;ft.isInputObjectDefinitionData=_ee;ft.isInputNodeKind=vee;ft.isOutputNodeKind=See;var Ze=_e(),Hv=Jf(),Ql=Lr(),Xv=Gi(),Gt=Hn(),bc=Cr(),KZ=OT();function $Z(){return{deprecatedReason:"",directivesByName:new Map,isDeprecated:!1,tagDirectiveByName:new Map}}function GZ(e,t,n){var i;let r={isExternal:n.has(Gt.EXTERNAL),isShareable:t||n.has(Gt.SHAREABLE)};if(!((i=e.directives)!=null&&i.length))return r;for(let a of e.directives){let o=a.name.value;if(o===Gt.EXTERNAL){r.isExternal=!0;continue}o===Gt.SHAREABLE&&(r.isShareable=!0)}return r}function QZ(e){return e.kind===Ze.Kind.NON_NULL_TYPE}function VU(e){switch(e.kind){case Ze.Kind.LIST_TYPE:return!0;case Ze.Kind.NON_NULL_TYPE:return VU(e.type);default:return!1}}function jU(e,t){switch(e.kind){case Ze.Kind.LIST_TYPE:return t.kind===Ze.Kind.LIST||t.kind===Ze.Kind.NULL;case Ze.Kind.NAMED_TYPE:if(t.kind===Ze.Kind.NULL)return!0;switch(e.name.value){case Gt.BOOLEAN_SCALAR:return t.kind===Ze.Kind.BOOLEAN;case Gt.FLOAT_SCALAR:return t.kind===Ze.Kind.INT||t.kind===Ze.Kind.FLOAT;case Gt.INT_SCALAR:return t.kind===Ze.Kind.INT;case Gt.STRING_SCALAR:return t.kind===Ze.Kind.STRING;default:return!0}case Ze.Kind.NON_NULL_TYPE:return t.kind===Ze.Kind.NULL?!1:jU(e.type,t)}}function YZ(e,t,n){if(!e.defaultValue)return;if(!t.defaultValue){e.includeDefaultValue=!1;return}let r=(0,Ze.print)(e.defaultValue),i=(0,Ze.print)(t.defaultValue);if(r!==i){n.push((0,Xv.incompatibleInputValueDefaultValuesError)(`${e.isArgument?Gt.ARGUMENT:Gt.INPUT_FIELD} "${e.name}"`,e.originalCoords,[...t.subgraphNames],r,i));return}}function JZ(e,t){let n=new Set;for(let r of t)e.executableLocations.has(r)&&n.add(r);e.executableLocations=n}function zZ(e,t){return Gt.ROOT_TYPE_NAMES.has(e)||t.has(e)}function HZ(e,t){let n=t.get(e);if(!n)return e;switch(n){case Ze.OperationTypeNode.MUTATION:return Gt.MUTATION;case Ze.OperationTypeNode.SUBSCRIPTION:return Gt.SUBSCRIPTION;default:return Gt.QUERY}}function WZ(e){for(let t of e.argumentDataByName.values()){for(let n of t.directivesByName.values())t.node.directives.push(...n);e.node.arguments.push(t.node)}}function XZ(e){var n;let t=[];for(let r of e.values()){eS(r)&&WZ(r);for(let[i,a]of r.directivesByName){if(i===Gt.DEPRECATED){let o=a[0];if(!o)continue;if((n=o.arguments)!=null&&n.length){r.node.directives.push(o);continue}r.node.directives.push($(M({},o),{arguments:[{kind:Ze.Kind.ARGUMENT,value:{kind:Ze.Kind.STRING,value:Ze.DEFAULT_DEPRECATION_REASON},name:(0,Ql.stringToNameNode)(Gt.REASON)}]}));continue}r.node.directives.push(...a)}t.push(r.node)}return t}function ZZ(e,t){if(t.description){if("configureDescriptionDataBySubgraphName"in t){for(let{propagate:n}of t.configureDescriptionDataBySubgraphName.values())if(!n)return}(!e.description||e.description.value.length0&&e.persistedDirectivesData.directivesByName.set(Gt.REQUIRES_SCOPES,[(0,bc.generateRequiresScopesDirective)(t.requiredScopes)]))}function aee(e,t){if(!t)return;let n=t.fieldAuthDataByFieldName.get(e.name);n&&(n.originalData.requiresAuthentication&&e.persistedDirectivesData.directivesByName.set(Gt.AUTHENTICATED,[(0,bc.generateSimpleDirective)(Gt.AUTHENTICATED)]),n.originalData.requiredScopes.length>0&&e.persistedDirectivesData.directivesByName.set(Gt.REQUIRES_SCOPES,[(0,bc.generateRequiresScopesDirective)(n.originalData.requiredScopes)]))}function Zv(e){return{kind:Ze.Kind.DIRECTIVE,name:(0,Ql.stringToNameNode)(Gt.DEPRECATED),arguments:[{kind:Ze.Kind.ARGUMENT,name:(0,Ql.stringToNameNode)(Gt.REASON),value:{kind:Ze.Kind.STRING,value:e||Gt.DEPRECATED_DEFAULT_ARGUMENT_VALUE}}]}}function see(e,t,n,r){let i=[];for(let[a,o]of e){let u=t.get(a);if(u){if(o.length<2){i.push(...o);continue}if(!u.repeatable){r.push((0,Xv.invalidRepeatedFederatedDirectiveErrorMessage)(a,n));continue}i.push(...o)}}return i}function oee(e,t,n){let r=[...e.persistedDirectivesData.tagDirectiveByName.values()];return e.persistedDirectivesData.isDeprecated&&r.push(Zv(e.persistedDirectivesData.deprecatedReason)),r.push(...see(e.persistedDirectivesData.directivesByName,t,e.name,n)),r}function Wv(e){var n;let t=[];e.persistedDirectivesData.isDeprecated&&t.push(Zv(e.persistedDirectivesData.deprecatedReason));for(let[r,i]of e.persistedDirectivesData.directivesByName){if(r===Gt.SEMANTIC_NON_NULL&&eS(e)){t.push((0,bc.generateSemanticNonNullDirective)((n=(0,bc.getFirstEntry)(e.nullLevelsBySubgraphName))!=null?n:new Set([0])));continue}Gt.PERSISTED_CLIENT_DIRECTIVES.has(r)&&t.push(i[0])}return t}function uee(e){let t=Wv(e),n=[];for(let r of e.argumentDataByName.values())GU(r)||n.push($(M({},r.node),{directives:Wv(r)}));return $(M({},e.node),{directives:t,arguments:n})}function $U(e,t,n){return e.node.name=(0,Ql.stringToNameNode)(e.name),e.node.type=e.type,e.node.description=e.description,e.node.directives=oee(e,t,n),e.includeDefaultValue&&(e.node.defaultValue=e.defaultValue),e.node}function cee(e,t,n,r,i){let a=[];for(let[o,u]of t.argumentDataByName){let l=(0,bc.getEntriesNotInHashSet)(t.subgraphNames,u.subgraphNames);if(l.length>0){u.requiredSubgraphNames.size>0&&a.push({inputValueName:o,missingSubgraphs:l,requiredSubgraphs:[...u.requiredSubgraphNames]});continue}e.push($U(u,n,r)),i&&i.add(o)}return a.length>0?(r.push((0,Xv.invalidRequiredInputValueError)(Gt.DIRECTIVE_DEFINITION,`@${t.name}`,a)),!1):!0}function lee(e,t,n,r){let i=[];cee(i,t,n,r)&&e.push({arguments:i,kind:Ze.Kind.DIRECTIVE_DEFINITION,locations:(0,Ql.setToNameNodeArray)(t.executableLocations),name:(0,Ql.stringToNameNode)(t.name),repeatable:t.repeatable,description:t.description})}function dee(){return{byShareable:new Set,subgraphNamesByExternalFieldName:new Map}}function fee(e,t){let n=e.isShareableBySubgraphName.size,r=new Array,i=0;for(let[a,o]of e.isShareableBySubgraphName){let u=e.externalFieldDataBySubgraphName.get(a);if(u&&!u.isUnconditionallyProvided){r.push(a);continue}o||(i+=1)}switch(i){case 0:n===r.length&&t.subgraphNamesByExternalFieldName.set(e.name,r);return;case 1:if(n===1)return;n-r.length!==1&&t.byShareable.add(e.name);return;default:t.byShareable.add(e.name)}}var qU;(function(e){e[e.UNION=0]="UNION",e[e.INTERSECTION=1]="INTERSECTION",e[e.CONSISTENT=2]="CONSISTENT"})(qU||(ft.MergeMethod=qU={}));function DT(e,t,n){if(e.kind===Ze.Kind.NON_NULL_TYPE)return t.kind!==Ze.Kind.NON_NULL_TYPE?!1:DT(e.type,t.type,n);if(t.kind===Ze.Kind.NON_NULL_TYPE)return DT(e,t.type,n);switch(e.kind){case Ze.Kind.NAMED_TYPE:if(t.kind===Ze.Kind.NAMED_TYPE){let r=e.name.value,i=t.name.value;if(r===i)return!0;let a=n.get(r);return a?a.has(i):!1}return!1;default:return t.kind===Ze.Kind.LIST_TYPE?DT(e.type,t.type,n):!1}}function GU(e){return e.persistedDirectivesData.directivesByName.has(Gt.INACCESSIBLE)||e.directivesByName.has(Gt.INACCESSIBLE)}function pee(e){return e===Ze.Kind.SCALAR_TYPE_DEFINITION||e===Ze.Kind.ENUM_TYPE_DEFINITION}function mee(e){switch(e.kind){case Ze.Kind.BOOLEAN:return e.value;case Ze.Kind.ENUM:case Ze.Kind.STRING:return e.value;case Ze.Kind.FLOAT:case Ze.Kind.INT:try{return parseFloat(e.value)}catch(t){return"NaN"}case Ze.Kind.NULL:return null}}function Nee(e){return e.kind===Ze.Kind.OBJECT_TYPE_DEFINITION&&e.renamedTypeName||e.name}function Tee(){return{providedBy:[],requiredBy:[]}}function Eee(e,t){switch(e.kind){case Ze.Kind.ENUM_VALUE_DEFINITION:return`${e.parentTypeName}.${e.name}`;case Ze.Kind.FIELD_DEFINITION:return`${t?e.renamedParentTypeName:e.originalParentTypeName}.${e.name}`;case Ze.Kind.ARGUMENT:case Ze.Kind.INPUT_VALUE_DEFINITION:return t?e.federatedCoords:e.originalCoords;case Ze.Kind.OBJECT_TYPE_DEFINITION:return t?e.renamedTypeName:e.name;default:return e.name}}function hee(e){return e.kind===Ze.Kind.OBJECT_TYPE_DEFINITION||e.kind===Ze.Kind.INTERFACE_TYPE_DEFINITION}function yee(e){return{isDefinedExternal:e,isUnconditionallyProvided:!e}}function Iee(e){let{value:t,done:n}=e.configureDescriptionDataBySubgraphName.values().next();if(n)return e.description;if(t.propagate)return(0,KZ.getDescriptionFromString)(t.description)||e.description}function gee(e,t){return e.kind===t.kind}function eS(e){return e.kind===Ze.Kind.FIELD_DEFINITION}function _ee(e){return e.kind===Ze.Kind.INPUT_OBJECT_TYPE_DEFINITION}function vee(e){return Gt.INPUT_NODE_KINDS.has(e)}function See(e){return Gt.OUTPUT_NODE_KINDS.has(e)}});var rS={};Hm(rS,{__addDisposableResource:()=>fB,__assign:()=>bT,__asyncDelegator:()=>iB,__asyncGenerator:()=>rB,__asyncValues:()=>aB,__await:()=>Jl,__awaiter:()=>WU,__classPrivateFieldGet:()=>cB,__classPrivateFieldIn:()=>dB,__classPrivateFieldSet:()=>lB,__createBinding:()=>RT,__decorate:()=>JU,__disposeResources:()=>pB,__esDecorate:()=>Oee,__exportStar:()=>ZU,__extends:()=>QU,__generator:()=>XU,__importDefault:()=>uB,__importStar:()=>oB,__makeTemplateObject:()=>sB,__metadata:()=>HU,__param:()=>zU,__propKey:()=>bee,__read:()=>nS,__rest:()=>YU,__runInitializers:()=>Dee,__setFunctionName:()=>Aee,__spread:()=>eB,__spreadArray:()=>nB,__spreadArrays:()=>tB,__values:()=>AT,default:()=>Fee});function QU(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");tS(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function YU(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i=0;u--)(o=e[u])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function zU(e,t){return function(n,r){t(n,r,e)}}function Oee(e,t,n,r,i,a){function o(J){if(J!==void 0&&typeof J!="function")throw new TypeError("Function expected");return J}for(var u=r.kind,l=u==="getter"?"get":u==="setter"?"set":"value",d=!t&&e?r.static?e:e.prototype:null,p=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),E,y=!1,v=n.length-1;v>=0;v--){var R={};for(var B in r)R[B]=B==="access"?{}:r[B];for(var B in r.access)R.access[B]=r.access[B];R.addInitializer=function(J){if(y)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(J||null))};var V=(0,n[v])(u==="accessor"?{get:p.get,set:p.set}:p[l],R);if(u==="accessor"){if(V===void 0)continue;if(V===null||typeof V!="object")throw new TypeError("Object expected");(E=o(V.get))&&(p.get=E),(E=o(V.set))&&(p.set=E),(E=o(V.init))&&i.unshift(E)}else(E=o(V))&&(u==="field"?i.unshift(E):p[l]=E)}d&&Object.defineProperty(d,r.name,p),y=!0}function Dee(e,t,n){for(var r=arguments.length>2,i=0;i0&&a[a.length-1])&&(d[0]===6||d[0]===2)){n=0;continue}if(d[0]===3&&(!a||d[1]>a[0]&&d[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function nS(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function eB(){for(var e=[],t=0;t1||u(y,v)})})}function u(y,v){try{l(r[y](v))}catch(R){E(a[0][3],R)}}function l(y){y.value instanceof Jl?Promise.resolve(y.value.v).then(d,p):E(a[0][2],y)}function d(y){u("next",y)}function p(y){u("throw",y)}function E(y,v){y(v),a.shift(),a.length&&u(a[0][0],a[0][1])}}function iB(e){var t,n;return t={},r("next"),r("throw",function(i){throw i}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(i,a){t[i]=e[i]?function(o){return(n=!n)?{value:Jl(e[i](o)),done:!1}:a?a(o):o}:a}}function aB(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof AT=="function"?AT(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(o){return new Promise(function(u,l){o=e[a](o),i(u,l,o.done,o.value)})}}function i(a,o,u,l){Promise.resolve(l).then(function(d){a({value:d,done:u})},o)}}function sB(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function oB(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&RT(t,e,n);return Ree(t,e),t}function uB(e){return e&&e.__esModule?e:{default:e}}function cB(e,t,n,r){if(n==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)}function lB(e,t,n,r,i){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?i.call(e,n):i?i.value=n:t.set(e,n),n}function dB(e,t){if(t===null||typeof t!="object"&&typeof t!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof e=="function"?t===e:e.has(t)}function fB(e,t,n){if(t!=null){if(typeof t!="object"&&typeof t!="function")throw new TypeError("Object expected.");var r;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose]}if(typeof r!="function")throw new TypeError("Object not disposable.");e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}function pB(e){function t(r){e.error=e.hasError?new Pee(r,e.error,"An error was suppressed during disposal."):r,e.hasError=!0}function n(){for(;e.stack.length;){var r=e.stack.pop();try{var i=r.dispose&&r.dispose.call(r.value);if(r.async)return Promise.resolve(i).then(n,function(a){return t(a),n()})}catch(a){t(a)}}if(e.hasError)throw e.error}return n()}var tS,bT,RT,Ree,Pee,Fee,iS=nc(()=>{"use strict";m();T();N();tS=function(e,t){return tS=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},tS(e,t)};bT=function(){return bT=Object.assign||function(t){for(var n,r=1,i=arguments.length;rMB,__assign:()=>PT,__asyncDelegator:()=>PB,__asyncGenerator:()=>RB,__asyncValues:()=>FB,__await:()=>zl,__awaiter:()=>vB,__classPrivateFieldGet:()=>UB,__classPrivateFieldIn:()=>kB,__classPrivateFieldSet:()=>BB,__createBinding:()=>wT,__decorate:()=>TB,__disposeResources:()=>xB,__esDecorate:()=>hB,__exportStar:()=>OB,__extends:()=>mB,__generator:()=>SB,__importDefault:()=>CB,__importStar:()=>LB,__makeTemplateObject:()=>wB,__metadata:()=>_B,__param:()=>EB,__propKey:()=>IB,__read:()=>oS,__rest:()=>NB,__rewriteRelativeImportExtension:()=>qB,__runInitializers:()=>yB,__setFunctionName:()=>gB,__spread:()=>DB,__spreadArray:()=>AB,__spreadArrays:()=>bB,__values:()=>FT,default:()=>Cee});function mB(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");aS(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function NB(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i=0;u--)(o=e[u])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function EB(e,t){return function(n,r){t(n,r,e)}}function hB(e,t,n,r,i,a){function o(J){if(J!==void 0&&typeof J!="function")throw new TypeError("Function expected");return J}for(var u=r.kind,l=u==="getter"?"get":u==="setter"?"set":"value",d=!t&&e?r.static?e:e.prototype:null,p=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),E,y=!1,v=n.length-1;v>=0;v--){var R={};for(var B in r)R[B]=B==="access"?{}:r[B];for(var B in r.access)R.access[B]=r.access[B];R.addInitializer=function(J){if(y)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(J||null))};var V=(0,n[v])(u==="accessor"?{get:p.get,set:p.set}:p[l],R);if(u==="accessor"){if(V===void 0)continue;if(V===null||typeof V!="object")throw new TypeError("Object expected");(E=o(V.get))&&(p.get=E),(E=o(V.set))&&(p.set=E),(E=o(V.init))&&i.unshift(E)}else(E=o(V))&&(u==="field"?i.unshift(E):p[l]=E)}d&&Object.defineProperty(d,r.name,p),y=!0}function yB(e,t,n){for(var r=arguments.length>2,i=0;i0&&a[a.length-1])&&(d[0]===6||d[0]===2)){n=0;continue}if(d[0]===3&&(!a||d[1]>a[0]&&d[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function oS(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function DB(){for(var e=[],t=0;t1||l(v,B)})},R&&(i[v]=R(i[v])))}function l(v,R){try{d(r[v](R))}catch(B){y(a[0][3],B)}}function d(v){v.value instanceof zl?Promise.resolve(v.value.v).then(p,E):y(a[0][2],v)}function p(v){l("next",v)}function E(v){l("throw",v)}function y(v,R){v(R),a.shift(),a.length&&l(a[0][0],a[0][1])}}function PB(e){var t,n;return t={},r("next"),r("throw",function(i){throw i}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(i,a){t[i]=e[i]?function(o){return(n=!n)?{value:zl(e[i](o)),done:!1}:a?a(o):o}:a}}function FB(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof FT=="function"?FT(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(o){return new Promise(function(u,l){o=e[a](o),i(u,l,o.done,o.value)})}}function i(a,o,u,l){Promise.resolve(l).then(function(d){a({value:d,done:u})},o)}}function wB(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function LB(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=sS(e),r=0;r{"use strict";m();T();N();aS=function(e,t){return aS=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},aS(e,t)};PT=function(){return PT=Object.assign||function(t){for(var n,r=1,i=arguments.length;r{"use strict";m();T();N()});var Hl=F(Yi=>{"use strict";m();T();N();Object.defineProperty(Yi,"__esModule",{value:!0});Yi.asArray=void 0;Yi.isUrl=$B;Yi.isDocumentString=xee;Yi.isValidPath=Vee;Yi.compareStrings=GB;Yi.nodeToString=uS;Yi.compareNodes=jee;Yi.isSome=Kee;Yi.assertSome=$ee;var Uee=_e(),Bee=/^(https?|wss?|file):\/\//;function $B(e){if(typeof e!="string"||!Bee.test(e))return!1;if(URL.canParse)return URL.canParse(e);try{return!!new URL(e)}catch(t){return!1}}var kee=e=>Array.isArray(e)?e:e?[e]:[];Yi.asArray=kee;var Mee=/\.[a-z0-9]+$/i;function xee(e){if(typeof e!="string"||Mee.test(e)||$B(e))return!1;try{return(0,Uee.parse)(e),!0}catch(t){if(!t.message.includes("EOF")&&e.replace(/(\#[^*]*)/g,"").trim()!==""&&e.includes(" "))throw new Error(`Failed to parse the GraphQL document. ${t.message} -${e}`)}return!1}var qee=/[‘“!%^<>`\n]/;function Vee(e){return typeof e=="string"&&!qee.test(e)}function GB(e,t){return String(e)String(t)?1:0}function uS(e){var n,r;let t;return"alias"in e&&(t=(n=e.alias)==null?void 0:n.value),t==null&&"name"in e&&(t=(r=e.name)==null?void 0:r.value),t==null&&(t=e.kind),t}function jee(e,t,n){let r=uS(e),i=uS(t);return typeof n=="function"?n(r,i):GB(r,i)}function Kee(e){return e!=null}function $ee(e,t="Value should be something"){if(e==null)throw new Error(t)}});var Hf=F(CT=>{"use strict";m();T();N();Object.defineProperty(CT,"__esModule",{value:!0});CT.inspect=void 0;var JB=3;function Gee(e){return LT(e,[])}CT.inspect=Gee;function LT(e,t){switch(typeof e){case"string":return JSON.stringify(e);case"function":return e.name?`[function ${e.name}]`:"[function]";case"object":return Qee(e,t);default:return String(e)}}function QB(e){return(e.name="GraphQLError")?e.toString():`${e.name}: ${e.message}; - ${e.stack}`}function Qee(e,t){if(e===null)return"null";if(e instanceof Error)return e.name==="AggregateError"?QB(e)+` -`+YB(e.errors,t):QB(e);if(t.includes(e))return"[Circular]";let n=[...t,e];if(Yee(e)){let r=e.toJSON();if(r!==e)return typeof r=="string"?r:LT(r,n)}else if(Array.isArray(e))return YB(e,n);return Jee(e,n)}function Yee(e){return typeof e.toJSON=="function"}function Jee(e,t){let n=Object.entries(e);return n.length===0?"{}":t.length>JB?"["+zee(e)+"]":"{ "+n.map(([i,a])=>i+": "+LT(a,t)).join(", ")+" }"}function YB(e,t){if(e.length===0)return"[]";if(t.length>JB)return"[Array]";let n=e.length,r=[];for(let i=0;i{"use strict";m();T();N();Object.defineProperty(UT,"__esModule",{value:!0});UT.createGraphQLError=lS;UT.relocatedError=Xee;var cS=_e(),Hee=["message","locations","path","nodes","source","positions","originalError","name","stack","extensions"];function Wee(e){return e!=null&&typeof e=="object"&&Object.keys(e).every(t=>Hee.includes(t))}function lS(e,t){return t!=null&&t.originalError&&!(t.originalError instanceof Error)&&Wee(t.originalError)&&(t.originalError=lS(t.originalError.message,t.originalError)),cS.versionInfo.major>=17?new cS.GraphQLError(e,t):new cS.GraphQLError(e,t==null?void 0:t.nodes,t==null?void 0:t.source,t==null?void 0:t.positions,t==null?void 0:t.path,t==null?void 0:t.originalError,t==null?void 0:t.extensions)}function Xee(e,t){return lS(e.message,{nodes:e.nodes,source:e.source,positions:e.positions,path:t==null?e.path:t,originalError:e,extensions:e.extensions})}});var Wf=F(ii=>{"use strict";m();T();N();Object.defineProperty(ii,"__esModule",{value:!0});ii.isPromise=kT;ii.isActualPromise=HB;ii.handleMaybePromise=Pu;ii.fakePromise=Za;ii.createDeferredPromise=Zee;ii.iterateAsync=WB;ii.iterateAsyncVoid=WB;ii.fakeRejectPromise=Ac;ii.mapMaybePromise=ete;ii.mapAsyncIterator=tte;ii.promiseLikeFinally=XB;ii.unfakePromise=ZB;var MT=Symbol.for("@whatwg-node/promise-helpers/FakePromise");function kT(e){return(e==null?void 0:e.then)!=null}function HB(e){let t=e;return t&&t.then&&t.catch&&t.finally}function Pu(e,t,n,r){let i=Za().then(e).then(t,n);return r&&(i=i.finally(r)),ZB(i)}function Za(e){return e&&HB(e)?e:kT(e)?{then:(t,n)=>Za(e.then(t,n)),catch:t=>Za(e.then(n=>n,t)),finally:t=>Za(t?XB(e,t):e),[Symbol.toStringTag]:"Promise"}:{then(t){if(t)try{return Za(t(e))}catch(n){return Ac(n)}return this},catch(){return this},finally(t){if(t)try{return Za(t()).then(()=>e,()=>e)}catch(n){return Ac(n)}return this},[Symbol.toStringTag]:"Promise",__fakePromiseValue:e,[MT]:"resolved"}}function Zee(){if(Promise.withResolvers)return Promise.withResolvers();let e,t;return{promise:new Promise(function(i,a){e=i,t=a}),get resolve(){return e},get reject(){return t}}}function WB(e,t,n){if((e==null?void 0:e.length)===0)return;let r=e[Symbol.iterator](),i=0;function a(){let{done:o,value:u}=r.next();if(o)return;let l=!1;function d(){l=!0}return Pu(function(){return t(u,d,i++)},function(E){if(E&&(n==null||n.push(E)),!l)return a()})}return a()}function Ac(e){return{then(t,n){if(n)try{return Za(n(e))}catch(r){return Ac(r)}return this},catch(t){if(t)try{return Za(t(e))}catch(n){return Ac(n)}return this},finally(t){if(t)try{t()}catch(n){return Ac(n)}return this},__fakeRejectError:e,[Symbol.toStringTag]:"Promise",[MT]:"rejected"}}function ete(e,t,n){return Pu(()=>e,t,n)}function tte(e,t,n,r){Symbol.asyncIterator in e&&(e=e[Symbol.asyncIterator]());let i,a,o;if(r){let d;o=p=>(d||(d=Pu(r,()=>p,()=>p)),d)}typeof e.return=="function"&&(i=e.return,a=d=>{let p=()=>{throw d};return i.call(e).then(p,p)});function u(d){return d.done?o?o(d):d:Pu(()=>d.value,p=>Pu(()=>t(p),zB,a))}let l;if(n){let d,p=n;l=E=>(d||(d=Pu(()=>E,y=>Pu(()=>p(y),zB,a))),d)}return{next(){return e.next().then(u,l)},return(){let d=i?i.call(e).then(u,l):Za({value:void 0,done:!0});return o?d.then(o):d},throw(d){return typeof e.throw=="function"?e.throw(d).then(u,l):a?a(d):Ac(d)},[Symbol.asyncIterator](){return this}}}function zB(e){return{value:e,done:!1}}function nte(e){return(e==null?void 0:e[MT])==="resolved"}function rte(e){return(e==null?void 0:e[MT])==="rejected"}function XB(e,t){return"finally"in e?e.finally(t):e.then(n=>{let r=t();return kT(r)?r.then(()=>n):n},n=>{let r=t();if(kT(r))return r.then(()=>{throw n});throw n})}function ZB(e){if(nte(e))return e.__fakePromiseValue;if(rte(e))throw e.__fakeRejectError;return e}});var xT=F(Fu=>{"use strict";m();T();N();Object.defineProperty(Fu,"__esModule",{value:!0});Fu.isPromise=void 0;Fu.isIterableObject=ite;Fu.isObjectLike=ate;Fu.promiseReduce=ste;Fu.hasOwnProperty=ote;var ek=Wf();Object.defineProperty(Fu,"isPromise",{enumerable:!0,get:function(){return ek.isPromise}});function ite(e){return e!=null&&typeof e=="object"&&Symbol.iterator in e}function ate(e){return typeof e=="object"&&e!==null}function ste(e,t,n){let r=n;for(let i of e)r=(0,ek.handleMaybePromise)(()=>r,a=>t(a,i));return r}function ote(e,t){return Object.prototype.hasOwnProperty.call(e,t)}});var pS=F(fS=>{"use strict";m();T();N();Object.defineProperty(fS,"__esModule",{value:!0});fS.getArgumentValues=cte;var dS=Hf(),Rc=_e(),qT=BT(),ute=xT();function cte(e,t,n={}){var o;let r={},a=((o=t.arguments)!=null?o:[]).reduce((u,l)=>$(M({},u),{[l.name.value]:l}),{});for(let{name:u,type:l,defaultValue:d}of e.args){let p=a[u];if(!p){if(d!==void 0)r[u]=d;else if((0,Rc.isNonNullType)(l))throw(0,qT.createGraphQLError)(`Argument "${u}" of required type "${(0,dS.inspect)(l)}" was not provided.`,{nodes:[t]});continue}let E=p.value,y=E.kind===Rc.Kind.NULL;if(E.kind===Rc.Kind.VARIABLE){let R=E.name.value;if(n==null||!(0,ute.hasOwnProperty)(n,R)){if(d!==void 0)r[u]=d;else if((0,Rc.isNonNullType)(l))throw(0,qT.createGraphQLError)(`Argument "${u}" of required type "${(0,dS.inspect)(l)}" was provided the variable "$${R}" which was not provided a runtime value.`,{nodes:[E]});continue}y=n[R]==null}if(y&&(0,Rc.isNonNullType)(l))throw(0,qT.createGraphQLError)(`Argument "${u}" of non-null type "${(0,dS.inspect)(l)}" must not be null.`,{nodes:[E]});let v=(0,Rc.valueFromAST)(E,l,n);if(v===void 0)throw(0,qT.createGraphQLError)(`Argument "${u}" has invalid value ${(0,Rc.print)(E)}.`,{nodes:[E]});r[u]=v}return r}});var wu=F(Cs=>{"use strict";m();T();N();Object.defineProperty(Cs,"__esModule",{value:!0});Cs.memoize1=lte;Cs.memoize2=dte;Cs.memoize3=fte;Cs.memoize4=pte;Cs.memoize5=mte;Cs.memoize2of4=Nte;Cs.memoize2of5=Tte;function lte(e){let t=new WeakMap;return function(r){let i=t.get(r);if(i===void 0){let a=e(r);return t.set(r,a),a}return i}}function dte(e){let t=new WeakMap;return function(r,i){let a=t.get(r);if(!a){a=new WeakMap,t.set(r,a);let u=e(r,i);return a.set(i,u),u}let o=a.get(i);if(o===void 0){let u=e(r,i);return a.set(i,u),u}return o}}function fte(e){let t=new WeakMap;return function(r,i,a){let o=t.get(r);if(!o){o=new WeakMap,t.set(r,o);let d=new WeakMap;o.set(i,d);let p=e(r,i,a);return d.set(a,p),p}let u=o.get(i);if(!u){u=new WeakMap,o.set(i,u);let d=e(r,i,a);return u.set(a,d),d}let l=u.get(a);if(l===void 0){let d=e(r,i,a);return u.set(a,d),d}return l}}function pte(e){let t=new WeakMap;return function(r,i,a,o){let u=t.get(r);if(!u){u=new WeakMap,t.set(r,u);let E=new WeakMap;u.set(i,E);let y=new WeakMap;E.set(a,y);let v=e(r,i,a,o);return y.set(o,v),v}let l=u.get(i);if(!l){l=new WeakMap,u.set(i,l);let E=new WeakMap;l.set(a,E);let y=e(r,i,a,o);return E.set(o,y),y}let d=l.get(a);if(!d){let E=new WeakMap;l.set(a,E);let y=e(r,i,a,o);return E.set(o,y),y}let p=d.get(o);if(p===void 0){let E=e(r,i,a,o);return d.set(o,E),E}return p}}function mte(e){let t=new WeakMap;return function(r,i,a,o,u){let l=t.get(r);if(!l){l=new WeakMap,t.set(r,l);let v=new WeakMap;l.set(i,v);let R=new WeakMap;v.set(a,R);let B=new WeakMap;R.set(o,B);let V=e(r,i,a,o,u);return B.set(u,V),V}let d=l.get(i);if(!d){d=new WeakMap,l.set(i,d);let v=new WeakMap;d.set(a,v);let R=new WeakMap;v.set(o,R);let B=e(r,i,a,o,u);return R.set(u,B),B}let p=d.get(a);if(!p){p=new WeakMap,d.set(a,p);let v=new WeakMap;p.set(o,v);let R=e(r,i,a,o,u);return v.set(u,R),R}let E=p.get(o);if(!E){E=new WeakMap,p.set(o,E);let v=e(r,i,a,o,u);return E.set(u,v),v}let y=E.get(u);if(y===void 0){let v=e(r,i,a,o,u);return E.set(u,v),v}return y}}function Nte(e){let t=new WeakMap;return function(r,i,a,o){let u=t.get(r);if(!u){u=new WeakMap,t.set(r,u);let d=e(r,i,a,o);return u.set(i,d),d}let l=u.get(i);if(l===void 0){let d=e(r,i,a,o);return u.set(i,d),d}return l}}function Tte(e){let t=new WeakMap;return function(r,i,a,o,u){let l=t.get(r);if(!l){l=new WeakMap,t.set(r,l);let p=e(r,i,a,o,u);return l.set(i,p),p}let d=l.get(i);if(d===void 0){let p=e(r,i,a,o,u);return l.set(i,p),p}return d}}});var NS=F(mS=>{"use strict";m();T();N();Object.defineProperty(mS,"__esModule",{value:!0});mS.getDirectiveExtensions=yte;var tk=_e(),Ete=pS(),hte=wu();function yte(e,t,n=["directives"]){var o;let r={};if(e.extensions){let u=e.extensions;for(let l of n)u=u==null?void 0:u[l];if(u!=null)for(let l in u){let d=u[l],p=l;if(Array.isArray(d))for(let E of d){let y=r[p];y||(y=[],r[p]=y),y.push(E)}else{let E=r[p];E||(E=[],r[p]=E),E.push(d)}}}let i=(0,hte.memoize1)(u=>JSON.stringify(u)),a=[];e.astNode&&a.push(e.astNode),e.extensionASTNodes&&a.push(...e.extensionASTNodes);for(let u of a)if((o=u.directives)!=null&&o.length)for(let l of u.directives){let d=l.name.value,p=r[d];p||(p=[],r[d]=p);let E=t==null?void 0:t.getDirective(d),y={};if(E&&(y=(0,Ete.getArgumentValues)(E,l)),l.arguments)for(let v of l.arguments){let R=v.name.value;if(y[R]==null){let B=E==null?void 0:E.args.find(V=>V.name===R);B&&(y[R]=(0,tk.valueFromAST)(v.value,B.type))}y[R]==null&&(y[R]=(0,tk.valueFromASTUntyped)(v.value))}if(a.length>0&&p.length>0){let v=i(y);if(p.some(R=>i(R)===v))continue}p.push(y)}return r}});var TS=F(Wl=>{"use strict";m();T();N();Object.defineProperty(Wl,"__esModule",{value:!0});Wl.getDirectivesInExtensions=Ite;Wl.getDirectiveInExtensions=gte;Wl.getDirectives=_te;Wl.getDirective=vte;var VT=NS();function Ite(e,t=["directives"]){let n=(0,VT.getDirectiveExtensions)(e,void 0,t);return Object.entries(n).map(([r,i])=>i==null?void 0:i.map(a=>({name:r,args:a}))).flat(1/0).filter(Boolean)}function gte(e,t,n=["directives"]){return(0,VT.getDirectiveExtensions)(e,void 0,n)[t]}function _te(e,t,n=["directives"]){let r=(0,VT.getDirectiveExtensions)(t,e,n);return Object.entries(r).map(([i,a])=>a==null?void 0:a.map(o=>({name:i,args:o}))).flat(1/0).filter(Boolean)}function vte(e,t,n,r=["directives"]){return(0,VT.getDirectiveExtensions)(t,e,r)[n]}});var hS=F(ES=>{"use strict";m();T();N();Object.defineProperty(ES,"__esModule",{value:!0});ES.getFieldsWithDirectives=Ote;var Ste=_e();function Ote(e,t={}){let n={},r=["ObjectTypeDefinition","ObjectTypeExtension"];t.includeInputTypes&&(r=[...r,"InputObjectTypeDefinition","InputObjectTypeExtension"]);let i=e.definitions.filter(a=>r.includes(a.kind));for(let a of i){let o=a.name.value;if(a.fields!=null){for(let u of a.fields)if(u.directives&&u.directives.length>0){let l=u.name.value,d=`${o}.${l}`,p=u.directives.map(E=>({name:E.name.value,args:(E.arguments||[]).reduce((y,v)=>$(M({},y),{[v.name.value]:(0,Ste.valueFromASTUntyped)(v.value)}),{})}));n[d]=p}}}return n}});var nk=F(IS=>{"use strict";m();T();N();Object.defineProperty(IS,"__esModule",{value:!0});IS.getArgumentsWithDirectives=bte;var yS=_e();function Dte(e){return e.kind===yS.Kind.OBJECT_TYPE_DEFINITION||e.kind===yS.Kind.OBJECT_TYPE_EXTENSION}function bte(e){var r;let t={},n=e.definitions.filter(Dte);for(let i of n)if(i.fields!=null)for(let a of i.fields){let o=(r=a.arguments)==null?void 0:r.filter(l=>{var d;return(d=l.directives)==null?void 0:d.length});if(!(o!=null&&o.length))continue;let u=t[`${i.name.value}.${a.name.value}`]={};for(let l of o){let d=l.directives.map(p=>({name:p.name.value,args:(p.arguments||[]).reduce((E,y)=>$(M({},E),{[y.name.value]:(0,yS.valueFromASTUntyped)(y.value)}),{})}));u[l.name.value]=d}}return t}});var _S=F(gS=>{"use strict";m();T();N();Object.defineProperty(gS,"__esModule",{value:!0});gS.getImplementingTypes=Ate;function Ate(e,t){let n=t.getTypeMap(),r=[];for(let i in n){let a=n[i];"getInterfaces"in a&&a.getInterfaces().find(u=>u.name===e)&&r.push(a.name)}return r}});var jT=F(SS=>{"use strict";m();T();N();Object.defineProperty(SS,"__esModule",{value:!0});SS.astFromType=vS;var Rte=Hf(),Pc=_e();function vS(e){if((0,Pc.isNonNullType)(e)){let t=vS(e.ofType);if(t.kind===Pc.Kind.NON_NULL_TYPE)throw new Error(`Invalid type node ${(0,Rte.inspect)(e)}. Inner type of non-null type cannot be a non-null type.`);return{kind:Pc.Kind.NON_NULL_TYPE,type:t}}else if((0,Pc.isListType)(e))return{kind:Pc.Kind.LIST_TYPE,type:vS(e.ofType)};return{kind:Pc.Kind.NAMED_TYPE,name:{kind:Pc.Kind.NAME,value:e.name}}}});var Xf=F(OS=>{"use strict";m();T();N();Object.defineProperty(OS,"__esModule",{value:!0});OS.astFromValueUntyped=KT;var es=_e();function KT(e){if(e===null)return{kind:es.Kind.NULL};if(e===void 0)return null;if(Array.isArray(e)){let t=[];for(let n of e){let r=KT(n);r!=null&&t.push(r)}return{kind:es.Kind.LIST,values:t}}if(typeof e=="object"){if(e!=null&&e.toJSON)return KT(e.toJSON());let t=[];for(let n in e){let r=e[n],i=KT(r);i&&t.push({kind:es.Kind.OBJECT_FIELD,name:{kind:es.Kind.NAME,value:n},value:i})}return{kind:es.Kind.OBJECT,fields:t}}if(typeof e=="boolean")return{kind:es.Kind.BOOLEAN,value:e};if(typeof e=="bigint")return{kind:es.Kind.INT,value:String(e)};if(typeof e=="number"&&isFinite(e)){let t=String(e);return Pte.test(t)?{kind:es.Kind.INT,value:t}:{kind:es.Kind.FLOAT,value:t}}if(typeof e=="string")return{kind:es.Kind.STRING,value:e};throw new TypeError(`Cannot convert value to AST: ${e}.`)}var Pte=/^-?(?:0|[1-9][0-9]*)$/});var ik=F(DS=>{"use strict";m();T();N();Object.defineProperty(DS,"__esModule",{value:!0});DS.astFromValue=Zf;var Fte=Hf(),gi=_e(),wte=Xf(),rk=xT();function Zf(e,t){if((0,gi.isNonNullType)(t)){let n=Zf(e,t.ofType);return(n==null?void 0:n.kind)===gi.Kind.NULL?null:n}if(e===null)return{kind:gi.Kind.NULL};if(e===void 0)return null;if((0,gi.isListType)(t)){let n=t.ofType;if((0,rk.isIterableObject)(e)){let r=[];for(let i of e){let a=Zf(i,n);a!=null&&r.push(a)}return{kind:gi.Kind.LIST,values:r}}return Zf(e,n)}if((0,gi.isInputObjectType)(t)){if(!(0,rk.isObjectLike)(e))return null;let n=[];for(let r of Object.values(t.getFields())){let i=Zf(e[r.name],r.type);i&&n.push({kind:gi.Kind.OBJECT_FIELD,name:{kind:gi.Kind.NAME,value:r.name},value:i})}return{kind:gi.Kind.OBJECT,fields:n}}if((0,gi.isLeafType)(t)){let n=t.serialize(e);return n==null?null:(0,gi.isEnumType)(t)?{kind:gi.Kind.ENUM,value:n}:t.name==="ID"&&typeof n=="string"&&Lte.test(n)?{kind:gi.Kind.INT,value:n}:(0,wte.astFromValueUntyped)(n)}console.assert(!1,"Unexpected input type: "+(0,Fte.inspect)(t))}var Lte=/^-?(?:0|[1-9][0-9]*)$/});var ak=F(bS=>{"use strict";m();T();N();Object.defineProperty(bS,"__esModule",{value:!0});bS.getDescriptionNode=Ute;var Cte=_e();function Ute(e){var t;if((t=e.astNode)!=null&&t.description)return $(M({},e.astNode.description),{block:!0});if(e.description)return{kind:Cte.Kind.STRING,value:e.description,block:!0}}});var ep=F(Ji=>{"use strict";m();T();N();Object.defineProperty(Ji,"__esModule",{value:!0});Ji.getRootTypeMap=Ji.getRootTypes=Ji.getRootTypeNames=void 0;Ji.getDefinedRootType=kte;var Bte=BT(),AS=wu();function kte(e,t,n){let i=(0,Ji.getRootTypeMap)(e).get(t);if(i==null)throw(0,Bte.createGraphQLError)(`Schema is not configured to execute ${t} operation.`,{nodes:n});return i}Ji.getRootTypeNames=(0,AS.memoize1)(function(t){let n=(0,Ji.getRootTypes)(t);return new Set([...n].map(r=>r.name))});Ji.getRootTypes=(0,AS.memoize1)(function(t){let n=(0,Ji.getRootTypeMap)(t);return new Set(n.values())});Ji.getRootTypeMap=(0,AS.memoize1)(function(t){let n=new Map,r=t.getQueryType();r&&n.set("query",r);let i=t.getMutationType();i&&n.set("mutation",i);let a=t.getSubscriptionType();return a&&n.set("subscription",a),n})});var LS=F(Xn=>{"use strict";m();T();N();Object.defineProperty(Xn,"__esModule",{value:!0});Xn.getDocumentNodeFromSchema=ok;Xn.printSchemaWithDirectives=Vte;Xn.astFromSchema=uk;Xn.astFromDirective=ck;Xn.getDirectiveNodes=ya;Xn.astFromArg=PS;Xn.astFromObjectType=lk;Xn.astFromInterfaceType=dk;Xn.astFromUnionType=fk;Xn.astFromInputObjectType=pk;Xn.astFromEnumType=mk;Xn.astFromScalarType=Nk;Xn.astFromField=FS;Xn.astFromInputField=Tk;Xn.astFromEnumValue=Ek;Xn.makeDeprecatedDirective=hk;Xn.makeDirectiveNode=Xl;Xn.makeDirectiveNodes=wS;var Nt=_e(),Fc=jT(),RS=ik(),Mte=Xf(),zi=ak(),sk=TS(),xte=Hl(),qte=ep();function ok(e,t={}){let n=t.pathToDirectivesInExtensions,r=e.getTypeMap(),i=uk(e,n),a=i!=null?[i]:[],o=e.getDirectives();for(let u of o)(0,Nt.isSpecifiedDirective)(u)||a.push(ck(u,e,n));for(let u in r){let l=r[u],d=(0,Nt.isSpecifiedScalarType)(l),p=(0,Nt.isIntrospectionType)(l);if(!(d||p))if((0,Nt.isObjectType)(l))a.push(lk(l,e,n));else if((0,Nt.isInterfaceType)(l))a.push(dk(l,e,n));else if((0,Nt.isUnionType)(l))a.push(fk(l,e,n));else if((0,Nt.isInputObjectType)(l))a.push(pk(l,e,n));else if((0,Nt.isEnumType)(l))a.push(mk(l,e,n));else if((0,Nt.isScalarType)(l))a.push(Nk(l,e,n));else throw new Error(`Unknown type ${l}.`)}return{kind:Nt.Kind.DOCUMENT,definitions:a}}function Vte(e,t={}){let n=ok(e,t);return(0,Nt.print)(n)}function uk(e,t){let n=new Map([["query",void 0],["mutation",void 0],["subscription",void 0]]),r=[];if(e.astNode!=null&&r.push(e.astNode),e.extensionASTNodes!=null)for(let d of e.extensionASTNodes)r.push(d);for(let d of r)if(d.operationTypes)for(let p of d.operationTypes)n.set(p.operation,p);let i=(0,qte.getRootTypeMap)(e);for(let[d,p]of n){let E=i.get(d);if(E!=null){let y=(0,Fc.astFromType)(E);p!=null?p.type=y:n.set(d,{kind:Nt.Kind.OPERATION_TYPE_DEFINITION,operation:d,type:y})}}let a=[...n.values()].filter(xte.isSome),o=ya(e,e,t);if(!a.length&&!o.length)return null;let u={kind:a.length?Nt.Kind.SCHEMA_DEFINITION:Nt.Kind.SCHEMA_EXTENSION,operationTypes:a,directives:o},l=(0,zi.getDescriptionNode)(e);return l&&(u.description=l),u}function ck(e,t,n){var r,i;return{kind:Nt.Kind.DIRECTIVE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},arguments:(r=e.args)==null?void 0:r.map(a=>PS(a,t,n)),repeatable:e.isRepeatable,locations:((i=e.locations)==null?void 0:i.map(a=>({kind:Nt.Kind.NAME,value:a})))||[]}}function ya(e,t,n){let r=[],i=(0,sk.getDirectivesInExtensions)(e,n),a;i!=null&&(a=wS(t,i));let o=null,u=null,l=null;if(a!=null&&(r=a.filter(d=>Nt.specifiedDirectives.every(p=>p.name!==d.name.value)),o=a.find(d=>d.name.value==="deprecated"),u=a.find(d=>d.name.value==="specifiedBy"),l=a.find(d=>d.name.value==="oneOf")),e.deprecationReason!=null&&o==null&&(o=hk(e.deprecationReason)),e.specifiedByUrl!=null||e.specifiedByURL!=null&&u==null){let p={url:e.specifiedByUrl||e.specifiedByURL};u=Xl("specifiedBy",p)}return e.isOneOf&&l==null&&(l=Xl("oneOf")),o!=null&&r.push(o),u!=null&&r.push(u),l!=null&&r.push(l),r}function PS(e,t,n){var r;return{kind:Nt.Kind.INPUT_VALUE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},type:(0,Fc.astFromType)(e.type),defaultValue:e.defaultValue!==void 0&&(r=(0,RS.astFromValue)(e.defaultValue,e.type))!=null?r:void 0,directives:ya(e,t,n)}}function lk(e,t,n){return{kind:Nt.Kind.OBJECT_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(r=>FS(r,t,n)),interfaces:Object.values(e.getInterfaces()).map(r=>(0,Fc.astFromType)(r)),directives:ya(e,t,n)}}function dk(e,t,n){let r={kind:Nt.Kind.INTERFACE_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(i=>FS(i,t,n)),directives:ya(e,t,n)};return"getInterfaces"in e&&(r.interfaces=Object.values(e.getInterfaces()).map(i=>(0,Fc.astFromType)(i))),r}function fk(e,t,n){return{kind:Nt.Kind.UNION_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},directives:ya(e,t,n),types:e.getTypes().map(r=>(0,Fc.astFromType)(r))}}function pk(e,t,n){return{kind:Nt.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(r=>Tk(r,t,n)),directives:ya(e,t,n)}}function mk(e,t,n){return{kind:Nt.Kind.ENUM_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},values:Object.values(e.getValues()).map(r=>Ek(r,t,n)),directives:ya(e,t,n)}}function Nk(e,t,n){let r=(0,sk.getDirectivesInExtensions)(e,n),i=wS(t,r),a=e.specifiedByUrl||e.specifiedByURL;if(a&&!i.some(o=>o.name.value==="specifiedBy")){let o={url:a};i.push(Xl("specifiedBy",o))}return{kind:Nt.Kind.SCALAR_TYPE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},directives:i}}function FS(e,t,n){return{kind:Nt.Kind.FIELD_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},arguments:e.args.map(r=>PS(r,t,n)),type:(0,Fc.astFromType)(e.type),directives:ya(e,t,n)}}function Tk(e,t,n){var r;return{kind:Nt.Kind.INPUT_VALUE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},type:(0,Fc.astFromType)(e.type),directives:ya(e,t,n),defaultValue:(r=(0,RS.astFromValue)(e.defaultValue,e.type))!=null?r:void 0}}function Ek(e,t,n){return{kind:Nt.Kind.ENUM_VALUE_DEFINITION,description:(0,zi.getDescriptionNode)(e),name:{kind:Nt.Kind.NAME,value:e.name},directives:ya(e,t,n)}}function hk(e){return Xl("deprecated",{reason:e},Nt.GraphQLDeprecatedDirective)}function Xl(e,t,n){let r=[];for(let i in t){let a=t[i],o;if(n!=null){let u=n.args.find(l=>l.name===i);u&&(o=(0,RS.astFromValue)(a,u.type))}o==null&&(o=(0,Mte.astFromValueUntyped)(a)),o!=null&&r.push({kind:Nt.Kind.ARGUMENT,name:{kind:Nt.Kind.NAME,value:i},value:o})}return{kind:Nt.Kind.DIRECTIVE,name:{kind:Nt.Kind.NAME,value:e},arguments:r}}function wS(e,t){let n=[];for(let{name:r,args:i}of t){let a=e==null?void 0:e.getDirective(r);n.push(Xl(r,i,a))}return n}});var Ik=F($T=>{"use strict";m();T();N();Object.defineProperty($T,"__esModule",{value:!0});$T.validateGraphQlDocuments=jte;$T.createDefaultRules=yk;var tp=_e();function jte(e,t,n=yk()){var u;let r=new Set,i=new Map;for(let l of t)for(let d of l.definitions)d.kind===tp.Kind.FRAGMENT_DEFINITION?i.set(d.name.value,d):r.add(d);let a={kind:tp.Kind.DOCUMENT,definitions:Array.from([...r,...i.values()])},o=(0,tp.validate)(e,a,n);for(let l of o)if(l.stack=l.message,l.locations)for(let d of l.locations)l.stack+=` - at ${(u=l.source)==null?void 0:u.name}:${d.line}:${d.column}`;return o}function yk(){let e=["NoUnusedFragmentsRule","NoUnusedVariablesRule","KnownDirectivesRule"];return tp.versionInfo.major<15&&(e=e.map(t=>t.replace(/Rule$/,""))),tp.specifiedRules.filter(t=>!e.includes(t.name))}});var gk=F(CS=>{"use strict";m();T();N();Object.defineProperty(CS,"__esModule",{value:!0});CS.parseGraphQLJSON=Qte;var Kte=_e();function $te(e){return e=e.toString(),e.charCodeAt(0)===65279&&(e=e.slice(1)),e}function Gte(e){return JSON.parse($te(e))}function Qte(e,t,n){let r=Gte(t);if(r.data&&(r=r.data),r.kind==="Document")return{location:e,document:r};if(r.__schema){let i=(0,Kte.buildClientSchema)(r,n);return{location:e,schema:i}}else if(typeof r=="string")return{location:e,rawSDL:r};throw new Error("Not valid JSON content")}});var BS=F(Hi=>{"use strict";m();T();N();Object.defineProperty(Hi,"__esModule",{value:!0});Hi.resetComments=Jte;Hi.collectComment=zte;Hi.pushComment=np;Hi.printComment=Dk;Hi.printWithComments=Zte;Hi.getDescription=tne;Hi.getComment=US;Hi.getLeadingCommentBlock=bk;Hi.dedentBlockStringValue=Ak;Hi.getBlockStringIndentation=Rk;var Ok=_e(),Yte=80,Zl={};function Jte(){Zl={}}function zte(e){var n;let t=(n=e.name)==null?void 0:n.value;if(t!=null)switch(np(e,t),e.kind){case"EnumTypeDefinition":if(e.values)for(let r of e.values)np(r,t,r.name.value);break;case"ObjectTypeDefinition":case"InputObjectTypeDefinition":case"InterfaceTypeDefinition":if(e.fields){for(let r of e.fields)if(np(r,t,r.name.value),ene(r)&&r.arguments)for(let i of r.arguments)np(i,t,r.name.value,i.name.value)}break}}function np(e,t,n,r){let i=US(e);if(typeof i!="string"||i.length===0)return;let a=[t];n&&(a.push(n),r&&a.push(r));let o=a.join(".");Zl[o]||(Zl[o]=[]),Zl[o].push(i)}function Dk(e){return` -# `+e.replace(/\n/g,` -# `)}function Ve(e,t){return e?e.filter(n=>n).join(t||""):""}function _k(e){var t;return(t=e==null?void 0:e.some(n=>n.includes(` -`)))!=null?t:!1}function Hte(e){return(t,n,r,i,a)=>{var p;let o=[],u=i.reduce((E,y)=>(["fields","arguments","values"].includes(y)&&E.name&&o.push(E.name.value),E[y]),a[0]),l=[...o,(p=u==null?void 0:u.name)==null?void 0:p.value].filter(Boolean).join("."),d=[];return t.kind.includes("Definition")&&Zl[l]&&d.push(...Zl[l]),Ve([...d.map(Dk),t.description,e(t,n,r,i,a)],` -`)}}function rp(e){return e&&` ${e.replace(/\n/g,` - `)}`}function Ia(e){return e&&e.length!==0?`{ -${rp(Ve(e,` -`))} -}`:""}function Pn(e,t,n){return t?e+t+(n||""):""}function Wte(e,t=!1){let n=e.replace(/\\/g,"\\\\").replace(/"""/g,'\\"""');return(e[0]===" "||e[0]===" ")&&e.indexOf(` -`)===-1?`"""${n.replace(/"$/,`" -`)}"""`:`""" -${t?n:rp(n)} -"""`}var vk={Name:{leave:e=>e.value},Variable:{leave:e=>"$"+e.name},Document:{leave:e=>Ve(e.definitions,` - -`)},OperationDefinition:{leave:e=>{let t=Pn("(",Ve(e.variableDefinitions,", "),")");return Ve([e.operation,Ve([e.name,t]),Ve(e.directives," ")]," ")+" "+e.selectionSet}},VariableDefinition:{leave:({variable:e,type:t,defaultValue:n,directives:r})=>e+": "+t+Pn(" = ",n)+Pn(" ",Ve(r," "))},SelectionSet:{leave:({selections:e})=>Ia(e)},Field:{leave({alias:e,name:t,arguments:n,directives:r,selectionSet:i}){let a=Pn("",e,": ")+t,o=a+Pn("(",Ve(n,", "),")");return o.length>Yte&&(o=a+Pn(`( -`,rp(Ve(n,` -`)),` -)`)),Ve([o,Ve(r," "),i]," ")}},Argument:{leave:({name:e,value:t})=>e+": "+t},FragmentSpread:{leave:({name:e,directives:t})=>"..."+e+Pn(" ",Ve(t," "))},InlineFragment:{leave:({typeCondition:e,directives:t,selectionSet:n})=>Ve(["...",Pn("on ",e),Ve(t," "),n]," ")},FragmentDefinition:{leave:({name:e,typeCondition:t,variableDefinitions:n,directives:r,selectionSet:i})=>`fragment ${e}${Pn("(",Ve(n,", "),")")} on ${t} ${Pn("",Ve(r," ")," ")}`+i},IntValue:{leave:({value:e})=>e},FloatValue:{leave:({value:e})=>e},StringValue:{leave:({value:e,block:t})=>t?Wte(e):JSON.stringify(e)},BooleanValue:{leave:({value:e})=>e?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:e})=>e},ListValue:{leave:({values:e})=>"["+Ve(e,", ")+"]"},ObjectValue:{leave:({fields:e})=>"{"+Ve(e,", ")+"}"},ObjectField:{leave:({name:e,value:t})=>e+": "+t},Directive:{leave:({name:e,arguments:t})=>"@"+e+Pn("(",Ve(t,", "),")")},NamedType:{leave:({name:e})=>e},ListType:{leave:({type:e})=>"["+e+"]"},NonNullType:{leave:({type:e})=>e+"!"},SchemaDefinition:{leave:({directives:e,operationTypes:t})=>Ve(["schema",Ve(e," "),Ia(t)]," ")},OperationTypeDefinition:{leave:({operation:e,type:t})=>e+": "+t},ScalarTypeDefinition:{leave:({name:e,directives:t})=>Ve(["scalar",e,Ve(t," ")]," ")},ObjectTypeDefinition:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ve(["type",e,Pn("implements ",Ve(t," & ")),Ve(n," "),Ia(r)]," ")},FieldDefinition:{leave:({name:e,arguments:t,type:n,directives:r})=>e+(_k(t)?Pn(`( -`,rp(Ve(t,` -`)),` -)`):Pn("(",Ve(t,", "),")"))+": "+n+Pn(" ",Ve(r," "))},InputValueDefinition:{leave:({name:e,type:t,defaultValue:n,directives:r})=>Ve([e+": "+t,Pn("= ",n),Ve(r," ")]," ")},InterfaceTypeDefinition:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ve(["interface",e,Pn("implements ",Ve(t," & ")),Ve(n," "),Ia(r)]," ")},UnionTypeDefinition:{leave:({name:e,directives:t,types:n})=>Ve(["union",e,Ve(t," "),Pn("= ",Ve(n," | "))]," ")},EnumTypeDefinition:{leave:({name:e,directives:t,values:n})=>Ve(["enum",e,Ve(t," "),Ia(n)]," ")},EnumValueDefinition:{leave:({name:e,directives:t})=>Ve([e,Ve(t," ")]," ")},InputObjectTypeDefinition:{leave:({name:e,directives:t,fields:n})=>Ve(["input",e,Ve(t," "),Ia(n)]," ")},DirectiveDefinition:{leave:({name:e,arguments:t,repeatable:n,locations:r})=>"directive @"+e+(_k(t)?Pn(`( -`,rp(Ve(t,` -`)),` -)`):Pn("(",Ve(t,", "),")"))+(n?" repeatable":"")+" on "+Ve(r," | ")},SchemaExtension:{leave:({directives:e,operationTypes:t})=>Ve(["extend schema",Ve(e," "),Ia(t)]," ")},ScalarTypeExtension:{leave:({name:e,directives:t})=>Ve(["extend scalar",e,Ve(t," ")]," ")},ObjectTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ve(["extend type",e,Pn("implements ",Ve(t," & ")),Ve(n," "),Ia(r)]," ")},InterfaceTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Ve(["extend interface",e,Pn("implements ",Ve(t," & ")),Ve(n," "),Ia(r)]," ")},UnionTypeExtension:{leave:({name:e,directives:t,types:n})=>Ve(["extend union",e,Ve(t," "),Pn("= ",Ve(n," | "))]," ")},EnumTypeExtension:{leave:({name:e,directives:t,values:n})=>Ve(["extend enum",e,Ve(t," "),Ia(n)]," ")},InputObjectTypeExtension:{leave:({name:e,directives:t,fields:n})=>Ve(["extend input",e,Ve(t," "),Ia(n)]," ")}},Xte=Object.keys(vk).reduce((e,t)=>$(M({},e),{[t]:{leave:Hte(vk[t].leave)}}),{});function Zte(e){return(0,Ok.visit)(e,Xte)}function ene(e){return e.kind==="FieldDefinition"}function tne(e,t){if(e.description!=null)return e.description.value;if(t!=null&&t.commentDescriptions)return US(e)}function US(e){let t=bk(e);if(t!==void 0)return Ak(` -${t}`)}function bk(e){let t=e.loc;if(!t)return;let n=[],r=t.startToken.prev;for(;r!=null&&r.kind===Ok.TokenKind.COMMENT&&r.next!=null&&r.prev!=null&&r.line+1===r.next.line&&r.line!==r.prev.line;){let i=String(r.value);n.push(i),r=r.prev}return n.length>0?n.reverse().join(` -`):void 0}function Ak(e){let t=e.split(/\r\n|[\n\r]/g),n=Rk(t);if(n!==0)for(let r=1;r0&&Sk(t[0]);)t.shift();for(;t.length>0&&Sk(t[t.length-1]);)t.pop();return t.join(` -`)}function Rk(e){let t=null;for(let n=1;n{"use strict";m();T();N();Object.defineProperty(ip,"__esModule",{value:!0});ip.parseGraphQLSDL=nne;ip.transformCommentsToDescriptions=wk;ip.isDescribable=Lk;var Wi=_e(),Fk=BS();function nne(e,t,n={}){let r;try{n.commentDescriptions&&t.includes("#")?(r=wk(t,n),n.noLocation&&(r=(0,Wi.parse)((0,Wi.print)(r),n))):r=(0,Wi.parse)(new Wi.Source(t,e),n)}catch(i){if(i.message.includes("EOF")&&t.replace(/(\#[^*]*)/g,"").trim()==="")r={kind:Wi.Kind.DOCUMENT,definitions:[]};else throw i}return{location:e,document:r}}function wk(e,t={}){let n=(0,Wi.parse)(e,$(M({},t),{noLocation:!1}));return(0,Wi.visit)(n,{leave:i=>{if(Lk(i)){let a=(0,Fk.getLeadingCommentBlock)(i);if(a!==void 0){let o=(0,Fk.dedentBlockStringValue)(` -`+a),u=o.includes(` -`);return i.description?$(M({},i),{description:$(M({},i.description),{value:i.description.value+` -`+o,block:!0})}):$(M({},i),{description:{kind:Wi.Kind.STRING,value:o,block:u}})}}}})}function Lk(e){return(0,Wi.isTypeSystemDefinitionNode)(e)||e.kind===Wi.Kind.FIELD_DEFINITION||e.kind===Wi.Kind.INPUT_VALUE_DEFINITION||e.kind===Wi.Kind.ENUM_VALUE_DEFINITION}});var jk=F(qS=>{"use strict";m();T();N();Object.defineProperty(qS,"__esModule",{value:!0});qS.buildOperationNodeForField=ine;var lt=_e(),rne=Xf(),Mk=ep(),xS=[],GT=new Map;function xk(e){xS.push(e)}function Uk(){xS=[]}function Bk(){GT=new Map}function ine({schema:e,kind:t,field:n,models:r,ignore:i=[],depthLimit:a,circularReferenceDepth:o,argNames:u,selectedFields:l=!0}){Uk(),Bk();let d=(0,Mk.getRootTypeNames)(e),p=ane({schema:e,fieldName:n,kind:t,models:r||[],ignore:i,depthLimit:a||1/0,circularReferenceDepth:o||1,argNames:u,selectedFields:l,rootTypeNames:d});return p.variableDefinitions=[...xS],Uk(),Bk(),p}function ane({schema:e,fieldName:t,kind:n,models:r,ignore:i,depthLimit:a,circularReferenceDepth:o,argNames:u,selectedFields:l,rootTypeNames:d}){let p=(0,Mk.getDefinedRootType)(e,n),E=p.getFields()[t],y=`${t}_${n}`;if(E.args)for(let v of E.args){let R=v.name;(!u||u.includes(R))&&xk(qk(v,R))}return{kind:lt.Kind.OPERATION_DEFINITION,operation:n,name:{kind:lt.Kind.NAME,value:y},variableDefinitions:[],selectionSet:{kind:lt.Kind.SELECTION_SET,selections:[Vk({type:p,field:E,models:r,firstCall:!0,path:[],ancestors:[],ignore:i,depthLimit:a,circularReferenceDepth:o,schema:e,depth:0,argNames:u,selectedFields:l,rootTypeNames:d})]}}}function MS({parent:e,type:t,models:n,firstCall:r,path:i,ancestors:a,ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p,argNames:E,selectedFields:y,rootTypeNames:v}){if(!(typeof y=="boolean"&&p>u)){if((0,lt.isUnionType)(t)){let R=t.getTypes();return{kind:lt.Kind.SELECTION_SET,selections:R.filter(B=>!kS([...a,B],{depth:l})).map(B=>({kind:lt.Kind.INLINE_FRAGMENT,typeCondition:{kind:lt.Kind.NAMED_TYPE,name:{kind:lt.Kind.NAME,value:B.name}},selectionSet:MS({parent:t,type:B,models:n,path:i,ancestors:a,ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p,argNames:E,selectedFields:y,rootTypeNames:v})})).filter(B=>{var V,J;return((J=(V=B==null?void 0:B.selectionSet)==null?void 0:V.selections)==null?void 0:J.length)>0})}}if((0,lt.isInterfaceType)(t)){let R=Object.values(d.getTypeMap()).filter(B=>(0,lt.isObjectType)(B)&&B.getInterfaces().includes(t));return{kind:lt.Kind.SELECTION_SET,selections:R.filter(B=>!kS([...a,B],{depth:l})).map(B=>({kind:lt.Kind.INLINE_FRAGMENT,typeCondition:{kind:lt.Kind.NAMED_TYPE,name:{kind:lt.Kind.NAME,value:B.name}},selectionSet:MS({parent:t,type:B,models:n,path:i,ancestors:a,ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p,argNames:E,selectedFields:y,rootTypeNames:v})})).filter(B=>{var V,J;return((J=(V=B==null?void 0:B.selectionSet)==null?void 0:V.selections)==null?void 0:J.length)>0})}}if((0,lt.isObjectType)(t)&&!v.has(t.name)){let R=o.includes(t.name)||o.includes(`${e.name}.${i[i.length-1]}`),B=n.includes(t.name);if(!r&&B&&!R)return{kind:lt.Kind.SELECTION_SET,selections:[{kind:lt.Kind.FIELD,name:{kind:lt.Kind.NAME,value:"id"}}]};let V=t.getFields();return{kind:lt.Kind.SELECTION_SET,selections:Object.keys(V).filter(J=>!kS([...a,(0,lt.getNamedType)(V[J].type)],{depth:l})).map(J=>{let ne=typeof y=="object"?y[J]:!0;return ne?Vk({type:t,field:V[J],models:n,path:[...i,J],ancestors:a,ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p,argNames:E,selectedFields:ne,rootTypeNames:v}):null}).filter(J=>{var ne,te;return J==null?!1:"selectionSet"in J?!!((te=(ne=J.selectionSet)==null?void 0:ne.selections)!=null&&te.length):!0})}}}}function qk(e,t){function n(i){return(0,lt.isListType)(i)?{kind:lt.Kind.LIST_TYPE,type:n(i.ofType)}:(0,lt.isNonNullType)(i)?{kind:lt.Kind.NON_NULL_TYPE,type:n(i.ofType)}:{kind:lt.Kind.NAMED_TYPE,name:{kind:lt.Kind.NAME,value:i.name}}}let r;try{let i=(0,lt.astFromValue)(e.defaultValue,e.type);i==null?r=void 0:r=i}catch(i){let a=(0,rne.astFromValueUntyped)(e.defaultValue);a==null?r=void 0:r=a}return{kind:lt.Kind.VARIABLE_DEFINITION,variable:{kind:lt.Kind.VARIABLE,name:{kind:lt.Kind.NAME,value:t||e.name}},type:n(e.type),defaultValue:r}}function kk(e,t){return[...t,e].join("_")}function Vk({type:e,field:t,models:n,firstCall:r,path:i,ancestors:a,ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p,argNames:E,selectedFields:y,rootTypeNames:v}){let R=(0,lt.getNamedType)(t.type),B=[],V=!1;if(t.args&&t.args.length&&(B=t.args.map(Ne=>{let Ee=kk(Ne.name,i);return E&&!E.includes(Ee)?((0,lt.isNonNullType)(Ne.type)&&(V=!0),null):(r||xk(qk(Ne,Ee)),{kind:lt.Kind.ARGUMENT,name:{kind:lt.Kind.NAME,value:Ne.name},value:{kind:lt.Kind.VARIABLE,name:{kind:lt.Kind.NAME,value:kk(Ne.name,i)}}})}).filter(Boolean)),V)return null;let J=[...i,t.name],ne=J.join("."),te=t.name;return GT.has(ne)&>.get(ne)!==t.type.toString()&&(te+=t.type.toString().replace(/!/g,"NonNull").replace(/\[/g,"List").replace(/\]/g,"")),GT.set(ne,t.type.toString()),!(0,lt.isScalarType)(R)&&!(0,lt.isEnumType)(R)?$(M({kind:lt.Kind.FIELD,name:{kind:lt.Kind.NAME,value:t.name}},te!==t.name&&{alias:{kind:lt.Kind.NAME,value:te}}),{selectionSet:MS({parent:e,type:R,models:n,firstCall:r,path:J,ancestors:[...a,e],ignore:o,depthLimit:u,circularReferenceDepth:l,schema:d,depth:p+1,argNames:E,selectedFields:y,rootTypeNames:v})||void 0,arguments:B}):$(M({kind:lt.Kind.FIELD,name:{kind:lt.Kind.NAME,value:t.name}},te!==t.name&&{alias:{kind:lt.Kind.NAME,value:te}}),{arguments:B})}function kS(e,t={depth:1}){let n=e[e.length-1];return(0,lt.isScalarType)(n)?!1:e.filter(i=>i.name===n.name).length>t.depth}});var $k=F(QT=>{"use strict";m();T();N();Object.defineProperty(QT,"__esModule",{value:!0});QT.DirectiveLocation=void 0;var Kk;(function(e){e.QUERY="QUERY",e.MUTATION="MUTATION",e.SUBSCRIPTION="SUBSCRIPTION",e.FIELD="FIELD",e.FRAGMENT_DEFINITION="FRAGMENT_DEFINITION",e.FRAGMENT_SPREAD="FRAGMENT_SPREAD",e.INLINE_FRAGMENT="INLINE_FRAGMENT",e.VARIABLE_DEFINITION="VARIABLE_DEFINITION",e.SCHEMA="SCHEMA",e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.FIELD_DEFINITION="FIELD_DEFINITION",e.ARGUMENT_DEFINITION="ARGUMENT_DEFINITION",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.ENUM_VALUE="ENUM_VALUE",e.INPUT_OBJECT="INPUT_OBJECT",e.INPUT_FIELD_DEFINITION="INPUT_FIELD_DEFINITION"})(Kk||(QT.DirectiveLocation=Kk={}))});var wc=F(YT=>{"use strict";m();T();N();Object.defineProperty(YT,"__esModule",{value:!0});YT.MapperKind=void 0;var Gk;(function(e){e.TYPE="MapperKind.TYPE",e.SCALAR_TYPE="MapperKind.SCALAR_TYPE",e.ENUM_TYPE="MapperKind.ENUM_TYPE",e.COMPOSITE_TYPE="MapperKind.COMPOSITE_TYPE",e.OBJECT_TYPE="MapperKind.OBJECT_TYPE",e.INPUT_OBJECT_TYPE="MapperKind.INPUT_OBJECT_TYPE",e.ABSTRACT_TYPE="MapperKind.ABSTRACT_TYPE",e.UNION_TYPE="MapperKind.UNION_TYPE",e.INTERFACE_TYPE="MapperKind.INTERFACE_TYPE",e.ROOT_OBJECT="MapperKind.ROOT_OBJECT",e.QUERY="MapperKind.QUERY",e.MUTATION="MapperKind.MUTATION",e.SUBSCRIPTION="MapperKind.SUBSCRIPTION",e.DIRECTIVE="MapperKind.DIRECTIVE",e.FIELD="MapperKind.FIELD",e.COMPOSITE_FIELD="MapperKind.COMPOSITE_FIELD",e.OBJECT_FIELD="MapperKind.OBJECT_FIELD",e.ROOT_FIELD="MapperKind.ROOT_FIELD",e.QUERY_ROOT_FIELD="MapperKind.QUERY_ROOT_FIELD",e.MUTATION_ROOT_FIELD="MapperKind.MUTATION_ROOT_FIELD",e.SUBSCRIPTION_ROOT_FIELD="MapperKind.SUBSCRIPTION_ROOT_FIELD",e.INTERFACE_FIELD="MapperKind.INTERFACE_FIELD",e.INPUT_OBJECT_FIELD="MapperKind.INPUT_OBJECT_FIELD",e.ARGUMENT="MapperKind.ARGUMENT",e.ENUM_VALUE="MapperKind.ENUM_VALUE"})(Gk||(YT.MapperKind=Gk={}))});var jS=F(VS=>{"use strict";m();T();N();Object.defineProperty(VS,"__esModule",{value:!0});VS.getObjectTypeFromTypeMap=one;var sne=_e();function one(e,t){if(t){let n=e[t.name];if((0,sne.isObjectType)(n))return n}}});var GS=F(ed=>{"use strict";m();T();N();Object.defineProperty(ed,"__esModule",{value:!0});ed.createNamedStub=KS;ed.createStub=$S;ed.isNamedStub=une;ed.getBuiltInForStub=cne;var Er=_e();function KS(e,t){let n;return t==="object"?n=Er.GraphQLObjectType:t==="interface"?n=Er.GraphQLInterfaceType:n=Er.GraphQLInputObjectType,new n({name:e,fields:{_fake:{type:Er.GraphQLString}}})}function $S(e,t){switch(e.kind){case Er.Kind.LIST_TYPE:return new Er.GraphQLList($S(e.type,t));case Er.Kind.NON_NULL_TYPE:return new Er.GraphQLNonNull($S(e.type,t));default:return t==="output"?KS(e.name.value,"object"):KS(e.name.value,"input")}}function une(e){if("getFields"in e){let t=e.getFields();for(let n in t)return t[n].name==="_fake"}return!1}function cne(e){switch(e.name){case Er.GraphQLInt.name:return Er.GraphQLInt;case Er.GraphQLFloat.name:return Er.GraphQLFloat;case Er.GraphQLString.name:return Er.GraphQLString;case Er.GraphQLBoolean.name:return Er.GraphQLBoolean;case Er.GraphQLID.name:return Er.GraphQLID;default:return e}}});var JT=F(QS=>{"use strict";m();T();N();Object.defineProperty(QS,"__esModule",{value:!0});QS.rewireTypes=lne;var Zn=_e(),Qk=GS();function lne(e,t){let n=Object.create(null);for(let y in e)n[y]=e[y];let r=Object.create(null);for(let y in n){let v=n[y];if(v==null||y.startsWith("__"))continue;let R=v.name;if(!R.startsWith("__")){if(r[R]!=null){console.warn(`Duplicate schema type name ${R} found; keeping the existing one found in the schema`);continue}r[R]=v}}for(let y in r)r[y]=u(r[y]);let i=t.map(y=>a(y));return{typeMap:r,directives:i};function a(y){if((0,Zn.isSpecifiedDirective)(y))return y;let v=y.toConfig();return v.args=o(v.args),new Zn.GraphQLDirective(v)}function o(y){let v={};for(let R in y){let B=y[R],V=E(B.type);V!=null&&(B.type=V,v[R]=B)}return v}function u(y){if((0,Zn.isObjectType)(y)){let v=y.toConfig(),R=$(M({},v),{fields:()=>l(v.fields),interfaces:()=>p(v.interfaces)});return new Zn.GraphQLObjectType(R)}else if((0,Zn.isInterfaceType)(y)){let v=y.toConfig(),R=$(M({},v),{fields:()=>l(v.fields)});return"interfaces"in R&&(R.interfaces=()=>p(v.interfaces)),new Zn.GraphQLInterfaceType(R)}else if((0,Zn.isUnionType)(y)){let v=y.toConfig(),R=$(M({},v),{types:()=>p(v.types)});return new Zn.GraphQLUnionType(R)}else if((0,Zn.isInputObjectType)(y)){let v=y.toConfig(),R=$(M({},v),{fields:()=>d(v.fields)});return new Zn.GraphQLInputObjectType(R)}else if((0,Zn.isEnumType)(y)){let v=y.toConfig();return new Zn.GraphQLEnumType(v)}else if((0,Zn.isScalarType)(y)){if((0,Zn.isSpecifiedScalarType)(y))return y;let v=y.toConfig();return new Zn.GraphQLScalarType(v)}throw new Error(`Unexpected schema type: ${y}`)}function l(y){let v={};for(let R in y){let B=y[R],V=E(B.type);V!=null&&B.args&&(B.type=V,B.args=o(B.args),v[R]=B)}return v}function d(y){let v={};for(let R in y){let B=y[R],V=E(B.type);V!=null&&(B.type=V,v[R]=B)}return v}function p(y){let v=[];for(let R of y){let B=E(R);B!=null&&v.push(B)}return v}function E(y){if((0,Zn.isListType)(y)){let v=E(y.ofType);return v!=null?new Zn.GraphQLList(v):null}else if((0,Zn.isNonNullType)(y)){let v=E(y.ofType);return v!=null?new Zn.GraphQLNonNull(v):null}else if((0,Zn.isNamedType)(y)){let v=n[y.name];return v===void 0&&(v=(0,Qk.isNamedStub)(y)?(0,Qk.getBuiltInForStub)(y):u(y),r[v.name]=n[y.name]=v),v!=null?r[v.name]:null}return null}}});var YS=F(nd=>{"use strict";m();T();N();Object.defineProperty(nd,"__esModule",{value:!0});nd.transformInputValue=td;nd.serializeInputValue=fne;nd.parseInputValue=pne;nd.parseInputValueLiteral=mne;var zT=_e(),dne=Hl();function td(e,t,n=null,r=null){if(t==null)return t;let i=(0,zT.getNullableType)(e);if((0,zT.isLeafType)(i))return n!=null?n(i,t):t;if((0,zT.isListType)(i))return(0,dne.asArray)(t).map(a=>td(i.ofType,a,n,r));if((0,zT.isInputObjectType)(i)){let a=i.getFields(),o={};for(let u in t){let l=a[u];l!=null&&(o[u]=td(l.type,t[u],n,r))}return r!=null?r(i,o):o}}function fne(e,t){return td(e,t,(n,r)=>{try{return n.serialize(r)}catch(i){return r}})}function pne(e,t){return td(e,t,(n,r)=>{try{return n.parseValue(r)}catch(i){return r}})}function mne(e,t){return td(e,t,(n,r)=>n.parseLiteral(r,{}))}});var id=F(WT=>{"use strict";m();T();N();Object.defineProperty(WT,"__esModule",{value:!0});WT.mapSchema=Tne;WT.correctASTNodes=ap;var st=_e(),rd=jS(),Pt=wc(),Nne=JT(),Yk=YS();function Tne(e,t={}){let n=Hk(zk(JS(Jk(hne(JS(Jk(e.getTypeMap(),e,Yk.serializeInputValue),e,t,u=>(0,st.isLeafType)(u)),e,t),e,Yk.parseInputValue),e,t,u=>!(0,st.isLeafType)(u)),e,t),e,t),r=e.getDirectives(),i=yne(r,e,t),{typeMap:a,directives:o}=(0,Nne.rewireTypes)(n,i);return new st.GraphQLSchema($(M({},e.toConfig()),{query:(0,rd.getObjectTypeFromTypeMap)(a,(0,rd.getObjectTypeFromTypeMap)(n,e.getQueryType())),mutation:(0,rd.getObjectTypeFromTypeMap)(a,(0,rd.getObjectTypeFromTypeMap)(n,e.getMutationType())),subscription:(0,rd.getObjectTypeFromTypeMap)(a,(0,rd.getObjectTypeFromTypeMap)(n,e.getSubscriptionType())),types:Object.values(a),directives:o}))}var Ene=["String","ID","Int","Float","Boolean"];function JS(e,t,n,r=()=>!0){let i={};for(let a in e)if(!a.startsWith("__")&&!Ene.includes(a)){let o=e[a];if(o==null||!r(o)){i[a]=o;continue}let u=gne(t,n,a);if(u==null){i[a]=o;continue}let l=u(o,t);if(l===void 0){i[a]=o;continue}i[a]=l}return i}function hne(e,t,n){let r=Dne(n);return r?JS(e,t,{[Pt.MapperKind.ENUM_TYPE]:i=>{let a=i.toConfig(),o=a.values,u={};for(let l in o){let d=o[l],p=r(d,i.name,t,l);if(p===void 0)u[l]=d;else if(Array.isArray(p)){let[E,y]=p;u[E]=y===void 0?d:y}else p!==null&&(u[l]=p)}return ap(new st.GraphQLEnumType($(M({},a),{values:u})))}},i=>(0,st.isEnumType)(i)):e}function Jk(e,t,n){let r=Hk(e,t,{[Pt.MapperKind.ARGUMENT]:i=>{if(i.defaultValue===void 0)return i;let a=HT(e,i.type);if(a!=null)return $(M({},i),{defaultValue:n(a,i.defaultValue)})}});return zk(r,t,{[Pt.MapperKind.INPUT_OBJECT_FIELD]:i=>{if(i.defaultValue===void 0)return i;let a=HT(r,i.type);if(a!=null)return $(M({},i),{defaultValue:n(a,i.defaultValue)})}})}function HT(e,t){if((0,st.isListType)(t)){let n=HT(e,t.ofType);return n!=null?new st.GraphQLList(n):null}else if((0,st.isNonNullType)(t)){let n=HT(e,t.ofType);return n!=null?new st.GraphQLNonNull(n):null}else if((0,st.isNamedType)(t)){let n=e[t.name];return n!=null?n:null}return null}function zk(e,t,n){let r={};for(let i in e)if(!i.startsWith("__")){let a=e[i];if(!(0,st.isObjectType)(a)&&!(0,st.isInterfaceType)(a)&&!(0,st.isInputObjectType)(a)){r[i]=a;continue}let o=vne(t,n,i);if(o==null){r[i]=a;continue}let u=a.toConfig(),l=u.fields,d={};for(let p in l){let E=l[p],y=o(E,p,i,t);if(y===void 0)d[p]=E;else if(Array.isArray(y)){let[v,R]=y;R.astNode!=null&&(R.astNode=$(M({},R.astNode),{name:$(M({},R.astNode.name),{value:v})})),d[v]=R===void 0?E:R}else y!==null&&(d[p]=y)}(0,st.isObjectType)(a)?r[i]=ap(new st.GraphQLObjectType($(M({},u),{fields:d}))):(0,st.isInterfaceType)(a)?r[i]=ap(new st.GraphQLInterfaceType($(M({},u),{fields:d}))):r[i]=ap(new st.GraphQLInputObjectType($(M({},u),{fields:d})))}return r}function Hk(e,t,n){let r={};for(let i in e)if(!i.startsWith("__")){let a=e[i];if(!(0,st.isObjectType)(a)&&!(0,st.isInterfaceType)(a)){r[i]=a;continue}let o=Sne(n);if(o==null){r[i]=a;continue}let u=a.toConfig(),l=u.fields,d={};for(let p in l){let E=l[p],y=E.args;if(y==null){d[p]=E;continue}let v=Object.keys(y);if(!v.length){d[p]=E;continue}let R={};for(let B of v){let V=y[B],J=o(V,p,i,t);if(J===void 0)R[B]=V;else if(Array.isArray(J)){let[ne,te]=J;R[ne]=te}else J!==null&&(R[B]=J)}d[p]=$(M({},E),{args:R})}(0,st.isObjectType)(a)?r[i]=new st.GraphQLObjectType($(M({},u),{fields:d})):(0,st.isInterfaceType)(a)?r[i]=new st.GraphQLInterfaceType($(M({},u),{fields:d})):r[i]=new st.GraphQLInputObjectType($(M({},u),{fields:d}))}return r}function yne(e,t,n){let r=One(n);if(r==null)return e.slice();let i=[];for(let a of e){let o=r(a,t);o===void 0?i.push(a):o!==null&&i.push(o)}return i}function Ine(e,t){var i,a,o;let n=e.getType(t),r=[Pt.MapperKind.TYPE];return(0,st.isObjectType)(n)?(r.push(Pt.MapperKind.COMPOSITE_TYPE,Pt.MapperKind.OBJECT_TYPE),t===((i=e.getQueryType())==null?void 0:i.name)?r.push(Pt.MapperKind.ROOT_OBJECT,Pt.MapperKind.QUERY):t===((a=e.getMutationType())==null?void 0:a.name)?r.push(Pt.MapperKind.ROOT_OBJECT,Pt.MapperKind.MUTATION):t===((o=e.getSubscriptionType())==null?void 0:o.name)&&r.push(Pt.MapperKind.ROOT_OBJECT,Pt.MapperKind.SUBSCRIPTION)):(0,st.isInputObjectType)(n)?r.push(Pt.MapperKind.INPUT_OBJECT_TYPE):(0,st.isInterfaceType)(n)?r.push(Pt.MapperKind.COMPOSITE_TYPE,Pt.MapperKind.ABSTRACT_TYPE,Pt.MapperKind.INTERFACE_TYPE):(0,st.isUnionType)(n)?r.push(Pt.MapperKind.COMPOSITE_TYPE,Pt.MapperKind.ABSTRACT_TYPE,Pt.MapperKind.UNION_TYPE):(0,st.isEnumType)(n)?r.push(Pt.MapperKind.ENUM_TYPE):(0,st.isScalarType)(n)&&r.push(Pt.MapperKind.SCALAR_TYPE),r}function gne(e,t,n){let r=Ine(e,n),i,a=[...r];for(;!i&&a.length>0;){let o=a.pop();i=t[o]}return i!=null?i:null}function _ne(e,t){var i,a,o;let n=e.getType(t),r=[Pt.MapperKind.FIELD];return(0,st.isObjectType)(n)?(r.push(Pt.MapperKind.COMPOSITE_FIELD,Pt.MapperKind.OBJECT_FIELD),t===((i=e.getQueryType())==null?void 0:i.name)?r.push(Pt.MapperKind.ROOT_FIELD,Pt.MapperKind.QUERY_ROOT_FIELD):t===((a=e.getMutationType())==null?void 0:a.name)?r.push(Pt.MapperKind.ROOT_FIELD,Pt.MapperKind.MUTATION_ROOT_FIELD):t===((o=e.getSubscriptionType())==null?void 0:o.name)&&r.push(Pt.MapperKind.ROOT_FIELD,Pt.MapperKind.SUBSCRIPTION_ROOT_FIELD)):(0,st.isInterfaceType)(n)?r.push(Pt.MapperKind.COMPOSITE_FIELD,Pt.MapperKind.INTERFACE_FIELD):(0,st.isInputObjectType)(n)&&r.push(Pt.MapperKind.INPUT_OBJECT_FIELD),r}function vne(e,t,n){let r=_ne(e,n),i,a=[...r];for(;!i&&a.length>0;){let o=a.pop();i=t[o]}return i!=null?i:null}function Sne(e){let t=e[Pt.MapperKind.ARGUMENT];return t!=null?t:null}function One(e){let t=e[Pt.MapperKind.DIRECTIVE];return t!=null?t:null}function Dne(e){let t=e[Pt.MapperKind.ENUM_VALUE];return t!=null?t:null}function ap(e){if((0,st.isObjectType)(e)){let t=e.toConfig();if(t.astNode!=null){let n=[];for(let r in t.fields){let i=t.fields[r];i.astNode!=null&&n.push(i.astNode)}t.astNode=$(M({},t.astNode),{kind:st.Kind.OBJECT_TYPE_DEFINITION,fields:n})}return t.extensionASTNodes!=null&&(t.extensionASTNodes=t.extensionASTNodes.map(n=>$(M({},n),{kind:st.Kind.OBJECT_TYPE_EXTENSION,fields:void 0}))),new st.GraphQLObjectType(t)}else if((0,st.isInterfaceType)(e)){let t=e.toConfig();if(t.astNode!=null){let n=[];for(let r in t.fields){let i=t.fields[r];i.astNode!=null&&n.push(i.astNode)}t.astNode=$(M({},t.astNode),{kind:st.Kind.INTERFACE_TYPE_DEFINITION,fields:n})}return t.extensionASTNodes!=null&&(t.extensionASTNodes=t.extensionASTNodes.map(n=>$(M({},n),{kind:st.Kind.INTERFACE_TYPE_EXTENSION,fields:void 0}))),new st.GraphQLInterfaceType(t)}else if((0,st.isInputObjectType)(e)){let t=e.toConfig();if(t.astNode!=null){let n=[];for(let r in t.fields){let i=t.fields[r];i.astNode!=null&&n.push(i.astNode)}t.astNode=$(M({},t.astNode),{kind:st.Kind.INPUT_OBJECT_TYPE_DEFINITION,fields:n})}return t.extensionASTNodes!=null&&(t.extensionASTNodes=t.extensionASTNodes.map(n=>$(M({},n),{kind:st.Kind.INPUT_OBJECT_TYPE_EXTENSION,fields:void 0}))),new st.GraphQLInputObjectType(t)}else if((0,st.isEnumType)(e)){let t=e.toConfig();if(t.astNode!=null){let n=[];for(let r in t.values){let i=t.values[r];i.astNode!=null&&n.push(i.astNode)}t.astNode=$(M({},t.astNode),{values:n})}return t.extensionASTNodes!=null&&(t.extensionASTNodes=t.extensionASTNodes.map(n=>$(M({},n),{values:void 0}))),new st.GraphQLEnumType(t)}else return e}});var Wk=F(WS=>{"use strict";m();T();N();Object.defineProperty(WS,"__esModule",{value:!0});WS.filterSchema=Ane;var XT=_e(),ga=wc(),bne=id();function Ane({schema:e,typeFilter:t=()=>!0,fieldFilter:n=void 0,rootFieldFilter:r=void 0,objectFieldFilter:i=void 0,interfaceFieldFilter:a=void 0,inputObjectFieldFilter:o=void 0,argumentFilter:u=void 0,directiveFilter:l=void 0,enumValueFilter:d=void 0}){return(0,bne.mapSchema)(e,{[ga.MapperKind.QUERY]:E=>zS(E,"Query",r,u),[ga.MapperKind.MUTATION]:E=>zS(E,"Mutation",r,u),[ga.MapperKind.SUBSCRIPTION]:E=>zS(E,"Subscription",r,u),[ga.MapperKind.OBJECT_TYPE]:E=>t(E.name,E)?HS(XT.GraphQLObjectType,E,i||n,u):null,[ga.MapperKind.INTERFACE_TYPE]:E=>t(E.name,E)?HS(XT.GraphQLInterfaceType,E,a||n,u):null,[ga.MapperKind.INPUT_OBJECT_TYPE]:E=>t(E.name,E)?HS(XT.GraphQLInputObjectType,E,o||n):null,[ga.MapperKind.UNION_TYPE]:E=>t(E.name,E)?void 0:null,[ga.MapperKind.ENUM_TYPE]:E=>t(E.name,E)?void 0:null,[ga.MapperKind.SCALAR_TYPE]:E=>t(E.name,E)?void 0:null,[ga.MapperKind.DIRECTIVE]:E=>l&&!l(E.name,E)?null:void 0,[ga.MapperKind.ENUM_VALUE]:(E,y,v,R)=>d&&!d(y,R,E)?null:void 0})}function zS(e,t,n,r){if(n||r){let i=e.toConfig();for(let a in i.fields){let o=i.fields[a];if(n&&!n(t,a,i.fields[a]))delete i.fields[a];else if(r&&o.args)for(let u in o.args)r(e.name,a,u,o.args[u])||delete o.args[u]}return new XT.GraphQLObjectType(i)}return e}function HS(e,t,n,r){if(n||r){let i=t.toConfig();for(let a in i.fields){let o=i.fields[a];if(n&&!n(t.name,a,i.fields[a]))delete i.fields[a];else if(r&&"args"in o)for(let u in o.args)r(t.name,a,u,o.args[u])||delete o.args[u]}return new e(i)}}});var Zk=F(ZT=>{"use strict";m();T();N();Object.defineProperty(ZT,"__esModule",{value:!0});ZT.healSchema=Rne;ZT.healTypes=Xk;var ts=_e();function Rne(e){return Xk(e.getTypeMap(),e.getDirectives()),e}function Xk(e,t){let n=Object.create(null);for(let d in e){let p=e[d];if(p==null||d.startsWith("__"))continue;let E=p.name;if(!E.startsWith("__")){if(n[E]!=null){console.warn(`Duplicate schema type name ${E} found; keeping the existing one found in the schema`);continue}n[E]=p}}for(let d in n){let p=n[d];e[d]=p}for(let d of t)d.args=d.args.filter(p=>(p.type=l(p.type),p.type!==null));for(let d in e){let p=e[d];!d.startsWith("__")&&d in n&&p!=null&&r(p)}for(let d in e)!d.startsWith("__")&&!(d in n)&&delete e[d];function r(d){if((0,ts.isObjectType)(d)){i(d),a(d);return}else if((0,ts.isInterfaceType)(d)){i(d),"getInterfaces"in d&&a(d);return}else if((0,ts.isUnionType)(d)){u(d);return}else if((0,ts.isInputObjectType)(d)){o(d);return}else if((0,ts.isLeafType)(d))return;throw new Error(`Unexpected schema type: ${d}`)}function i(d){let p=d.getFields();for(let[E,y]of Object.entries(p))y.args.map(v=>(v.type=l(v.type),v.type===null?null:v)).filter(Boolean),y.type=l(y.type),y.type===null&&delete p[E]}function a(d){if("getInterfaces"in d){let p=d.getInterfaces();p.push(...p.splice(0).map(E=>l(E)).filter(Boolean))}}function o(d){let p=d.getFields();for(let[E,y]of Object.entries(p))y.type=l(y.type),y.type===null&&delete p[E]}function u(d){let p=d.getTypes();p.push(...p.splice(0).map(E=>l(E)).filter(Boolean))}function l(d){if((0,ts.isListType)(d)){let p=l(d.ofType);return p!=null?new ts.GraphQLList(p):null}else if((0,ts.isNonNullType)(d)){let p=l(d.ofType);return p!=null?new ts.GraphQLNonNull(p):null}else if((0,ts.isNamedType)(d)){let p=e[d.name];if(p&&d!==p)return p}return d}}});var eM=F(XS=>{"use strict";m();T();N();Object.defineProperty(XS,"__esModule",{value:!0});XS.getResolversFromSchema=Pne;var Lc=_e();function Pne(e,t){var i,a;let n=Object.create(null),r=e.getTypeMap();for(let o in r)if(!o.startsWith("__")){let u=r[o];if((0,Lc.isScalarType)(u)){if(!(0,Lc.isSpecifiedScalarType)(u)){let l=u.toConfig();delete l.astNode,n[o]=new Lc.GraphQLScalarType(l)}}else if((0,Lc.isEnumType)(u)){n[o]={};let l=u.getValues();for(let d of l)n[o][d.name]=d.value}else if((0,Lc.isInterfaceType)(u))u.resolveType!=null&&(n[o]={__resolveType:u.resolveType});else if((0,Lc.isUnionType)(u))u.resolveType!=null&&(n[o]={__resolveType:u.resolveType});else if((0,Lc.isObjectType)(u)){n[o]={},u.isTypeOf!=null&&(n[o].__isTypeOf=u.isTypeOf);let l=u.getFields();for(let d in l){let p=l[d];if(p.subscribe!=null&&(n[o][d]=n[o][d]||{},n[o][d].subscribe=p.subscribe),p.resolve!=null&&((i=p.resolve)==null?void 0:i.name)!=="defaultFieldResolver"){switch((a=p.resolve)==null?void 0:a.name){case"defaultMergedResolver":if(!t)continue;break;case"defaultFieldResolver":continue}n[o][d]=n[o][d]||{},n[o][d].resolve=p.resolve}}}}return n}});var nM=F(ZS=>{"use strict";m();T();N();Object.defineProperty(ZS,"__esModule",{value:!0});ZS.forEachField=Fne;var tM=_e();function Fne(e,t){let n=e.getTypeMap();for(let r in n){let i=n[r];if(!(0,tM.getNamedType)(i).name.startsWith("__")&&(0,tM.isObjectType)(i)){let a=i.getFields();for(let o in a){let u=a[o];t(u,r,o)}}}}});var rM=F(tO=>{"use strict";m();T();N();Object.defineProperty(tO,"__esModule",{value:!0});tO.forEachDefaultValue=wne;var eO=_e();function wne(e,t){let n=e.getTypeMap();for(let r in n){let i=n[r];if(!(0,eO.getNamedType)(i).name.startsWith("__")){if((0,eO.isObjectType)(i)){let a=i.getFields();for(let o in a){let u=a[o];for(let l of u.args)l.defaultValue=t(l.type,l.defaultValue)}}else if((0,eO.isInputObjectType)(i)){let a=i.getFields();for(let o in a){let u=a[o];u.defaultValue=t(u.type,u.defaultValue)}}}}}});var aO=F(iO=>{"use strict";m();T();N();Object.defineProperty(iO,"__esModule",{value:!0});iO.addTypes=Cne;var nO=_e(),rO=jS(),Lne=JT();function Cne(e,t){let n=e.toConfig(),r={};for(let u of n.types)r[u.name]=u;let i={};for(let u of n.directives)i[u.name]=u;for(let u of t)(0,nO.isNamedType)(u)?r[u.name]=u:(0,nO.isDirective)(u)&&(i[u.name]=u);let{typeMap:a,directives:o}=(0,Lne.rewireTypes)(r,Object.values(i));return new nO.GraphQLSchema($(M({},n),{query:(0,rO.getObjectTypeFromTypeMap)(a,e.getQueryType()),mutation:(0,rO.getObjectTypeFromTypeMap)(a,e.getMutationType()),subscription:(0,rO.getObjectTypeFromTypeMap)(a,e.getSubscriptionType()),types:Object.values(a),directives:o}))}});var aM=F(sO=>{"use strict";m();T();N();Object.defineProperty(sO,"__esModule",{value:!0});sO.pruneSchema=xne;var er=_e(),Une=_S(),Bne=wc(),kne=id(),Mne=ep();function xne(e,t={}){let{skipEmptyCompositeTypePruning:n,skipEmptyUnionPruning:r,skipPruning:i,skipUnimplementedInterfacesPruning:a,skipUnusedTypesPruning:o}=t,u=[],l=e;do{let d=qne(l);if(i){let p=[];for(let E in l.getTypeMap()){if(E.startsWith("__"))continue;let y=l.getType(E);y&&i(y)&&p.push(E)}d=iM(p,l,d)}u=[],l=(0,kne.mapSchema)(l,{[Bne.MapperKind.TYPE]:p=>!d.has(p.name)&&!(0,er.isSpecifiedScalarType)(p)?((0,er.isUnionType)(p)||(0,er.isInputObjectType)(p)||(0,er.isInterfaceType)(p)||(0,er.isObjectType)(p)||(0,er.isScalarType)(p))&&(o||(0,er.isUnionType)(p)&&r&&!Object.keys(p.getTypes()).length||((0,er.isInputObjectType)(p)||(0,er.isInterfaceType)(p)||(0,er.isObjectType)(p))&&n&&!Object.keys(p.getFields()).length||(0,er.isInterfaceType)(p)&&a)?p:(u.push(p.name),d.delete(p.name),null):p})}while(u.length);return l}function qne(e){let t=[];for(let n of(0,Mne.getRootTypes)(e))t.push(n.name);return iM(t,e)}function iM(e,t,n=new Set){let r=new Map;for(;e.length;){let i=e.pop();if(n.has(i)&&r[i]!==!0)continue;let a=t.getType(i);if(a){if((0,er.isUnionType)(a)&&e.push(...a.getTypes().map(o=>o.name)),(0,er.isInterfaceType)(a)&&r[i]===!0&&(e.push(...(0,Une.getImplementingTypes)(a.name,t)),r[i]=!1),(0,er.isEnumType)(a)&&e.push(...a.getValues().flatMap(o=>eE(t,o))),"getInterfaces"in a&&e.push(...a.getInterfaces().map(o=>o.name)),"getFields"in a){let o=a.getFields(),u=Object.entries(o);if(!u.length)continue;for(let[,l]of u){(0,er.isObjectType)(a)&&e.push(...l.args.flatMap(p=>{let E=[(0,er.getNamedType)(p.type).name];return E.push(...eE(t,p)),E}));let d=(0,er.getNamedType)(l.type);e.push(d.name),e.push(...eE(t,l)),(0,er.isInterfaceType)(d)&&!(d.name in r)&&(r[d.name]=!0)}}e.push(...eE(t,a)),n.add(i)}}return n}function eE(e,t){var r,i;let n=new Set;if((r=t.astNode)!=null&&r.directives)for(let a of t.astNode.directives){let o=e.getDirective(a.name.value);if(o!=null&&o.args)for(let u of o.args){let l=(0,er.getNamedType)(u.type);n.add(l.name)}}if((i=t.extensions)!=null&&i.directives)for(let a in t.extensions.directives){let o=e.getDirective(a);if(o!=null&&o.args)for(let u of o.args){let l=(0,er.getNamedType)(u.type);n.add(l.name)}}return[...n]}});var uO=F(oO=>{"use strict";m();T();N();Object.defineProperty(oO,"__esModule",{value:!0});oO.mergeDeep=tE;var Vne=Hl();function tE(e,t=!1,n=!1,r=!1){if(e.length===0)return;if(e.length===1)return e[0];let i,a=!0,o=e.every(d=>{if(Array.isArray(d)){if(i===void 0)return i=d.length,!0;if(i===d.length)return!0}else a=!1;return!1});if(r&&o)return new Array(i).fill(null).map((d,p)=>tE(e.map(E=>E[p]),t,n,r));if(a)return e.flat(1);let u,l;t&&(l=e.find(d=>sM(d)),l&&(u==null&&(u={}),Object.setPrototypeOf(u,Object.create(Object.getPrototypeOf(l)))));for(let d of e)if(d!=null)if(sM(d)){if(l){let p=Object.getPrototypeOf(u),E=Object.getPrototypeOf(d);if(E)for(let y of Object.getOwnPropertyNames(E)){let v=Object.getOwnPropertyDescriptor(E,y);(0,Vne.isSome)(v)&&Object.defineProperty(p,y,v)}}for(let p in d)u==null&&(u={}),p in u?u[p]=tE([u[p],d[p]],t,n,r):u[p]=d[p]}else Array.isArray(d)&&Array.isArray(u)?u=tE([u,d],t,n,r):u=d;return u}function sM(e){return e&&typeof e=="object"&&!Array.isArray(e)}});var oM=F(cO=>{"use strict";m();T();N();Object.defineProperty(cO,"__esModule",{value:!0});cO.parseSelectionSet=Kne;var jne=_e();function Kne(e,t){return(0,jne.parse)(e,t).definitions[0].selectionSet}});var uM=F(lO=>{"use strict";m();T();N();Object.defineProperty(lO,"__esModule",{value:!0});lO.getResponseKeyFromInfo=$ne;function $ne(e){return e.fieldNodes[0].alias!=null?e.fieldNodes[0].alias.value:e.fieldName}});var cM=F(ad=>{"use strict";m();T();N();Object.defineProperty(ad,"__esModule",{value:!0});ad.appendObjectFields=Qne;ad.removeObjectFields=Yne;ad.selectObjectFields=Jne;ad.modifyObjectFields=zne;var nE=_e(),Gne=aO(),rE=wc(),Cc=id();function Qne(e,t,n){return e.getType(t)==null?(0,Gne.addTypes)(e,[new nE.GraphQLObjectType({name:t,fields:n})]):(0,Cc.mapSchema)(e,{[rE.MapperKind.OBJECT_TYPE]:r=>{if(r.name===t){let i=r.toConfig(),a=i.fields,o={};for(let u in a)o[u]=a[u];for(let u in n)o[u]=n[u];return(0,Cc.correctASTNodes)(new nE.GraphQLObjectType($(M({},i),{fields:o})))}}})}function Yne(e,t,n){let r={};return[(0,Cc.mapSchema)(e,{[rE.MapperKind.OBJECT_TYPE]:a=>{if(a.name===t){let o=a.toConfig(),u=o.fields,l={};for(let d in u){let p=u[d];n(d,p)?r[d]=p:l[d]=p}return(0,Cc.correctASTNodes)(new nE.GraphQLObjectType($(M({},o),{fields:l})))}}}),r]}function Jne(e,t,n){let r={};return(0,Cc.mapSchema)(e,{[rE.MapperKind.OBJECT_TYPE]:i=>{if(i.name===t){let o=i.toConfig().fields;for(let u in o){let l=o[u];n(u,l)&&(r[u]=l)}}}}),r}function zne(e,t,n,r){let i={};return[(0,Cc.mapSchema)(e,{[rE.MapperKind.OBJECT_TYPE]:o=>{if(o.name===t){let u=o.toConfig(),l=u.fields,d={};for(let p in l){let E=l[p];n(p,E)?i[p]=E:d[p]=E}for(let p in r){let E=r[p];d[p]=E}return(0,Cc.correctASTNodes)(new nE.GraphQLObjectType($(M({},u),{fields:d})))}}}),i]}});var lM=F(dO=>{"use strict";m();T();N();Object.defineProperty(dO,"__esModule",{value:!0});dO.renameType=Hne;var Xi=_e();function Hne(e,t){if((0,Xi.isObjectType)(e))return new Xi.GraphQLObjectType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));if((0,Xi.isInterfaceType)(e))return new Xi.GraphQLInterfaceType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));if((0,Xi.isUnionType)(e))return new Xi.GraphQLUnionType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));if((0,Xi.isInputObjectType)(e))return new Xi.GraphQLInputObjectType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));if((0,Xi.isEnumType)(e))return new Xi.GraphQLEnumType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));if((0,Xi.isScalarType)(e))return new Xi.GraphQLScalarType($(M({},e.toConfig()),{name:t,astNode:e.astNode==null?e.astNode:$(M({},e.astNode),{name:$(M({},e.astNode.name),{value:t})}),extensionASTNodes:e.extensionASTNodes==null?e.extensionASTNodes:e.extensionASTNodes.map(n=>$(M({},n),{name:$(M({},n.name),{value:t})}))}));throw new Error(`Unknown type ${e}.`)}});var dM=F(iE=>{"use strict";m();T();N();Object.defineProperty(iE,"__esModule",{value:!0});iE.updateArgument=Xne;iE.createVariableNameGenerator=Zne;var Uc=_e(),Wne=jT();function Xne(e,t,n,r,i,a,o){if(e[r]={kind:Uc.Kind.ARGUMENT,name:{kind:Uc.Kind.NAME,value:r},value:{kind:Uc.Kind.VARIABLE,name:{kind:Uc.Kind.NAME,value:i}}},t[i]={kind:Uc.Kind.VARIABLE_DEFINITION,variable:{kind:Uc.Kind.VARIABLE,name:{kind:Uc.Kind.NAME,value:i}},type:(0,Wne.astFromType)(a)},o!==void 0){n[i]=o;return}i in n&&delete n[i]}function Zne(e){let t=0;return n=>{let r;do r=t===0?n:`_v${t.toString()}_${n}`,t++;while(r in e);return r}}});var fM=F(pO=>{"use strict";m();T();N();Object.defineProperty(pO,"__esModule",{value:!0});pO.implementsAbstractType=ere;var fO=_e();function ere(e,t,n){return n==null||t==null?!1:t===n?!0:(0,fO.isCompositeType)(t)&&(0,fO.isCompositeType)(n)?(0,fO.doTypesOverlap)(e,t,n):!1}});var mM=F(mO=>{"use strict";m();T();N();Object.defineProperty(mO,"__esModule",{value:!0});mO.observableToAsyncIterable=tre;var pM=Wf();function tre(e){let t=[],n=[],r=!0,i=p=>{t.length!==0?t.shift()({value:p,done:!1}):n.push({value:p,done:!1})},a=p=>{t.length!==0?t.shift()({value:{errors:[p]},done:!1}):n.push({value:{errors:[p]},done:!1})},o=()=>{t.length!==0?t.shift()({done:!0}):n.push({done:!0})},u=()=>new Promise(p=>{if(n.length!==0){let E=n.shift();p(E)}else t.push(p)}),l=e.subscribe({next(p){return i(p)},error(p){return a(p)},complete(){return o()}}),d=()=>{if(r){r=!1,l.unsubscribe();for(let p of t)p({value:void 0,done:!0});t.length=0,n.length=0}};return{next(){return r?u():this.return()},return(){return d(),(0,pM.fakePromise)({value:void 0,done:!0})},throw(p){return d(),(0,pM.fakeRejectPromise)(p)},[Symbol.asyncIterator](){return this}}}});var NM=F(aE=>{"use strict";m();T();N();Object.defineProperty(aE,"__esModule",{value:!0});aE.AccumulatorMap=void 0;var NO=class extends Map{get[Symbol.toStringTag](){return"AccumulatorMap"}add(t,n){let r=this.get(t);r===void 0?this.set(t,[n]):r.push(n)}};aE.AccumulatorMap=NO});var TO=F(sd=>{"use strict";m();T();N();Object.defineProperty(sd,"__esModule",{value:!0});sd.GraphQLStreamDirective=sd.GraphQLDeferDirective=void 0;var Zi=_e();sd.GraphQLDeferDirective=new Zi.GraphQLDirective({name:"defer",description:"Directs the executor to defer this fragment when the `if` argument is true or undefined.",locations:[Zi.DirectiveLocation.FRAGMENT_SPREAD,Zi.DirectiveLocation.INLINE_FRAGMENT],args:{if:{type:new Zi.GraphQLNonNull(Zi.GraphQLBoolean),description:"Deferred when true or undefined.",defaultValue:!0},label:{type:Zi.GraphQLString,description:"Unique name"}}});sd.GraphQLStreamDirective=new Zi.GraphQLDirective({name:"stream",description:"Directs the executor to stream plural fields when the `if` argument is true or undefined.",locations:[Zi.DirectiveLocation.FIELD],args:{if:{type:new Zi.GraphQLNonNull(Zi.GraphQLBoolean),description:"Stream when true or undefined.",defaultValue:!0},label:{type:Zi.GraphQLString,description:"Unique name"},initialCount:{defaultValue:0,type:Zi.GraphQLInt,description:"Number of items to return immediately"}}})});var yO=F(Us=>{"use strict";m();T();N();Object.defineProperty(Us,"__esModule",{value:!0});Us.collectSubFields=void 0;Us.collectFields=ire;Us.shouldIncludeNode=sE;Us.doesFragmentConditionMatch=EO;Us.getFieldEntryKey=TM;Us.getDeferValues=hO;var ns=_e(),oE=NM(),nre=TO(),rre=wu();function od(e,t,n,r,i,a,o,u){for(let l of i.selections)switch(l.kind){case ns.Kind.FIELD:{if(!sE(n,l))continue;a.add(TM(l),l);break}case ns.Kind.INLINE_FRAGMENT:{if(!sE(n,l)||!EO(e,l,r))continue;let d=hO(n,l);if(d){let p=new oE.AccumulatorMap;od(e,t,n,r,l.selectionSet,p,o,u),o.push({label:d.label,fields:p})}else od(e,t,n,r,l.selectionSet,a,o,u);break}case ns.Kind.FRAGMENT_SPREAD:{let d=l.name.value;if(!sE(n,l))continue;let p=hO(n,l);if(u.has(d)&&!p)continue;let E=t[d];if(!E||!EO(e,E,r))continue;if(p||u.add(d),p){let y=new oE.AccumulatorMap;od(e,t,n,r,E.selectionSet,y,o,u),o.push({label:p.label,fields:y})}else od(e,t,n,r,E.selectionSet,a,o,u);break}}}function ire(e,t,n,r,i){let a=new oE.AccumulatorMap,o=[];return od(e,t,n,r,i,a,o,new Set),{fields:a,patches:o}}function sE(e,t){let n=(0,ns.getDirectiveValues)(ns.GraphQLSkipDirective,t,e);if((n==null?void 0:n.if)===!0)return!1;let r=(0,ns.getDirectiveValues)(ns.GraphQLIncludeDirective,t,e);return(r==null?void 0:r.if)!==!1}function EO(e,t,n){let r=t.typeCondition;if(!r)return!0;let i=(0,ns.typeFromAST)(e,r);return i===n?!0:(0,ns.isAbstractType)(i)?e.getPossibleTypes(i).includes(n):!1}function TM(e){return e.alias?e.alias.value:e.name.value}function hO(e,t){let n=(0,ns.getDirectiveValues)(nre.GraphQLDeferDirective,t,e);if(n&&n.if!==!1)return{label:typeof n.label=="string"?n.label:void 0}}Us.collectSubFields=(0,rre.memoize5)(function(t,n,r,i,a){let o=new oE.AccumulatorMap,u=new Set,l=[],d={fields:o,patches:l};for(let p of a)p.selectionSet&&od(t,n,r,i,p.selectionSet,o,l,u);return d})});var IO=F(sp=>{"use strict";m();T();N();Object.defineProperty(sp,"__esModule",{value:!0});sp.getOperationASTFromRequest=void 0;sp.getOperationASTFromDocument=EM;var are=_e(),sre=wu();function EM(e,t){let n=(0,are.getOperationAST)(e,t);if(!n)throw new Error(`Cannot infer operation ${t||""}`);return n}sp.getOperationASTFromRequest=(0,sre.memoize1)(function(t){return EM(t.document,t.operationName)})});var IM=F(op=>{"use strict";m();T();N();Object.defineProperty(op,"__esModule",{value:!0});op.visitData=_O;op.visitErrors=ure;op.visitResult=cre;var Lu=_e(),gO=yO(),ore=IO();function _O(e,t,n){if(Array.isArray(e))return e.map(r=>_O(r,t,n));if(typeof e=="object"){let r=t!=null?t(e):e;if(r!=null)for(let i in r){let a=r[i];Object.defineProperty(r,i,{value:_O(a,t,n)})}return n!=null?n(r):r}return e}function ure(e,t){return e.map(n=>t(n))}function cre(e,t,n,r,i){let a=t.document.definitions.reduce((y,v)=>(v.kind===Lu.Kind.FRAGMENT_DEFINITION&&(y[v.name.value]=v),y),{}),o=t.variables||{},u={segmentInfoMap:new Map,unpathedErrors:new Set},l=e.data,d=e.errors,p=d!=null&&i!=null,E=(0,ore.getOperationASTFromRequest)(t);return l!=null&&E!=null&&(e.data=fre(l,E,n,a,o,r,p?d:void 0,u)),d!=null&&i&&(e.errors=lre(d,i,u)),e}function lre(e,t,n){let r=n.segmentInfoMap,i=n.unpathedErrors,a=t.__unpathed;return e.map(o=>{let u=r.get(o),l=u==null?o:u.reduceRight((d,p)=>{let E=p.type.name,y=t[E];if(y==null)return d;let v=y[p.fieldName];return v==null?d:v(d,p.pathIndex)},o);return a&&i.has(o)?a(l):l})}function dre(e,t){switch(t.operation){case"query":return e.getQueryType();case"mutation":return e.getMutationType();case"subscription":return e.getSubscriptionType()}}function fre(e,t,n,r,i,a,o,u){let l=dre(n,t),{fields:d}=(0,gO.collectFields)(n,r,i,l,t.selectionSet);return vO(e,l,d,n,r,i,a,0,o,u)}function vO(e,t,n,r,i,a,o,u,l,d){var ne;let p=t.getFields(),E=o==null?void 0:o[t.name],y=E==null?void 0:E.__enter,v=y!=null?y(e):e,R,B=null;if(l!=null){R=mre(l,u),B=R.errorMap;for(let te of R.unpathedErrors)d.unpathedErrors.add(te)}for(let[te,Ne]of n){let Ee=Ne[0].name.value,he=(ne=p[Ee])==null?void 0:ne.type;if(he==null)switch(Ee){case"__typename":he=Lu.TypeNameMetaFieldDef.type;break;case"__schema":he=Lu.SchemaMetaFieldDef.type;break;case"__type":he=Lu.TypeMetaFieldDef.type;break}let we=u+1,Qe;B&&(Qe=B[te],Qe!=null&&delete B[te],Nre(t,Ee,we,Qe,d));let Z=yM(e[te],he,Ne,r,i,a,o,we,Qe,d);hM(v,te,Z,E,Ee)}let V=v.__typename;if(V!=null&&hM(v,"__typename",V,E,"__typename"),B)for(let te in B){let Ne=B[te];for(let Ee of Ne)d.unpathedErrors.add(Ee)}let J=E==null?void 0:E.__leave;return J!=null?J(v):v}function hM(e,t,n,r,i){if(r==null){e[t]=n;return}let a=r[i];if(a==null){e[t]=n;return}let o=a(n);if(o===void 0){delete e[t];return}e[t]=o}function pre(e,t,n,r,i,a,o,u,l,d){return e.map(p=>yM(p,t,n,r,i,a,o,u+1,l,d))}function yM(e,t,n,r,i,a,o,u,l=[],d){if(e==null)return e;let p=(0,Lu.getNullableType)(t);if((0,Lu.isListType)(p))return pre(e,p.ofType,n,r,i,a,o,u,l,d);if((0,Lu.isAbstractType)(p)){let v=r.getType(e.__typename),{fields:R,patches:B}=(0,gO.collectSubFields)(r,i,a,v,n);if(B.length){R=new Map(R);for(let V of B)for(let[J,ne]of V.fields){let te=R.get(J);te?te.push(...ne):R.set(J,ne)}}return vO(e,v,R,r,i,a,o,u,l,d)}else if((0,Lu.isObjectType)(p)){let{fields:v,patches:R}=(0,gO.collectSubFields)(r,i,a,p,n);if(R.length){v=new Map(v);for(let B of R)for(let[V,J]of B.fields){let ne=v.get(V);ne?ne.push(...J):v.set(V,J)}}return vO(e,p,v,r,i,a,o,u,l,d)}let E=o==null?void 0:o[p.name];if(E==null)return e;let y=E(e);return y===void 0?e:y}function mre(e,t){var i;let n=Object.create(null),r=new Set;for(let a of e){let o=(i=a.path)==null?void 0:i[t];if(o==null){r.add(a);continue}o in n?n[o].push(a):n[o]=[a]}return{errorMap:n,unpathedErrors:r}}function Nre(e,t,n,r=[],i){for(let a of r){let o={type:e,fieldName:t,pathIndex:n},u=i.segmentInfoMap.get(a);u==null?i.segmentInfoMap.set(a,[o]):u.push(o)}}});var gM=F(OO=>{"use strict";m();T();N();Object.defineProperty(OO,"__esModule",{value:!0});OO.valueMatchesCriteria=SO;function SO(e,t){return e==null?e===t:Array.isArray(e)?Array.isArray(t)&&e.every((n,r)=>SO(n,t[r])):typeof e=="object"?typeof t=="object"&&t&&Object.keys(t).every(n=>SO(e[n],t[n])):t instanceof RegExp?t.test(e):e===t}});var _M=F(DO=>{"use strict";m();T();N();Object.defineProperty(DO,"__esModule",{value:!0});DO.isAsyncIterable=Tre;function Tre(e){return(e==null?void 0:e[Symbol.asyncIterator])!=null}});var vM=F(bO=>{"use strict";m();T();N();Object.defineProperty(bO,"__esModule",{value:!0});bO.isDocumentNode=hre;var Ere=_e();function hre(e){return e&&typeof e=="object"&&"kind"in e&&e.kind===Ere.Kind.DOCUMENT}});var SM=F(()=>{"use strict";m();T();N()});var AM=F(up=>{"use strict";m();T();N();Object.defineProperty(up,"__esModule",{value:!0});up.getAsyncIteratorWithCancel=DM;up.getAsyncIterableWithCancel=bM;up.withCancel=bM;var yre=wu();function Ire(e){return Li(this,null,function*(){return{value:e,done:!0}})}var OM=(0,yre.memoize2)(function(t,n){return function(...i){return Reflect.apply(n,t,i)}});function DM(e,t){return new Proxy(e,{has(n,r){return r==="return"?!0:Reflect.has(n,r)},get(n,r,i){let a=Reflect.get(n,r,i);if(r==="return"){let o=a||Ire;return function(l){return Li(this,null,function*(){let d=yield t(l);return Reflect.apply(o,n,[d])})}}else if(typeof a=="function")return OM(n,a);return a}})}function bM(e,t){return new Proxy(e,{get(n,r,i){let a=Reflect.get(n,r,i);return Symbol.asyncIterator===r?function(){let u=Reflect.apply(a,n,[]);return DM(u,t)}:typeof a=="function"?OM(n,a):a}})}});var RM=F(AO=>{"use strict";m();T();N();Object.defineProperty(AO,"__esModule",{value:!0});AO.fixSchemaAst=Sre;var gre=_e(),_re=LS();function vre(e,t){let n=(0,_re.getDocumentNodeFromSchema)(e);return(0,gre.buildASTSchema)(n,M({},t||{}))}function Sre(e,t){let n;return(!e.astNode||!e.extensionASTNodes)&&(n=vre(e,t)),!e.astNode&&(n!=null&&n.astNode)&&(e.astNode=n.astNode),!e.extensionASTNodes&&(n!=null&&n.astNode)&&(e.extensionASTNodes=n.extensionASTNodes),e}});var PM=F(RO=>{"use strict";m();T();N();Object.defineProperty(RO,"__esModule",{value:!0});RO.extractExtensionsFromSchema=bre;var Ore=Hl(),Bs=wc(),Dre=id();function _a(e,t){e=e||{};let a=e,{directives:n}=a,r=WR(a,["directives"]),i=M({},r);if(!t&&n!=null){let o={};for(let u in n)o[u]=[...(0,Ore.asArray)(n[u])];i.directives=o}return i}function bre(e,t=!1){let n={schemaExtensions:_a(e.extensions,t),types:{}};return(0,Dre.mapSchema)(e,{[Bs.MapperKind.OBJECT_TYPE]:r=>(n.types[r.name]={fields:{},type:"object",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.INTERFACE_TYPE]:r=>(n.types[r.name]={fields:{},type:"interface",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.FIELD]:(r,i,a)=>{n.types[a].fields[i]={arguments:{},extensions:_a(r.extensions,t)};let o=r.args;if(o!=null)for(let u in o)n.types[a].fields[i].arguments[u]=_a(o[u].extensions,t);return r},[Bs.MapperKind.ENUM_TYPE]:r=>(n.types[r.name]={values:{},type:"enum",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.ENUM_VALUE]:(r,i,a,o)=>(n.types[i].values[o]=_a(r.extensions,t),r),[Bs.MapperKind.SCALAR_TYPE]:r=>(n.types[r.name]={type:"scalar",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.UNION_TYPE]:r=>(n.types[r.name]={type:"union",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.INPUT_OBJECT_TYPE]:r=>(n.types[r.name]={fields:{},type:"input",extensions:_a(r.extensions,t)},r),[Bs.MapperKind.INPUT_OBJECT_FIELD]:(r,i,a)=>(n.types[a].fields[i]={extensions:_a(r.extensions,t)},r)}),n}});var FM=F(cp=>{"use strict";m();T();N();Object.defineProperty(cp,"__esModule",{value:!0});cp.addPath=Are;cp.pathToArray=Rre;cp.printPathArray=Pre;function Are(e,t,n){return{prev:e,key:t,typename:n}}function Rre(e){let t=[],n=e;for(;n;)t.push(n.key),n=n.prev;return t.reverse()}function Pre(e){return e.map(t=>typeof t=="number"?"["+t.toString()+"]":"."+t).join("")}});var LM=F(FO=>{"use strict";m();T();N();Object.defineProperty(FO,"__esModule",{value:!0});FO.mergeIncrementalResult=wM;var Fre=uO();function wM({incrementalResult:e,executionResult:t}){var r;let n=["data",...(r=e.path)!=null?r:[]];if(e.items)for(let i of e.items)PO(t,n,i),n[n.length-1]++;e.data&&PO(t,n,e.data),e.errors&&(t.errors=t.errors||[],t.errors.push(...e.errors)),e.extensions&&PO(t,["extensions"],e.extensions),e.incremental&&e.incremental.forEach(i=>{wM({incrementalResult:i,executionResult:t})})}function PO(e,t,n){let r=e,i;for(i=0;i{"use strict";m();T();N();Object.defineProperty(uE,"__esModule",{value:!0});uE.debugTimerStart=wre;uE.debugTimerEnd=Lre;var CM=new Set;function wre(e){var n,r;let t=((r=(n=globalThis.process)==null?void 0:n.env)==null?void 0:r.DEBUG)||globalThis.DEBUG;(t==="1"||t!=null&&t.includes(e))&&(CM.add(e),console.time(e))}function Lre(e){CM.has(e)&&console.timeEnd(e)}});var MM=F(lp=>{"use strict";m();T();N();Object.defineProperty(lp,"__esModule",{value:!0});lp.getAbortPromise=void 0;lp.registerAbortSignalListener=kM;var Cre=Wf(),BM=wu(),Ure=(0,BM.memoize1)(function(t){let n=new Set;return t.addEventListener("abort",r=>{for(let i of n)i(r)},{once:!0}),n});function kM(e,t){if(e.aborted){t();return}Ure(e).add(t)}lp.getAbortPromise=(0,BM.memoize1)(function(t){return t.aborted?(0,Cre.fakeRejectPromise)(t.reason):new Promise((n,r)=>{if(t.aborted){r(t.reason);return}kM(t,()=>{r(t.reason)})})})});var va=F(Le=>{"use strict";m();T();N();Object.defineProperty(Le,"__esModule",{value:!0});Le.createDeferred=Le.fakePromise=Le.mapMaybePromise=Le.mapAsyncIterator=Le.inspect=void 0;var Ye=(jB(),Wm(VB));Ye.__exportStar(KB(),Le);Ye.__exportStar(Hl(),Le);Ye.__exportStar(TS(),Le);Ye.__exportStar(hS(),Le);Ye.__exportStar(nk(),Le);Ye.__exportStar(_S(),Le);Ye.__exportStar(LS(),Le);Ye.__exportStar(hS(),Le);Ye.__exportStar(Ik(),Le);Ye.__exportStar(gk(),Le);Ye.__exportStar(Ck(),Le);Ye.__exportStar(jk(),Le);Ye.__exportStar($k(),Le);Ye.__exportStar(Wk(),Le);Ye.__exportStar(Zk(),Le);Ye.__exportStar(eM(),Le);Ye.__exportStar(nM(),Le);Ye.__exportStar(rM(),Le);Ye.__exportStar(id(),Le);Ye.__exportStar(aO(),Le);Ye.__exportStar(JT(),Le);Ye.__exportStar(aM(),Le);Ye.__exportStar(uO(),Le);Ye.__exportStar(wc(),Le);Ye.__exportStar(GS(),Le);Ye.__exportStar(oM(),Le);Ye.__exportStar(uM(),Le);Ye.__exportStar(cM(),Le);Ye.__exportStar(lM(),Le);Ye.__exportStar(YS(),Le);Ye.__exportStar(dM(),Le);Ye.__exportStar(jT(),Le);Ye.__exportStar(fM(),Le);Ye.__exportStar(BT(),Le);Ye.__exportStar(mM(),Le);Ye.__exportStar(IM(),Le);Ye.__exportStar(pS(),Le);Ye.__exportStar(gM(),Le);Ye.__exportStar(_M(),Le);Ye.__exportStar(vM(),Le);Ye.__exportStar(Xf(),Le);Ye.__exportStar(SM(),Le);Ye.__exportStar(AM(),Le);Ye.__exportStar(ep(),Le);Ye.__exportStar(BS(),Le);Ye.__exportStar(yO(),Le);var Bre=Hf();Object.defineProperty(Le,"inspect",{enumerable:!0,get:function(){return Bre.inspect}});Ye.__exportStar(wu(),Le);Ye.__exportStar(RM(),Le);Ye.__exportStar(IO(),Le);Ye.__exportStar(PM(),Le);Ye.__exportStar(FM(),Le);Ye.__exportStar(xT(),Le);Ye.__exportStar(TO(),Le);Ye.__exportStar(LM(),Le);Ye.__exportStar(UM(),Le);Ye.__exportStar(NS(),Le);var cE=Wf();Object.defineProperty(Le,"mapAsyncIterator",{enumerable:!0,get:function(){return cE.mapAsyncIterator}});Object.defineProperty(Le,"mapMaybePromise",{enumerable:!0,get:function(){return cE.mapMaybePromise}});Object.defineProperty(Le,"fakePromise",{enumerable:!0,get:function(){return cE.fakePromise}});Object.defineProperty(Le,"createDeferred",{enumerable:!0,get:function(){return cE.createDeferredPromise}});Ye.__exportStar(MM(),Le)});var qM=F(lE=>{"use strict";m();T();N();Object.defineProperty(lE,"__esModule",{value:!0});lE.mergeResolvers=void 0;var kre=va();function xM(e,t){if(!e||Array.isArray(e)&&e.length===0)return{};if(!Array.isArray(e))return e;if(e.length===1)return e[0]||{};let n=new Array;for(let i of e)Array.isArray(i)&&(i=xM(i)),typeof i=="object"&&i&&n.push(i);let r=(0,kre.mergeDeep)(n,!0);if(t!=null&&t.exclusions)for(let i of t.exclusions){let[a,o]=i.split(".");!o||o==="*"?delete r[a]:r[a]&&delete r[a][o]}return r}lE.mergeResolvers=xM});var wO=F(dE=>{"use strict";m();T();N();Object.defineProperty(dE,"__esModule",{value:!0});dE.mergeArguments=void 0;var VM=va();function Mre(e,t,n){let r=xre([...t,...e].filter(VM.isSome),n);return n&&n.sort&&r.sort(VM.compareNodes),r}dE.mergeArguments=Mre;function xre(e,t){return e.reduce((n,r)=>{let i=n.findIndex(a=>a.name.value===r.name.value);return i===-1?n.concat([r]):(t!=null&&t.reverseArguments||(n[i]=r),n)},[])}});var ea=F(ud=>{"use strict";m();T();N();Object.defineProperty(ud,"__esModule",{value:!0});ud.mergeDirective=ud.mergeDirectives=void 0;var jM=_e(),qre=va();function Vre(e,t){return!!e.find(n=>n.name.value===t.name.value)}function KM(e,t){var n;return!!((n=t==null?void 0:t[e.name.value])!=null&&n.repeatable)}function jre(e,t){return t.some(({value:n})=>n===e.value)}function $M(e,t){let n=[...t];for(let r of e){let i=n.findIndex(a=>a.name.value===r.name.value);if(i>-1){let a=n[i];if(a.value.kind==="ListValue"){let o=a.value.values,u=r.value.values;a.value.values=Yre(o,u,(l,d)=>{let p=l.value;return!p||!d.some(E=>E.value===p)})}else a.value=r.value}else n.push(r)}return n}function Kre(e,t){return e.map((n,r,i)=>{let a=i.findIndex(o=>o.name.value===n.name.value);if(a!==r&&!KM(n,t)){let o=i[a];return n.arguments=$M(n.arguments,o.arguments),null}return n}).filter(qre.isSome)}function $re(e=[],t=[],n,r){let i=n&&n.reverseDirectives,a=i?e:t,o=i?t:e,u=Kre([...a],r);for(let l of o)if(Vre(u,l)&&!KM(l,r)){let d=u.findIndex(E=>E.name.value===l.name.value),p=u[d];u[d].arguments=$M(l.arguments||[],p.arguments||[])}else u.push(l);return u}ud.mergeDirectives=$re;function Gre(e,t){let n=(0,jM.print)($(M({},e),{description:void 0})),r=(0,jM.print)($(M({},t),{description:void 0})),i=new RegExp("(directive @w*d*)|( on .*$)","g");if(!(n.replace(i,"")===r.replace(i,"")))throw new Error(`Unable to merge GraphQL directive "${e.name.value}". -Existing directive: - ${r} -Received directive: - ${n}`)}function Qre(e,t){return t?(Gre(e,t),$(M({},e),{locations:[...t.locations,...e.locations.filter(n=>!jre(n,t.locations))]})):e}ud.mergeDirective=Qre;function Yre(e,t,n){return e.concat(t.filter(r=>n(r,e)))}});var LO=F(fE=>{"use strict";m();T();N();Object.defineProperty(fE,"__esModule",{value:!0});fE.mergeEnumValues=void 0;var Jre=ea(),zre=va();function Hre(e,t,n,r){if(n!=null&&n.consistentEnumMerge){let o=[];e&&o.push(...e),e=t,t=o}let i=new Map;if(e)for(let o of e)i.set(o.name.value,o);if(t)for(let o of t){let u=o.name.value;if(i.has(u)){let l=i.get(u);l.description=o.description||l.description,l.directives=(0,Jre.mergeDirectives)(o.directives,l.directives,r)}else i.set(u,o)}let a=[...i.values()];return n&&n.sort&&a.sort(zre.compareNodes),a}fE.mergeEnumValues=Hre});var CO=F(pE=>{"use strict";m();T();N();Object.defineProperty(pE,"__esModule",{value:!0});pE.mergeEnum=void 0;var Wre=_e(),Xre=ea(),Zre=LO();function eie(e,t,n,r){return t?{name:e.name,description:e.description||t.description,kind:n!=null&&n.convertExtensions||e.kind==="EnumTypeDefinition"||t.kind==="EnumTypeDefinition"?"EnumTypeDefinition":"EnumTypeExtension",loc:e.loc,directives:(0,Xre.mergeDirectives)(e.directives,t.directives,n,r),values:(0,Zre.mergeEnumValues)(e.values,t.values,n)}:n!=null&&n.convertExtensions?$(M({},e),{kind:Wre.Kind.ENUM_TYPE_DEFINITION}):e}pE.mergeEnum=eie});var mE=F(Kn=>{"use strict";m();T();N();Object.defineProperty(Kn,"__esModule",{value:!0});Kn.defaultStringComparator=Kn.CompareVal=Kn.printTypeNode=Kn.isNonNullTypeNode=Kn.isListTypeNode=Kn.isWrappingTypeNode=Kn.extractType=Kn.isSourceTypes=Kn.isStringTypes=void 0;var dp=_e();function tie(e){return typeof e=="string"}Kn.isStringTypes=tie;function nie(e){return e instanceof dp.Source}Kn.isSourceTypes=nie;function rie(e){let t=e;for(;t.kind===dp.Kind.LIST_TYPE||t.kind==="NonNullType";)t=t.type;return t}Kn.extractType=rie;function iie(e){return e.kind!==dp.Kind.NAMED_TYPE}Kn.isWrappingTypeNode=iie;function GM(e){return e.kind===dp.Kind.LIST_TYPE}Kn.isListTypeNode=GM;function QM(e){return e.kind===dp.Kind.NON_NULL_TYPE}Kn.isNonNullTypeNode=QM;function UO(e){return GM(e)?`[${UO(e.type)}]`:QM(e)?`${UO(e.type)}!`:e.name.value}Kn.printTypeNode=UO;var Bc;(function(e){e[e.A_SMALLER_THAN_B=-1]="A_SMALLER_THAN_B",e[e.A_EQUALS_B=0]="A_EQUALS_B",e[e.A_GREATER_THAN_B=1]="A_GREATER_THAN_B"})(Bc=Kn.CompareVal||(Kn.CompareVal={}));function aie(e,t){return e==null&&t==null?Bc.A_EQUALS_B:e==null?Bc.A_SMALLER_THAN_B:t==null?Bc.A_GREATER_THAN_B:et?Bc.A_GREATER_THAN_B:Bc.A_EQUALS_B}Kn.defaultStringComparator=aie});var pp=F(NE=>{"use strict";m();T();N();Object.defineProperty(NE,"__esModule",{value:!0});NE.mergeFields=void 0;var ai=mE(),sie=ea(),oie=va(),uie=wO();function cie(e,t){let n=e.findIndex(r=>r.name.value===t.name.value);return[n>-1?e[n]:null,n]}function lie(e,t,n,r,i){let a=[];if(n!=null&&a.push(...n),t!=null)for(let o of t){let[u,l]=cie(a,o);if(u&&!(r!=null&&r.ignoreFieldConflicts)){let d=(r==null?void 0:r.onFieldTypeConflict)&&r.onFieldTypeConflict(u,o,e,r==null?void 0:r.throwOnConflict)||die(e,u,o,r==null?void 0:r.throwOnConflict);d.arguments=(0,uie.mergeArguments)(o.arguments||[],u.arguments||[],r),d.directives=(0,sie.mergeDirectives)(o.directives,u.directives,r,i),d.description=o.description||u.description,a[l]=d}else a.push(o)}if(r&&r.sort&&a.sort(oie.compareNodes),r&&r.exclusions){let o=r.exclusions;return a.filter(u=>!o.includes(`${e.name.value}.${u.name.value}`))}return a}NE.mergeFields=lie;function die(e,t,n,r=!1){let i=(0,ai.printTypeNode)(t.type),a=(0,ai.printTypeNode)(n.type);if(i!==a){let o=(0,ai.extractType)(t.type),u=(0,ai.extractType)(n.type);if(o.name.value!==u.name.value)throw new Error(`Field "${n.name.value}" already defined with a different type. Declared as "${o.name.value}", but you tried to override with "${u.name.value}"`);if(!fp(t.type,n.type,!r))throw new Error(`Field '${e.name.value}.${t.name.value}' changed type from '${i}' to '${a}'`)}return(0,ai.isNonNullTypeNode)(n.type)&&!(0,ai.isNonNullTypeNode)(t.type)&&(t.type=n.type),t}function fp(e,t,n=!1){if(!(0,ai.isWrappingTypeNode)(e)&&!(0,ai.isWrappingTypeNode)(t))return e.toString()===t.toString();if((0,ai.isNonNullTypeNode)(t)){let r=(0,ai.isNonNullTypeNode)(e)?e.type:e;return fp(r,t.type)}return(0,ai.isNonNullTypeNode)(e)?fp(t,e,n):(0,ai.isListTypeNode)(e)?(0,ai.isListTypeNode)(t)&&fp(e.type,t.type)||(0,ai.isNonNullTypeNode)(t)&&fp(e,t.type):!1}});var BO=F(TE=>{"use strict";m();T();N();Object.defineProperty(TE,"__esModule",{value:!0});TE.mergeInputType=void 0;var fie=_e(),pie=pp(),mie=ea();function Nie(e,t,n,r){if(t)try{return{name:e.name,description:e.description||t.description,kind:n!=null&&n.convertExtensions||e.kind==="InputObjectTypeDefinition"||t.kind==="InputObjectTypeDefinition"?"InputObjectTypeDefinition":"InputObjectTypeExtension",loc:e.loc,fields:(0,pie.mergeFields)(e,e.fields,t.fields,n),directives:(0,mie.mergeDirectives)(e.directives,t.directives,n,r)}}catch(i){throw new Error(`Unable to merge GraphQL input type "${e.name.value}": ${i.message}`)}return n!=null&&n.convertExtensions?$(M({},e),{kind:fie.Kind.INPUT_OBJECT_TYPE_DEFINITION}):e}TE.mergeInputType=Nie});var mp=F(EE=>{"use strict";m();T();N();Object.defineProperty(EE,"__esModule",{value:!0});EE.mergeNamedTypeArray=void 0;var Tie=va();function Eie(e,t){return!!e.find(n=>n.name.value===t.name.value)}function hie(e=[],t=[],n={}){let r=[...t,...e.filter(i=>!Eie(t,i))];return n&&n.sort&&r.sort(Tie.compareNodes),r}EE.mergeNamedTypeArray=hie});var kO=F(hE=>{"use strict";m();T();N();Object.defineProperty(hE,"__esModule",{value:!0});hE.mergeInterface=void 0;var yie=_e(),Iie=pp(),gie=ea(),_ie=mp();function vie(e,t,n,r){if(t)try{return{name:e.name,description:e.description||t.description,kind:n!=null&&n.convertExtensions||e.kind==="InterfaceTypeDefinition"||t.kind==="InterfaceTypeDefinition"?"InterfaceTypeDefinition":"InterfaceTypeExtension",loc:e.loc,fields:(0,Iie.mergeFields)(e,e.fields,t.fields,n),directives:(0,gie.mergeDirectives)(e.directives,t.directives,n,r),interfaces:e.interfaces?(0,_ie.mergeNamedTypeArray)(e.interfaces,t.interfaces,n):void 0}}catch(i){throw new Error(`Unable to merge GraphQL interface "${e.name.value}": ${i.message}`)}return n!=null&&n.convertExtensions?$(M({},e),{kind:yie.Kind.INTERFACE_TYPE_DEFINITION}):e}hE.mergeInterface=vie});var MO=F(yE=>{"use strict";m();T();N();Object.defineProperty(yE,"__esModule",{value:!0});yE.mergeType=void 0;var Sie=_e(),Oie=pp(),Die=ea(),bie=mp();function Aie(e,t,n,r){if(t)try{return{name:e.name,description:e.description||t.description,kind:n!=null&&n.convertExtensions||e.kind==="ObjectTypeDefinition"||t.kind==="ObjectTypeDefinition"?"ObjectTypeDefinition":"ObjectTypeExtension",loc:e.loc,fields:(0,Oie.mergeFields)(e,e.fields,t.fields,n),directives:(0,Die.mergeDirectives)(e.directives,t.directives,n,r),interfaces:(0,bie.mergeNamedTypeArray)(e.interfaces,t.interfaces,n)}}catch(i){throw new Error(`Unable to merge GraphQL type "${e.name.value}": ${i.message}`)}return n!=null&&n.convertExtensions?$(M({},e),{kind:Sie.Kind.OBJECT_TYPE_DEFINITION}):e}yE.mergeType=Aie});var xO=F(IE=>{"use strict";m();T();N();Object.defineProperty(IE,"__esModule",{value:!0});IE.mergeScalar=void 0;var Rie=_e(),Pie=ea();function Fie(e,t,n,r){return t?{name:e.name,description:e.description||t.description,kind:n!=null&&n.convertExtensions||e.kind==="ScalarTypeDefinition"||t.kind==="ScalarTypeDefinition"?"ScalarTypeDefinition":"ScalarTypeExtension",loc:e.loc,directives:(0,Pie.mergeDirectives)(e.directives,t.directives,n,r)}:n!=null&&n.convertExtensions?$(M({},e),{kind:Rie.Kind.SCALAR_TYPE_DEFINITION}):e}IE.mergeScalar=Fie});var VO=F(gE=>{"use strict";m();T();N();Object.defineProperty(gE,"__esModule",{value:!0});gE.mergeUnion=void 0;var qO=_e(),wie=ea(),Lie=mp();function Cie(e,t,n,r){return t?{name:e.name,description:e.description||t.description,directives:(0,wie.mergeDirectives)(e.directives,t.directives,n,r),kind:n!=null&&n.convertExtensions||e.kind==="UnionTypeDefinition"||t.kind==="UnionTypeDefinition"?qO.Kind.UNION_TYPE_DEFINITION:qO.Kind.UNION_TYPE_EXTENSION,loc:e.loc,types:(0,Lie.mergeNamedTypeArray)(e.types,t.types,n)}:n!=null&&n.convertExtensions?$(M({},e),{kind:qO.Kind.UNION_TYPE_DEFINITION}):e}gE.mergeUnion=Cie});var jO=F(kc=>{"use strict";m();T();N();Object.defineProperty(kc,"__esModule",{value:!0});kc.mergeSchemaDefs=kc.DEFAULT_OPERATION_TYPE_NAME_MAP=void 0;var Np=_e(),Uie=ea();kc.DEFAULT_OPERATION_TYPE_NAME_MAP={query:"Query",mutation:"Mutation",subscription:"Subscription"};function Bie(e=[],t=[]){let n=[];for(let r in kc.DEFAULT_OPERATION_TYPE_NAME_MAP){let i=e.find(a=>a.operation===r)||t.find(a=>a.operation===r);i&&n.push(i)}return n}function kie(e,t,n,r){return t?{kind:e.kind===Np.Kind.SCHEMA_DEFINITION||t.kind===Np.Kind.SCHEMA_DEFINITION?Np.Kind.SCHEMA_DEFINITION:Np.Kind.SCHEMA_EXTENSION,description:e.description||t.description,directives:(0,Uie.mergeDirectives)(e.directives,t.directives,n,r),operationTypes:Bie(e.operationTypes,t.operationTypes)}:n!=null&&n.convertExtensions?$(M({},e),{kind:Np.Kind.SCHEMA_DEFINITION}):e}kc.mergeSchemaDefs=kie});var KO=F(rs=>{"use strict";m();T();N();Object.defineProperty(rs,"__esModule",{value:!0});rs.mergeGraphQLNodes=rs.isNamedDefinitionNode=rs.schemaDefSymbol=void 0;var Gr=_e(),Mie=MO(),xie=CO(),qie=xO(),Vie=VO(),jie=BO(),Kie=kO(),$ie=ea(),Gie=jO(),Qie=va();rs.schemaDefSymbol="SCHEMA_DEF_SYMBOL";function YM(e){return"name"in e}rs.isNamedDefinitionNode=YM;function Yie(e,t,n={}){var i,a,o;let r=n;for(let u of e)if(YM(u)){let l=(i=u.name)==null?void 0:i.value;if(t!=null&&t.commentDescriptions&&(0,Qie.collectComment)(u),l==null)continue;if((a=t==null?void 0:t.exclusions)!=null&&a.includes(l+".*")||(o=t==null?void 0:t.exclusions)!=null&&o.includes(l))delete r[l];else switch(u.kind){case Gr.Kind.OBJECT_TYPE_DEFINITION:case Gr.Kind.OBJECT_TYPE_EXTENSION:r[l]=(0,Mie.mergeType)(u,r[l],t,n);break;case Gr.Kind.ENUM_TYPE_DEFINITION:case Gr.Kind.ENUM_TYPE_EXTENSION:r[l]=(0,xie.mergeEnum)(u,r[l],t,n);break;case Gr.Kind.UNION_TYPE_DEFINITION:case Gr.Kind.UNION_TYPE_EXTENSION:r[l]=(0,Vie.mergeUnion)(u,r[l],t,n);break;case Gr.Kind.SCALAR_TYPE_DEFINITION:case Gr.Kind.SCALAR_TYPE_EXTENSION:r[l]=(0,qie.mergeScalar)(u,r[l],t,n);break;case Gr.Kind.INPUT_OBJECT_TYPE_DEFINITION:case Gr.Kind.INPUT_OBJECT_TYPE_EXTENSION:r[l]=(0,jie.mergeInputType)(u,r[l],t,n);break;case Gr.Kind.INTERFACE_TYPE_DEFINITION:case Gr.Kind.INTERFACE_TYPE_EXTENSION:r[l]=(0,Kie.mergeInterface)(u,r[l],t,n);break;case Gr.Kind.DIRECTIVE_DEFINITION:r[l]=(0,$ie.mergeDirective)(u,r[l]);break}}else(u.kind===Gr.Kind.SCHEMA_DEFINITION||u.kind===Gr.Kind.SCHEMA_EXTENSION)&&(r[rs.schemaDefSymbol]=(0,Gie.mergeSchemaDefs)(u,r[rs.schemaDefSymbol],t));return r}rs.mergeGraphQLNodes=Yie});var HM=F(fd=>{"use strict";m();T();N();Object.defineProperty(fd,"__esModule",{value:!0});fd.mergeGraphQLTypes=fd.mergeTypeDefs=void 0;var ta=_e(),$O=mE(),cd=KO(),dd=va(),JM=jO();function Jie(e,t){(0,dd.resetComments)();let n={kind:ta.Kind.DOCUMENT,definitions:zM(e,M({useSchemaDefinition:!0,forceSchemaDefinition:!1,throwOnConflict:!1,commentDescriptions:!1},t))},r;return t!=null&&t.commentDescriptions?r=(0,dd.printWithComments)(n):r=n,(0,dd.resetComments)(),r}fd.mergeTypeDefs=Jie;function ld(e,t,n=[],r=[],i=new Set){if(e&&!i.has(e))if(i.add(e),typeof e=="function")ld(e(),t,n,r,i);else if(Array.isArray(e))for(let a of e)ld(a,t,n,r,i);else if((0,ta.isSchema)(e)){let a=(0,dd.getDocumentNodeFromSchema)(e,t);ld(a.definitions,t,n,r,i)}else if((0,$O.isStringTypes)(e)||(0,$O.isSourceTypes)(e)){let a=(0,ta.parse)(e,t);ld(a.definitions,t,n,r,i)}else if(typeof e=="object"&&(0,ta.isDefinitionNode)(e))e.kind===ta.Kind.DIRECTIVE_DEFINITION?n.push(e):r.push(e);else if((0,dd.isDocumentNode)(e))ld(e.definitions,t,n,r,i);else throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof e}`);return{allDirectives:n,allNodes:r}}function zM(e,t){var u,l,d;(0,dd.resetComments)();let{allDirectives:n,allNodes:r}=ld(e,t),i=(0,cd.mergeGraphQLNodes)(n,t),a=(0,cd.mergeGraphQLNodes)(r,t,i);if(t!=null&&t.useSchemaDefinition){let p=a[cd.schemaDefSymbol]||{kind:ta.Kind.SCHEMA_DEFINITION,operationTypes:[]},E=p.operationTypes;for(let y in JM.DEFAULT_OPERATION_TYPE_NAME_MAP)if(!E.find(R=>R.operation===y)){let R=JM.DEFAULT_OPERATION_TYPE_NAME_MAP[y],B=a[R];B!=null&&B.name!=null&&E.push({kind:ta.Kind.OPERATION_TYPE_DEFINITION,type:{kind:ta.Kind.NAMED_TYPE,name:B.name},operation:y})}((u=p==null?void 0:p.operationTypes)==null?void 0:u.length)!=null&&p.operationTypes.length>0&&(a[cd.schemaDefSymbol]=p)}t!=null&&t.forceSchemaDefinition&&!((d=(l=a[cd.schemaDefSymbol])==null?void 0:l.operationTypes)!=null&&d.length)&&(a[cd.schemaDefSymbol]={kind:ta.Kind.SCHEMA_DEFINITION,operationTypes:[{kind:ta.Kind.OPERATION_TYPE_DEFINITION,operation:"query",type:{kind:ta.Kind.NAMED_TYPE,name:{kind:ta.Kind.NAME,value:"Query"}}}]});let o=Object.values(a);if(t!=null&&t.sort){let p=typeof t.sort=="function"?t.sort:$O.defaultStringComparator;o.sort((E,y)=>{var v,R;return p((v=E.name)==null?void 0:v.value,(R=y.name)==null?void 0:R.value)})}return o}fd.mergeGraphQLTypes=zM});var WM=F(kr=>{"use strict";m();T();N();Object.defineProperty(kr,"__esModule",{value:!0});var si=(iS(),Wm(rS));si.__exportStar(wO(),kr);si.__exportStar(ea(),kr);si.__exportStar(LO(),kr);si.__exportStar(CO(),kr);si.__exportStar(pp(),kr);si.__exportStar(BO(),kr);si.__exportStar(kO(),kr);si.__exportStar(mp(),kr);si.__exportStar(KO(),kr);si.__exportStar(HM(),kr);si.__exportStar(xO(),kr);si.__exportStar(MO(),kr);si.__exportStar(VO(),kr);si.__exportStar(mE(),kr)});var ZM=F(Cu=>{"use strict";m();T();N();Object.defineProperty(Cu,"__esModule",{value:!0});Cu.applyExtensions=Cu.mergeExtensions=Cu.extractExtensionsFromSchema=void 0;var XM=va(),zie=va();Object.defineProperty(Cu,"extractExtensionsFromSchema",{enumerable:!0,get:function(){return zie.extractExtensionsFromSchema}});function Hie(e){return(0,XM.mergeDeep)(e)}Cu.mergeExtensions=Hie;function pd(e,t){e&&(e.extensions=(0,XM.mergeDeep)([e.extensions||{},t||{}]))}function Wie(e,t){pd(e,t.schemaExtensions);for(let[n,r]of Object.entries(t.types||{})){let i=e.getType(n);if(i){if(pd(i,r.extensions),r.type==="object"||r.type==="interface")for(let[a,o]of Object.entries(r.fields)){let u=i.getFields()[a];if(u){pd(u,o.extensions);for(let[l,d]of Object.entries(o.arguments))pd(u.args.find(p=>p.name===l),d)}}else if(r.type==="input")for(let[a,o]of Object.entries(r.fields)){let u=i.getFields()[a];pd(u,o.extensions)}else if(r.type==="enum")for(let[a,o]of Object.entries(r.values)){let u=i.getValue(a);pd(u,o)}}}return e}Cu.applyExtensions=Wie});var _E=F(Tp=>{"use strict";m();T();N();Object.defineProperty(Tp,"__esModule",{value:!0});var GO=(iS(),Wm(rS));GO.__exportStar(qM(),Tp);GO.__exportStar(WM(),Tp);GO.__exportStar(ZM(),Tp)});var Gi=F(X=>{"use strict";m();T();N();Object.defineProperty(X,"__esModule",{value:!0});X.semanticNonNullArgumentErrorMessage=X.invalidEventProviderIdErrorMessage=X.invalidNatsStreamConfigurationDefinitionErrorMessage=X.invalidEdfsPublishResultObjectErrorMessage=X.invalidNatsStreamInputErrorMessage=X.inlineFragmentInFieldSetErrorMessage=X.inaccessibleQueryRootTypeError=X.subgraphValidationFailureError=X.minimumSubgraphRequirementError=void 0;X.multipleNamedTypeDefinitionError=eae;X.incompatibleInputValueDefaultValueTypeError=tae;X.incompatibleMergedTypesError=nae;X.incompatibleInputValueDefaultValuesError=rae;X.incompatibleSharedEnumError=iae;X.invalidSubgraphNamesError=aae;X.duplicateDirectiveDefinitionError=sae;X.duplicateEnumValueDefinitionError=oae;X.duplicateFieldDefinitionError=uae;X.duplicateInputFieldDefinitionError=cae;X.duplicateImplementedInterfaceError=lae;X.duplicateUnionMemberDefinitionError=dae;X.duplicateTypeDefinitionError=fae;X.duplicateOperationTypeDefinitionError=pae;X.noBaseDefinitionForExtensionError=mae;X.noBaseScalarDefinitionError=Nae;X.noDefinedUnionMembersError=Tae;X.noDefinedEnumValuesError=Eae;X.operationDefinitionError=hae;X.invalidFieldShareabilityError=yae;X.undefinedDirectiveError=Iae;X.undefinedTypeError=gae;X.invalidRepeatedDirectiveErrorMessage=_ae;X.invalidDirectiveError=vae;X.invalidRepeatedFederatedDirectiveErrorMessage=Sae;X.invalidDirectiveLocationErrorMessage=Oae;X.undefinedRequiredArgumentsErrorMessage=Dae;X.unexpectedDirectiveArgumentErrorMessage=bae;X.duplicateDirectiveArgumentDefinitionsErrorMessage=Aae;X.invalidArgumentValueErrorMessage=Rae;X.maximumTypeNestingExceededError=Pae;X.unexpectedKindFatalError=Fae;X.incompatibleParentKindFatalError=wae;X.unexpectedEdgeFatalError=Lae;X.incompatibleParentTypeMergeError=Uae;X.unexpectedTypeNodeKindFatalError=Bae;X.invalidKeyFatalError=kae;X.unexpectedParentKindForChildError=Mae;X.subgraphValidationError=xae;X.invalidSubgraphNameErrorMessage=qae;X.invalidOperationTypeDefinitionError=Vae;X.invalidRootTypeDefinitionError=jae;X.subgraphInvalidSyntaxError=Kae;X.invalidInterfaceImplementationError=$ae;X.invalidRequiredInputValueError=Gae;X.duplicateArgumentsError=Qae;X.noQueryRootTypeError=Yae;X.expectedEntityError=Jae;X.abstractTypeInKeyFieldSetErrorMessage=zae;X.unknownTypeInFieldSetErrorMessage=Hae;X.invalidSelectionSetErrorMessage=Wae;X.invalidSelectionSetDefinitionErrorMessage=Xae;X.undefinedFieldInFieldSetErrorMessage=Zae;X.unparsableFieldSetErrorMessage=ese;X.unparsableFieldSetSelectionErrorMessage=tse;X.undefinedCompositeOutputTypeError=nse;X.unexpectedArgumentErrorMessage=rse;X.argumentsInKeyFieldSetErrorMessage=ise;X.invalidProvidesOrRequiresDirectivesError=ase;X.duplicateFieldInFieldSetErrorMessage=sse;X.invalidConfigurationDataErrorMessage=ose;X.incompatibleTypeWithProvidesErrorMessage=use;X.invalidInlineFragmentTypeErrorMessage=cse;X.inlineFragmentWithoutTypeConditionErrorMessage=lse;X.unknownInlineFragmentTypeConditionErrorMessage=dse;X.invalidInlineFragmentTypeConditionTypeErrorMessage=fse;X.invalidInlineFragmentTypeConditionErrorMessage=pse;X.invalidSelectionOnUnionErrorMessage=mse;X.duplicateOverriddenFieldErrorMessage=Nse;X.duplicateOverriddenFieldsError=Tse;X.noFieldDefinitionsError=Ese;X.noInputValueDefinitionsError=hse;X.allChildDefinitionsAreInaccessibleError=yse;X.equivalentSourceAndTargetOverrideErrorMessage=Ise;X.undefinedEntityInterfaceImplementationsError=gse;X.orScopesLimitError=_se;X.invalidEventDrivenGraphError=vse;X.invalidRootTypeFieldEventsDirectivesErrorMessage=Sse;X.invalidEventDrivenMutationResponseTypeErrorMessage=Ose;X.invalidRootTypeFieldResponseTypesEventDrivenErrorMessage=Dse;X.invalidNatsStreamInputFieldsErrorMessage=bse;X.invalidKeyFieldSetsEventDrivenErrorMessage=Ase;X.nonExternalKeyFieldNamesEventDrivenErrorMessage=Rse;X.nonKeyFieldNamesEventDrivenErrorMessage=Pse;X.nonEntityObjectExtensionsEventDrivenErrorMessage=Fse;X.nonKeyComposingObjectTypeNamesEventDrivenErrorMessage=wse;X.invalidEdfsDirectiveName=Lse;X.invalidImplementedTypeError=Cse;X.selfImplementationError=Use;X.invalidEventSubjectErrorMessage=Bse;X.invalidEventSubjectsErrorMessage=kse;X.invalidEventSubjectsItemErrorMessage=Mse;X.invalidEventSubjectsArgumentErrorMessage=xse;X.undefinedEventSubjectsArgumentErrorMessage=qse;X.invalidEventDirectiveError=Vse;X.invalidReferencesOfInaccessibleTypeError=jse;X.inaccessibleRequiredInputValueError=Kse;X.invalidUnionMemberTypeError=$se;X.invalidRootTypeError=Gse;X.invalidSubscriptionFilterLocationError=Qse;X.invalidSubscriptionFilterDirectiveError=Yse;X.subscriptionFilterNamedTypeErrorMessage=Jse;X.subscriptionFilterConditionDepthExceededErrorMessage=zse;X.subscriptionFilterConditionInvalidInputFieldNumberErrorMessage=Hse;X.subscriptionFilterConditionInvalidInputFieldErrorMessage=Wse;X.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage=Xse;X.subscriptionFilterArrayConditionInvalidItemTypeErrorMessage=Zse;X.subscriptionFilterArrayConditionInvalidLengthErrorMessage=eoe;X.invalidInputFieldTypeErrorMessage=toe;X.subscriptionFieldConditionInvalidInputFieldErrorMessage=noe;X.subscriptionFieldConditionInvalidValuesArrayErrorMessage=roe;X.subscriptionFieldConditionEmptyValuesArrayErrorMessage=ioe;X.unknownFieldSubgraphNameError=aoe;X.invalidSubscriptionFieldConditionFieldPathErrorMessage=soe;X.invalidSubscriptionFieldConditionFieldPathParentErrorMessage=ooe;X.undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage=uoe;X.invalidSubscriptionFieldConditionFieldPathFieldErrorMessage=coe;X.inaccessibleSubscriptionFieldConditionFieldPathFieldErrorMessage=loe;X.nonLeafSubscriptionFieldConditionFieldPathFinalFieldErrorMessage=doe;X.unresolvablePathError=foe;X.allExternalFieldInstancesError=poe;X.externalInterfaceFieldsError=moe;X.nonExternalConditionalFieldError=Noe;X.incompatibleFederatedFieldNamedTypeError=Toe;X.unknownNamedTypeErrorMessage=ax;X.unknownNamedTypeError=Eoe;X.unknownFieldDataError=hoe;X.unexpectedNonCompositeOutputTypeError=yoe;X.invalidExternalDirectiveError=Ioe;X.configureDescriptionNoDescriptionError=goe;X.configureDescriptionPropagationError=_oe;X.duplicateDirectiveDefinitionArgumentErrorMessage=voe;X.duplicateDirectiveDefinitionLocationErrorMessage=Soe;X.invalidDirectiveDefinitionLocationErrorMessage=Ooe;X.invalidDirectiveDefinitionError=Doe;X.typeNameAlreadyProvidedErrorMessage=boe;X.fieldAlreadyProvidedErrorMessage=Aoe;X.invalidInterfaceObjectImplementationDefinitionsError=Roe;X.invalidNamedTypeError=Poe;X.semanticNonNullLevelsNaNIndexErrorMessage=Foe;X.semanticNonNullLevelsIndexOutOfBoundsErrorMessage=woe;X.semanticNonNullLevelsNonNullErrorMessage=Loe;X.semanticNonNullInconsistentLevelsError=Coe;X.oneOfRequiredFieldsError=Uoe;X.listSizeInvalidSlicingArgumentErrorMessage=Boe;X.listSizeSlicingArgumentNotIntErrorMessage=koe;X.listSizeSizedFieldNotFoundErrorMessage=Moe;X.listSizeSizedFieldNotListErrorMessage=xoe;X.listSizeFieldMustReturnListOrUseSizedFieldsErrorMessage=qoe;X.listSizeSizedFieldsInvalidReturnTypeErrorMessage=Voe;X.listSizeSizedFieldsOnListsErrorMessage=joe;X.listSizeAssumedSizeWithRequiredSlicingArgumentErrorMessage=Koe;X.listSizeAssumedSizeSlicingArgDefaultErrorMessage=$oe;X.costOnInterfaceFieldErrorMessage=Goe;var ex=_e(),Je=Hn(),tx=Kl(),Mc=Cr(),Xie=Yl(),Zie=_E();X.minimumSubgraphRequirementError=new Error("At least one subgraph is required for federation.");function eae(e,t,n){return new Error(`The named type "${e}" is defined as both types "${t}" and "${n}". -However, there must be only one type named "${e}".`)}function tae(e,t,n,r){return new Error(`The ${e} of type "${n}" defined on path "${t}" is incompatible with the default value of "${r}".`)}function nae({actualType:e,coords:t,expectedType:n,isArgument:r}){return new Error(`Incompatible types when merging two instances of ${r?"field argument":Je.FIELD} "${t}": - Expected type "${n}" but received "${e}".`)}function rae(e,t,n,r,i){return new Error(`Expected the ${e} defined on path "${t}" to define the default value "${r}". -"However, the default value "${i}" is defined in the following subgraph`+(n.length>1?"s":"")+`: - "`+n.join(Je.QUOTATION_JOIN)+`" -If an instance defines a default value, that default value must be consistently defined across all subgraphs.`)}function iae(e){return new Error(`Enum "${e}" was used as both an input and output but was inconsistently defined across inclusive subgraphs. To update an Enum used as both an input and output, add any new Enum values with the @inaccessible directive in the origin subgraph. Next, add those new Enum values to all other subgraphs that define the Enum\u2014this time without the @inaccessible directive. Finally, once all subgraphs have been updated, remove @inaccessible from the Enum values in the origin subgraph.`)}function aae(e,t){let n="Subgraphs to be federated must each have a unique, non-empty name.";e.length>0&&(n+=` - The following subgraph names are not unique: - "`+e.join('", "')+'"');for(let r of t)n+=` - ${r}`;return new Error(n)}function sae(e){return new Error(`The directive "${e}" must only be defined once.`)}function oae(e,t){return new Error(`The Enum "${e}" must only define the Enum value definition "${t}" once.`)}function uae(e,t,n){return new Error(`The ${e} "${t}" must only define the field definition "${n}" once.`)}function cae(e,t){return new Error(`The Input Object "${e}" must only define the Input field definition "${t}" once.`)}function lae(e,t,n){return new Error(`The ${e} "${t}" must only implement the Interface "${n}" once.`)}function dae(e,t){return new Error(`The Union "${e}" must only define the Union member "${t}" once.`)}function fae(e,t){return new Error(`The ${e} "${t}" must only be defined once.`)}function pae(e,t,n){return new Error(`The operation type "${e}" cannot be defined as "${t}" because it has already been defined as "${n}".`)}function mae(e,t){return new Error(`The ${e} "${t}" is an extension, but no base ${e} definition of "${t}" is defined in any subgraph.`)}function Nae(e){return new Error(`The Scalar extension "${e}" is invalid because no base Scalar definition of "${e} is defined in the subgraph.`)}function Tae(e){return new Error(`The Union "${e}" must define at least one Union member.`)}function Eae(e){return new Error(`The Enum "${e}" must define at least one Enum value.`)}function hae(e,t,n){return new Error(`Expected the response type "${e}" for operation "${t}" to be type Object but received "${n}.`)}function yae(e,t){let n=e.name,r=[];for(let[i,a]of e.fieldDataByName){if(!t.has(i))continue;let o=[],u=[];for(let[l,d]of a.isShareableBySubgraphName)d?o.push(l):u.push(l);o.length<1?r.push(` - The field "${i}" is defined in the following subgraphs: "${[...a.subgraphNames].join('", "')}". - However, it is not declared "@shareable" in any of them.`):r.push(` - The field "${i}" is defined and declared "@shareable" in the following subgraph`+(o.length>1?"s":"")+': "'+o.join(Je.QUOTATION_JOIN)+`". - However, it is not declared "@shareable" in the following subgraph`+(u.length>1?"s":"")+`: "${u.join(Je.QUOTATION_JOIN)}".`)}return new Error(`The Object "${n}" defines the same fields in multiple subgraphs without the "@shareable" directive:${r.join(` -`)}`)}function Iae(e,t){return new Error(`The directive "@${e}" declared on coordinates "${t}" is not defined in the schema.`)}function gae(e){return new Error(` The type "${e}" was referenced in the schema, but it was never defined.`)}function _ae(e){return`The definition for the directive "@${e}" does not define it as repeatable, but it is declared more than once on these coordinates.`}function vae(e,t,n,r){return new Error(`The ${n} instance of the directive "@${e}" declared on coordinates "${t}" is invalid for the following reason`+(r.length>1?`s: -`:`: -`)+r.join(` -`))}function Sae(e,t){return new Error(`The definition for the directive "@${e}" does not define it as repeatable, but the directive has been declared on more than one instance of the type "${t}".`)}function Oae(e,t){return` The definition for "@${e}" does not define "${t}" as a valid location.`}function Dae(e,t,n){let r=` The definition for "@${e}" defines the following `+t.length+" required argument"+(t.length>1?"s: ":": ")+'"'+t.join('", "')+`". - However,`;return n.length<1?r+" no arguments are defined on this instance.":r+" the following required argument"+(n.length>1?"s are":" is")+' not defined on this instance: "'+n.join(Je.QUOTATION_JOIN)+'".'}function bae(e,t){return` The definition for "@${e}" does not define the following argument`+(t.length>1?"s that are":" that is")+' provided: "'+t.join(Je.QUOTATION_JOIN)+'".'}function Aae(e){return" The following argument"+(e.length>1?"s are":" is")+' defined more than once: "'+e.join(Je.QUOTATION_JOIN)+'"'}function Rae(e,t,n,r){return` The value "${e}" provided to argument "${t}(${n}: ...)" is not a valid "${r}" type.`}function Pae(e){return new Error(` The type defined at path "${e}" has more than ${tx.MAXIMUM_TYPE_NESTING} layers of nesting, or there is a cyclical error.`)}function Fae(e){return new Error(`Fatal: Unexpected type for "${e}"`)}function wae(e,t,n){return new Error(`Fatal: Expected "${e}" to be type ${(0,Mc.kindToNodeType)(t)} but received "${(0,Mc.kindToNodeType)(n)}".`)}function Lae(e,t){return new Error(`Fatal: The type "${e}" visited the following unexpected edge`+(t.length>1?"s":"")+`: - "${t.join(Je.QUOTATION_JOIN)}".`)}var Cae='"Interface Object" (an "Object" type that also defines the "@interfaceObject" directive)';function Uae({existingData:e,incomingNodeType:t,incomingSubgraphName:n}){let r=[...e.subgraphNames],i=t?`"${t}"`:Cae;return new Error(` "${e.name}" is defined using incompatible types across subgraphs. It is defined as type "${(0,Mc.kindToNodeType)(e.kind)}" in subgraph`+(r.length>1?"s":"")+` "${r.join(Je.QUOTATION_JOIN)}" but type ${i} in subgraph "${n}".`)}function Bae(e){return new Error(`Fatal: Expected all constituent types at path "${e}" to be one of the following: "LIST_TYPE", "NAMED_TYPE", or "NON_NULL_TYPE".`)}function kae(e,t){return new Error(`Fatal: Expected key "${e}" to exist in the map "${t}".`)}X.subgraphValidationFailureError=new Error(" Fatal: Subgraph validation did not return a valid AST.");function Mae(e,t,n,r,i){return new Error(` Expected "${e}" to be type "${t}" but received "${n}" when handling child "${r}" of type "${i}".`)}function xae(e,t){return new Error(`The subgraph "${e}" could not be federated for the following reason`+(t.length>1?"s":"")+`: -`+t.map(n=>n.message).join(` -`))}function qae(e,t){return`The ${(0,Mc.numberToOrdinal)(e+1)} subgraph in the array did not define a name. Consequently, any further errors will temporarily identify this subgraph as "${t}".`}function Vae(e,t,n){return new Error(`The schema definition defines the "${e}" operation as type "${t}". However, "${t}" was also used for the "${n}" operation. - If explicitly defined, each operation type must be a unique and valid Object type.`)}function jae(e,t,n){return new Error(`The schema definition defines the "${e}" operation as type "${t}". However, the schema also defines another type named "${n}", which is the default (root) type name for the "${e}" operation. -For federation, it is only possible to use the default root types names ("Mutation", "Query", "Subscription") as operation definitions. No other definitions with these default root type names are valid.`)}function Kae(e){let t="The subgraph has syntax errors and could not be parsed.";return e&&(t+=` - The reason provided was: `+e.message),new Error(t)}function $ae(e,t,n){let r=[];for(let[i,a]of n){let o=` The implementation of Interface "${i}" by "${e}" is invalid because: -`,u=a.unimplementedFields.length;u&&(o+=` The following field${u>1?"s are":" is"} not implemented: "`+a.unimplementedFields.join('", "')+`" -`);for(let[l,d]of a.invalidFieldImplementations){let p=d.unimplementedArguments.size,E=d.invalidImplementedArguments.length,y=d.invalidAdditionalArguments.size;if(o+=` The field "${l}" is invalid because: -`,p&&(o+=` The following argument${p>1?"s are":" is"} not implemented: "`+[...d.unimplementedArguments].join('", "')+`" -`),E){o+=` The following implemented argument${E>1?"s are":" is"} invalid: -`;for(let v of d.invalidImplementedArguments)o+=` The argument "${v.argumentName}" must define type "`+v.expectedType+`" and not "${v.actualType}" -`}y&&(o+=` If a field from an Interface is implemented, any additional Arguments that were not defined on the original Interface field must be optional (nullable). -`,o+=" The following additional argument"+(d.invalidAdditionalArguments.size>1?"s are":" is")+' not defined as optional: "'+[...d.invalidAdditionalArguments].join('", "')+`" -`),d.implementedResponseType&&(o+=` The implemented response type "${d.implementedResponseType}" is not a valid subtype (equally or more restrictive) of the response type "`+d.originalResponseType+`" for "${i}.${l}". -`),d.isInaccessible&&(o+=` The field has been declared "@inaccessible"; however, the same field has not been declared "@inaccessible" on the Interface definition. - Consequently, the Interface implementation cannot be satisfied. -`)}r.push(o)}return new Error(`The ${t} "${e}" has the following Interface implementation errors: -`+r.join(` -`))}function Gae(e,t,n,r=!0){let i=r?Je.ARGUMENT:Je.INPUT_FIELD,a=`The ${e} "${t}" could not be federated because: -`;for(let o of n)a+=` The ${i} "${o.inputValueName}" is required in the following subgraph`+(o.requiredSubgraphs.length>1?"s":"")+': "'+o.requiredSubgraphs.join('", "')+`" - However, the ${i} "${o.inputValueName}" is not defined in the following subgraph`+(o.missingSubgraphs.length>1?"s":"")+': "'+o.missingSubgraphs.join('", "')+`" - If an ${i} is required on a ${e} in any one subgraph, it must be at least defined as optional on all other definitions of that ${e} in all other subgraphs. -`;return new Error(a)}function Qae(e,t){return new Error(`The field "${e}" is invalid because: - The following argument`+(t.length>1?"s are":" is")+' defined more than once: "'+t.join(Je.QUOTATION_JOIN)+`" -`)}function Yae(e=!0){return new Error(`The ${e?"router":"client"} schema does not define at least one accessible query root type field after federation was completed, which is necessary for a federated graph to be valid. - For example: - type Query { - dummy: String - }`)}X.inaccessibleQueryRootTypeError=new Error('The root query type "Query" must be present in the client schema; consequently, it must not be declared "@inaccessible".');function Jae(e){return new Error(`Expected object "${e}" to define a "key" directive, but it defines no directives.`)}X.inlineFragmentInFieldSetErrorMessage=" Inline fragments are not currently supported within a field set argument.";function zae(e,t,n,r){return` The following field set is invalid: - "${e}" - This is because "${t}" returns "${n}", which is type "${r}". - Fields that return abstract types (Interfaces and Unions) cannot be included in the field set of "@key" directives.`}function Hae(e,t,n){return` The following field set is invalid: - "${e}" - This is because "${t}" returns the unknown type "${n}".`}function Wae(e,t,n,r){return` The following field set is invalid: - "${e}" - This is because of the selection set corresponding to the `+vE(t,n,r)+` Composite types such as "${r}" types must define a selection set with at least one field selection.`}function Xae(e,t,n,r){return` The following field set is invalid: - "${e}" - This is because of the selection set corresponding to the `+vE(t,n,r)+` Non-composite types such as "${r}" cannot define a selection set.`}function Zae(e,t,n){return` The following field set is invalid: - "${e}" - This is because of the selection set corresponding to the field coordinates "${t}.${n}". - The type "${t}" does not define a field named "${n}".`}function ese(e,t){let n=` The following field set is invalid: - "${e}" - The field set could not be parsed.`;return t&&(n+=` - The reason provided was: `+t.message),n}function tse(e,t){return` The following field set is invalid: - "${e}" - This is because the selection set defined on "${t}" could not be parsed.`}function nse(e){return new Error(` Expected an object/interface or object/interface extension named "${e}" to exist.`)}function rse(e,t,n){return` The following field set is invalid: - "${e}" - This is because "${t}" does not define an argument named "${n}".`}function ise(e,t){return` The following field set is invalid: - "${e}" - This is because "${t}" defines arguments. - Fields that define arguments cannot be included in the field set of @key directives.`}function ase(e,t){return new Error(`The following "${e}" directive`+(t.length>1?"s are":" is")+` invalid: -`+t.join(` -`))}function sse(e,t){return` The following field set is invalid: - "${e}" - This is because "${t}" was included in the field set more than once.`}function ose(e,t,n){return` Expected ConfigurationData to exist for type "${e}" when adding field "${t}" while validating field set "${n}".`}function use({fieldCoords:e,responseType:t,subgraphName:n}){return` A "@provides" directive is declared on field "${e}" in subgraph "${n}". - However, the response type "${t}" is not an Object nor Interface.`}function QO(e,t,n=!1){return e.length<1?`enclosing type name "${t}". -`:`field coordinates "${e[e.length-1]}"`+(n?` that returns "${t}"`:"")+`. -`}function vE(e,t,n){return e.length<1?`enclosing type name "${t}", which is type "${n}". -`:`field coordinates "${e[e.length-1]}" that returns "${t}", which is type "${n}". -`}function cse(e,t,n,r){return` The following field set is invalid: - "${e}" - This is because an inline fragment with the type condition "${n}" is defined on the selection set corresponding to the `+QO(t,r,!0)+` However, "${r}" is not an abstract (Interface or Union) type. - Consequently, the only valid type condition at this selection set would be "${r}".`}function lse(e,t){return` The following field set is invalid: - "${e}" - This is because "${t}" defines an inline fragment without a type condition.`}function dse(e,t,n,r){return` The following field set is invalid: - "${e}" - This is because an inline fragment with the unknown type condition "${r}" is defined on the selection set corresponding to the `+QO(t,n)}function fse(e,t,n,r,i){return` The following field set is invalid: - "${e}" - This is because an inline fragment with the type condition "${r}" is defined on the selection set corresponding to the `+QO(t,n)+` However, "${r}" is type "${i}" when types "Interface" or "Object" would be expected.`}function pse(e,t,n,r,i){let a=` The following field set is invalid: - "${e}" - This is because an inline fragment with the type condition "${n}" is defined on the selection set corresponding to the `+vE(t,i,r);return r===Je.INTERFACE?a+` However, "${n}" does not implement "${i}"`:a+` However, "${n}" is not a member of "${i}".`}function mse(e,t,n){return` The following field set is invalid: - "${e}" - This is because of the selection set corresponding to the `+vE(t,n,Je.UNION)+` Union types such as "${n}" must define field selections (besides "__typename") on an inline fragment whose type condition corresponds to a constituent union member.`}function Nse(e,t){return` The field "${e}" declares an @override directive in the following subgraphs: "`+t.join(Je.QUOTATION_JOIN)+'".'}function Tse(e){return new Error('The "@override" directive must only be declared on one single instance of a field. However, an "@override" directive was declared on more than one instance of the following field'+(e.length>1?"s":"")+': "'+e.join(Je.QUOTATION_JOIN)+`". -`)}function Ese(e,t){return new Error(`The ${e} "${t}" is invalid because it does not define any fields.`)}function hse(e){return new Error(`The Input Object "${e}" is invalid because it does not define any input values.`)}function yse(e,t,n){return new Error(`The ${e} "${t}" is invalid because all its ${n} definitions are declared "@inaccessible".`)}function Ise(e,t){return`Cannot override field "${t}" because the source and target subgraph names are both "${e}"`}function gse(e,t){let n=`Federation was unsuccessful because any one subgraph that defines a specific entity Interface must also define each and every entity Object that implements that entity Interface. -Each entity Object must also explicitly define its implementation of the entity Interface. -`;for(let[r,i]of e){let o=(0,Mc.getOrThrowError)(t,r,"entityInterfaceFederationDataByTypeName").concreteTypeNames;n+=` Across all subgraphs, the entity interface "${r}" is implemented by the following entit`+(o.size>1?"ies":"y")+`: - "`+Array.from(o).join(Je.QUOTATION_JOIN)+`" - However, the definition of at least one of these implementations is missing in a subgraph that defines the entity interface "${r}": -`;for(let{subgraphName:u,definedConcreteTypeNames:l}of i){let d=(0,Mc.getEntriesNotInHashSet)(o,l);n+=` Subgraph "${u}" does not define the following implementations: "`+d.join(Je.QUOTATION_JOIN)+`" -`}}return new Error(n)}function _se(e,t){return new Error(`The maximum number of OR scopes that can be defined by @requiresScopes on a single field is ${e}. However, the following coordinates attempt to define more: - "`+t.join(Je.QUOTATION_JOIN)+`" -If you require more, please contact support.`)}function vse(e){return new Error(`An "Event Driven" graph\u2014a subgraph that defines event driven directives\u2014must not define any resolvers. -Consequently, any "@key" definitions must also include the "resolvable: false" argument. -Moreover, only fields that compose part of an entity's (composite) key and are declared "@external" are permitted. -`+e.join(` -`))}function Sse(e){let t=` Root type fields defined in an Event Driven graph must define a valid events directive: - Mutation type fields must define either a edfs publish or request directive." - Query type fields must define "@edfs__natsRequest" - Subscription type fields must define an edfs subscribe directive - The following root field path`+(e.size>1?"s are":" is")+` invalid: -`;for(let[n,r]of e)r.definesDirectives?t+=` The root field path "${n}" defines the following invalid events directive`+(r.invalidDirectiveNames.length>1?"s":"")+': "@'+r.invalidDirectiveNames.join('", "@')+`" -`:t+=` The root field path "${n}" does not define any valid events directives. -`;return t}function Ose(e){let t=` Mutation type fields defined in an Event Driven graph must return the non-nullable type "edfs__PublishResult!", which has the following definition: - type edfs__PublishResult { - success: Boolean! - } - However, the following mutation field path`+(e.size>1?"s are":" is")+` invalid: -`;for(let[n,r]of e)t+=` The mutation field path "${n}" returns "${r}". -`;return t}function Dse(e){let t=` The named response type of root type fields defined in an Event Driven graph must be a non-nullable, non-list named type that is either an entity, an interface implemented by an entity, or a union of which an entity is a member. - Consequently, the following root field path`+(e.size>1?"s are":" is")+` invalid: -`;for(let[n,r]of e)t+=` The root field path "${n}", which returns the invalid type "${r}" -`;return t}X.invalidNatsStreamInputErrorMessage=`The "streamConfiguration" argument must be a valid input object with the following form: - input edfs__NatsStreamConfiguration { - consumerInactiveThreshold: Int! = 30 - consumerName: String! - streamName: String! - }`;function bse(e,t,n,r){let i=X.invalidNatsStreamInputErrorMessage,a=[];return e.length>0&&a.push("The following required field"+(e.length>1?"s were":" was")+' not defined: "'+e.join(Je.QUOTATION_JOIN)+'".'),t.length>0&&a.push("The following required field"+(t.length>1?"s were":" was")+' defined more than once: "'+t.join(Je.QUOTATION_JOIN)+'".'),n.length>0&&a.push("The following required field"+(n.length>1?"s were":" was")+' not type "String!" with a minimum length of 1: "'+n.join(Je.QUOTATION_JOIN)+'".'),r.length>0&&a.push("The following field"+(r.length>1?"s are":" is")+' not part of a valid "edfs__NatsStreamConfiguration" input definition: "'+r.join(Je.QUOTATION_JOIN)+'".'),i+=` - However, the provided input was invalid for the following reason`+(a.length>1?"s":"")+`: - `+a.join(` - `),i}function Ase(e=new Map){let t="";for(let[n,r]of e)t+=' The following "@key" field set'+(r.length>1?"s are":" is")+` defined on the entity "${n}" without a "resolvable: false" argument: - "`+r.join(Je.QUOTATION_JOIN)+`" -`;return t}function Rse(e){let t=" The following field"+(e.size>1?"s are referenced":" is referenced")+` within an entity "@key" field without an "@external" declaration: -`;for(let[n,r]of e)t+=` field "${r}" defined on path "${n}" -`;return t}function Pse(e){let t=" The following field"+(e.size>1?"s are":" is")+` defined despite not composing part of a "@key" directive field set: -`;for(let[n,r]of e)t+=` Field "${r}" defined on path "${n}" -`;return t}function Fse(e){return`Only root types and entities (objects that define one or more primary keys with the "@key" directive) may be defined as object extensions in an Event Driven graph. -Consequently, the following object extension definition`+(e.length>1?"s are":" is")+` invalid: - "`+e.join(Je.QUOTATION_JOIN)+`" -`}function wse(e){return` Only object definitions whose fields compose part of a "@key" directive's field set may be defined in an Event Driven graph. Consequently, the following object type definition`+(e.length>1?"s are":" is")+` invalid: - "`+e.join(Je.QUOTATION_JOIN)+`" -`}X.invalidEdfsPublishResultObjectErrorMessage=` The object "edfs__PublishResult" that was defined in the Event Driven graph is invalid and must instead have the following definition: - type edfs__PublishResult { - success: Boolean! - }`;X.invalidNatsStreamConfigurationDefinitionErrorMessage=` The input object "edfs__NatsStreamConfiguration" that was defined in the Event Driven graph is invalid and must instead have the following definition: - input edfs__NatsStreamConfiguration { - consumerInactiveThreshold: Int! = 30 - consumerName: String! - streamName: String! - }`;function Lse(e){return new Error(`Could not retrieve definition for Event-Driven Federated Subscription directive "${e}".`)}function Cse(e,t){let n=` Only interfaces can be implemented. However, the type "${e}" attempts to implement the following invalid type`+(t.size>1?"s":"")+`: -`;for(let[r,i]of t)n+=` "${r}", which is type "${i}" -`;return new Error(n)}function Use(e){return new Error(` The interface "${e}" must not implement itself.`)}function Bse(e){return`The "${e}" argument must be string with a minimum length of one.`}function kse(e){return`The "${e}" argument must be a list of strings.`}function Mse(e){return`Each item in the "${e}" argument list must be a string with a minimum length of one. However, at least one value provided in the list was invalid.`}function xse(e){return`An argument template references the invalid argument "${e}".`}function qse(e){return`An argument template references the undefined argument "${e}".`}X.invalidEventProviderIdErrorMessage='If explicitly defined, the "providerId" argument must be a string with a minimum length of one.';function Vse(e,t,n){return new Error(`The event directive "${e}" declared on "${t}" is invalid for the following reason`+(n.length>1?"s":"")+`: - `+n.join(` - `))}function jse(e,t,n){return new Error(`The ${e} "${t}" is declared "@inaccessible"; however, the ${e} is still referenced at the following paths: - "`+n.join(Je.QUOTATION_JOIN)+`" -`)}function Kse(e,t){return new Error(`The ${e.kind===ex.Kind.ARGUMENT?"argument":"Input field"} "${e.name}" defined at coordinates "${e.federatedCoords}" is declared "@inaccessible"; however, it is a required ${e.kind===ex.Kind.ARGUMENT?"argument of field":"field of Input Object"} "${t}".`)}function $se(e,t){return new Error(` The union "${e}" defines the following member`+(t.length>1?"s that are not object types":" that is not an object type")+`: - `+t.join(` - `))}function Gse(e){return new Error(`Expected type "${e}" to be a root type but could not find its respective OperationTypeNode.`)}function Qse(e){return new Error(`The "@${Je.SUBSCRIPTION_FILTER}" directive must only be defined on a subscription root field, but it was defined on the path "${e}".`)}function Yse(e,t){return new Error(`The "@${Je.SUBSCRIPTION_FILTER}" directive defined on path "${e}" is invalid for the following reason`+(t.length>1?"s":"")+`: -`+t.join(` -`))}function Jse(e){return` Unknown type "${e}".`}function zse(e){return` The input path "${e}" exceeds the maximum depth of ${tx.MAX_SUBSCRIPTION_FILTER_DEPTH} for any one filter condition. - If you require a larger maximum depth, please contact support.`}var nx=` Each "${Je.SUBSCRIPTION_FILTER_CONDITION}" input object must define exactly one of the following input value fields: "${Je.AND_UPPER}", "${Je.IN_UPPER}", "${Je.NOT_UPPER}", or "${Je.OR_UPPER}". -`;function Hse(e,t){return nx+` However, input path "${e}" defines ${t} fields.`}function Wse(e,t){return nx+` However, input path "${e}" defines the invalid input value field "${t}".`}function Xse(e,t,n){return` Expected the value of input path "${e}" to be type "${t}" but received type "${n}"`}var rx=` An AND or OR input field defined on a "${Je.SUBSCRIPTION_FILTER_CONDITION}" should define a list of 1\u20135 nested conditions. -`;function Zse(e,t){let n=t.length>1;return rx+" However, the following "+(n?"indices":"index")+` defined on input path "${e}" `+(n?"are":"is")+' not type "object": '+t.join(", ")}function eoe(e,t){return rx+` However, the list defined on input path "${e}" has a length of ${t}.`}function toe(e,t,n){return` Expected the input path "${e}" to be type "${t}" but received "${n}".`}function noe(e,t,n,r,i){let a=` Each "${Je.SUBSCRIPTION_FIELD_CONDITION}" input object must only define the following two input value fields: "${Je.FIELD_PATH}" and "${Je.VALUES}". - However, input path "${e}" is invalid because:`;return t.length>0&&(a+=` - The following required field`+(t.length>1?"s are":" is")+` not defined: - "`+t.join(Je.QUOTATION_JOIN)+'"'),n.length>0&&(a+=` - The following required field`+(n.length>1?"s are":" is")+` defined more than once: - "`+n.join(Je.QUOTATION_JOIN)+'"'),r.length>0&&(a+=` - The following invalid field`+(r.length>1?"s are":" is")+` defined: - "`+r.join(Je.QUOTATION_JOIN)+'"'),i.length>0&&(a+=` - `+i.join(` - `)),a}var ix=` A "${Je.SUBSCRIPTION_FIELD_CONDITION}" input object must define a "values" input value field with a list of at least one valid "${Je.SUBSCRIPTION_FILTER_VALUE}" kind (boolean, enum, float, int, null, or string). -`;function roe(e,t){let n=t.length>1;return ix+" However, the following "+(n?"indices":"index")+` defined on input path "${e}" `+(n?"are":"is")+` not a valid "${Je.SUBSCRIPTION_FILTER_VALUE}": `+t.join(", ")}function ioe(e){return ix+` However, the list defined on input path "${e}" is empty.`}function aoe(e){return new Error(` Field "${e}" defined no subgraph names.`)}function soe(e,t){return` Input path "${e}" defines the value "${t}", which is not a period (.) delimited field path.`}function ooe(e,t,n){return` Input path "${e}" defines the value "${t}". - However, "${n}" is not type "object"`}function uoe(e,t,n,r,i){return` Input path "${e}" defines the value "${t}". - However, the path "${n}" is invalid because no field named "${r}" exists on type "${i}".`}function coe(e,t,n,r,i){return`Input path "${e}" defines the value "${t}". - However, only fields that are defined in the same graph as the "@${Je.SUBSCRIPTION_FILTER}" directive can compose part of an "IN" condition's "fieldPath" input value field. - Consequently, the path "${n}" is invalid because field "${r}" is not defined in subgraph "${i}".`}function loe(e,t,n,r){return` Input path "${e}" defines the value "${t}". - The path segment "${n}" is invalid because it refers to "${r}", which is declared "@inaccessible".`}function doe(e,t,n,r,i){return` Input path "${e}" defines the value "${t}". - However, the final field "${n}" is ${r} "${i}", which is not a leaf type; therefore, it requires further selections.`}function foe({fieldName:e,selectionSet:t},n){let r=`The field "${e}" is unresolvable at the following path: -${t} -This is because: - - `+n.join(` - - `);return new Error(r)}function poe(e,t){let n=`The Object "${e}" is invalid because the following field definition`+(t.size>1?"s are":" is")+` declared "@external" on all instances of that field: -`;for(let[r,i]of t)n+=` "${r}" in subgraph`+(i.length>1?"s":"")+' "'+i.join(Je.QUOTATION_JOIN)+`" -`;return n+='At least one instance of a field definition must always be resolvable (and therefore not declared "@external").',new Error(n)}function moe(e,t){return new Error(`The interface "${e}" is invalid because the following field definition`+(t.length>1?"s are":" is")+` declared "@external": - "`+t.join(Je.QUOTATION_JOIN)+`" -Interface fields should not be declared "@external". This is because interface fields do not resolve directly, but the "@external" directive relates to whether a field instance can be resolved by the subgraph in which it is defined.`)}function Noe({directiveCoords:e,fieldSet:t,directiveName:n,subgraphName:r,targetCoords:i}){let a=i.split(Je.LITERAL_PERIOD),o=a[a.length-1]===Je.TYPENAME;return new Error(`The field "${e}" in subgraph "${r}" defines a "@${n}" directive with the following field set: - "${t}".`+(o?` -However, none of the field set ancestors of "__typename" is declared "@external".`:` -However, neither the field "${i}" nor any of its field set ancestors are declared "@external".`)+` -Consequently, "${i}" is already provided by subgraph "${r}" and should not form part of a "@${n}" directive field set.`)}function Toe(e,t){let n=[];for(let[r,i]of t){let a=[...i];n.push(` The named type "${r}" is returned by the following subgraph`+(a.length>1?"s":"")+': "'+a.join(Je.QUOTATION_JOIN)+'".')}return new Error(`Each instance of a shared field must resolve identically across subgraphs. -The field "${e}" could not be federated due to incompatible types across subgraphs. -The discrepancies are as follows: -`+n.join(` -`))}function ax(e,t){return`The field "${e}" returns the unknown named type "${t}".`}function Eoe(e,t){return new Error(ax(e,t))}function hoe(e){return new Error(`Could not find FieldData for field "${e}" -.This should never happen. Please report this issue on GitHub.`)}function yoe(e,t){return new Error(`Expected named type "${e}" to be a composite output type (Object or Interface) but received "${t}". -This should never happen. Please report this issue on GitHub.`)}function Ioe(e){return new Error(`The Object field "${e}" is invalidly declared "@external". An Object field should only be declared "@external" if it is part of a "@key", "@provides", or "@requires" field set, or the field is necessary to satisfy an Interface implementation. In the case that none of these conditions is true, the "@external" directive should be removed.`)}function goe(e,t){return new Error(`The "@openfed__configureDescription" directive defined on ${e} "${t}" is invalid because neither a description nor the "descriptionOverride" argument is defined.`)}function _oe(e,t){return new Error(`The coordinates "${e}" declare "@openfed__configureDescription(propagate: true)" in the following subgraphs: - "`+t.join(Je.QUOTATION_JOIN)+`" -A federated graph only supports a single description; consequently, only one subgraph may define argument "propagate" as true (this is the default value).`)}function voe(e){return"- The following argument"+(e.length>1?"s are":" is")+` defined more than once: - "`+e.join(Je.QUOTATION_JOIN)+'"'}function Soe(e){return`- The location "${e}" is defined multiple times.`}function Ooe(e){return`- "${e}" is not a valid directive location.`}function Doe(e,t){return new Error(`The directive definition for "@${e}" is invalid for the following reason`+(t.length>1?"s":"")+`: -`+t.join(Je.LITERAL_NEW_LINE)+'"')}function boe(e,t){return` The field "${e}" is unconditionally provided by subgraph "${t}" and should not form part of any "@provides" field set.`}function Aoe(e,t,n){return` The field "${e}" is unconditionally provided by subgraph "${t}" and should not form part of any "@${n}" field set. Although "${e}" is declared "@external", it is part of a "@key" directive on an extension type. Such fields are only declared "@external" for legacy syntactical reasons and are not internally considered "@external".`}function Roe(e,t,n){return new Error(`The subgraph that defines an entity Interface Object (using "@interfaceObject") must not define any implementation types of that interface. However, the subgraph "${t}" defines the entity Interface "${e}" as an Interface Object alongside the following implementation type`+(n.length>1?"s":"")+` of "${e}": - "`+n.join(Je.QUOTATION_JOIN)+'"')}function Poe({data:e,namedTypeData:t,nodeType:n}){let r=(0,Xie.isFieldData)(e),i=r?`${e.originalParentTypeName}.${e.name}`:e.originalCoords;return new Error(`The ${n} "${i}" is invalid because it defines type `+(0,Zie.printTypeNode)(e.type)+`; however, ${(0,Mc.kindToNodeType)(t.kind)} "${t.name}" is not a valid `+(r?"output":"input")+" type.")}function Foe(e){return`Index "${e}" is not a valid integer.`}function woe({maxIndex:e,typeString:t,value:n}){return`Index "${n}" is out of bounds for type ${t}; `+(e>0?`valid indices are 0-${e} inclusive.`:"the only valid index is 0.")}function Loe({typeString:e,value:t}){return`Index "${t}" of type ${e} is non-null but must be nullable.`}X.semanticNonNullArgumentErrorMessage=`Argument "${Je.LEVELS}" validation error.`;function Coe(e){let t=`${e.renamedParentTypeName}.${e.name}`,n=`The "@semanticNonNull" directive defined on field "${t}" is invalid due to inconsistent values provided to the "levels" argument across the following subgraphs: -`;for(let[r,i]of e.nullLevelsBySubgraphName)n+=` Subgraph "${r}" defines levels ${Array.from(i).sort((a,o)=>a-o)}. -`;return n+=`The list value provided to the "levels" argument must be consistently defined across all subgraphs that define "@semanticNonNull" on field "${t}".`,new Error(n)}function Uoe({requiredFieldNames:e,typeName:t}){return new Error(`The "@oneOf" directive defined on Input Object "${t}" is invalid because all Input fields must be optional (nullable); however, the following Input field`+(e.length>1?"s are":" is")+' required (non-nullable): "'+e.join(Je.QUOTATION_JOIN)+'".')}function Boe(e,t){return` The "slicingArguments" value "${t}" on "${e}" does not reference a defined argument on this field.`}function koe(e,t,n){return` The "slicingArguments" value "${t}" on "${e}" references an argument of type "${n}", but slicing arguments must be of type "Int" or "Int!".`}function Moe(e,t,n){return` The "sizedFields" value "${t}" on "${e}" does not reference a defined field on the return type "${n}".`}function xoe(e,t,n,r){return` The "sizedFields" value "${t}" on "${e}" references field "${n}.${t}", which returns type "${r}". Sized fields must return a list type.`}function qoe(e,t){return` The "@listSize" directive on "${e}" is invalid because the field returns type "${t}", which is not a list type, and no "sizedFields" argument is provided.`}function Voe(e,t){return` The "sizedFields" argument on "${e}" is invalid because the return type "${t}" is not an object or interface type.`}function joe(e,t){return` The "sizedFields" argument on "${e}" is invalid because the return type "${t}" must not be a list.`}function Koe(e){return` The "@listSize" directive on "${e}" defines both "assumedSize" and "slicingArguments". When both are used, "requireOneSlicingArgument" must be set to false.`}function $oe(e,t){return` The "@listSize" directive on "${e}" defines both "assumedSize" and "slicingArguments", but slicing argument "${t}" has a default value. When "assumedSize" is used as a fallback for missing slicing arguments, none of the slicing arguments may have default values.`}function Goe(e){return` The "@cost" directive at "${e}" is not permitted on fields or arguments of an Interface type. The cost of an interface field is derived from the costs of the corresponding fields on the concrete types that implement the interface.`}});var ox=F(sx=>{"use strict";m();T();N();Object.defineProperty(sx,"__esModule",{value:!0})});var OE=F(SE=>{"use strict";m();T();N();Object.defineProperty(SE,"__esModule",{value:!0});SE.DEFAULT_CONSUMER_INACTIVE_THRESHOLD=void 0;SE.DEFAULT_CONSUMER_INACTIVE_THRESHOLD=30});var DE=F(hr=>{"use strict";m();T();N();Object.defineProperty(hr,"__esModule",{value:!0});hr.SUBSCRIPTION_FILTER_VALUE_DEFINITION=hr.SUBSCRIPTION_FILTER_CONDITION_DEFINITION=hr.SUBSCRIPTION_FIELD_CONDITION_DEFINITION=hr.SCOPE_SCALAR_DEFINITION=hr.LINK_PURPOSE_DEFINITION=hr.LINK_IMPORT_DEFINITION=hr.FIELD_SET_SCALAR_DEFINITION=hr.EDFS_NATS_STREAM_CONFIGURATION_DEFINITION=void 0;var nn=_e(),fn=Lr(),pn=Hn(),Qoe=OE();hr.EDFS_NATS_STREAM_CONFIGURATION_DEFINITION={kind:nn.Kind.INPUT_OBJECT_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.EDFS_NATS_STREAM_CONFIGURATION),fields:[{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.CONSUMER_INACTIVE_THRESHOLD),type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.INT_SCALAR)},defaultValue:{kind:nn.Kind.INT,value:Qoe.DEFAULT_CONSUMER_INACTIVE_THRESHOLD.toString()}},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.CONSUMER_NAME),type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.STRING_SCALAR)}},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.STREAM_NAME),type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.STRING_SCALAR)}}]};hr.FIELD_SET_SCALAR_DEFINITION={kind:nn.Kind.SCALAR_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.FIELD_SET_SCALAR)};hr.LINK_IMPORT_DEFINITION={kind:nn.Kind.SCALAR_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.LINK_IMPORT)};hr.LINK_PURPOSE_DEFINITION={kind:nn.Kind.ENUM_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.LINK_PURPOSE),values:[{directives:[],kind:nn.Kind.ENUM_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.EXECUTION)},{directives:[],kind:nn.Kind.ENUM_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.SECURITY)}]};hr.SCOPE_SCALAR_DEFINITION={kind:nn.Kind.SCALAR_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.SCOPE_SCALAR)};hr.SUBSCRIPTION_FIELD_CONDITION_DEFINITION={fields:[{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.FIELD_PATH),type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.STRING_SCALAR)}},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.VALUES),type:{kind:nn.Kind.NON_NULL_TYPE,type:{kind:nn.Kind.LIST_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.SUBSCRIPTION_FILTER_VALUE)}}}],kind:nn.Kind.INPUT_OBJECT_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.SUBSCRIPTION_FIELD_CONDITION)};hr.SUBSCRIPTION_FILTER_CONDITION_DEFINITION={fields:[{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.AND_UPPER),type:{kind:nn.Kind.LIST_TYPE,type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.SUBSCRIPTION_FILTER_CONDITION)}}},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.IN_UPPER),type:(0,fn.stringToNamedTypeNode)(pn.SUBSCRIPTION_FIELD_CONDITION)},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.OR_UPPER),type:{kind:nn.Kind.LIST_TYPE,type:{kind:nn.Kind.NON_NULL_TYPE,type:(0,fn.stringToNamedTypeNode)(pn.SUBSCRIPTION_FILTER_CONDITION)}}},{kind:nn.Kind.INPUT_VALUE_DEFINITION,name:(0,fn.stringToNameNode)(pn.NOT_UPPER),type:(0,fn.stringToNamedTypeNode)(pn.SUBSCRIPTION_FILTER_CONDITION)}],kind:nn.Kind.INPUT_OBJECT_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.SUBSCRIPTION_FILTER_CONDITION)};hr.SUBSCRIPTION_FILTER_VALUE_DEFINITION={kind:nn.Kind.SCALAR_TYPE_DEFINITION,name:(0,fn.stringToNameNode)(pn.SUBSCRIPTION_FILTER_VALUE)}});var md=F(tr=>{"use strict";m();T();N();Object.defineProperty(tr,"__esModule",{value:!0});tr.CLIENT_PERSISTED_DIRECTIVE_NAMES=tr.IGNORED_FEDERATED_TYPE_NAMES=tr.DEPENDENCIES_BY_DIRECTIVE_NAME=tr.COMPOSITE_OUTPUT_NODE_KINDS=tr.SUBSCRIPTION_FILTER_LIST_INPUT_NAMES=tr.SUBSCRIPTION_FILTER_INPUT_NAMES=tr.STREAM_CONFIGURATION_FIELD_NAMES=tr.EVENT_DIRECTIVE_NAMES=tr.TYPE_SYSTEM_DIRECTIVE_LOCATIONS=void 0;var rt=Hn(),bE=_e(),Sa=DE();tr.TYPE_SYSTEM_DIRECTIVE_LOCATIONS=new Set([rt.ARGUMENT_DEFINITION_UPPER,rt.ENUM_UPPER,rt.ENUM_VALUE_UPPER,rt.FIELD_DEFINITION_UPPER,rt.INPUT_FIELD_DEFINITION_UPPER,rt.INPUT_OBJECT_UPPER,rt.INTERFACE_UPPER,rt.OBJECT_UPPER,rt.SCALAR_UPPER,rt.SCHEMA_UPPER,rt.UNION_UPPER]);tr.EVENT_DIRECTIVE_NAMES=new Set([rt.EDFS_KAFKA_PUBLISH,rt.EDFS_KAFKA_SUBSCRIBE,rt.EDFS_NATS_PUBLISH,rt.EDFS_NATS_REQUEST,rt.EDFS_NATS_SUBSCRIBE,rt.EDFS_REDIS_PUBLISH,rt.EDFS_REDIS_SUBSCRIBE]);tr.STREAM_CONFIGURATION_FIELD_NAMES=new Set([rt.CONSUMER_INACTIVE_THRESHOLD,rt.CONSUMER_NAME,rt.STREAM_NAME]);tr.SUBSCRIPTION_FILTER_INPUT_NAMES=new Set([rt.AND_UPPER,rt.IN_UPPER,rt.NOT_UPPER,rt.OR_UPPER]);tr.SUBSCRIPTION_FILTER_LIST_INPUT_NAMES=new Set([rt.AND_UPPER,rt.OR_UPPER]);tr.COMPOSITE_OUTPUT_NODE_KINDS=new Set([bE.Kind.INTERFACE_TYPE_DEFINITION,bE.Kind.INTERFACE_TYPE_EXTENSION,bE.Kind.OBJECT_TYPE_DEFINITION,bE.Kind.OBJECT_TYPE_EXTENSION]);tr.DEPENDENCIES_BY_DIRECTIVE_NAME=new Map([[rt.CONNECT_FIELD_RESOLVER,[Sa.FIELD_SET_SCALAR_DEFINITION]],[rt.EDFS_NATS_SUBSCRIBE,[Sa.EDFS_NATS_STREAM_CONFIGURATION_DEFINITION]],[rt.KEY,[Sa.FIELD_SET_SCALAR_DEFINITION]],[rt.LINK,[Sa.LINK_IMPORT_DEFINITION,Sa.LINK_PURPOSE_DEFINITION]],[rt.PROVIDES,[Sa.FIELD_SET_SCALAR_DEFINITION]],[rt.REQUIRES,[Sa.FIELD_SET_SCALAR_DEFINITION]],[rt.REQUIRES_SCOPES,[Sa.SCOPE_SCALAR_DEFINITION]],[rt.SUBSCRIPTION_FILTER,[Sa.SUBSCRIPTION_FIELD_CONDITION_DEFINITION,Sa.SUBSCRIPTION_FILTER_CONDITION_DEFINITION,Sa.SUBSCRIPTION_FILTER_VALUE_DEFINITION]]]);tr.IGNORED_FEDERATED_TYPE_NAMES=new Set([rt.BOOLEAN_SCALAR,rt.EDFS_NATS_STREAM_CONFIGURATION,rt.FIELD_SET_SCALAR,rt.ID_SCALAR,rt.INT_SCALAR,rt.FLOAT_SCALAR,rt.LINK_IMPORT,rt.LINK_PURPOSE,rt.STRING_SCALAR,rt.SUBSCRIPTION_FIELD_CONDITION,rt.SUBSCRIPTION_FILTER_CONDITION,rt.SUBSCRIPTION_FILTER_VALUE]);tr.CLIENT_PERSISTED_DIRECTIVE_NAMES=new Set([rt.DEPRECATED,rt.ONE_OF,rt.SEMANTIC_NON_NULL])});var na=F((YO,ux)=>{"use strict";m();T();N();var Ep=function(e){return e&&e.Math===Math&&e};ux.exports=Ep(typeof globalThis=="object"&&globalThis)||Ep(typeof window=="object"&&window)||Ep(typeof self=="object"&&self)||Ep(typeof global=="object"&&global)||Ep(typeof YO=="object"&&YO)||function(){return this}()||Function("return this")()});var ks=F((WPe,cx)=>{"use strict";m();T();N();cx.exports=function(e){try{return!!e()}catch(t){return!0}}});var Uu=F((tFe,lx)=>{"use strict";m();T();N();var Yoe=ks();lx.exports=!Yoe(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var JO=F((aFe,dx)=>{"use strict";m();T();N();var Joe=ks();dx.exports=!Joe(function(){var e=function(){}.bind();return typeof e!="function"||e.hasOwnProperty("prototype")})});var xc=F((cFe,fx)=>{"use strict";m();T();N();var zoe=JO(),AE=Function.prototype.call;fx.exports=zoe?AE.bind(AE):function(){return AE.apply(AE,arguments)}});var Tx=F(Nx=>{"use strict";m();T();N();var px={}.propertyIsEnumerable,mx=Object.getOwnPropertyDescriptor,Hoe=mx&&!px.call({1:2},1);Nx.f=Hoe?function(t){var n=mx(this,t);return!!n&&n.enumerable}:px});var zO=F((EFe,Ex)=>{"use strict";m();T();N();Ex.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var _i=F((gFe,Ix)=>{"use strict";m();T();N();var hx=JO(),yx=Function.prototype,HO=yx.call,Woe=hx&&yx.bind.bind(HO,HO);Ix.exports=hx?Woe:function(e){return function(){return HO.apply(e,arguments)}}});var vx=F((OFe,_x)=>{"use strict";m();T();N();var gx=_i(),Xoe=gx({}.toString),Zoe=gx("".slice);_x.exports=function(e){return Zoe(Xoe(e),8,-1)}});var Ox=F((RFe,Sx)=>{"use strict";m();T();N();var eue=_i(),tue=ks(),nue=vx(),WO=Object,rue=eue("".split);Sx.exports=tue(function(){return!WO("z").propertyIsEnumerable(0)})?function(e){return nue(e)==="String"?rue(e,""):WO(e)}:WO});var XO=F((LFe,Dx)=>{"use strict";m();T();N();Dx.exports=function(e){return e==null}});var ZO=F((kFe,bx)=>{"use strict";m();T();N();var iue=XO(),aue=TypeError;bx.exports=function(e){if(iue(e))throw new aue("Can't call method on "+e);return e}});var RE=F((VFe,Ax)=>{"use strict";m();T();N();var sue=Ox(),oue=ZO();Ax.exports=function(e){return sue(oue(e))}});var Oa=F((GFe,Rx)=>{"use strict";m();T();N();var eD=typeof document=="object"&&document.all;Rx.exports=typeof eD=="undefined"&&eD!==void 0?function(e){return typeof e=="function"||e===eD}:function(e){return typeof e=="function"}});var Nd=F((zFe,Px)=>{"use strict";m();T();N();var uue=Oa();Px.exports=function(e){return typeof e=="object"?e!==null:uue(e)}});var PE=F((ZFe,Fx)=>{"use strict";m();T();N();var tD=na(),cue=Oa(),lue=function(e){return cue(e)?e:void 0};Fx.exports=function(e,t){return arguments.length<2?lue(tD[e]):tD[e]&&tD[e][t]}});var Lx=F((rwe,wx)=>{"use strict";m();T();N();var due=_i();wx.exports=due({}.isPrototypeOf)});var kx=F((owe,Bx)=>{"use strict";m();T();N();var fue=na(),Cx=fue.navigator,Ux=Cx&&Cx.userAgent;Bx.exports=Ux?String(Ux):""});var $x=F((dwe,Kx)=>{"use strict";m();T();N();var jx=na(),nD=kx(),Mx=jx.process,xx=jx.Deno,qx=Mx&&Mx.versions||xx&&xx.version,Vx=qx&&qx.v8,Da,FE;Vx&&(Da=Vx.split("."),FE=Da[0]>0&&Da[0]<4?1:+(Da[0]+Da[1]));!FE&&nD&&(Da=nD.match(/Edge\/(\d+)/),(!Da||Da[1]>=74)&&(Da=nD.match(/Chrome\/(\d+)/),Da&&(FE=+Da[1])));Kx.exports=FE});var rD=F((Nwe,Qx)=>{"use strict";m();T();N();var Gx=$x(),pue=ks(),mue=na(),Nue=mue.String;Qx.exports=!!Object.getOwnPropertySymbols&&!pue(function(){var e=Symbol("symbol detection");return!Nue(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Gx&&Gx<41})});var iD=F((ywe,Yx)=>{"use strict";m();T();N();var Tue=rD();Yx.exports=Tue&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var aD=F((vwe,Jx)=>{"use strict";m();T();N();var Eue=PE(),hue=Oa(),yue=Lx(),Iue=iD(),gue=Object;Jx.exports=Iue?function(e){return typeof e=="symbol"}:function(e){var t=Eue("Symbol");return hue(t)&&yue(t.prototype,gue(e))}});var Hx=F((bwe,zx)=>{"use strict";m();T();N();var _ue=String;zx.exports=function(e){try{return _ue(e)}catch(t){return"Object"}}});var wE=F((Fwe,Wx)=>{"use strict";m();T();N();var vue=Oa(),Sue=Hx(),Oue=TypeError;Wx.exports=function(e){if(vue(e))return e;throw new Oue(Sue(e)+" is not a function")}});var sD=F((Uwe,Xx)=>{"use strict";m();T();N();var Due=wE(),bue=XO();Xx.exports=function(e,t){var n=e[t];return bue(n)?void 0:Due(n)}});var eq=F((xwe,Zx)=>{"use strict";m();T();N();var oD=xc(),uD=Oa(),cD=Nd(),Aue=TypeError;Zx.exports=function(e,t){var n,r;if(t==="string"&&uD(n=e.toString)&&!cD(r=oD(n,e))||uD(n=e.valueOf)&&!cD(r=oD(n,e))||t!=="string"&&uD(n=e.toString)&&!cD(r=oD(n,e)))return r;throw new Aue("Can't convert object to primitive value")}});var nq=F((Kwe,tq)=>{"use strict";m();T();N();tq.exports=!1});var LE=F((Ywe,iq)=>{"use strict";m();T();N();var rq=na(),Rue=Object.defineProperty;iq.exports=function(e,t){try{Rue(rq,e,{value:t,configurable:!0,writable:!0})}catch(n){rq[e]=t}return t}});var CE=F((Wwe,oq)=>{"use strict";m();T();N();var Pue=nq(),Fue=na(),wue=LE(),aq="__core-js_shared__",sq=oq.exports=Fue[aq]||wue(aq,{});(sq.versions||(sq.versions=[])).push({version:"3.41.0",mode:Pue?"pure":"global",copyright:"\xA9 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var lD=F((tLe,cq)=>{"use strict";m();T();N();var uq=CE();cq.exports=function(e,t){return uq[e]||(uq[e]=t||{})}});var dq=F((aLe,lq)=>{"use strict";m();T();N();var Lue=ZO(),Cue=Object;lq.exports=function(e){return Cue(Lue(e))}});var Bu=F((cLe,fq)=>{"use strict";m();T();N();var Uue=_i(),Bue=dq(),kue=Uue({}.hasOwnProperty);fq.exports=Object.hasOwn||function(t,n){return kue(Bue(t),n)}});var dD=F((pLe,pq)=>{"use strict";m();T();N();var Mue=_i(),xue=0,que=Math.random(),Vue=Mue(1 .toString);pq.exports=function(e){return"Symbol("+(e===void 0?"":e)+")_"+Vue(++xue+que,36)}});var Tq=F((ELe,Nq)=>{"use strict";m();T();N();var jue=na(),Kue=lD(),mq=Bu(),$ue=dD(),Gue=rD(),Que=iD(),Td=jue.Symbol,fD=Kue("wks"),Yue=Que?Td.for||Td:Td&&Td.withoutSetter||$ue;Nq.exports=function(e){return mq(fD,e)||(fD[e]=Gue&&mq(Td,e)?Td[e]:Yue("Symbol."+e)),fD[e]}});var Iq=F((gLe,yq)=>{"use strict";m();T();N();var Jue=xc(),Eq=Nd(),hq=aD(),zue=sD(),Hue=eq(),Wue=Tq(),Xue=TypeError,Zue=Wue("toPrimitive");yq.exports=function(e,t){if(!Eq(e)||hq(e))return e;var n=zue(e,Zue),r;if(n){if(t===void 0&&(t="default"),r=Jue(n,e,t),!Eq(r)||hq(r))return r;throw new Xue("Can't convert object to primitive value")}return t===void 0&&(t="number"),Hue(e,t)}});var pD=F((OLe,gq)=>{"use strict";m();T();N();var ece=Iq(),tce=aD();gq.exports=function(e){var t=ece(e,"string");return tce(t)?t:t+""}});var Sq=F((RLe,vq)=>{"use strict";m();T();N();var nce=na(),_q=Nd(),mD=nce.document,rce=_q(mD)&&_q(mD.createElement);vq.exports=function(e){return rce?mD.createElement(e):{}}});var ND=F((LLe,Oq)=>{"use strict";m();T();N();var ice=Uu(),ace=ks(),sce=Sq();Oq.exports=!ice&&!ace(function(){return Object.defineProperty(sce("div"),"a",{get:function(){return 7}}).a!==7})});var TD=F(bq=>{"use strict";m();T();N();var oce=Uu(),uce=xc(),cce=Tx(),lce=zO(),dce=RE(),fce=pD(),pce=Bu(),mce=ND(),Dq=Object.getOwnPropertyDescriptor;bq.f=oce?Dq:function(t,n){if(t=dce(t),n=fce(n),mce)try{return Dq(t,n)}catch(r){}if(pce(t,n))return lce(!uce(cce.f,t,n),t[n])}});var Rq=F((VLe,Aq)=>{"use strict";m();T();N();var Nce=Uu(),Tce=ks();Aq.exports=Nce&&Tce(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var hp=F((GLe,Pq)=>{"use strict";m();T();N();var Ece=Nd(),hce=String,yce=TypeError;Pq.exports=function(e){if(Ece(e))return e;throw new yce(hce(e)+" is not an object")}});var BE=F(wq=>{"use strict";m();T();N();var Ice=Uu(),gce=ND(),_ce=Rq(),UE=hp(),Fq=pD(),vce=TypeError,ED=Object.defineProperty,Sce=Object.getOwnPropertyDescriptor,hD="enumerable",yD="configurable",ID="writable";wq.f=Ice?_ce?function(t,n,r){if(UE(t),n=Fq(n),UE(r),typeof t=="function"&&n==="prototype"&&"value"in r&&ID in r&&!r[ID]){var i=Sce(t,n);i&&i[ID]&&(t[n]=r.value,r={configurable:yD in r?r[yD]:i[yD],enumerable:hD in r?r[hD]:i[hD],writable:!1})}return ED(t,n,r)}:ED:function(t,n,r){if(UE(t),n=Fq(n),UE(r),gce)try{return ED(t,n,r)}catch(i){}if("get"in r||"set"in r)throw new vce("Accessors not supported");return"value"in r&&(t[n]=r.value),t}});var gD=F((ZLe,Lq)=>{"use strict";m();T();N();var Oce=Uu(),Dce=BE(),bce=zO();Lq.exports=Oce?function(e,t,n){return Dce.f(e,t,bce(1,n))}:function(e,t,n){return e[t]=n,e}});var Bq=F((rCe,Uq)=>{"use strict";m();T();N();var _D=Uu(),Ace=Bu(),Cq=Function.prototype,Rce=_D&&Object.getOwnPropertyDescriptor,vD=Ace(Cq,"name"),Pce=vD&&function(){}.name==="something",Fce=vD&&(!_D||_D&&Rce(Cq,"name").configurable);Uq.exports={EXISTS:vD,PROPER:Pce,CONFIGURABLE:Fce}});var Mq=F((oCe,kq)=>{"use strict";m();T();N();var wce=_i(),Lce=Oa(),SD=CE(),Cce=wce(Function.toString);Lce(SD.inspectSource)||(SD.inspectSource=function(e){return Cce(e)});kq.exports=SD.inspectSource});var Vq=F((dCe,qq)=>{"use strict";m();T();N();var Uce=na(),Bce=Oa(),xq=Uce.WeakMap;qq.exports=Bce(xq)&&/native code/.test(String(xq))});var $q=F((NCe,Kq)=>{"use strict";m();T();N();var kce=lD(),Mce=dD(),jq=kce("keys");Kq.exports=function(e){return jq[e]||(jq[e]=Mce(e))}});var OD=F((yCe,Gq)=>{"use strict";m();T();N();Gq.exports={}});var zq=F((vCe,Jq)=>{"use strict";m();T();N();var xce=Vq(),Yq=na(),qce=Nd(),Vce=gD(),DD=Bu(),bD=CE(),jce=$q(),Kce=OD(),Qq="Object already initialized",AD=Yq.TypeError,$ce=Yq.WeakMap,kE,yp,ME,Gce=function(e){return ME(e)?yp(e):kE(e,{})},Qce=function(e){return function(t){var n;if(!qce(t)||(n=yp(t)).type!==e)throw new AD("Incompatible receiver, "+e+" required");return n}};xce||bD.state?(ba=bD.state||(bD.state=new $ce),ba.get=ba.get,ba.has=ba.has,ba.set=ba.set,kE=function(e,t){if(ba.has(e))throw new AD(Qq);return t.facade=e,ba.set(e,t),t},yp=function(e){return ba.get(e)||{}},ME=function(e){return ba.has(e)}):(qc=jce("state"),Kce[qc]=!0,kE=function(e,t){if(DD(e,qc))throw new AD(Qq);return t.facade=e,Vce(e,qc,t),t},yp=function(e){return DD(e,qc)?e[qc]:{}},ME=function(e){return DD(e,qc)});var ba,qc;Jq.exports={set:kE,get:yp,has:ME,enforce:Gce,getterFor:Qce}});var Zq=F((bCe,Xq)=>{"use strict";m();T();N();var PD=_i(),Yce=ks(),Jce=Oa(),xE=Bu(),RD=Uu(),zce=Bq().CONFIGURABLE,Hce=Mq(),Wq=zq(),Wce=Wq.enforce,Xce=Wq.get,Hq=String,qE=Object.defineProperty,Zce=PD("".slice),ele=PD("".replace),tle=PD([].join),nle=RD&&!Yce(function(){return qE(function(){},"length",{value:8}).length!==8}),rle=String(String).split("String"),ile=Xq.exports=function(e,t,n){Zce(Hq(t),0,7)==="Symbol("&&(t="["+ele(Hq(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!xE(e,"name")||zce&&e.name!==t)&&(RD?qE(e,"name",{value:t,configurable:!0}):e.name=t),nle&&n&&xE(n,"arity")&&e.length!==n.arity&&qE(e,"length",{value:n.arity});try{n&&xE(n,"constructor")&&n.constructor?RD&&qE(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(i){}var r=Wce(e);return xE(r,"source")||(r.source=tle(rle,typeof t=="string"?t:"")),e};Function.prototype.toString=ile(function(){return Jce(this)&&Xce(this).source||Hce(this)},"toString")});var t1=F((FCe,e1)=>{"use strict";m();T();N();var ale=Oa(),sle=BE(),ole=Zq(),ule=LE();e1.exports=function(e,t,n,r){r||(r={});var i=r.enumerable,a=r.name!==void 0?r.name:t;if(ale(n)&&ole(n,a,r),r.global)i?e[t]=n:ule(t,n);else{try{r.unsafe?e[t]&&(i=!0):delete e[t]}catch(o){}i?e[t]=n:sle.f(e,t,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return e}});var r1=F((UCe,n1)=>{"use strict";m();T();N();var cle=Math.ceil,lle=Math.floor;n1.exports=Math.trunc||function(t){var n=+t;return(n>0?lle:cle)(n)}});var VE=F((xCe,i1)=>{"use strict";m();T();N();var dle=r1();i1.exports=function(e){var t=+e;return t!==t||t===0?0:dle(t)}});var s1=F((KCe,a1)=>{"use strict";m();T();N();var fle=VE(),ple=Math.max,mle=Math.min;a1.exports=function(e,t){var n=fle(e);return n<0?ple(n+t,0):mle(n,t)}});var u1=F((YCe,o1)=>{"use strict";m();T();N();var Nle=VE(),Tle=Math.min;o1.exports=function(e){var t=Nle(e);return t>0?Tle(t,9007199254740991):0}});var l1=F((WCe,c1)=>{"use strict";m();T();N();var Ele=u1();c1.exports=function(e){return Ele(e.length)}});var p1=F((tUe,f1)=>{"use strict";m();T();N();var hle=RE(),yle=s1(),Ile=l1(),d1=function(e){return function(t,n,r){var i=hle(t),a=Ile(i);if(a===0)return!e&&-1;var o=yle(r,a),u;if(e&&n!==n){for(;a>o;)if(u=i[o++],u!==u)return!0}else for(;a>o;o++)if((e||o in i)&&i[o]===n)return e||o||0;return!e&&-1}};f1.exports={includes:d1(!0),indexOf:d1(!1)}});var T1=F((aUe,N1)=>{"use strict";m();T();N();var gle=_i(),FD=Bu(),_le=RE(),vle=p1().indexOf,Sle=OD(),m1=gle([].push);N1.exports=function(e,t){var n=_le(e),r=0,i=[],a;for(a in n)!FD(Sle,a)&&FD(n,a)&&m1(i,a);for(;t.length>r;)FD(n,a=t[r++])&&(~vle(i,a)||m1(i,a));return i}});var h1=F((cUe,E1)=>{"use strict";m();T();N();E1.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var I1=F(y1=>{"use strict";m();T();N();var Ole=T1(),Dle=h1(),ble=Dle.concat("length","prototype");y1.f=Object.getOwnPropertyNames||function(t){return Ole(t,ble)}});var _1=F(g1=>{"use strict";m();T();N();g1.f=Object.getOwnPropertySymbols});var S1=F((gUe,v1)=>{"use strict";m();T();N();var Ale=PE(),Rle=_i(),Ple=I1(),Fle=_1(),wle=hp(),Lle=Rle([].concat);v1.exports=Ale("Reflect","ownKeys")||function(t){var n=Ple.f(wle(t)),r=Fle.f;return r?Lle(n,r(t)):n}});var b1=F((OUe,D1)=>{"use strict";m();T();N();var O1=Bu(),Cle=S1(),Ule=TD(),Ble=BE();D1.exports=function(e,t,n){for(var r=Cle(t),i=Ble.f,a=Ule.f,o=0;o{"use strict";m();T();N();var kle=ks(),Mle=Oa(),xle=/#|\.prototype\./,Ip=function(e,t){var n=Vle[qle(e)];return n===Kle?!0:n===jle?!1:Mle(t)?kle(t):!!t},qle=Ip.normalize=function(e){return String(e).replace(xle,".").toLowerCase()},Vle=Ip.data={},jle=Ip.NATIVE="N",Kle=Ip.POLYFILL="P";A1.exports=Ip});var wD=F((LUe,P1)=>{"use strict";m();T();N();var jE=na(),$le=TD().f,Gle=gD(),Qle=t1(),Yle=LE(),Jle=b1(),zle=R1();P1.exports=function(e,t){var n=e.target,r=e.global,i=e.stat,a,o,u,l,d,p;if(r?o=jE:i?o=jE[n]||Yle(n,{}):o=jE[n]&&jE[n].prototype,o)for(u in t){if(d=t[u],e.dontCallGetSet?(p=$le(o,u),l=p&&p.value):l=o[u],a=zle(r?u:n+(i?".":"#")+u,e.forced),!a&&l!==void 0){if(typeof d==typeof l)continue;Jle(d,l)}(e.sham||l&&l.sham)&&Gle(d,"sham",!0),Qle(o,u,d,e)}}});var gp=F((kUe,F1)=>{"use strict";m();T();N();var LD=_i(),KE=Set.prototype;F1.exports={Set,add:LD(KE.add),has:LD(KE.has),remove:LD(KE.delete),proto:KE}});var CD=F((VUe,w1)=>{"use strict";m();T();N();var Hle=gp().has;w1.exports=function(e){return Hle(e),e}});var C1=F((GUe,L1)=>{"use strict";m();T();N();var Wle=_i(),Xle=wE();L1.exports=function(e,t,n){try{return Wle(Xle(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(r){}}});var UD=F((zUe,U1)=>{"use strict";m();T();N();var Zle=C1(),ede=gp();U1.exports=Zle(ede.proto,"size","get")||function(e){return e.size}});var BD=F((ZUe,B1)=>{"use strict";m();T();N();var tde=xc();B1.exports=function(e,t,n){for(var r=n?e:e.iterator,i=e.next,a,o;!(a=tde(i,r)).done;)if(o=t(a.value),o!==void 0)return o}});var j1=F((rBe,V1)=>{"use strict";m();T();N();var k1=_i(),nde=BD(),M1=gp(),rde=M1.Set,x1=M1.proto,ide=k1(x1.forEach),q1=k1(x1.keys),ade=q1(new rde).next;V1.exports=function(e,t,n){return n?nde({iterator:q1(e),next:ade},t):ide(e,t)}});var $1=F((oBe,K1)=>{"use strict";m();T();N();K1.exports=function(e){return{iterator:e,next:e.next,done:!1}}});var kD=F((dBe,H1)=>{"use strict";m();T();N();var G1=wE(),J1=hp(),Q1=xc(),sde=VE(),ode=$1(),Y1="Invalid size",ude=RangeError,cde=TypeError,lde=Math.max,z1=function(e,t){this.set=e,this.size=lde(t,0),this.has=G1(e.has),this.keys=G1(e.keys)};z1.prototype={getIterator:function(){return ode(J1(Q1(this.keys,this.set)))},includes:function(e){return Q1(this.has,this.set,e)}};H1.exports=function(e){J1(e);var t=+e.size;if(t!==t)throw new cde(Y1);var n=sde(t);if(n<0)throw new ude(Y1);return new z1(e,n)}});var X1=F((NBe,W1)=>{"use strict";m();T();N();var dde=CD(),fde=UD(),pde=j1(),mde=kD();W1.exports=function(t){var n=dde(this),r=mde(t);return fde(n)>r.size?!1:pde(n,function(i){if(!r.includes(i))return!1},!0)!==!1}});var MD=F((yBe,tV)=>{"use strict";m();T();N();var Nde=PE(),Z1=function(e){return{size:e,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},eV=function(e){return{size:e,has:function(){return!0},keys:function(){throw new Error("e")}}};tV.exports=function(e,t){var n=Nde("Set");try{new n()[e](Z1(0));try{return new n()[e](Z1(-1)),!1}catch(i){if(!t)return!0;try{return new n()[e](eV(-1/0)),!1}catch(a){var r=new n;return r.add(1),r.add(2),t(r[e](eV(1/0)))}}}catch(i){return!1}}});var nV=F(()=>{"use strict";m();T();N();var Tde=wD(),Ede=X1(),hde=MD(),yde=!hde("isSubsetOf",function(e){return e});Tde({target:"Set",proto:!0,real:!0,forced:yde},{isSubsetOf:Ede})});var rV=F(()=>{"use strict";m();T();N();nV()});var sV=F((LBe,aV)=>{"use strict";m();T();N();var Ide=xc(),iV=hp(),gde=sD();aV.exports=function(e,t,n){var r,i;iV(e);try{if(r=gde(e,"return"),!r){if(t==="throw")throw n;return n}r=Ide(r,e)}catch(a){i=!0,r=a}if(t==="throw")throw n;if(i)throw r;return iV(r),n}});var uV=F((kBe,oV)=>{"use strict";m();T();N();var _de=CD(),vde=gp().has,Sde=UD(),Ode=kD(),Dde=BD(),bde=sV();oV.exports=function(t){var n=_de(this),r=Ode(t);if(Sde(n){"use strict";m();T();N();var Ade=wD(),Rde=uV(),Pde=MD(),Fde=!Pde("isSupersetOf",function(e){return!e});Ade({target:"Set",proto:!0,real:!0,forced:Fde},{isSupersetOf:Rde})});var lV=F(()=>{"use strict";m();T();N();cV()});var _p=F(Fn=>{"use strict";m();T();N();Object.defineProperty(Fn,"__esModule",{value:!0});Fn.subtractSet=Lde;Fn.mapToArrayOfValues=Cde;Fn.kindToConvertedTypeString=Ude;Fn.fieldDatasToSimpleFieldDatas=Bde;Fn.isNodeLeaf=kde;Fn.newEntityInterfaceFederationData=Mde;Fn.upsertEntityInterfaceFederationData=xde;Fn.upsertEntityData=Vde;Fn.updateEntityData=dV;Fn.newFieldAuthorizationData=jde;Fn.newAuthorizationData=Kde;Fn.addScopes=xD;Fn.mergeRequiredScopesByAND=QE;Fn.mergeRequiredScopesByOR=qD;Fn.upsertFieldAuthorizationData=fV;Fn.upsertAuthorizationData=Qde;Fn.upsertAuthorizationConfiguration=Yde;Fn.isObjectNodeKind=Jde;Fn.isCompositeOutputNodeKind=zde;Fn.isObjectDefinitionData=Hde;Fn.getNodeCoords=Wde;var Qt=_e(),oi=Hn(),$E=Cr(),GE=Ru();rV();lV();var wde=md();function Lde(e,t){for(let n of e)t.delete(n)}function Cde(e){let t=[];for(let n of e.values())t.push(n);return t}function Ude(e){switch(e){case Qt.Kind.BOOLEAN:return oi.BOOLEAN_SCALAR;case Qt.Kind.ENUM:case Qt.Kind.ENUM_TYPE_DEFINITION:case Qt.Kind.ENUM_TYPE_EXTENSION:return oi.ENUM;case Qt.Kind.ENUM_VALUE_DEFINITION:return oi.ENUM_VALUE;case Qt.Kind.FIELD_DEFINITION:return oi.FIELD;case Qt.Kind.FLOAT:return oi.FLOAT_SCALAR;case Qt.Kind.INPUT_OBJECT_TYPE_DEFINITION:case Qt.Kind.INPUT_OBJECT_TYPE_EXTENSION:return oi.INPUT_OBJECT;case Qt.Kind.INPUT_VALUE_DEFINITION:return oi.INPUT_VALUE;case Qt.Kind.INT:return oi.INT_SCALAR;case Qt.Kind.INTERFACE_TYPE_DEFINITION:case Qt.Kind.INTERFACE_TYPE_EXTENSION:return oi.INTERFACE;case Qt.Kind.NULL:return oi.NULL;case Qt.Kind.OBJECT:case Qt.Kind.OBJECT_TYPE_DEFINITION:case Qt.Kind.OBJECT_TYPE_EXTENSION:return oi.OBJECT;case Qt.Kind.STRING:return oi.STRING_SCALAR;case Qt.Kind.SCALAR_TYPE_DEFINITION:case Qt.Kind.SCALAR_TYPE_EXTENSION:return oi.SCALAR;case Qt.Kind.UNION_TYPE_DEFINITION:case Qt.Kind.UNION_TYPE_EXTENSION:return oi.UNION;default:return e}}function Bde(e){let t=[];for(let{name:n,namedTypeName:r}of e)t.push({name:n,namedTypeName:r});return t}function kde(e){if(!e)return!0;switch(e){case Qt.Kind.OBJECT_TYPE_DEFINITION:case Qt.Kind.INTERFACE_TYPE_DEFINITION:case Qt.Kind.UNION_TYPE_DEFINITION:return!1;default:return!0}}function Mde(e,t){return{concreteTypeNames:new Set(e.concreteTypeNames),fieldDatasBySubgraphName:new Map([[t,e.fieldDatas]]),interfaceFieldNames:new Set(e.interfaceFieldNames),interfaceObjectFieldNames:new Set(e.interfaceObjectFieldNames),interfaceObjectSubgraphNames:new Set(e.isInterfaceObject?[t]:[]),subgraphDataByTypeName:new Map([[t,e]]),typeName:e.typeName}}function xde(e,t,n){(0,$E.addIterableToSet)({source:t.concreteTypeNames,target:e.concreteTypeNames}),e.subgraphDataByTypeName.set(n,t),e.fieldDatasBySubgraphName.set(n,t.fieldDatas),(0,$E.addIterableToSet)({source:t.interfaceFieldNames,target:e.interfaceFieldNames}),(0,$E.addIterableToSet)({source:t.interfaceObjectFieldNames,target:e.interfaceObjectFieldNames}),t.isInterfaceObject&&e.interfaceObjectSubgraphNames.add(n)}function qde({keyFieldSetDataByFieldSet:e,subgraphName:t,typeName:n}){let r=new Map([[t,e]]),i=new Map;for(let[a,{documentNode:o,isUnresolvable:u}]of e)u||i.set(a,o);return{keyFieldSetDatasBySubgraphName:r,documentNodeByKeyFieldSet:i,keyFieldSets:new Set,subgraphNames:new Set([t]),typeName:n}}function Vde({entityDataByTypeName:e,keyFieldSetDataByFieldSet:t,subgraphName:n,typeName:r}){let i=e.get(r);i?dV({entityData:i,keyFieldSetDataByFieldSet:t,subgraphName:n}):e.set(r,qde({keyFieldSetDataByFieldSet:t,subgraphName:n,typeName:r}))}function dV({entityData:e,keyFieldSetDataByFieldSet:t,subgraphName:n}){e.subgraphNames.add(n);let r=e.keyFieldSetDatasBySubgraphName.get(n);if(!r){e.keyFieldSetDatasBySubgraphName.set(n,t);for(let[i,{documentNode:a,isUnresolvable:o}]of t)o||e.documentNodeByKeyFieldSet.set(i,a);return}for(let[i,a]of t){a.isUnresolvable||e.documentNodeByKeyFieldSet.set(i,a.documentNode);let o=r.get(i);if(o){o.isUnresolvable||(o.isUnresolvable=a.isUnresolvable);continue}r.set(i,a)}}function jde(e){return{fieldName:e,inheritedData:{requiredScopes:[],requiredScopesByOR:[],requiresAuthentication:!1},originalData:{requiredScopes:[],requiresAuthentication:!1}}}function Kde(e){return{fieldAuthDataByFieldName:new Map,requiredScopes:[],requiredScopesByOR:[],requiresAuthentication:!1,typeName:e}}function xD(e,t){for(let n=e.length-1;n>-1;n--){if(e[n].isSubsetOf(t))return;e[n].isSupersetOf(t)&&e.splice(n,1)}e.push(t)}function QE(e,t){if(e.length<1||t.length<1){for(let r of t)e.push(new Set(r));return e}let n=[];for(let r of t)for(let i of e){let a=(0,$E.addSets)(r,i);xD(n,a)}return n}function qD(e,t){for(let n of t)xD(e,n);return e.length<=GE.MAX_OR_SCOPES}function fV(e,t){var i,a;let n=t.fieldName,r=e.get(n);return r?((i=r.inheritedData).requiresAuthentication||(i.requiresAuthentication=t.inheritedData.requiresAuthentication),(a=r.originalData).requiresAuthentication||(a.requiresAuthentication=t.originalData.requiresAuthentication),!qD(r.inheritedData.requiredScopesByOR,t.inheritedData.requiredScopes)||r.inheritedData.requiredScopes.length*t.inheritedData.requiredScopes.length>GE.MAX_OR_SCOPES||r.originalData.requiredScopes.length*t.originalData.requiredScopes.length>GE.MAX_OR_SCOPES?!1:(r.inheritedData.requiredScopes=QE(r.inheritedData.requiredScopes,t.inheritedData.requiredScopes),r.originalData.requiredScopes=QE(r.originalData.requiredScopes,t.originalData.requiredScopes),!0)):(e.set(n,pV(t)),!0)}function $de(e){let t=new Map;for(let[n,r]of e)t.set(n,pV(r));return t}function pV(e){return{fieldName:e.fieldName,inheritedData:{requiredScopes:[...e.inheritedData.requiredScopes],requiredScopesByOR:[...e.inheritedData.requiredScopes],requiresAuthentication:e.inheritedData.requiresAuthentication},originalData:{requiredScopes:[...e.originalData.requiredScopes],requiresAuthentication:e.originalData.requiresAuthentication}}}function Gde(e){return{fieldAuthDataByFieldName:$de(e.fieldAuthDataByFieldName),requiredScopes:[...e.requiredScopes],requiredScopesByOR:[...e.requiredScopes],requiresAuthentication:e.requiresAuthentication,typeName:e.typeName}}function Qde(e,t,n){let r=e.get(t.typeName);if(!r){e.set(t.typeName,Gde(t));return}r.requiresAuthentication||(r.requiresAuthentication=t.requiresAuthentication),!qD(r.requiredScopesByOR,t.requiredScopes)||r.requiredScopes.length*t.requiredScopes.length>GE.MAX_OR_SCOPES?n.add(t.typeName):r.requiredScopes=QE(r.requiredScopes,t.requiredScopes);for(let[i,a]of t.fieldAuthDataByFieldName)fV(r.fieldAuthDataByFieldName,a)||n.add(`${t.typeName}.${i}`)}function Yde(e,t){let n=t.typeName;for(let[r,i]of t.fieldAuthDataByFieldName){let a=`${n}.${r}`,o=e.get(a);o?(o.requiresAuthentication=i.inheritedData.requiresAuthentication,o.requiredScopes=i.inheritedData.requiredScopes.map(u=>[...u]),o.requiredScopesByOR=i.inheritedData.requiredScopesByOR.map(u=>[...u])):e.set(a,{argumentNames:[],typeName:n,fieldName:r,requiresAuthentication:i.inheritedData.requiresAuthentication,requiredScopes:i.inheritedData.requiredScopes.map(u=>[...u]),requiredScopesByOR:i.inheritedData.requiredScopesByOR.map(u=>[...u])})}}function Jde(e){return e===Qt.Kind.OBJECT_TYPE_DEFINITION||e===Qt.Kind.OBJECT_TYPE_EXTENSION}function zde(e){return wde.COMPOSITE_OUTPUT_NODE_KINDS.has(e)}function Hde(e){return e?e.kind===Qt.Kind.OBJECT_TYPE_DEFINITION:!1}function Wde(e){switch(e.kind){case Qt.Kind.ARGUMENT:case Qt.Kind.FIELD_DEFINITION:case Qt.Kind.INPUT_VALUE_DEFINITION:case Qt.Kind.ENUM_VALUE_DEFINITION:return e.federatedCoords;default:return e.name}}});var VD=F(Me=>{"use strict";m();T();N();Object.defineProperty(Me,"__esModule",{value:!0});Me.TAG_DEFINITION_DATA=Me.SUBSCRIPTION_FILTER_DEFINITION_DATA=Me.SHAREABLE_DEFINITION_DATA=Me.SPECIFIED_BY_DEFINITION_DATA=Me.SEMANTIC_NON_NULL_DATA=Me.REQUIRES_SCOPES_DEFINITION_DATA=Me.REQUIRE_FETCH_REASONS_DEFINITION_DATA=Me.REDIS_SUBSCRIBE_DEFINITION_DATA=Me.REDIS_PUBLISH_DEFINITION_DATA=Me.REQUIRES_DEFINITION_DATA=Me.PROVIDES_DEFINITION_DATA=Me.LIST_SIZE_DEFINITION_DATA=Me.LINK_DEFINITION_DATA=Me.KEY_DEFINITION_DATA=Me.OVERRIDE_DEFINITION_DATA=Me.ONE_OF_DEFINITION_DATA=Me.NATS_SUBSCRIBE_DEFINITION_DATA=Me.NATS_REQUEST_DEFINITION_DATA=Me.NATS_PUBLISH_DEFINITION_DATA=Me.KAFKA_SUBSCRIBE_DEFINITION_DATA=Me.KAFKA_PUBLISH_DEFINITION_DATA=Me.INTERFACE_OBJECT_DEFINITION_DATA=Me.INACCESSIBLE_DEFINITION_DATA=Me.EXTERNAL_DEFINITION_DATA=Me.EXTENDS_DEFINITION_DATA=Me.DEPRECATED_DEFINITION_DATA=Me.COST_DEFINITION_DATA=Me.CONNECT_FIELD_RESOLVER_DEFINITION_DATA=Me.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA=Me.CONFIGURE_DESCRIPTION_DEFINITION_DATA=Me.COMPOSE_DIRECTIVE_DEFINITION_DATA=Me.AUTHENTICATED_DEFINITION_DATA=void 0;var Or=Lr(),Ot=_e(),k=Hn(),Yt=zf(),wn=ST();Me.AUTHENTICATED_DEFINITION_DATA={argumentTypeNodeByName:new Map([]),isRepeatable:!1,locations:new Set([k.ENUM_UPPER,k.FIELD_DEFINITION_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER]),name:k.AUTHENTICATED,node:Yt.AUTHENTICATED_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.COMPOSE_DIRECTIVE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.NAME,{name:k.NAME,typeNode:wn.REQUIRED_STRING_TYPE_NODE}]]),isRepeatable:!0,locations:new Set([k.SCHEMA_UPPER]),name:k.COMPOSE_DIRECTIVE,node:Yt.COMPOSE_DIRECTIVE_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.NAME])};Me.CONFIGURE_DESCRIPTION_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.PROPAGATE,{name:k.PROPAGATE,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.BOOLEAN_SCALAR)},defaultValue:{kind:Ot.Kind.BOOLEAN,value:!0}}],[k.DESCRIPTION_OVERRIDE,{name:k.DESCRIPTION_OVERRIDE,typeNode:(0,Or.stringToNamedTypeNode)(k.STRING_SCALAR)}]]),isRepeatable:!1,locations:new Set([k.ARGUMENT_DEFINITION_UPPER,k.ENUM_UPPER,k.ENUM_VALUE_UPPER,k.FIELD_DEFINITION_UPPER,k.INTERFACE_UPPER,k.INPUT_OBJECT_UPPER,k.INPUT_FIELD_DEFINITION_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER,k.SCHEMA_UPPER,k.UNION_UPPER]),name:k.CONFIGURE_DESCRIPTION,node:Yt.CONFIGURE_DESCRIPTION_DEFINITION,optionalArgumentNames:new Set([k.PROPAGATE,k.DESCRIPTION_OVERRIDE]),requiredArgumentNames:new Set};Me.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.PROPAGATE,{name:k.PROPAGATE,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.BOOLEAN_SCALAR)},defaultValue:{kind:Ot.Kind.BOOLEAN,value:!0}}]]),isRepeatable:!1,locations:new Set([k.ENUM_UPPER,k.INPUT_OBJECT_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER]),name:k.CONFIGURE_CHILD_DESCRIPTIONS,node:Yt.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION,optionalArgumentNames:new Set([k.PROPAGATE]),requiredArgumentNames:new Set};Me.CONNECT_FIELD_RESOLVER_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.CONTEXT,{name:k.CONTEXT,typeNode:wn.REQUIRED_FIELDSET_TYPE_NODE}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.CONNECT_FIELD_RESOLVER,node:Yt.CONNECT_FIELD_RESOLVER_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.CONTEXT])};Me.COST_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.WEIGHT,{name:k.WEIGHT,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.INT_SCALAR)}}]]),isRepeatable:!1,locations:new Set([k.ARGUMENT_DEFINITION_UPPER,k.ENUM_UPPER,k.FIELD_DEFINITION_UPPER,k.INPUT_FIELD_DEFINITION_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER]),name:k.COST,node:Yt.COST_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.WEIGHT])};Me.DEPRECATED_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.REASON,{name:k.REASON,typeNode:(0,Or.stringToNamedTypeNode)(k.STRING_SCALAR),defaultValue:{kind:Ot.Kind.STRING,value:Ot.DEFAULT_DEPRECATION_REASON}}]]),isRepeatable:!1,locations:new Set([k.ARGUMENT_DEFINITION_UPPER,k.ENUM_VALUE_UPPER,k.FIELD_DEFINITION_UPPER,k.INPUT_FIELD_DEFINITION_UPPER]),name:k.DEPRECATED,node:Yt.DEPRECATED_DEFINITION,optionalArgumentNames:new Set([k.REASON]),requiredArgumentNames:new Set};Me.EXTENDS_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!1,locations:new Set([k.INTERFACE_UPPER,k.OBJECT_UPPER]),name:k.EXTENDS,node:Yt.EXTENDS_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.EXTERNAL_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER,k.OBJECT_UPPER]),name:k.EXTERNAL,node:Yt.EXTERNAL_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.INACCESSIBLE_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!1,locations:new Set([k.ARGUMENT_DEFINITION_UPPER,k.ENUM_UPPER,k.ENUM_VALUE_UPPER,k.FIELD_DEFINITION_UPPER,k.INPUT_FIELD_DEFINITION_UPPER,k.INPUT_OBJECT_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER,k.UNION_UPPER]),name:k.INACCESSIBLE,node:Yt.INACCESSIBLE_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.INTERFACE_OBJECT_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!1,locations:new Set([k.OBJECT_UPPER]),name:k.INTERFACE_OBJECT,node:Yt.INTERFACE_OBJECT_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.KAFKA_PUBLISH_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.TOPIC,{name:k.TOPIC,typeNode:wn.REQUIRED_STRING_TYPE_NODE}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_KAFKA_PUBLISH,node:Yt.EDFS_KAFKA_PUBLISH_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.TOPIC])};Me.KAFKA_SUBSCRIBE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.TOPICS,{name:k.TOPICS,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:wn.REQUIRED_STRING_TYPE_NODE}}}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_KAFKA_SUBSCRIBE,node:Yt.EDFS_KAFKA_SUBSCRIBE_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.TOPICS])};Me.NATS_PUBLISH_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.SUBJECT,{name:k.SUBJECT,typeNode:wn.REQUIRED_STRING_TYPE_NODE}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_NATS_PUBLISH,node:Yt.EDFS_NATS_PUBLISH_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.SUBJECT])};Me.NATS_REQUEST_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.SUBJECT,{name:k.SUBJECT,typeNode:wn.REQUIRED_STRING_TYPE_NODE}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_NATS_REQUEST,node:Yt.EDFS_NATS_REQUEST_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.SUBJECT])};Me.NATS_SUBSCRIBE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.SUBJECTS,{name:k.SUBJECTS,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:wn.REQUIRED_STRING_TYPE_NODE}}}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}],[k.STREAM_CONFIGURATION,{name:k.STREAM_CONFIGURATION,typeNode:(0,Or.stringToNamedTypeNode)(k.EDFS_NATS_STREAM_CONFIGURATION)}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_NATS_SUBSCRIBE,node:Yt.EDFS_NATS_SUBSCRIBE_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID,k.STREAM_CONFIGURATION]),requiredArgumentNames:new Set([k.SUBJECTS])};Me.ONE_OF_DEFINITION_DATA={argumentTypeNodeByName:new Map([]),isRepeatable:!1,locations:new Set([k.INPUT_OBJECT_UPPER]),name:k.ONE_OF,node:Yt.ONE_OF_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.OVERRIDE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.FROM,{name:k.FROM,typeNode:wn.REQUIRED_STRING_TYPE_NODE}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.OVERRIDE,node:Yt.OVERRIDE_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.FROM])};Me.KEY_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.FIELDS,{name:k.FIELDS,typeNode:wn.REQUIRED_FIELDSET_TYPE_NODE}],[k.RESOLVABLE,{name:k.RESOLVABLE,typeNode:(0,Or.stringToNamedTypeNode)(k.BOOLEAN_SCALAR),defaultValue:{kind:Ot.Kind.BOOLEAN,value:!0}}]]),isRepeatable:!0,locations:new Set([k.INTERFACE_UPPER,k.OBJECT_UPPER]),name:k.KEY,node:Yt.KEY_DEFINITION,optionalArgumentNames:new Set([k.RESOLVABLE]),requiredArgumentNames:new Set([k.FIELDS])};Me.LINK_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.URL_LOWER,{name:k.URL_LOWER,typeNode:wn.REQUIRED_STRING_TYPE_NODE}],[k.AS,{name:k.AS,typeNode:(0,Or.stringToNamedTypeNode)(k.STRING_SCALAR)}],[k.FOR,{name:k.FOR,typeNode:(0,Or.stringToNamedTypeNode)(k.LINK_PURPOSE)}],[k.IMPORT,{name:k.IMPORT,typeNode:{kind:Ot.Kind.LIST_TYPE,type:(0,Or.stringToNamedTypeNode)(k.LINK_IMPORT)}}]]),isRepeatable:!0,locations:new Set([k.SCHEMA_UPPER]),name:k.LINK,node:Yt.LINK_DEFINITION,optionalArgumentNames:new Set([k.AS,k.FOR,k.IMPORT]),requiredArgumentNames:new Set([k.URL_LOWER])};Me.LIST_SIZE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.ASSUMED_SIZE,{name:k.ASSUMED_SIZE,typeNode:(0,Or.stringToNamedTypeNode)(k.INT_SCALAR)}],[k.SLICING_ARGUMENTS,{name:k.SLICING_ARGUMENTS,typeNode:{kind:Ot.Kind.LIST_TYPE,type:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.STRING_SCALAR)}}}],[k.SIZED_FIELDS,{name:k.SIZED_FIELDS,typeNode:{kind:Ot.Kind.LIST_TYPE,type:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.STRING_SCALAR)}}}],[k.REQUIRE_ONE_SLICING_ARGUMENT,{name:k.REQUIRE_ONE_SLICING_ARGUMENT,typeNode:(0,Or.stringToNamedTypeNode)(k.BOOLEAN_SCALAR),defaultValue:{kind:Ot.Kind.BOOLEAN,value:!0}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.LIST_SIZE,node:Yt.LIST_SIZE_DEFINITION,optionalArgumentNames:new Set([k.ASSUMED_SIZE,k.SLICING_ARGUMENTS,k.SIZED_FIELDS,k.REQUIRE_ONE_SLICING_ARGUMENT]),requiredArgumentNames:new Set};Me.PROVIDES_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.FIELDS,{name:k.FIELDS,typeNode:wn.REQUIRED_FIELDSET_TYPE_NODE}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.PROVIDES,node:Yt.PROVIDES_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.FIELDS])};Me.REQUIRES_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.FIELDS,{name:k.FIELDS,typeNode:wn.REQUIRED_FIELDSET_TYPE_NODE}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.REQUIRES,node:Yt.REQUIRES_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.FIELDS])};Me.REDIS_PUBLISH_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.CHANNEL,{name:k.CHANNEL,typeNode:wn.REQUIRED_STRING_TYPE_NODE}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_REDIS_PUBLISH,node:Yt.EDFS_REDIS_PUBLISH_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.CHANNEL])};Me.REDIS_SUBSCRIBE_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.CHANNELS,{name:k.CHANNELS,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:wn.REQUIRED_STRING_TYPE_NODE}}}],[k.PROVIDER_ID,{name:k.PROVIDER_ID,typeNode:wn.REQUIRED_STRING_TYPE_NODE,defaultValue:{kind:Ot.Kind.STRING,value:k.DEFAULT_EDFS_PROVIDER_ID}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.EDFS_REDIS_SUBSCRIBE,node:Yt.EDFS_REDIS_SUBSCRIBE_DEFINITION,optionalArgumentNames:new Set([k.PROVIDER_ID]),requiredArgumentNames:new Set([k.CHANNELS])};Me.REQUIRE_FETCH_REASONS_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!0,locations:new Set([k.FIELD_DEFINITION_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER]),name:k.REQUIRE_FETCH_REASONS,node:Yt.REQUIRE_FETCH_REASONS_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.REQUIRES_SCOPES_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.SCOPES,{name:k.SCOPES,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.SCOPE_SCALAR)}}}}}}]]),isRepeatable:!1,locations:new Set([k.ENUM_UPPER,k.FIELD_DEFINITION_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER]),name:k.REQUIRES_SCOPES,node:Yt.REQUIRES_SCOPES_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.SCOPES])};Me.SEMANTIC_NON_NULL_DATA={argumentTypeNodeByName:new Map([[k.LEVELS,{name:k.LEVELS,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:{kind:Ot.Kind.LIST_TYPE,type:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.INT_SCALAR)}}},defaultValue:{kind:Ot.Kind.LIST,values:[{kind:Ot.Kind.INT,value:"0"}]}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.SEMANTIC_NON_NULL,node:Yt.SEMANTIC_NON_NULL_DEFINITION,optionalArgumentNames:new Set([k.LEVELS]),requiredArgumentNames:new Set};Me.SPECIFIED_BY_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.URL_LOWER,{name:k.URL_LOWER,typeNode:wn.REQUIRED_STRING_TYPE_NODE}]]),isRepeatable:!1,locations:new Set([k.SCALAR_UPPER]),name:k.SPECIFIED_BY,node:Yt.SPECIFIED_BY_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.URL_LOWER])};Me.SHAREABLE_DEFINITION_DATA={argumentTypeNodeByName:new Map,isRepeatable:!0,locations:new Set([k.FIELD_DEFINITION_UPPER,k.OBJECT_UPPER]),name:k.SHAREABLE,node:Yt.SHAREABLE_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set};Me.SUBSCRIPTION_FILTER_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.CONDITION,{name:k.CONDITION,typeNode:{kind:Ot.Kind.NON_NULL_TYPE,type:(0,Or.stringToNamedTypeNode)(k.SUBSCRIPTION_FILTER_CONDITION)}}]]),isRepeatable:!1,locations:new Set([k.FIELD_DEFINITION_UPPER]),name:k.SUBSCRIPTION_FILTER,node:Yt.SUBSCRIPTION_FILTER_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.CONDITION])};Me.TAG_DEFINITION_DATA={argumentTypeNodeByName:new Map([[k.NAME,{name:k.NAME,typeNode:wn.REQUIRED_STRING_TYPE_NODE}]]),isRepeatable:!0,locations:new Set([k.ARGUMENT_DEFINITION_UPPER,k.ENUM_UPPER,k.ENUM_VALUE_UPPER,k.FIELD_DEFINITION_UPPER,k.INPUT_FIELD_DEFINITION_UPPER,k.INPUT_OBJECT_UPPER,k.INTERFACE_UPPER,k.OBJECT_UPPER,k.SCALAR_UPPER,k.UNION_UPPER]),name:k.TAG,node:Yt.TAG_DEFINITION,optionalArgumentNames:new Set,requiredArgumentNames:new Set([k.NAME])}});var vp=F(Aa=>{"use strict";m();T();N();Object.defineProperty(Aa,"__esModule",{value:!0});Aa.newFieldSetData=Xde;Aa.extractFieldSetValue=Zde;Aa.getNormalizedFieldSet=efe;Aa.getInitialFieldCoordsPath=tfe;Aa.validateKeyFieldSets=nfe;Aa.getConditionalFieldSetDirectiveName=rfe;Aa.isNodeQuery=ife;Aa.validateArgumentTemplateReferences=afe;Aa.initializeDirectiveDefinitionDatas=sfe;var $n=_e(),mV=Lr(),Dr=Gi(),NV=Ru(),jD=Au(),Jt=VD(),Et=Hn(),Ms=Cr();function Xde(){return{provides:new Map,requires:new Map}}function Zde(e,t,n){if(!n||n.length>1)return;let r=n[0].arguments;if(!r||r.length!==1)return;let i=r[0];i.name.value!==Et.FIELDS||i.value.kind!==$n.Kind.STRING||t.set(e,i.value.value)}function efe(e){return(0,$n.print)((0,mV.lexicographicallySortDocumentNode)(e)).replaceAll(/\s+/g," ").slice(2,-2)}function tfe(e,t){return e?[t]:[]}function nfe(e,t,n){let r=e.entityInterfaceDataByTypeName.get(t.name),i=t.name,a=[],o=r?void 0:e.internalGraph.addEntityDataNode(t.name),u=e.internalGraph.addOrUpdateNode(t.name),l=0;for(let[d,{documentNode:p,isUnresolvable:E,rawFieldSet:y}]of n){r&&(r.resolvable||(r.resolvable=!E)),l+=1;let v=[],R=[t],B=[],V=[],J=new Set,ne=-1,te=!0,Ne="",Ee=!1;if((0,$n.visit)(p,{Argument:{enter(he){return v.push((0,Dr.unexpectedArgumentErrorMessage)(y,`${R[ne].name}.${Ne}`,he.name.value)),$n.BREAK}},Field:{enter(he){let we=R[ne],Qe=we.name;if(te){let Ft=`${Qe}.${Ne}`,rn=we.fieldDataByName.get(Ne);if(!rn)return v.push((0,Dr.undefinedFieldInFieldSetErrorMessage)(y,Ft,Ne)),$n.BREAK;let xr=(0,jD.getTypeNodeNamedTypeName)(rn.node.type),nr=e.parentDefinitionDataByTypeName.get(xr),hn=nr?nr.kind:$n.Kind.SCALAR_TYPE_DEFINITION;return v.push((0,Dr.invalidSelectionSetErrorMessage)(y,[Ft],xr,(0,Ms.kindToNodeType)(hn))),$n.BREAK}let Z=he.name.value,Se=`${Qe}.${Z}`;if(Ne=Z,Z===Et.TYPENAME)return;let ht=we.fieldDataByName.get(Z);if(!ht)return v.push((0,Dr.undefinedFieldInFieldSetErrorMessage)(y,Qe,Z)),$n.BREAK;if(ht.argumentDataByName.size)return v.push((0,Dr.argumentsInKeyFieldSetErrorMessage)(y,Se)),$n.BREAK;if(B[ne].has(Z))return v.push((0,Dr.duplicateFieldInFieldSetErrorMessage)(y,Se)),$n.BREAK;let on=ht.externalFieldDataBySubgraphName.get(e.subgraphName);if(!e.isSubgraphEventDrivenGraph&&(on!=null&&on.isDefinedExternal)&&!on.isUnconditionallyProvided&&!e.conditionalFieldDataByCoords.get(Se)&&!e.options.ignoreExternalKeys){Ee=!0;let rn=u.headToTailEdges.get(Z);rn&&(rn.isExternal=!0)}(0,Ms.getValueOrDefault)((0,Ms.getValueOrDefault)(e.keyFieldSetsByEntityTypeNameByFieldCoords,Se,()=>new Map),i,()=>new Set).add(d),V.push(Z),ht.isShareableBySubgraphName.set(e.subgraphName,!0),B[ne].add(Z),(0,Ms.getValueOrDefault)(e.keyFieldNamesByParentTypeName,Qe,()=>new Set).add(Z);let En=(0,jD.getTypeNodeNamedTypeName)(ht.node.type);if(NV.BASE_SCALARS.has(En)){J.add(V.join(Et.LITERAL_PERIOD)),V.pop();return}let un=e.parentDefinitionDataByTypeName.get(En);if(!un)return v.push((0,Dr.unknownTypeInFieldSetErrorMessage)(y,Se,En)),$n.BREAK;if(un.kind===$n.Kind.OBJECT_TYPE_DEFINITION){te=!0,R.push(un);return}if((0,mV.isKindAbstract)(un.kind))return v.push((0,Dr.abstractTypeInKeyFieldSetErrorMessage)(y,Se,En,(0,Ms.kindToNodeType)(un.kind))),$n.BREAK;J.add(V.join(Et.LITERAL_PERIOD)),V.pop()}},InlineFragment:{enter(){return v.push(Dr.inlineFragmentInFieldSetErrorMessage),$n.BREAK}},SelectionSet:{enter(){if(!te){let he=R[ne],Qe=`${he.name}.${Ne}`;if(Ne===Et.TYPENAME)return v.push((0,Dr.invalidSelectionSetDefinitionErrorMessage)(y,[Qe],Et.STRING_SCALAR,(0,Ms.kindToNodeType)($n.Kind.SCALAR_TYPE_DEFINITION))),$n.BREAK;let Z=he.fieldDataByName.get(Ne);if(!Z)return v.push((0,Dr.undefinedFieldInFieldSetErrorMessage)(y,Qe,Ne)),$n.BREAK;let Se=(0,jD.getTypeNodeNamedTypeName)(Z.node.type),ht=e.parentDefinitionDataByTypeName.get(Se),on=ht?ht.kind:$n.Kind.SCALAR_TYPE_DEFINITION;return v.push((0,Dr.invalidSelectionSetDefinitionErrorMessage)(y,[Qe],Se,(0,Ms.kindToNodeType)(on))),$n.BREAK}if(ne+=1,te=!1,ne<0||ne>=R.length)return v.push((0,Dr.unparsableFieldSetSelectionErrorMessage)(y,Ne)),$n.BREAK;B.push(new Set)},leave(){if(te){let we=R[ne].name,Qe=R[ne+1],Z=`${we}.${Ne}`;v.push((0,Dr.invalidSelectionSetErrorMessage)(y,[Z],Qe.name,(0,Ms.kindToNodeType)(Qe.kind))),te=!1}ne-=1,R.pop(),B.pop()}}}),v.length>0){e.errors.push((0,Dr.invalidDirectiveError)(Et.KEY,i,(0,Ms.numberToOrdinal)(l),v));continue}a.push(M({fieldName:"",selectionSet:d},E?{disableEntityResolver:!0}:{})),u.satisfiedFieldSets.add(d),Ee&&u.externalFieldSets.add(d),!E&&(o==null||o.addTargetSubgraphByFieldSet(d,e.subgraphName))}if(a.length>0)return a}function rfe(e){return e?Et.PROVIDES:Et.REQUIRES}function ife(e,t){return e===Et.QUERY||t===$n.OperationTypeNode.QUERY}function afe(e,t,n){let r=e.matchAll(NV.EDFS_ARGS_REGEXP),i=new Set,a=new Set;for(let o of r){if(o.length<2){a.add(o[0]);continue}t.has(o[1])||i.add(o[1])}for(let o of i)n.push((0,Dr.undefinedEventSubjectsArgumentErrorMessage)(o));for(let o of a)n.push((0,Dr.invalidEventSubjectsArgumentErrorMessage)(o))}function sfe(){return new Map([[Et.AUTHENTICATED,Jt.AUTHENTICATED_DEFINITION_DATA],[Et.COMPOSE_DIRECTIVE,Jt.COMPOSE_DIRECTIVE_DEFINITION_DATA],[Et.CONFIGURE_DESCRIPTION,Jt.CONFIGURE_DESCRIPTION_DEFINITION_DATA],[Et.CONFIGURE_CHILD_DESCRIPTIONS,Jt.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA],[Et.CONNECT_FIELD_RESOLVER,Jt.CONNECT_FIELD_RESOLVER_DEFINITION_DATA],[Et.COST,Jt.COST_DEFINITION_DATA],[Et.DEPRECATED,Jt.DEPRECATED_DEFINITION_DATA],[Et.EDFS_KAFKA_PUBLISH,Jt.KAFKA_PUBLISH_DEFINITION_DATA],[Et.EDFS_KAFKA_SUBSCRIBE,Jt.KAFKA_SUBSCRIBE_DEFINITION_DATA],[Et.EDFS_NATS_PUBLISH,Jt.NATS_PUBLISH_DEFINITION_DATA],[Et.EDFS_NATS_REQUEST,Jt.NATS_REQUEST_DEFINITION_DATA],[Et.EDFS_NATS_SUBSCRIBE,Jt.NATS_SUBSCRIBE_DEFINITION_DATA],[Et.EDFS_REDIS_PUBLISH,Jt.REDIS_PUBLISH_DEFINITION_DATA],[Et.EDFS_REDIS_SUBSCRIBE,Jt.REDIS_SUBSCRIBE_DEFINITION_DATA],[Et.EXTENDS,Jt.EXTENDS_DEFINITION_DATA],[Et.EXTERNAL,Jt.EXTERNAL_DEFINITION_DATA],[Et.INACCESSIBLE,Jt.INACCESSIBLE_DEFINITION_DATA],[Et.INTERFACE_OBJECT,Jt.INTERFACE_OBJECT_DEFINITION_DATA],[Et.KEY,Jt.KEY_DEFINITION_DATA],[Et.LINK,Jt.LINK_DEFINITION_DATA],[Et.LIST_SIZE,Jt.LIST_SIZE_DEFINITION_DATA],[Et.ONE_OF,Jt.ONE_OF_DEFINITION_DATA],[Et.OVERRIDE,Jt.OVERRIDE_DEFINITION_DATA],[Et.PROVIDES,Jt.PROVIDES_DEFINITION_DATA],[Et.REQUIRE_FETCH_REASONS,Jt.REQUIRE_FETCH_REASONS_DEFINITION_DATA],[Et.REQUIRES,Jt.REQUIRES_DEFINITION_DATA],[Et.REQUIRES_SCOPES,Jt.REQUIRES_SCOPES_DEFINITION_DATA],[Et.SEMANTIC_NON_NULL,Jt.SEMANTIC_NON_NULL_DATA],[Et.SHAREABLE,Jt.SHAREABLE_DEFINITION_DATA],[Et.SPECIFIED_BY,Jt.SPECIFIED_BY_DEFINITION_DATA],[Et.SUBSCRIPTION_FILTER,Jt.SUBSCRIPTION_FILTER_DEFINITION_DATA],[Et.TAG,Jt.TAG_DEFINITION_DATA]])}});var $D=F(KD=>{"use strict";m();T();N();Object.defineProperty(KD,"__esModule",{value:!0});KD.recordSubgraphName=ofe;function ofe(e,t,n){if(!t.has(e)){t.add(e);return}n.add(e)}});var QD=F(YE=>{"use strict";m();T();N();Object.defineProperty(YE,"__esModule",{value:!0});YE.Warning=void 0;var GD=class extends Error{constructor(n){super(n.message);g(this,"subgraph");this.name="Warning",this.subgraph=n.subgraph}};YE.Warning=GD});var Sp=F(vi=>{"use strict";m();T();N();Object.defineProperty(vi,"__esModule",{value:!0});vi.invalidOverrideTargetSubgraphNameWarning=ufe;vi.externalInterfaceFieldsWarning=cfe;vi.nonExternalConditionalFieldWarning=lfe;vi.unimplementedInterfaceOutputTypeWarning=dfe;vi.invalidExternalFieldWarning=ffe;vi.requiresDefinedOnNonEntityFieldWarning=pfe;vi.consumerInactiveThresholdInvalidValueWarning=mfe;vi.externalEntityExtensionKeyFieldWarning=Nfe;vi.fieldAlreadyProvidedWarning=Tfe;vi.singleSubgraphInputFieldOneOfWarning=Efe;vi.singleFederatedInputFieldOneOfWarning=hfe;var Ra=QD(),YD=Hn();function ufe(e,t,n,r){return new Ra.Warning({message:`The Object type "${t}" defines the directive "@override(from: "${e}")" on the following field`+(n.length>1?"s":"")+': "'+n.join(YD.QUOTATION_JOIN)+`". -The required "from" argument of type "String!" should be provided with an existing subgraph name. -However, a subgraph by the name of "${e}" does not exist. -If this subgraph has been recently deleted, remember to clean up unused "@override" directives that reference this subgraph.`,subgraph:{name:r}})}function JE(e){return`The subgraph "${e}" is currently a "version one" subgraph, but if it were updated to "version two" in its current state, composition would be unsuccessful due to the following warning that would instead propagate as an error: -`}function cfe(e,t,n){return new Ra.Warning({message:JE(e)+`The Interface "${t}" is invalid because the following field definition`+(n.length>1?"s are":" is")+` declared "@external": - "`+n.join(YD.QUOTATION_JOIN)+`" -Interface fields should not be declared "@external". This is because Interface fields do not resolve directly, but the "@external" directive relates to whether a Field instance can be resolved by the subgraph in which it is defined.`,subgraph:{name:e}})}function lfe(e,t,n,r,i){return new Ra.Warning({message:JE(t)+`The Field "${e}" in subgraph "${t}" defines a "@${i}" directive with the following field set: - "${r}". -However, neither the field "${n}" nor any of its field set ancestors are declared @external. -Consequently, "${n}" is already provided by subgraph "${t}" and should not form part of a "@${i}" directive field set.`,subgraph:{name:t}})}function dfe(e,t){return new Ra.Warning({message:`Subgraph "${e}": The Interface "${t}" is used as an output type without at least one Object type implementation defined in the schema.`,subgraph:{name:e}})}function ffe(e,t){return new Ra.Warning({message:JE(t)+` The Object Field "${e}" is invalidly declared "@external". An Object field should only be declared "@external" if it is part of a "@key", "@provides", or "@requires" field set, or the field is necessary to satisfy an Interface implementation. In the case that none of these conditions is true, the "@external" directive should be removed.`,subgraph:{name:t}})}function pfe(e,t){return new Ra.Warning({message:` The Object Field "${e}" defines a "@requires" directive, but the Object is not an entity. Consequently, the "@requires" FieldSet cannot be satisfied because there is no entity resolver with which to provide the required Fields.`,subgraph:{name:t}})}function mfe(e,t=""){return new Ra.Warning({message:'The "consumerInactiveThreshold" argument of type "Int" should be positive and smaller than 2,147,483,648.'+ +t?` -${t}`:"",subgraph:{name:e}})}function Nfe(e,t,n,r){return new Ra.Warning({message:`The entity extension "${e}" defined in subgraph "${r}" defines a "@key" directive with the field set "${t}". -The following field coordinates that form part of that field set are declared "@external": - "`+n.join(YD.QUOTATION_JOIN)+`" -Please note fields that form part of entity extension "@key" field sets are always provided in that subgraph. Any such "@external" declarations are unnecessary relics of Federation Version 1 syntax and are effectively ignored.`,subgraph:{name:r}})}function Tfe(e,t,n,r){return new Ra.Warning({message:JE(r)+`The field "${e}" is unconditionally provided by subgraph "${r}" and should not form part of any "@${t}" field set. -However, "${e}" forms part of the "@${t}" field set defined "${n}". -Although "${e}" is declared "@external", it is part of a "@key" directive on an extension type. Such fields are only declared "@external" for legacy syntactical reasons and are not internally considered "@external".`,subgraph:{name:r}})}function Efe({fieldName:e,subgraphName:t,typeName:n}){return new Ra.Warning({message:`The directive "@oneOf" is defined on Input Object "${n}", but only one optional Input field, "${e}", is defined. Consider removing "@oneOf" and changing "${e}" to a required type instead.`,subgraph:{name:t}})}function hfe({fieldName:e,typeName:t}){return new Ra.Warning({message:`The directive "@oneOf" is defined on Input Object "${t}", but only one optional Input field, "${e}", is propagated to the federated graph. Consider removing "@oneOf", changing "${e}" to a required type, and removing any other remaining optional Input fields instead.`,subgraph:{name:""}})}});var HD=F(HE=>{"use strict";m();T();N();Object.defineProperty(HE,"__esModule",{value:!0});HE.upsertDirectiveSchemaAndEntityDefinitions=gfe;HE.upsertParentsAndChildren=_fe;var Gn=_e(),ku=Gi(),zD=Ru(),zE=_p(),hd=Lr(),JD=vp(),yfe=md(),Ed=Yl(),Op=Au(),Ife=Sp(),ra=Hn(),yr=Cr();function gfe(e,t){(0,Gn.visit)(t,{Directive:{enter(n){let r=n.name.value;return e.referencedDirectiveNames.add(r),yfe.EVENT_DIRECTIVE_NAMES.has(r)&&e.edfsDirectiveReferences.add(r),zD.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(r)&&(e.isSubgraphVersionTwo=!0),!1}},DirectiveDefinition:{enter(n){return e.addDirectiveDefinitionDataByNode(n)&&e.customDirectiveDefinitionByName.set(n.name.value,n),!1}},InterfaceTypeDefinition:{enter(n){let r=n.name.value;if(e.internalGraph.addOrUpdateNode(r,{isAbstract:!0}),!(0,hd.isObjectLikeNodeEntity)(n))return;let i=(0,yr.getValueOrDefault)(e.keyFieldSetDatasByTypeName,r,()=>new Map);e.extractKeyFieldSets(n,i),(0,zE.upsertEntityData)({entityDataByTypeName:e.entityDataByTypeName,keyFieldSetDataByFieldSet:i,subgraphName:e.subgraphName,typeName:r}),(0,yr.getValueOrDefault)(e.entityInterfaceDataByTypeName,r,()=>({concreteTypeNames:new Set,fieldDatas:[],interfaceFieldNames:new Set,interfaceObjectFieldNames:new Set,isInterfaceObject:!1,resolvable:!1,typeName:r}))}},InterfaceTypeExtension:{enter(n){let r=n.name.value;if(e.internalGraph.addOrUpdateNode(r,{isAbstract:!0}),!(0,hd.isObjectLikeNodeEntity)(n))return;let i=(0,yr.getValueOrDefault)(e.keyFieldSetDatasByTypeName,r,()=>new Map);e.extractKeyFieldSets(n,i),(0,zE.upsertEntityData)({entityDataByTypeName:e.entityDataByTypeName,keyFieldSetDataByFieldSet:i,subgraphName:e.subgraphName,typeName:r}),(0,yr.getValueOrDefault)(e.entityInterfaceDataByTypeName,r,()=>({concreteTypeNames:new Set,fieldDatas:[],interfaceFieldNames:new Set,interfaceObjectFieldNames:new Set,isInterfaceObject:!1,resolvable:!1,typeName:r}))}},ObjectTypeDefinition:{enter(n){if(!(0,hd.isObjectLikeNodeEntity)(n))return;let r=n.name.value;(0,hd.isNodeInterfaceObject)(n)&&(e.entityInterfaceDataByTypeName.set(r,{concreteTypeNames:new Set,fieldDatas:[],interfaceObjectFieldNames:new Set,interfaceFieldNames:new Set,isInterfaceObject:!0,resolvable:!1,typeName:r}),e.internalGraph.addOrUpdateNode(r,{isAbstract:!0}));let i=(0,yr.getValueOrDefault)(e.keyFieldSetDatasByTypeName,r,()=>new Map);e.extractKeyFieldSets(n,i),(0,zE.upsertEntityData)({entityDataByTypeName:e.entityDataByTypeName,keyFieldSetDataByFieldSet:i,subgraphName:e.subgraphName,typeName:r})}},ObjectTypeExtension:{enter(n){if(!(0,hd.isObjectLikeNodeEntity)(n))return;let r=n.name.value,i=(0,yr.getValueOrDefault)(e.keyFieldSetDatasByTypeName,r,()=>new Map);e.extractKeyFieldSets(n,i),(0,zE.upsertEntityData)({entityDataByTypeName:e.entityDataByTypeName,keyFieldSetDataByFieldSet:i,subgraphName:e.subgraphName,typeName:r})}},OperationTypeDefinition:{enter(n){let r=n.operation,i=e.schemaData.operationTypes.get(r),a=(0,Op.getTypeNodeNamedTypeName)(n.type);if(i)return e.errors.push((0,ku.duplicateOperationTypeDefinitionError)(r,a,(0,Op.getTypeNodeNamedTypeName)(i.type))),!1;let o=e.operationTypeNodeByTypeName.get(a);return o?(e.errors.push((0,ku.invalidOperationTypeDefinitionError)(o,a,r)),!1):(e.operationTypeNodeByTypeName.set(a,r),e.schemaData.operationTypes.set(r,n),!1)}},SchemaDefinition:{enter(n){e.schemaData.description=n.description,e.extractDirectives(n,e.schemaData.directivesByName)}},SchemaExtension:{enter(n){e.extractDirectives(n,e.schemaData.directivesByName)}}})}function _fe(e,t){let n=!1,r;(0,Gn.visit)(t,{EnumTypeDefinition:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertEnumDataByNode(i)},leave(){e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},EnumTypeExtension:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertEnumDataByNode(i,!0)},leave(){e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},EnumValueDefinition:{enter(i){let a=i.name.value;e.lastChildNodeKind=i.kind;let o=(0,yr.getOrThrowError)(e.parentDefinitionDataByTypeName,e.originalParentTypeName,ra.PARENT_DEFINITION_DATA);if(o.kind!==Gn.Kind.ENUM_TYPE_DEFINITION){e.errors.push((0,ku.unexpectedParentKindForChildError)(e.originalParentTypeName,"Enum or Enum extension",(0,yr.kindToNodeType)(o.kind),a,(0,yr.kindToNodeType)(i.kind)));return}if(o.enumValueDataByName.has(a)){e.errors.push((0,ku.duplicateEnumValueDefinitionError)(e.originalParentTypeName,a));return}o.enumValueDataByName.set(a,{appearances:1,configureDescriptionDataBySubgraphName:new Map,directivesByName:e.extractDirectives(i,new Map),federatedCoords:`${e.originalParentTypeName}.${a}`,kind:Gn.Kind.ENUM_VALUE_DEFINITION,name:a,node:(0,Op.getMutableEnumValueNode)(i),parentTypeName:e.originalParentTypeName,persistedDirectivesData:(0,Ed.newPersistedDirectivesData)(),subgraphNames:new Set([e.subgraphName]),description:(0,hd.formatDescription)(i.description)})},leave(){e.lastChildNodeKind=Gn.Kind.NULL}},FieldDefinition:{enter(i){let a=i.name.value;if(n&&ra.IGNORED_FIELDS.has(a))return!1;e.edfsDirectiveReferences.size>0&&e.validateSubscriptionFilterDirectiveLocation(i),e.lastChildNodeKind=i.kind;let o=(0,Op.getTypeNodeNamedTypeName)(i.type);(0,yr.getValueOrDefault)(e.fieldCoordsByNamedTypeName,o,()=>new Set).add(`${e.renamedParentTypeName||e.originalParentTypeName}.${a}`),r&&!r.isAbstract&&e.internalGraph.addEdge(r,e.internalGraph.addOrUpdateNode(o),a),zD.BASE_SCALARS.has(o)||e.referencedTypeNames.add(o);let u=(0,yr.getOrThrowError)(e.parentDefinitionDataByTypeName,e.originalParentTypeName,ra.PARENT_DEFINITION_DATA);if(!(0,Ed.isParentDataCompositeOutputType)(u)){e.errors.push((0,ku.unexpectedParentKindForChildError)(e.originalParentTypeName,'"Object" or "Interface"',(0,yr.kindToNodeType)(u.kind),a,(0,yr.kindToNodeType)(i.kind)));return}if(u.fieldDataByName.has(a)){e.errors.push((0,ku.duplicateFieldDefinitionError)((0,yr.kindToNodeType)(u.kind),u.name,a));return}let l=e.extractArguments(new Map,i),d=e.extractDirectives(i,new Map),p=new Set;e.handleFieldInheritableDirectives({directivesByName:d,fieldName:a,inheritedDirectiveNames:p,parentData:u});let E=e.addFieldDataByNode(u.fieldDataByName,i,l,d,p);n&&e.extractEventDirectivesToConfiguration(i,l);let y=E.directivesByName.get(ra.PROVIDES),v=E.directivesByName.get(ra.REQUIRES);if(!v&&!y)return;let R=e.entityDataByTypeName.get(e.originalParentTypeName),B=(0,yr.getValueOrDefault)(e.fieldSetDataByTypeName,e.originalParentTypeName,JD.newFieldSetData);y&&(0,JD.extractFieldSetValue)(a,B.provides,y),v&&(R||e.warnings.push((0,Ife.requiresDefinedOnNonEntityFieldWarning)(`${e.originalParentTypeName}.${a}`,e.subgraphName)),(0,JD.extractFieldSetValue)(a,B.requires,v))},leave(){e.lastChildNodeKind=Gn.Kind.NULL}},InputObjectTypeDefinition:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertInputObjectByNode(i)},leave(){e.lastParentNodeKind=Gn.Kind.NULL,e.originalParentTypeName=""}},InputObjectTypeExtension:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertInputObjectByNode(i,!0)},leave(){e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},InputValueDefinition:{enter(i){let a=i.name.value;if(e.lastParentNodeKind!==Gn.Kind.INPUT_OBJECT_TYPE_DEFINITION&&e.lastParentNodeKind!==Gn.Kind.INPUT_OBJECT_TYPE_EXTENSION){e.argumentName=a;return}e.lastChildNodeKind=i.kind;let o=(0,Op.getTypeNodeNamedTypeName)(i.type);zD.BASE_SCALARS.has(o)||e.referencedTypeNames.add(o);let u=(0,yr.getOrThrowError)(e.parentDefinitionDataByTypeName,e.originalParentTypeName,ra.PARENT_DEFINITION_DATA);if(u.kind!==Gn.Kind.INPUT_OBJECT_TYPE_DEFINITION)return e.errors.push((0,ku.unexpectedParentKindForChildError)(e.originalParentTypeName,"input object or input object extension",(0,yr.kindToNodeType)(u.kind),a,(0,yr.kindToNodeType)(i.kind))),!1;if(u.inputValueDataByName.has(a)){e.errors.push((0,ku.duplicateInputFieldDefinitionError)(e.originalParentTypeName,a));return}e.addInputValueDataByNode({inputValueDataByName:u.inputValueDataByName,isArgument:!1,node:i,originalParentTypeName:e.originalParentTypeName})},leave(){e.argumentName="",e.lastChildNodeKind===Gn.Kind.INPUT_VALUE_DEFINITION&&(e.lastChildNodeKind=Gn.Kind.NULL)}},InterfaceTypeDefinition:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertInterfaceDataByNode(i)},leave(){e.doesParentRequireFetchReasons=!1,e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},InterfaceTypeExtension:{enter(i){e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertInterfaceDataByNode(i,!0)},leave(){e.doesParentRequireFetchReasons=!1,e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},ObjectTypeDefinition:{enter(i){if(i.name.value===ra.SERVICE_OBJECT)return!1;e.originalParentTypeName=i.name.value,n=(0,Ed.isTypeNameRootType)(e.originalParentTypeName,e.operationTypeNodeByTypeName),e.renamedParentTypeName=(0,Ed.getRenamedRootTypeName)(e.originalParentTypeName,e.operationTypeNodeByTypeName),e.originalTypeNameByRenamedTypeName.set(e.renamedParentTypeName,e.originalParentTypeName),r=n?e.internalGraph.getRootNode(e.renamedParentTypeName):e.internalGraph.addOrUpdateNode(e.renamedParentTypeName),e.lastParentNodeKind=i.kind,e.upsertObjectDataByNode(i)},leave(){r=void 0,n=!1,e.originalParentTypeName="",e.renamedParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL,e.isParentObjectExternal=!1,e.doesParentRequireFetchReasons=!1,e.isParentObjectShareable=!1}},ObjectTypeExtension:{enter(i){if(i.name.value===ra.SERVICE_OBJECT)return!1;e.originalParentTypeName=i.name.value,n=(0,Ed.isTypeNameRootType)(e.originalParentTypeName,e.operationTypeNodeByTypeName),e.renamedParentTypeName=(0,Ed.getRenamedRootTypeName)(e.originalParentTypeName,e.operationTypeNodeByTypeName),e.originalTypeNameByRenamedTypeName.set(e.renamedParentTypeName,e.originalParentTypeName),r=n?e.internalGraph.getRootNode(e.renamedParentTypeName):e.internalGraph.addOrUpdateNode(e.renamedParentTypeName),e.lastParentNodeKind=i.kind,e.upsertObjectDataByNode(i,!0)},leave(){r=void 0,n=!1,e.originalParentTypeName="",e.renamedParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL,e.isParentObjectExternal=!1,e.doesParentRequireFetchReasons=!1,e.isParentObjectShareable=!1}},ScalarTypeDefinition:{enter(i){if(i.name.value===ra.ANY_SCALAR)return!1;e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertScalarByNode(i)},leave(){e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},ScalarTypeExtension:{enter(i){if(i.name.value===ra.ANY_SCALAR)return!1;e.originalParentTypeName=i.name.value,e.lastParentNodeKind=i.kind,e.upsertScalarByNode(i,!0)},leave(){e.originalParentTypeName="",e.lastParentNodeKind=Gn.Kind.NULL}},UnionTypeDefinition:{enter(i){if(i.name.value===ra.ENTITY_UNION)return!1;e.upsertUnionByNode(i)}},UnionTypeExtension:{enter(i){if(i.name.value===ra.ENTITY_UNION)return!1;e.upsertUnionByNode(i,!0)}}})}});var tb=F(is=>{"use strict";m();T();N();Object.defineProperty(is,"__esModule",{value:!0});is.EntityDataNode=is.RootNode=is.GraphNode=is.Edge=void 0;var WE=Cr(),WD=class{constructor(t,n,r,i=!1){g(this,"edgeName");g(this,"id");g(this,"isAbstractEdge");g(this,"isExternal",!1);g(this,"isInaccessible",!1);g(this,"node");g(this,"visitedIndices",new Set);this.edgeName=i?`... on ${r}`:r,this.id=t,this.isAbstractEdge=i,this.node=n}isEdgeInaccessible(){return this.isInaccessible||this.node.isInaccessible}};is.Edge=WD;var XD=class{constructor(t,n,r){g(this,"externalFieldSets",new Set);g(this,"fieldDataByName",new Map);g(this,"headToTailEdges",new Map);g(this,"entityEdges",new Array);g(this,"nodeName");g(this,"hasEntitySiblings",!1);g(this,"isAbstract");g(this,"isInaccessible",!1);g(this,"isLeaf",!1);g(this,"isRootNode",!1);g(this,"satisfiedFieldSets",new Set);g(this,"subgraphName");g(this,"typeName");this.isAbstract=!!(r!=null&&r.isAbstract),this.isLeaf=!!(r!=null&&r.isLeaf),this.nodeName=`${t}.${n}`,this.subgraphName=t,this.typeName=n}handleInaccessibleEdges(){if(this.isAbstract)return;let t=(0,WE.getEntriesNotInHashSet)(this.headToTailEdges.keys(),this.fieldDataByName);for(let n of t){let r=this.headToTailEdges.get(n);r&&(r.isInaccessible=!0)}}getAllAccessibleEntityNodeNames(){let t=new Set([this.nodeName]);return this.getAccessibleEntityNodeNames(this,t),t.delete(this.nodeName),t}getAccessibleEntityNodeNames(t,n){for(let r of t.entityEdges)(0,WE.add)(n,r.node.nodeName)&&this.getAccessibleEntityNodeNames(r.node,n)}};is.GraphNode=XD;var ZD=class{constructor(t){g(this,"fieldDataByName",new Map);g(this,"headToSharedTailEdges",new Map);g(this,"isAbstract",!1);g(this,"isRootNode",!0);g(this,"typeName");this.typeName=t}removeInaccessibleEdges(t){for(let[n,r]of this.headToSharedTailEdges)if(!t.has(n))for(let i of r)i.isInaccessible=!0}};is.RootNode=ZD;var eb=class{constructor(t){g(this,"fieldSetsByTargetSubgraphName",new Map);g(this,"targetSubgraphNamesByFieldSet",new Map);g(this,"typeName");this.typeName=t}addTargetSubgraphByFieldSet(t,n){(0,WE.getValueOrDefault)(this.targetSubgraphNamesByFieldSet,t,()=>new Set).add(n),(0,WE.getValueOrDefault)(this.fieldSetsByTargetSubgraphName,n,()=>new Set).add(t)}};is.EntityDataNode=eb});var nb=F(Qn=>{"use strict";m();T();N();Object.defineProperty(Qn,"__esModule",{value:!0});Qn.ROOT_TYPE_NAMES=Qn.QUOTATION_JOIN=Qn.NOT_APPLICABLE=Qn.LITERAL_SPACE=Qn.LITERAL_PERIOD=Qn.SUBSCRIPTION=Qn.QUERY=Qn.MUTATION=void 0;Qn.MUTATION="Mutation";Qn.QUERY="Query";Qn.SUBSCRIPTION="Subscription";Qn.LITERAL_PERIOD=".";Qn.LITERAL_SPACE=" ";Qn.NOT_APPLICABLE="N/A";Qn.QUOTATION_JOIN='", "';Qn.ROOT_TYPE_NAMES=new Set([Qn.MUTATION,Qn.QUERY,Qn.SUBSCRIPTION])});var sb=F(Pa=>{"use strict";m();T();N();Object.defineProperty(Pa,"__esModule",{value:!0});Pa.newRootFieldData=vfe;Pa.generateResolvabilityErrorReasons=ab;Pa.generateSharedResolvabilityErrorReasons=TV;Pa.generateSelectionSetSegments=XE;Pa.renderSelectionSet=ZE;Pa.generateRootResolvabilityErrors=Ofe;Pa.generateEntityResolvabilityErrors=Dfe;Pa.generateSharedEntityResolvabilityErrors=bfe;Pa.getMultipliedRelativeOriginPaths=Afe;var rb=Gi(),ib=Cr(),ui=nb();function vfe(e,t,n){return{coords:`${e}.${t}`,message:`The root type field "${e}.${t}" is defined in the following subgraph`+(n.size>1?"s":"")+`: "${[...n].join(ui.QUOTATION_JOIN)}".`,subgraphNames:n}}function Sfe(e,t){return e.isLeaf?e.name+` <-- -`:e.name+` { <-- -`+ui.LITERAL_SPACE.repeat(t+3)+`... -`+ui.LITERAL_SPACE.repeat(t+2)+`} -`}function ab({entityAncestorData:e,rootFieldData:t,unresolvableFieldData:n}){let{externalSubgraphNames:r,fieldName:i,typeName:a,subgraphNames:o}=n,u=[t.message];if(r.size>0){let l=o.difference(r);u.push(`The field "${a}.${i}" is defined (and resolvable) in the following subgraph`+(l.size>1?"s":"")+`: "${[...l].join(ui.QUOTATION_JOIN)}".`,`The field "${a}.${i}" is defined "@external" (and unresolvable) in the following subgraph`+(r.size>1?"s":"")+`: "${[...r].join(ui.QUOTATION_JOIN)}".`)}else u.push(`The field "${a}.${i}" is defined in the following subgraph`+(o.size>1?"s":"")+`: "${[...o].join(ui.QUOTATION_JOIN)}".`);if(e){let l=!1;for(let[d,p]of e.fieldSetsByTargetSubgraphName)if(o.has(d)){l=!0;for(let E of p)e.subgraphName!==d&&u.push(`The entity ancestor "${e.typeName}" in subgraph "${e.subgraphName}" does not satisfy the key field set "${E}" to access subgraph "${d}".`)}l||u.push(`The entity ancestor "${e.typeName}" in subgraph "${e.subgraphName}" has no accessible target entities (resolvable @key directives) in the subgraphs where "${a}.${i}" is defined.`),u.push(`The type "${a}" is not a descendant of any other entity ancestors that can provide a shared route to access "${i}".`)}else t.subgraphNames.size>1&&u.push(`None of the subgraphs that shares the same root type field "${t.coords}" can provide a route to access "${i}".`),u.push(`The type "${a}" is not a descendant of an entity ancestor that can provide a shared route to access "${i}".`);return a!==(e==null?void 0:e.typeName)&&u.push(`The type "${a}" has no accessible target entities (resolvable @key directives) in any other subgraph, so accessing other subgraphs is not possible.`),u}function TV({entityAncestors:e,rootFieldData:t,unresolvableFieldData:n}){let{externalSubgraphNames:r,fieldName:i,typeName:a,subgraphNames:o}=n,u=[t.message];if(r.size>0){let d=o.difference(r);u.push(`The field "${a}.${i}" is defined (and resolvable) in the following subgraph`+(d.size>1?"s":"")+`: "${[...d].join(ui.QUOTATION_JOIN)}".`,`The field "${a}.${i}" is defined "@external" (and unresolvable) in the following subgraph`+(r.size>1?"s":"")+`: "${[...r].join(ui.QUOTATION_JOIN)}".`)}else u.push(`The field "${a}.${i}" is defined in the following subgraph`+(o.size>1?"s":"")+`: "${[...o].join(ui.QUOTATION_JOIN)}".`);let l=!1;for(let[d,p]of e.fieldSetsByTargetSubgraphName){if(!o.has(d))continue;let E=e.subgraphNames.filter(v=>v!==d),y=E.length>1;l=!0;for(let v of p)u.push(`The entity ancestor "${e.typeName}" in subgraph${y?"s":""} "${E.join(ui.QUOTATION_JOIN)}" do${y?"":"es"} not satisfy the key field set "${v}" to access subgraph "${d}".`)}if(!l){let d=e.subgraphNames.length>1;u.push(`The entity ancestor "${e.typeName}" in subgraph${d?"s":""} "${e.subgraphNames.join(ui.QUOTATION_JOIN)}" ha${d?"ve":"s"} no accessible target entities (resolvable @key directives) in the subgraphs where "${a}.${i}" is defined.`)}return u.push(`The type "${a}" is not a descendant of any other entity ancestors that can provide a shared route to access "${i}".`),a!==e.typeName&&u.push(`The type "${a}" has no accessible target entities (resolvable @key directives) in any other subgraph, so accessing other subgraphs is not possible.`),u}function XE(e){let t=e.split(new RegExp("(?<=\\w)\\.")),n="",r="";for(let i=0;i{"use strict";m();T();N();Object.defineProperty(eh,"__esModule",{value:!0});eh.NodeResolutionData=void 0;var hV=Gi(),Vc,ub=class ub{constructor({fieldDataByName:t,isResolved:n=!1,resolvedDescendantNames:r,resolvedFieldNames:i,typeName:a}){rc(this,Vc,!1);g(this,"fieldDataByName");g(this,"resolvedDescendantNames");g(this,"resolvedFieldNames");g(this,"typeName");nI(this,Vc,n),this.fieldDataByName=t,this.resolvedDescendantNames=new Set(r),this.resolvedFieldNames=new Set(i),this.typeName=a}addData({resolvedDescendantNames:t,resolvedFieldNames:n}){for(let r of n)this.addResolvedFieldName(r);for(let r of t)this.resolvedDescendantNames.add(r)}addResolvedFieldName(t){if(!this.fieldDataByName.has(t))throw(0,hV.unexpectedEdgeFatalError)(this.typeName,[t]);this.resolvedFieldNames.add(t)}addExternalSubgraphName({fieldName:t,subgraphName:n}){let r=this.fieldDataByName.get(t);if(!r)throw(0,hV.unexpectedEdgeFatalError)(this.typeName,[t]);r.externalSubgraphNames.add(n)}copy(){return new ub({fieldDataByName:this.fieldDataByName,isResolved:tI(this,Vc),resolvedDescendantNames:this.resolvedDescendantNames,resolvedFieldNames:this.resolvedFieldNames,typeName:this.typeName})}areDescendantsResolved(){return this.fieldDataByName.size===this.resolvedDescendantNames.size}isResolved(){if(tI(this,Vc))return!0;if(this.fieldDataByName.size!==this.resolvedFieldNames.size)return!1;for(let t of this.fieldDataByName.keys())if(!this.resolvedFieldNames.has(t))return!1;return nI(this,Vc,!0),!0}};Vc=new WeakMap;var ob=ub;eh.NodeResolutionData=ob});var yV=F(nh=>{"use strict";m();T();N();Object.defineProperty(nh,"__esModule",{value:!0});nh.EntityWalker=void 0;var Rfe=th(),as=Cr(),cb=class{constructor({encounteredEntityNodeNames:t,index:n,relativeOriginPaths:r,resDataByNodeName:i,resDataByRelativeOriginPath:a,resolvedPaths:o,subgraphNameByUnresolvablePath:u,visitedEntities:l}){g(this,"encounteredEntityNodeNames");g(this,"index");g(this,"resDataByNodeName");g(this,"resDataByRelativeOriginPath");g(this,"resolvedPaths");g(this,"selectionPathByEntityNodeName",new Map);g(this,"subgraphNameByUnresolvablePath");g(this,"visitedEntities");g(this,"relativeOriginPaths");this.encounteredEntityNodeNames=t,this.index=n,this.relativeOriginPaths=r,this.resDataByNodeName=i,this.resDataByRelativeOriginPath=a,this.resolvedPaths=o,this.subgraphNameByUnresolvablePath=u,this.visitedEntities=l}getNodeResolutionData({node:{fieldDataByName:t,nodeName:n,typeName:r},selectionPath:i}){let a=(0,as.getValueOrDefault)(this.resDataByNodeName,n,()=>new Rfe.NodeResolutionData({fieldDataByName:t,typeName:r}));if(!this.relativeOriginPaths||this.relativeOriginPaths.size<1)return(0,as.getValueOrDefault)(this.resDataByRelativeOriginPath,i,()=>a.copy());let o;for(let u of this.relativeOriginPaths){let l=(0,as.getValueOrDefault)(this.resDataByRelativeOriginPath,`${u}${i}`,()=>a.copy());o!=null||(o=l)}return o}visitEntityDescendantEdge({edge:t,selectionPath:n}){if(t.isEdgeInaccessible())return{visited:!1,areDescendantsResolved:!1};if(t.isExternal)return{visited:!1,areDescendantsResolved:!1,isExternal:!0};if(t.node.isLeaf)return{visited:!0,areDescendantsResolved:!0};let r=`${n}.${t.edgeName}`;return this.getNodeResolutionData({node:t.node,selectionPath:r}).areDescendantsResolved()?{visited:!0,areDescendantsResolved:!0}:(0,as.add)(t.visitedIndices,this.index)?t.node.hasEntitySiblings?this.visitedEntities.has(t.node.nodeName)||this.encounteredEntityNodeNames.has(t.node.nodeName)?{visited:!0,areDescendantsResolved:!0}:(this.encounteredEntityNodeNames.add(t.node.nodeName),(0,as.getValueOrDefault)(this.selectionPathByEntityNodeName,t.node.nodeName,()=>r),{visited:!0,areDescendantsResolved:!1}):t.node.isAbstract?this.visitEntityDescendantAbstractNode({node:t.node,selectionPath:r}):this.visitEntityDescendantConcreteNode({node:t.node,selectionPath:r}):(this.removeUnresolvablePaths({selectionPath:r,removeDescendantPaths:!0}),{visited:!0,areDescendantsResolved:!0,isRevisitedNode:!0})}visitEntityDescendantConcreteNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return t.isLeaf=!0,{visited:!0,areDescendantsResolved:!0};let r=this.getNodeResolutionData({node:t,selectionPath:n});if(r.isResolved()&&r.areDescendantsResolved())return{visited:!0,areDescendantsResolved:!0};let i;for(let[a,o]of t.headToTailEdges){let{areDescendantsResolved:u,isExternal:l,isRevisitedNode:d,visited:p}=this.visitEntityDescendantEdge({edge:o,selectionPath:n});i!=null||(i=d),this.propagateVisitedField({areDescendantsResolved:u,data:r,fieldName:a,isExternal:l,node:t,selectionPath:n,visited:p})}return r.isResolved()?this.removeUnresolvablePaths({removeDescendantPaths:i,selectionPath:n}):this.addUnresolvablePaths({selectionPath:n,subgraphName:t.subgraphName}),{visited:!0,areDescendantsResolved:r.areDescendantsResolved()}}visitEntityDescendantAbstractNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return{visited:!0,areDescendantsResolved:!0};let r=0;for(let i of t.headToTailEdges.values())this.visitEntityDescendantEdge({edge:i,selectionPath:n}).areDescendantsResolved&&(r+=1);return{visited:!0,areDescendantsResolved:r===t.headToTailEdges.size}}propagateVisitedField({areDescendantsResolved:t,data:n,fieldName:r,isExternal:i,node:a,selectionPath:o,visited:u}){if(i){n.addExternalSubgraphName({fieldName:r,subgraphName:a.subgraphName});return}if(!u)return;let l=(0,as.getValueOrDefault)(this.resDataByNodeName,a.nodeName,()=>n.copy());if(n.addResolvedFieldName(r),l.addResolvedFieldName(r),t&&n.resolvedDescendantNames.add(r),this.relativeOriginPaths){for(let p of this.relativeOriginPaths){let E=(0,as.getValueOrDefault)(this.resDataByRelativeOriginPath,`${p}${o}`,()=>n.copy());E.addResolvedFieldName(r),t&&(E.resolvedDescendantNames.add(r),this.removeUnresolvablePaths({selectionPath:`.${r}`,removeDescendantPaths:!0}))}return}let d=(0,as.getValueOrDefault)(this.resDataByRelativeOriginPath,o,()=>n.copy());d.addResolvedFieldName(r),t&&d.resolvedDescendantNames.add(r)}addUnresolvablePaths({selectionPath:t,subgraphName:n}){if(!this.relativeOriginPaths){if(this.resolvedPaths.has(t))return;(0,as.getValueOrDefault)(this.subgraphNameByUnresolvablePath,t,()=>n);return}for(let r of this.relativeOriginPaths){let i=`${r}${t}`;this.resolvedPaths.has(i)||(0,as.getValueOrDefault)(this.subgraphNameByUnresolvablePath,i,()=>n)}}removeUnresolvablePaths({selectionPath:t,removeDescendantPaths:n}){if(!this.relativeOriginPaths){if(this.subgraphNameByUnresolvablePath.delete(t),n)for(let r of this.subgraphNameByUnresolvablePath.keys())r.startsWith(t)&&(this.subgraphNameByUnresolvablePath.delete(r),this.resolvedPaths.add(r));return}for(let r of this.relativeOriginPaths){let i=`${r}${t}`;if(this.subgraphNameByUnresolvablePath.delete(i),this.resolvedPaths.add(i),n)for(let a of this.subgraphNameByUnresolvablePath.keys())a.startsWith(i)&&(this.subgraphNameByUnresolvablePath.delete(a),this.resolvedPaths.add(a))}}};nh.EntityWalker=cb});var IV=F(ih=>{"use strict";m();T();N();Object.defineProperty(ih,"__esModule",{value:!0});ih.RootFieldWalker=void 0;var ss=Cr(),rh=th(),lb=class{constructor({index:t,nodeResolutionDataByNodeName:n}){g(this,"index");g(this,"resDataByNodeName");g(this,"resDataByPath",new Map);g(this,"entityNodeNamesByPath",new Map);g(this,"pathsByEntityNodeName",new Map);g(this,"unresolvablePaths",new Set);this.index=t,this.resDataByNodeName=n}visitEdge({edge:t,selectionPath:n}){return t.isEdgeInaccessible()?{visited:!1,areDescendantsResolved:!1}:t.isExternal?{visited:!1,areDescendantsResolved:!1,isExternal:!0}:t.node.isLeaf?{visited:!0,areDescendantsResolved:!0}:(0,ss.add)(t.visitedIndices,this.index)?t.node.hasEntitySiblings?this.resDataByNodeName.has(t.node.nodeName)?{visited:!0,areDescendantsResolved:!0}:((0,ss.getValueOrDefault)(this.pathsByEntityNodeName,t.node.nodeName,()=>new Set).add(`${n}.${t.edgeName}`),{visited:!0,areDescendantsResolved:!1}):t.node.isAbstract?this.visitAbstractNode({node:t.node,selectionPath:`${n}.${t.edgeName}`}):this.visitConcreteNode({node:t.node,selectionPath:`${n}.${t.edgeName}`}):{visited:!0,areDescendantsResolved:!0}}visitAbstractNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return{visited:!0,areDescendantsResolved:!0};let r=0;for(let i of t.headToTailEdges.values())this.visitEdge({edge:i,selectionPath:n}).areDescendantsResolved&&(r+=1);return{visited:!0,areDescendantsResolved:r===t.headToTailEdges.size}}visitConcreteNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return t.isLeaf=!0,{visited:!0,areDescendantsResolved:!0};let r=this.resDataByNodeName.get(t.nodeName);if(r)return{visited:!0,areDescendantsResolved:r.areDescendantsResolved()};let i=this.getNodeResolutionData({node:t,selectionPath:n});if(i.isResolved()&&i.areDescendantsResolved())return{visited:!0,areDescendantsResolved:!0};for(let[a,o]of t.headToTailEdges){let{areDescendantsResolved:u,isExternal:l,visited:d}=this.visitEdge({edge:o,selectionPath:n});this.propagateVisitedField({areDescendantsResolved:u,data:i,fieldName:a,isExternal:l,node:t,selectionPath:n,visited:d})}return i.isResolved()?this.unresolvablePaths.delete(n):this.unresolvablePaths.add(n),{visited:!0,areDescendantsResolved:i.areDescendantsResolved()}}visitSharedEdge({edge:t,selectionPath:n}){return t.isEdgeInaccessible()?{visited:!1,areDescendantsResolved:!1}:t.isExternal?{visited:!1,areDescendantsResolved:!1,isExternal:!0}:t.node.isLeaf?{visited:!0,areDescendantsResolved:!0}:(0,ss.add)(t.visitedIndices,this.index)?(t.node.hasEntitySiblings&&(0,ss.getValueOrDefault)(this.entityNodeNamesByPath,`${n}.${t.edgeName}`,()=>new Set).add(t.node.nodeName),t.node.isAbstract?this.visitSharedAbstractNode({node:t.node,selectionPath:`${n}.${t.edgeName}`}):this.visitSharedConcreteNode({node:t.node,selectionPath:`${n}.${t.edgeName}`})):{visited:!0,areDescendantsResolved:!0}}visitSharedAbstractNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return{visited:!0,areDescendantsResolved:!0};let r=0;for(let i of t.headToTailEdges.values())this.visitSharedEdge({edge:i,selectionPath:n}).areDescendantsResolved&&(r+=1);return{visited:!0,areDescendantsResolved:r===t.headToTailEdges.size}}visitSharedConcreteNode({node:t,selectionPath:n}){if(t.headToTailEdges.size<1)return t.isLeaf=!0,{visited:!0,areDescendantsResolved:!0};let r=this.getSharedNodeResolutionData({node:t,selectionPath:n});if(r.isResolved()&&r.areDescendantsResolved())return{visited:!0,areDescendantsResolved:!0};for(let[i,a]of t.headToTailEdges){let{visited:o,areDescendantsResolved:u}=this.visitSharedEdge({edge:a,selectionPath:n});this.propagateSharedVisitedField({areDescendantsResolved:u,data:r,fieldName:i,node:t,visited:o})}return r.isResolved()?this.unresolvablePaths.delete(n):this.unresolvablePaths.add(n),{visited:!0,areDescendantsResolved:r.areDescendantsResolved()}}getNodeResolutionData({node:t,selectionPath:n}){let r=(0,ss.getValueOrDefault)(this.resDataByNodeName,t.nodeName,()=>new rh.NodeResolutionData({fieldDataByName:t.fieldDataByName,typeName:t.typeName}));return(0,ss.getValueOrDefault)(this.resDataByPath,n,()=>r.copy()),r}getSharedNodeResolutionData({node:t,selectionPath:n}){let r=(0,ss.getValueOrDefault)(this.resDataByNodeName,t.nodeName,()=>new rh.NodeResolutionData({fieldDataByName:t.fieldDataByName,typeName:t.typeName}));return(0,ss.getValueOrDefault)(this.resDataByPath,n,()=>r.copy())}propagateVisitedField({areDescendantsResolved:t,data:n,fieldName:r,isExternal:i,node:a,selectionPath:o,visited:u}){if(i){n.addExternalSubgraphName({fieldName:r,subgraphName:a.subgraphName});return}if(!u)return;n.addResolvedFieldName(r);let l=(0,ss.getValueOrDefault)(this.resDataByPath,o,()=>new rh.NodeResolutionData({fieldDataByName:a.fieldDataByName,typeName:a.typeName}));l.addResolvedFieldName(r),t&&(n.resolvedDescendantNames.add(r),l.resolvedDescendantNames.add(r))}propagateSharedVisitedField({areDescendantsResolved:t,data:n,fieldName:r,node:i,visited:a}){if(!a)return;n.addResolvedFieldName(r);let o=(0,ss.getValueOrDefault)(this.resDataByNodeName,i.nodeName,()=>new rh.NodeResolutionData({fieldDataByName:i.fieldDataByName,typeName:i.typeName}));o.addResolvedFieldName(r),t&&(n.resolvedDescendantNames.add(r),o.resolvedDescendantNames.add(r))}visitRootFieldEdges({edges:t,rootTypeName:n}){let r=t.length>1;for(let i of t){if(i.isInaccessible)return{visited:!1,areDescendantsResolved:!1};let a=r?this.visitSharedEdge({edge:i,selectionPath:n}):this.visitEdge({edge:i,selectionPath:n});if(a.areDescendantsResolved)return a}return{visited:!0,areDescendantsResolved:!1}}};ih.RootFieldWalker=lb});var fb=F(sh=>{"use strict";m();T();N();Object.defineProperty(sh,"__esModule",{value:!0});sh.Graph=void 0;var yd=tb(),jc=sb(),ia=Cr(),ah=nb(),Pfe=yV(),Ffe=IV(),db=class{constructor(){g(this,"edgeId",-1);g(this,"entityDataNodeByTypeName",new Map);g(this,"nodeByNodeName",new Map);g(this,"nodesByTypeName",new Map);g(this,"resolvedRootFieldNodeNames",new Set);g(this,"rootNodeByTypeName",new Map);g(this,"subgraphName",ah.NOT_APPLICABLE);g(this,"resDataByNodeName",new Map);g(this,"resDataByRelativePathByEntity",new Map);g(this,"visitedEntitiesByOriginEntity",new Map);g(this,"walkerIndex",-1)}getRootNode(t){return(0,ia.getValueOrDefault)(this.rootNodeByTypeName,t,()=>new yd.RootNode(t))}addOrUpdateNode(t,n){let r=`${this.subgraphName}.${t}`,i=this.nodeByNodeName.get(r);if(i)return i.isAbstract||(i.isAbstract=!!(n!=null&&n.isAbstract)),!i.isLeaf&&(n!=null&&n.isLeaf)&&(i.isLeaf=!0),i;let a=new yd.GraphNode(this.subgraphName,t,n);return this.nodeByNodeName.set(r,a),(0,ia.getValueOrDefault)(this.nodesByTypeName,t,()=>[]).push(a),a}addEdge(t,n,r,i=!1){if(t.isRootNode){let u=new yd.Edge(this.getNextEdgeId(),n,r);return(0,ia.getValueOrDefault)(t.headToSharedTailEdges,r,()=>[]).push(u),u}let a=t,o=new yd.Edge(this.getNextEdgeId(),n,i?n.typeName:r,i);return a.headToTailEdges.set(r,o),o}addEntityDataNode(t){let n=this.entityDataNodeByTypeName.get(t);if(n)return n;let r=new yd.EntityDataNode(t);return this.entityDataNodeByTypeName.set(t,r),r}getNextEdgeId(){return this.edgeId+=1}getNextWalkerIndex(){return this.walkerIndex+=1}setNodeInaccessible(t){let n=this.nodesByTypeName.get(t);if(n)for(let r of n)r.isInaccessible=!0}initializeNode(t,n){let r=this.entityDataNodeByTypeName.get(t);if(ah.ROOT_TYPE_NAMES.has(t)){let a=this.getRootNode(t);a.removeInaccessibleEdges(n),a.fieldDataByName=n;return}let i=this.nodesByTypeName.get(t);if(i){for(let a of i)if(a.fieldDataByName=n,a.handleInaccessibleEdges(),a.isLeaf=!1,!!r){a.hasEntitySiblings=!0;for(let o of a.satisfiedFieldSets){if(a.externalFieldSets.has(o))continue;let u=r.targetSubgraphNamesByFieldSet.get(o);for(let l of u!=null?u:[]){if(l===a.subgraphName)continue;let d=this.nodeByNodeName.get(`${l}.${a.typeName}`);d&&a.entityEdges.push(new yd.Edge(this.getNextEdgeId(),d,""))}}}}}setSubgraphName(t){this.subgraphName=t}visitEntity({encounteredEntityNodeNames:t,entityNodeName:n,relativeOriginPaths:r,resDataByRelativeOriginPath:i,resolvedPaths:a,subgraphNameByUnresolvablePath:o,visitedEntities:u}){let l=this.nodeByNodeName.get(n);if(!l)throw new Error(`Fatal: Could not find entity node for "${n}".`);u.add(n);let d=this.nodesByTypeName.get(l.typeName);if(!(d!=null&&d.length))throw new Error(`Fatal: Could not find any nodes for "${n}".`);let p=new Pfe.EntityWalker({encounteredEntityNodeNames:t,index:this.getNextWalkerIndex(),relativeOriginPaths:r,resDataByNodeName:this.resDataByNodeName,resDataByRelativeOriginPath:i,resolvedPaths:a,subgraphNameByUnresolvablePath:o,visitedEntities:u}),E=l.getAllAccessibleEntityNodeNames();for(let y of d){if(y.nodeName!==l.nodeName&&!E.has(y.nodeName))continue;let{areDescendantsResolved:v}=p.visitEntityDescendantConcreteNode({node:y,selectionPath:""});if(v)return}for(let[y,v]of p.selectionPathByEntityNodeName)this.visitEntity({encounteredEntityNodeNames:t,entityNodeName:y,relativeOriginPaths:(0,jc.getMultipliedRelativeOriginPaths)({relativeOriginPaths:r,selectionPath:v}),resDataByRelativeOriginPath:i,resolvedPaths:a,subgraphNameByUnresolvablePath:o,visitedEntities:u})}validate(){for(let t of this.rootNodeByTypeName.values())for(let[n,r]of t.headToSharedTailEdges){let i=r.length>1;if(!i){let p=r[0].node.nodeName;if(this.resolvedRootFieldNodeNames.has(p))continue;this.resolvedRootFieldNodeNames.add(p)}let a=new Ffe.RootFieldWalker({index:this.getNextWalkerIndex(),nodeResolutionDataByNodeName:this.resDataByNodeName});if(a.visitRootFieldEdges({edges:r,rootTypeName:t.typeName.toLowerCase()}).areDescendantsResolved)continue;let o=i?a.entityNodeNamesByPath.size>0:a.pathsByEntityNodeName.size>0;if(a.unresolvablePaths.size<1&&!o)continue;let u=(0,ia.getOrThrowError)(t.fieldDataByName,n,"fieldDataByName"),l=(0,jc.newRootFieldData)(t.typeName,n,u.subgraphNames);if(!o)return{errors:(0,jc.generateRootResolvabilityErrors)({unresolvablePaths:a.unresolvablePaths,resDataByPath:a.resDataByPath,rootFieldData:l}),success:!1};let d=this.validateEntities({isSharedRootField:i,rootFieldData:l,walker:a});if(!d.success)return d}return{success:!0}}consolidateUnresolvableRootWithEntityPaths({pathFromRoot:t,resDataByRelativeOriginPath:n,subgraphNameByUnresolvablePath:r,walker:i}){for(let a of i.unresolvablePaths){if(!a.startsWith(t))continue;let o=a.slice(t.length),u=(0,ia.getOrThrowError)(i.resDataByPath,a,"rootFieldWalker.unresolvablePaths"),l=n.get(o);if(l){if(u.addData(l),l.addData(u),!u.isResolved()){i.unresolvablePaths.delete(a);continue}i.unresolvablePaths.delete(a),r.delete(o)}}}consolidateUnresolvableEntityWithRootPaths({pathFromRoot:t,resDataByRelativeOriginPath:n,subgraphNameByUnresolvablePath:r,walker:i}){for(let a of r.keys()){let o=(0,ia.getOrThrowError)(n,a,"resDataByRelativeOriginPath"),u=`${t}${a}`,l=i.resDataByPath.get(u);l&&(o.addData(l),l.addData(o)),o.isResolved()&&r.delete(a)}}validateSharedRootFieldEntities({rootFieldData:t,walker:n}){let r=new Set;for(let[i,a]of n.entityNodeNamesByPath){let o=new Map,u=new Map;for(let d of a)this.visitEntity({encounteredEntityNodeNames:new Set,entityNodeName:d,resDataByRelativeOriginPath:u,resolvedPaths:r,subgraphNameByUnresolvablePath:o,visitedEntities:new Set});if(this.consolidateUnresolvableRootWithEntityPaths({pathFromRoot:i,resDataByRelativeOriginPath:u,subgraphNameByUnresolvablePath:o,walker:n}),o.size<1)continue;this.consolidateUnresolvableEntityWithRootPaths({pathFromRoot:i,resDataByRelativeOriginPath:u,subgraphNameByUnresolvablePath:o,walker:n});let l=new Array;if(o.size>0&&l.push(...this.getSharedEntityResolvabilityErrors({entityNodeNames:a,resDataByPath:u,pathFromRoot:i,rootFieldData:t,subgraphNameByUnresolvablePath:o})),n.unresolvablePaths.size>0&&l.push(...(0,jc.generateRootResolvabilityErrors)({unresolvablePaths:n.unresolvablePaths,resDataByPath:n.resDataByPath,rootFieldData:t})),!(l.length<1))return{errors:l,success:!1}}return n.unresolvablePaths.size>0?{errors:(0,jc.generateRootResolvabilityErrors)({resDataByPath:n.resDataByPath,rootFieldData:t,unresolvablePaths:n.unresolvablePaths}),success:!1}:{success:!0}}validateRootFieldEntities({rootFieldData:t,walker:n}){var i;let r=new Set;for(let[a,o]of n.pathsByEntityNodeName){let u=new Map;if(this.resDataByNodeName.has(a))continue;let l=(0,ia.getValueOrDefault)(this.resDataByRelativePathByEntity,a,()=>new Map);if(this.visitEntity({encounteredEntityNodeNames:new Set,entityNodeName:a,resDataByRelativeOriginPath:l,resolvedPaths:r,subgraphNameByUnresolvablePath:u,visitedEntities:(0,ia.getValueOrDefault)(this.visitedEntitiesByOriginEntity,a,()=>new Set)}),!(u.size<1))return{errors:this.getEntityResolvabilityErrors({entityNodeName:a,pathFromRoot:(i=(0,ia.getFirstEntry)(o))!=null?i:"",rootFieldData:t,subgraphNameByUnresolvablePath:u}),success:!1}}return{success:!0}}validateEntities(t){return t.isSharedRootField?this.validateSharedRootFieldEntities(t):this.validateRootFieldEntities(t)}getEntityResolvabilityErrors({entityNodeName:t,pathFromRoot:n,rootFieldData:r,subgraphNameByUnresolvablePath:i}){let a=(0,ia.getOrThrowError)(this.resDataByRelativePathByEntity,t,"resDataByRelativePathByEntity"),o=t.split(ah.LITERAL_PERIOD)[1],{fieldSetsByTargetSubgraphName:u}=(0,ia.getOrThrowError)(this.entityDataNodeByTypeName,o,"entityDataNodeByTypeName");return(0,jc.generateEntityResolvabilityErrors)({entityAncestorData:{fieldSetsByTargetSubgraphName:u,subgraphName:"",typeName:o},pathFromRoot:n,resDataByPath:a,rootFieldData:r,subgraphNameByUnresolvablePath:i})}getSharedEntityResolvabilityErrors({entityNodeNames:t,pathFromRoot:n,rootFieldData:r,resDataByPath:i,subgraphNameByUnresolvablePath:a}){let o,u=new Array;for(let d of t){let p=d.split(ah.LITERAL_PERIOD);o!=null||(o=p[1]),u.push(p[0])}let{fieldSetsByTargetSubgraphName:l}=(0,ia.getOrThrowError)(this.entityDataNodeByTypeName,o,"entityDataNodeByTypeName");return(0,jc.generateSharedEntityResolvabilityErrors)({entityAncestors:{fieldSetsByTargetSubgraphName:l,subgraphNames:u,typeName:o},pathFromRoot:n,resDataByPath:i,rootFieldData:r,subgraphNameByUnresolvablePath:a})}};sh.Graph=db});var pb=F(oh=>{"use strict";m();T();N();Object.defineProperty(oh,"__esModule",{value:!0});oh.newFieldSetConditionData=wfe;oh.newConfigurationData=Lfe;function wfe({fieldCoordinatesPath:e,fieldPath:t}){return{fieldCoordinatesPath:e,fieldPath:t}}function Lfe(e,t){return{fieldNames:new Set,isRootNode:e,typeName:t}}});var Tb=F(Kc=>{"use strict";m();T();N();Object.defineProperty(Kc,"__esModule",{value:!0});Kc.NormalizationFactory=void 0;Kc.normalizeSubgraphFromString=kfe;Kc.normalizeSubgraph=vV;Kc.batchNormalize=Mfe;var Q=_e(),bn=Lr(),ci=vp(),Mr=Ru(),Yn=_p(),ie=Gi(),Dp=md(),Cfe=Yv(),Ir=_E(),Ufe=$D(),us=Sp(),gV=HD(),os=Jf(),kt=Yl(),lr=Au(),Nb=fb(),uh=OE(),W=Hn(),Bfe=Kl(),xe=Cr(),bp=pb(),_V=DE();function kfe({noLocation:e,options:t,sdlString:n}){let{error:r,documentNode:i}=(0,bn.safeParse)(n,e);return r||!i?{errors:[(0,ie.subgraphInvalidSyntaxError)(r)],success:!1,warnings:[]}:new Ap({internalGraph:new Nb.Graph,options:t}).normalize(i)}function vV({document:e,internalGraph:t,options:n,subgraphName:r}){return new Ap({internalGraph:t||new Nb.Graph,options:n,subgraphName:r}).normalize(e)}var Rp,mb,ch,SV,Ap=class{constructor({internalGraph:t,options:n,subgraphName:r}){rc(this,Rp);rc(this,ch);g(this,"argumentName","");g(this,"authorizationDataByParentTypeName",new Map);g(this,"concreteTypeNamesByAbstractTypeName",new Map);g(this,"conditionalFieldDataByCoords",new Map);g(this,"configurationDataByTypeName",new Map);g(this,"costs",{fieldWeights:new Map,listSizes:new Map,typeWeights:new Map,directiveArgumentWeights:new Map});g(this,"customDirectiveDefinitionByName",new Map);g(this,"definedDirectiveNames",new Set);g(this,"directiveDefinitionByName",new Map);g(this,"directiveDefinitionDataByName",(0,ci.initializeDirectiveDefinitionDatas)());g(this,"doesParentRequireFetchReasons",!1);g(this,"edfsDirectiveReferences",new Set);g(this,"errors",new Array);g(this,"entityDataByTypeName",new Map);g(this,"entityInterfaceDataByTypeName",new Map);g(this,"eventsConfigurations",new Map);g(this,"fieldSetDataByTypeName",new Map);g(this,"internalGraph");g(this,"invalidConfigureDescriptionNodeDatas",[]);g(this,"invalidORScopesCoords",new Set);g(this,"invalidRepeatedDirectiveNameByCoords",new Map);g(this,"isParentObjectExternal",!1);g(this,"isParentObjectShareable",!1);g(this,"isSubgraphEventDrivenGraph",!1);g(this,"isSubgraphVersionTwo",!1);g(this,"keyFieldSetDatasByTypeName",new Map);g(this,"lastParentNodeKind",Q.Kind.NULL);g(this,"lastChildNodeKind",Q.Kind.NULL);g(this,"options");g(this,"parentTypeNamesWithAuthDirectives",new Set);g(this,"keyFieldSetsByEntityTypeNameByFieldCoords",new Map);g(this,"keyFieldNamesByParentTypeName",new Map);g(this,"fieldCoordsByNamedTypeName",new Map);g(this,"operationTypeNodeByTypeName",new Map);g(this,"originalParentTypeName","");g(this,"originalTypeNameByRenamedTypeName",new Map);g(this,"overridesByTargetSubgraphName",new Map);g(this,"parentDefinitionDataByTypeName",new Map);g(this,"schemaData");g(this,"referencedDirectiveNames",new Set);g(this,"referencedTypeNames",new Set);g(this,"renamedParentTypeName","");g(this,"subgraphName");g(this,"unvalidatedExternalFieldCoords",new Set);g(this,"usesEdfsNatsStreamConfiguration",!1);g(this,"warnings",[]);this.options=n!=null?n:{},this.subgraphName=r||W.NOT_APPLICABLE,this.internalGraph=t,this.internalGraph.setSubgraphName(this.subgraphName),this.schemaData={directivesByName:new Map,kind:Q.Kind.SCHEMA_DEFINITION,name:W.SCHEMA,operationTypes:new Map}}validateArguments(t,n){for(let r of t.argumentDataByName.values()){let i=(0,lr.getTypeNodeNamedTypeName)(r.type);if(Mr.BASE_SCALARS.has(i)){r.namedTypeKind=Q.Kind.SCALAR_TYPE_DEFINITION;continue}let a=this.parentDefinitionDataByTypeName.get(i);if(a){if((0,kt.isInputNodeKind)(a.kind)){r.namedTypeKind=a.kind;continue}this.errors.push((0,ie.invalidNamedTypeError)({data:r,namedTypeData:a,nodeType:`${(0,xe.kindToNodeType)(n)} field argument`}))}}}isTypeNameRootType(t){return W.ROOT_TYPE_NAMES.has(t)||this.operationTypeNodeByTypeName.has(t)}isArgumentValueValid(t,n){if(n.kind===Q.Kind.NULL)return t.kind!==Q.Kind.NON_NULL_TYPE;switch(t.kind){case Q.Kind.LIST_TYPE:{if(n.kind!==Q.Kind.LIST)return this.isArgumentValueValid((0,lr.getNamedTypeNode)(t.type),n);for(let r of n.values)if(!this.isArgumentValueValid(t.type,r))return!1;return!0}case Q.Kind.NAMED_TYPE:switch(t.name.value){case W.BOOLEAN_SCALAR:return n.kind===Q.Kind.BOOLEAN;case W.FLOAT_SCALAR:return n.kind===Q.Kind.FLOAT||n.kind===Q.Kind.INT;case W.ID_SCALAR:return n.kind===Q.Kind.STRING||n.kind===Q.Kind.INT;case W.INT_SCALAR:return n.kind===Q.Kind.INT;case W.FIELD_SET_SCALAR:case W.SCOPE_SCALAR:case W.STRING_SCALAR:return n.kind===Q.Kind.STRING;case W.LINK_IMPORT:return!0;case W.LINK_PURPOSE:return n.kind!==Q.Kind.ENUM?!1:n.value===W.SECURITY||n.value===W.EXECUTION;case W.SUBSCRIPTION_FIELD_CONDITION:case W.SUBSCRIPTION_FILTER_CONDITION:return n.kind===Q.Kind.OBJECT;default:{let r=this.parentDefinitionDataByTypeName.get(t.name.value);if(!r)return!1;if(r.kind===Q.Kind.SCALAR_TYPE_DEFINITION)return!0;if(r.kind===Q.Kind.ENUM_TYPE_DEFINITION){if(n.kind!==Q.Kind.ENUM)return!1;let i=r.enumValueDataByName.get(n.value);return i?!i.directivesByName.has(W.INACCESSIBLE):!1}return r.kind!==Q.Kind.INPUT_OBJECT_TYPE_DEFINITION?!1:n.kind===Q.Kind.OBJECT}}default:return this.isArgumentValueValid(t.type,n)}}handleFieldInheritableDirectives({directivesByName:t,fieldName:n,inheritedDirectiveNames:r,parentData:i}){this.doesParentRequireFetchReasons&&!t.has(W.REQUIRE_FETCH_REASONS)&&(t.set(W.REQUIRE_FETCH_REASONS,[(0,xe.generateSimpleDirective)(W.REQUIRE_FETCH_REASONS)]),r.add(W.REQUIRE_FETCH_REASONS)),(this.doesParentRequireFetchReasons||t.has(W.REQUIRE_FETCH_REASONS))&&i.requireFetchReasonsFieldNames.add(n),(0,Yn.isObjectDefinitionData)(i)&&(this.isParentObjectExternal&&!t.has(W.EXTERNAL)&&(t.set(W.EXTERNAL,[(0,xe.generateSimpleDirective)(W.EXTERNAL)]),r.add(W.EXTERNAL)),t.has(W.EXTERNAL)&&this.unvalidatedExternalFieldCoords.add(`${i.name}.${n}`),this.isParentObjectShareable&&!t.has(W.SHAREABLE)&&(t.set(W.SHAREABLE,[(0,xe.generateSimpleDirective)(W.SHAREABLE)]),r.add(W.SHAREABLE)))}extractDirectives(t,n){if(!t.directives)return n;let r=(0,Yn.isCompositeOutputNodeKind)(t.kind),i=(0,Yn.isObjectNodeKind)(t.kind);for(let a of t.directives){let o=a.name.value;o===W.SHAREABLE?(0,xe.getValueOrDefault)(n,o,()=>[a]):(0,xe.getValueOrDefault)(n,o,()=>[]).push(a),r&&(this.doesParentRequireFetchReasons||(this.doesParentRequireFetchReasons=o===W.REQUIRE_FETCH_REASONS),i&&(this.isParentObjectExternal||(this.isParentObjectExternal=o===W.EXTERNAL),this.isParentObjectShareable||(this.isParentObjectShareable=o===W.SHAREABLE)))}return n}validateDirective({data:t,definitionData:n,directiveCoords:r,directiveNode:i,errorMessages:a,requiredArgumentNames:o}){let u=i.name.value,l=t.kind===Q.Kind.FIELD_DEFINITION?t.renamedParentTypeName||t.originalParentTypeName:t.name,d=u===W.AUTHENTICATED,p=u===W.COST,E=(0,kt.isFieldData)(t),y=u===W.LIST_SIZE,v=u===W.OVERRIDE,R=u===W.REQUIRES_SCOPES,B=u===W.SEMANTIC_NON_NULL;if(!i.arguments||i.arguments.length<1)return n.requiredArgumentNames.size>0&&a.push((0,ie.undefinedRequiredArgumentsErrorMessage)(u,o,[])),d&&this.handleAuthenticatedDirective(t,l),B&&E&&((0,kt.isTypeRequired)(t.type)?a.push((0,ie.semanticNonNullLevelsNonNullErrorMessage)({typeString:(0,Ir.printTypeNode)(t.type),value:"0"})):t.nullLevelsBySubgraphName.set(this.subgraphName,new Set([0]))),y&&E&&!(0,kt.isTypeNodeListType)(t.type)&&a.push((0,ie.listSizeFieldMustReturnListOrUseSizedFieldsErrorMessage)(r,(0,Ir.printTypeNode)(t.type))),a;let V=new Set,J=new Set,ne=new Set,te=[];for(let he of i.arguments){let we=he.name.value;if(V.has(we)){J.add(we);continue}V.add(we);let Qe=n.argumentTypeNodeByName.get(we);if(!Qe){ne.add(we);continue}if(!this.isArgumentValueValid(Qe.typeNode,he.value)){a.push((0,ie.invalidArgumentValueErrorMessage)((0,Q.print)(he.value),`@${u}`,we,(0,Ir.printTypeNode)(Qe.typeNode)));continue}if(v&&E){this.handleOverrideDirective({data:t,directiveCoords:r,errorMessages:a,targetSubgraphName:he.value.value});continue}if(B&&E){this.handleSemanticNonNullDirective({data:t,directiveNode:i,errorMessages:a});continue}!R||we!==W.SCOPES||this.extractRequiredScopes({directiveCoords:r,orScopes:he.value.values,requiredScopes:te})}p?this.handleCostDirective({data:t,directiveCoords:r,directiveNode:i,errorMessages:a}):y&&E&&this.handleListSizeDirective({data:t,directiveCoords:r,directiveNode:i,errorMessages:a}),J.size>0&&a.push((0,ie.duplicateDirectiveArgumentDefinitionsErrorMessage)([...J])),ne.size>0&&a.push((0,ie.unexpectedDirectiveArgumentErrorMessage)(u,[...ne]));let Ne=(0,xe.getEntriesNotInHashSet)(o,V);if(Ne.length>0&&a.push((0,ie.undefinedRequiredArgumentsErrorMessage)(u,o,Ne)),a.length>0||!R)return a;let Ee=(0,xe.getValueOrDefault)(this.authorizationDataByParentTypeName,l,()=>(0,Yn.newAuthorizationData)(l));if(t.kind!==Q.Kind.FIELD_DEFINITION)this.parentTypeNamesWithAuthDirectives.add(l),Ee.requiredScopes.push(...te);else{let he=(0,xe.getValueOrDefault)(Ee.fieldAuthDataByFieldName,t.name,()=>(0,Yn.newFieldAuthorizationData)(t.name));he.inheritedData.requiredScopes.push(...te),he.originalData.requiredScopes.push(...te)}return a}validateDirectives(t,n){let r=new Set;for(let[i,a]of t.directivesByName){let o=this.directiveDefinitionDataByName.get(i);if(!o){r.has(i)||(this.errors.push((0,ie.undefinedDirectiveError)(i,n)),r.add(i));continue}let u=[],l=(0,bn.nodeKindToDirectiveLocation)(t.kind);if(o.locations.has(l)||u.push((0,ie.invalidDirectiveLocationErrorMessage)(i,l)),a.length>1&&!o.isRepeatable){let p=(0,xe.getValueOrDefault)(this.invalidRepeatedDirectiveNameByCoords,n,()=>new Set);p.has(i)||(p.add(i),u.push((0,ie.invalidRepeatedDirectiveErrorMessage)(i)))}let d=[...o.requiredArgumentNames];for(let p=0;p0&&this.errors.push((0,ie.invalidDirectiveError)(i,n,(0,xe.numberToOrdinal)(p+1),E))}}switch(t.kind){case Q.Kind.ENUM_TYPE_DEFINITION:{for(let[i,a]of t.enumValueDataByName)this.validateDirectives(a,`${t.name}.${i}`);return}case Q.Kind.FIELD_DEFINITION:{for(let[i,a]of t.argumentDataByName)this.validateDirectives(a,`${t.originalParentTypeName}.${t.name}(${i}: ...)`);return}case Q.Kind.INPUT_OBJECT_TYPE_DEFINITION:{for(let[i,a]of t.inputValueDataByName)this.validateDirectives(a,`${t.name}.${i}`);return}case Q.Kind.INTERFACE_TYPE_DEFINITION:case Q.Kind.OBJECT_TYPE_DEFINITION:{for(let[i,a]of t.fieldDataByName)this.validateDirectives(a,`${t.name}.${i}`);return}default:return}}getNodeExtensionType(t,n,r=!1){return t?os.ExtensionType.REAL:r||!n.has(W.EXTENDS)?os.ExtensionType.NONE:os.ExtensionType.EXTENDS}setParentDataExtensionType(t,n){switch(t.extensionType){case os.ExtensionType.EXTENDS:case os.ExtensionType.NONE:{if(n===os.ExtensionType.REAL)return;this.errors.push((0,ie.duplicateTypeDefinitionError)((0,xe.kindToNodeType)(t.kind),t.name));return}default:t.extensionType=n}}extractConfigureDescriptionData(t,n){var i,a;if(!n.arguments||n.arguments.length<1){t.description||this.invalidConfigureDescriptionNodeDatas.push(t),t.configureDescriptionDataBySubgraphName.set(this.subgraphName,{propagate:!0,description:((i=t.description)==null?void 0:i.value)||""});return}let r={propagate:!0,description:((a=t.description)==null?void 0:a.value)||""};for(let o of n.arguments)switch(o.name.value){case W.PROPAGATE:{if(o.value.kind!=Q.Kind.BOOLEAN)return;r.propagate=o.value.value;break}case W.DESCRIPTION_OVERRIDE:{if(o.value.kind!=Q.Kind.STRING)return;r.description=o.value.value;break}default:return}!t.description&&!r.description&&this.invalidConfigureDescriptionNodeDatas.push(t),t.configureDescriptionDataBySubgraphName.set(this.subgraphName,r)}extractConfigureDescriptionsData(t){let n=t.directivesByName.get(W.CONFIGURE_DESCRIPTION);n&&n.length==1&&this.extractConfigureDescriptionData(t,n[0])}extractImplementedInterfaceTypeNames(t,n){if(!t.interfaces)return n;let r=t.name.value;for(let i of t.interfaces){let a=i.name.value;if(n.has(a)){this.errors.push((0,ie.duplicateImplementedInterfaceError)((0,Yn.kindToConvertedTypeString)(t.kind),r,a));continue}n.add(a)}return n}updateCompositeOutputDataByNode(t,n,r){this.setParentDataExtensionType(n,r),this.extractImplementedInterfaceTypeNames(t,n.implementedInterfaceTypeNames),n.description||(n.description=(0,bn.formatDescription)("description"in t?t.description:void 0)),this.extractConfigureDescriptionsData(n),n.isEntity||(n.isEntity=n.directivesByName.has(W.KEY)),n.isInaccessible||(n.isInaccessible=n.directivesByName.has(W.INACCESSIBLE)),n.subgraphNames.add(this.subgraphName)}addConcreteTypeNamesForImplementedInterfaces(t,n){for(let r of t)(0,xe.getValueOrDefault)(this.concreteTypeNamesByAbstractTypeName,r,()=>new Set).add(n),this.internalGraph.addEdge(this.internalGraph.addOrUpdateNode(r,{isAbstract:!0}),this.internalGraph.addOrUpdateNode(n),n,!0)}extractArguments(t,n){var o;if(!((o=n.arguments)!=null&&o.length))return t;let r=n.name.value,i=`${this.originalParentTypeName}.${r}`,a=new Set;for(let u of n.arguments){let l=u.name.value;if(t.has(l)){a.add(l);continue}this.addInputValueDataByNode({fieldName:r,inputValueDataByName:t,isArgument:!0,node:u,originalParentTypeName:this.originalParentTypeName,renamedParentTypeName:this.renamedParentTypeName})}return a.size>0&&this.errors.push((0,ie.duplicateArgumentsError)(i,[...a])),t}addPersistedDirectiveDefinitionDataByNode(t,n,r){let i=n.name.value,a=`@${i}`,o=new Map;for(let u of n.arguments||[])this.addInputValueDataByNode({inputValueDataByName:o,isArgument:!0,node:u,originalParentTypeName:a});t.set(i,{argumentDataByName:o,executableLocations:r,name:i,repeatable:n.repeatable,subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)(n.description)})}extractDirectiveLocations(t,n){let r=new Set,i=new Set;for(let a of t.locations){let o=a.value;if(!i.has(o)){if(!W.EXECUTABLE_DIRECTIVE_LOCATIONS.has(o)&&!Dp.TYPE_SYSTEM_DIRECTIVE_LOCATIONS.has(o)){n.push((0,ie.invalidDirectiveDefinitionLocationErrorMessage)(o)),i.add(o);continue}if(r.has(o)){n.push((0,ie.duplicateDirectiveDefinitionLocationErrorMessage)(o)),i.add(o);continue}r.add(o)}}return r}extractArgumentData(t,n){let r=new Map,i=new Set,a=new Set,o={argumentTypeNodeByName:r,optionalArgumentNames:i,requiredArgumentNames:a};if(!t)return o;let u=new Set;for(let l of t){let d=l.name.value;if(r.has(d)){u.add(d);continue}l.defaultValue&&i.add(d),(0,kt.isTypeRequired)(l.type)&&!l.defaultValue&&a.add(d),r.set(d,{name:d,typeNode:l.type,defaultValue:l.defaultValue})}return u.size>0&&n.push((0,ie.duplicateDirectiveDefinitionArgumentErrorMessage)([...u])),o}extractDirectiveArgumentCosts(t){var r;if(!t.arguments)return;let n=t.name.value;for(let i of t.arguments)if(i.directives)for(let a of i.directives){if(a.name.value!==W.COST)continue;let o=(r=a.arguments)==null?void 0:r.find(l=>l.name.value===W.WEIGHT);if(!o)continue;if(o.value.kind!==Q.Kind.INT){let l=`@${n}(${i.name.value}: ...)`;this.errors.push((0,ie.invalidDirectiveError)(W.COST,l,"1st",[(0,ie.invalidArgumentValueErrorMessage)((0,Q.print)(o.value),`@${W.COST}`,W.WEIGHT,"Int!")]));continue}let u=parseInt(o.value.value,10);this.costs.directiveArgumentWeights.set(`${n}.${i.name.value}`,u)}}addDirectiveDefinitionDataByNode(t){let n=t.name.value;if(this.definedDirectiveNames.has(n))return this.errors.push((0,ie.duplicateDirectiveDefinitionError)(n)),!1;this.definedDirectiveNames.add(n),this.extractDirectiveArgumentCosts(t);let r=Mr.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.get(n);if(r)return this.directiveDefinitionByName.set(n,r),this.isSubgraphVersionTwo=!0,!1;if(Mr.DIRECTIVE_DEFINITION_BY_NAME.has(n))return!1;this.directiveDefinitionByName.set(n,t);let i=[],{argumentTypeNodeByName:a,optionalArgumentNames:o,requiredArgumentNames:u}=this.extractArgumentData(t.arguments,i);return this.directiveDefinitionDataByName.set(n,{argumentTypeNodeByName:a,isRepeatable:t.repeatable,locations:this.extractDirectiveLocations(t,i),name:n,node:t,optionalArgumentNames:o,requiredArgumentNames:u}),i.length>0&&this.errors.push((0,ie.invalidDirectiveDefinitionError)(n,i)),!0}addFieldDataByNode(t,n,r,i,a=new Set){let o=n.name.value,u=this.renamedParentTypeName||this.originalParentTypeName,l=`${this.originalParentTypeName}.${o}`,{isExternal:d,isShareable:p}=(0,kt.isNodeExternalOrShareable)(n,!this.isSubgraphVersionTwo,i),E=(0,lr.getTypeNodeNamedTypeName)(n.type),y={argumentDataByName:r,configureDescriptionDataBySubgraphName:new Map,externalFieldDataBySubgraphName:new Map([[this.subgraphName,(0,kt.newExternalFieldData)(d)]]),federatedCoords:`${u}.${o}`,inheritedDirectiveNames:a,isInaccessible:i.has(W.INACCESSIBLE),isShareableBySubgraphName:new Map([[this.subgraphName,p]]),kind:Q.Kind.FIELD_DEFINITION,name:o,namedTypeKind:Mr.BASE_SCALARS.has(E)?Q.Kind.SCALAR_TYPE_DEFINITION:Q.Kind.NULL,namedTypeName:E,node:(0,lr.getMutableFieldNode)(n,l,this.errors),nullLevelsBySubgraphName:new Map,originalParentTypeName:this.originalParentTypeName,persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),renamedParentTypeName:u,subgraphNames:new Set([this.subgraphName]),type:(0,lr.getMutableTypeNode)(n.type,l,this.errors),directivesByName:i,description:(0,bn.formatDescription)(n.description)};return Mr.BASE_SCALARS.has(y.namedTypeName)||this.referencedTypeNames.add(y.namedTypeName),this.extractConfigureDescriptionsData(y),t.set(o,y),y}addInputValueDataByNode({fieldName:t,inputValueDataByName:n,isArgument:r,node:i,originalParentTypeName:a,renamedParentTypeName:o}){let u=o||a,l=i.name.value,d=r?`${a}${t?`.${t}`:""}(${l}: ...)`:`${a}.${l}`;i.defaultValue&&!(0,kt.areDefaultValuesCompatible)(i.type,i.defaultValue)&&this.errors.push((0,ie.incompatibleInputValueDefaultValueTypeError)((r?W.ARGUMENT:W.INPUT_FIELD)+` "${l}"`,d,(0,Ir.printTypeNode)(i.type),(0,Q.print)(i.defaultValue)));let p=r?`${u}${t?`.${t}`:""}(${l}: ...)`:`${u}.${l}`,E=(0,lr.getTypeNodeNamedTypeName)(i.type),y={configureDescriptionDataBySubgraphName:new Map,directivesByName:this.extractDirectives(i,new Map),federatedCoords:p,fieldName:t,includeDefaultValue:!!i.defaultValue,isArgument:r,kind:r?Q.Kind.ARGUMENT:Q.Kind.INPUT_VALUE_DEFINITION,name:l,namedTypeKind:Mr.BASE_SCALARS.has(E)?Q.Kind.SCALAR_TYPE_DEFINITION:Q.Kind.NULL,namedTypeName:E,node:(0,lr.getMutableInputValueNode)(i,a,this.errors),originalCoords:d,originalParentTypeName:a,persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),renamedParentTypeName:u,requiredSubgraphNames:new Set((0,kt.isTypeRequired)(i.type)?[this.subgraphName]:[]),subgraphNames:new Set([this.subgraphName]),type:(0,lr.getMutableTypeNode)(i.type,a,this.errors),defaultValue:i.defaultValue,description:(0,bn.formatDescription)(i.description)};this.extractConfigureDescriptionsData(y),n.set(l,y)}upsertInterfaceDataByNode(t,n=!1){let r=t.name.value,i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(i==null?void 0:i.directivesByName)||new Map),o=this.getNodeExtensionType(n,a),u=this.entityInterfaceDataByTypeName.get(r);if(u&&t.fields)for(let d of t.fields)u.interfaceFieldNames.add(d.name.value);if(i){if(i.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION){this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind)));return}this.updateCompositeOutputDataByNode(t,i,o);return}let l={configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:o,fieldDataByName:new Map,implementedInterfaceTypeNames:this.extractImplementedInterfaceTypeNames(t,new Set),isEntity:a.has(W.KEY),isInaccessible:a.has(W.INACCESSIBLE),kind:Q.Kind.INTERFACE_TYPE_DEFINITION,name:r,node:(0,lr.getMutableInterfaceNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),requireFetchReasonsFieldNames:new Set,subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};this.extractConfigureDescriptionsData(l),this.parentDefinitionDataByTypeName.set(r,l)}getRenamedRootTypeName(t){let n=this.operationTypeNodeByTypeName.get(t);if(!n)return t;switch(n){case Q.OperationTypeNode.MUTATION:return W.MUTATION;case Q.OperationTypeNode.SUBSCRIPTION:return W.SUBSCRIPTION;default:return W.QUERY}}addInterfaceObjectFieldsByNode(t){let n=t.name.value,r=this.entityInterfaceDataByTypeName.get(n);if(!(!r||!r.isInterfaceObject||!t.fields))for(let i of t.fields)r.interfaceObjectFieldNames.add(i.name.value)}upsertObjectDataByNode(t,n=!1){var p;let r=t.name.value,i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(p=i==null?void 0:i.directivesByName)!=null?p:new Map),o=this.isTypeNameRootType(r),u=this.getNodeExtensionType(n,a,o);if(this.addInterfaceObjectFieldsByNode(t),i){if(i.kind!==Q.Kind.OBJECT_TYPE_DEFINITION){this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind)));return}this.updateCompositeOutputDataByNode(t,i,u),a.has(W.INTERFACE_OBJECT)||this.addConcreteTypeNamesForImplementedInterfaces(i.implementedInterfaceTypeNames,r);return}let l=this.extractImplementedInterfaceTypeNames(t,new Set);a.has(W.INTERFACE_OBJECT)||this.addConcreteTypeNamesForImplementedInterfaces(l,r);let d={configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:u,fieldDataByName:new Map,implementedInterfaceTypeNames:l,isEntity:a.has(W.KEY),isInaccessible:a.has(W.INACCESSIBLE),isRootType:o,kind:Q.Kind.OBJECT_TYPE_DEFINITION,name:r,node:(0,lr.getMutableObjectNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),requireFetchReasonsFieldNames:new Set,renamedTypeName:this.getRenamedRootTypeName(r),subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};this.extractConfigureDescriptionsData(d),this.parentDefinitionDataByTypeName.set(r,d)}upsertEnumDataByNode(t,n=!1){let r=t.name.value;this.internalGraph.addOrUpdateNode(r,{isLeaf:!0});let i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(i==null?void 0:i.directivesByName)||new Map),o=this.getNodeExtensionType(n,a);if(i){if(i.kind!==Q.Kind.ENUM_TYPE_DEFINITION){this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind)));return}this.setParentDataExtensionType(i,o),i.isInaccessible||(i.isInaccessible=a.has(W.INACCESSIBLE)),i.subgraphNames.add(this.subgraphName),i.description||(i.description=(0,bn.formatDescription)("description"in t?t.description:void 0)),this.extractConfigureDescriptionsData(i);return}let u={appearances:1,configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:o,enumValueDataByName:new Map,isInaccessible:a.has(W.INACCESSIBLE),kind:Q.Kind.ENUM_TYPE_DEFINITION,name:r,node:(0,lr.getMutableEnumNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};this.extractConfigureDescriptionsData(u),this.parentDefinitionDataByTypeName.set(r,u)}upsertInputObjectByNode(t,n=!1){let r=t.name.value,i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(i==null?void 0:i.directivesByName)||new Map),o=this.getNodeExtensionType(n,a);if(i)return i.kind!==Q.Kind.INPUT_OBJECT_TYPE_DEFINITION?(this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind))),{success:!1}):(this.setParentDataExtensionType(i,o),i.isInaccessible||(i.isInaccessible=a.has(W.INACCESSIBLE)),i.subgraphNames.add(this.subgraphName),i.description||(i.description=(0,bn.formatDescription)("description"in t?t.description:void 0)),this.extractConfigureDescriptionsData(i),{success:!0,data:i});let u={configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:o,inputValueDataByName:new Map,isInaccessible:a.has(W.INACCESSIBLE),kind:Q.Kind.INPUT_OBJECT_TYPE_DEFINITION,name:r,node:(0,lr.getMutableInputObjectNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};return this.extractConfigureDescriptionsData(u),this.parentDefinitionDataByTypeName.set(r,u),{success:!0,data:u}}upsertScalarByNode(t,n=!1){let r=t.name.value;this.internalGraph.addOrUpdateNode(r,{isLeaf:!0});let i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(i==null?void 0:i.directivesByName)||new Map),o=this.getNodeExtensionType(n,a);if(i){if(i.kind!==Q.Kind.SCALAR_TYPE_DEFINITION){this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind)));return}this.setParentDataExtensionType(i,o),i.description||(i.description=(0,bn.formatDescription)("description"in t?t.description:void 0)),i.subgraphNames.add(this.subgraphName),this.extractConfigureDescriptionsData(i);return}let u={configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:o,kind:Q.Kind.SCALAR_TYPE_DEFINITION,name:r,node:(0,lr.getMutableScalarNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};this.extractConfigureDescriptionsData(u),this.parentDefinitionDataByTypeName.set(r,u)}extractUnionMembers(t,n){if(!t.types)return n;let r=t.name.value;for(let i of t.types){let a=i.name.value;if(n.has(a)){this.errors.push((0,ie.duplicateUnionMemberDefinitionError)(r,a));continue}(0,xe.getValueOrDefault)(this.concreteTypeNamesByAbstractTypeName,r,()=>new Set).add(a),Mr.BASE_SCALARS.has(a)||this.referencedTypeNames.add(a),n.set(a,i)}return n}upsertUnionByNode(t,n=!1){let r=t.name.value,i=this.parentDefinitionDataByTypeName.get(r),a=this.extractDirectives(t,(i==null?void 0:i.directivesByName)||new Map),o=this.getNodeExtensionType(n,a);if(this.addConcreteTypeNamesForUnion(t),i){if(i.kind!==Q.Kind.UNION_TYPE_DEFINITION){this.errors.push((0,ie.multipleNamedTypeDefinitionError)(r,(0,xe.kindToNodeType)(i.kind),(0,Yn.kindToConvertedTypeString)(t.kind)));return}this.setParentDataExtensionType(i,o),this.extractUnionMembers(t,i.memberByMemberTypeName),i.description||(i.description=(0,bn.formatDescription)("description"in t?t.description:void 0)),i.subgraphNames.add(this.subgraphName),this.extractConfigureDescriptionsData(i);return}let u={configureDescriptionDataBySubgraphName:new Map,directivesByName:a,extensionType:o,kind:Q.Kind.UNION_TYPE_DEFINITION,memberByMemberTypeName:this.extractUnionMembers(t,new Map),name:r,node:(0,lr.getMutableUnionNode)(t.name),persistedDirectivesData:(0,kt.newPersistedDirectivesData)(),subgraphNames:new Set([this.subgraphName]),description:(0,bn.formatDescription)("description"in t?t.description:void 0)};this.extractConfigureDescriptionsData(u),this.parentDefinitionDataByTypeName.set(r,u)}extractKeyFieldSets(t,n){var a;let r=t.name.value;if(!((a=t.directives)!=null&&a.length)){this.errors.push((0,ie.expectedEntityError)(r));return}let i=0;for(let o of t.directives){if(o.name.value!==W.KEY||(i+=1,!o.arguments||o.arguments.length<1))continue;let u,l=!1;for(let v of o.arguments){if(v.name.value===W.RESOLVABLE){v.value.kind===Q.Kind.BOOLEAN&&!v.value.value&&(l=!0);continue}if(v.name.value!==W.FIELDS){u=void 0;break}if(v.value.kind!==Q.Kind.STRING){u=void 0;break}u=v.value.value}if(u===void 0)continue;let{error:d,documentNode:p}=(0,bn.safeParse)("{"+u+"}");if(d||!p){this.errors.push((0,ie.invalidDirectiveError)(W.KEY,r,(0,xe.numberToOrdinal)(i),[(0,ie.unparsableFieldSetErrorMessage)(u,d)]));continue}let E=(0,ci.getNormalizedFieldSet)(p),y=n.get(E);y?y.isUnresolvable||(y.isUnresolvable=l):n.set(E,{documentNode:p,isUnresolvable:l,normalizedFieldSet:E,rawFieldSet:u})}}getFieldSetParent(t,n,r,i){if(!t)return{fieldSetParentData:n};let a=(0,xe.getOrThrowError)(n.fieldDataByName,r,`${i}.fieldDataByFieldName`),o=(0,lr.getTypeNodeNamedTypeName)(a.node.type),u=`${i}.${r}`;if(Mr.BASE_SCALARS.has(o))return{errorString:(0,ie.incompatibleTypeWithProvidesErrorMessage)({fieldCoords:u,responseType:o,subgraphName:this.subgraphName})};let l=this.parentDefinitionDataByTypeName.get(o);return l?l.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION&&l.kind!==Q.Kind.OBJECT_TYPE_DEFINITION?{errorString:(0,ie.incompatibleTypeWithProvidesErrorMessage)({fieldCoords:u,responseType:o,subgraphName:this.subgraphName})}:{fieldSetParentData:l}:{errorString:(0,ie.unknownNamedTypeErrorMessage)(u,o)}}validateConditionalFieldSet(t,n,r,i,a){let{error:o,documentNode:u}=(0,bn.safeParse)("{"+n+"}");if(o||!u)return{errorMessages:[(0,ie.unparsableFieldSetErrorMessage)(n,o)]};let l=this,d=[t],p=(0,ci.getConditionalFieldSetDirectiveName)(i),E=[],y=`${a}.${r}`,v=(0,ci.getInitialFieldCoordsPath)(i,y),R=[r],B=new Set,V=[],J=-1,ne=!0,te=r,Ne=!1;return(0,Q.visit)(u,{Argument:{enter(){return!1}},Field:{enter(Ee){var rn,xr;let he=d[J],we=he.name;if(he.kind===Q.Kind.UNION_TYPE_DEFINITION)return V.push((0,ie.invalidSelectionOnUnionErrorMessage)(n,v,we)),Q.BREAK;let Qe=Ee.name.value,Z=`${we}.${Qe}`;if(l.unvalidatedExternalFieldCoords.delete(Z),ne)return V.push((0,ie.invalidSelectionSetErrorMessage)(n,v,we,(0,xe.kindToNodeType)(he.kind))),Q.BREAK;if(v.push(Z),R.push(Qe),te=Qe,Qe===W.TYPENAME){if(i)return V.push((0,ie.typeNameAlreadyProvidedErrorMessage)(Z,l.subgraphName)),Q.BREAK;B.size<1&&Il(rn=l,Rp,mb).call(rn,{currentFieldCoords:Z,directiveCoords:y,directiveName:p,fieldSet:n});return}let Se=he.fieldDataByName.get(Qe);if(!Se)return V.push((0,ie.undefinedFieldInFieldSetErrorMessage)(n,we,Qe)),Q.BREAK;if(E[J].has(Qe))return V.push((0,ie.duplicateFieldInFieldSetErrorMessage)(n,Z)),Q.BREAK;E[J].add(Qe);let{isDefinedExternal:ht,isUnconditionallyProvided:on}=(0,xe.getOrThrowError)(Se.externalFieldDataBySubgraphName,l.subgraphName,`${Z}.externalFieldDataBySubgraphName`),En=ht&&!on;on||(Ne=!0);let un=(0,lr.getTypeNodeNamedTypeName)(Se.node.type),Ft=l.parentDefinitionDataByTypeName.get(un);if(Mr.BASE_SCALARS.has(un)||(Ft==null?void 0:Ft.kind)===Q.Kind.SCALAR_TYPE_DEFINITION||(Ft==null?void 0:Ft.kind)===Q.Kind.ENUM_TYPE_DEFINITION){if(B.size<1&&!ht){Il(xr=l,Rp,mb).call(xr,{currentFieldCoords:Z,directiveCoords:y,directiveName:p,fieldSet:n});return}if(B.size<1&&on){l.isSubgraphVersionTwo?V.push((0,ie.fieldAlreadyProvidedErrorMessage)(Z,l.subgraphName,p)):l.warnings.push((0,us.fieldAlreadyProvidedWarning)(Z,p,y,l.subgraphName));return}if(!En&&!i)return;let nr=(0,xe.getValueOrDefault)(l.conditionalFieldDataByCoords,Z,kt.newConditionalFieldData),hn=(0,bp.newFieldSetConditionData)({fieldCoordinatesPath:[...v],fieldPath:[...R]});i?nr.providedBy.push(hn):nr.requiredBy.push(hn);return}if(!Ft)return V.push((0,ie.unknownTypeInFieldSetErrorMessage)(n,Z,un)),Q.BREAK;if(ht&&(i&&(0,xe.getValueOrDefault)(l.conditionalFieldDataByCoords,Z,kt.newConditionalFieldData).providedBy.push((0,bp.newFieldSetConditionData)({fieldCoordinatesPath:[...v],fieldPath:[...R]})),B.add(Z)),Ft.kind===Q.Kind.OBJECT_TYPE_DEFINITION||Ft.kind===Q.Kind.INTERFACE_TYPE_DEFINITION||Ft.kind===Q.Kind.UNION_TYPE_DEFINITION){ne=!0,d.push(Ft);return}},leave(){B.delete(v.pop()||""),R.pop()}},InlineFragment:{enter(Ee){let he=d[J],we=he.name,Qe=v.length<1?t.name:v[v.length-1];if(!Ee.typeCondition)return V.push((0,ie.inlineFragmentWithoutTypeConditionErrorMessage)(n,Qe)),Q.BREAK;let Z=Ee.typeCondition.name.value;if(Z===we){d.push(he),ne=!0;return}if(!(0,bn.isKindAbstract)(he.kind))return V.push((0,ie.invalidInlineFragmentTypeErrorMessage)(n,v,Z,we)),Q.BREAK;let Se=l.parentDefinitionDataByTypeName.get(Z);if(!Se)return V.push((0,ie.unknownInlineFragmentTypeConditionErrorMessage)(n,v,we,Z)),Q.BREAK;switch(ne=!0,Se.kind){case Q.Kind.INTERFACE_TYPE_DEFINITION:{if(!Se.implementedInterfaceTypeNames.has(we))break;d.push(Se);return}case Q.Kind.OBJECT_TYPE_DEFINITION:{let ht=l.concreteTypeNamesByAbstractTypeName.get(we);if(!ht||!ht.has(Z))break;d.push(Se);return}case Q.Kind.UNION_TYPE_DEFINITION:{d.push(Se);return}default:return V.push((0,ie.invalidInlineFragmentTypeConditionTypeErrorMessage)(n,v,we,Z,(0,xe.kindToNodeType)(Se.kind))),Q.BREAK}return V.push((0,ie.invalidInlineFragmentTypeConditionErrorMessage)(n,v,Z,(0,xe.kindToNodeType)(he.kind),we)),Q.BREAK}},SelectionSet:{enter(){if(!ne){let Ee=d[J];if(Ee.kind===Q.Kind.UNION_TYPE_DEFINITION)return V.push((0,ie.unparsableFieldSetSelectionErrorMessage)(n,te)),Q.BREAK;if(te===W.TYPENAME)return V.push((0,ie.invalidSelectionSetDefinitionErrorMessage)(n,v,W.STRING_SCALAR,(0,xe.kindToNodeType)(Q.Kind.SCALAR_TYPE_DEFINITION))),Q.BREAK;let he=Ee.fieldDataByName.get(te);if(!he)return V.push((0,ie.undefinedFieldInFieldSetErrorMessage)(n,Ee.name,te)),Q.BREAK;let we=(0,lr.getTypeNodeNamedTypeName)(he.node.type),Qe=l.parentDefinitionDataByTypeName.get(we),Z=Qe?Qe.kind:Q.Kind.SCALAR_TYPE_DEFINITION;return V.push((0,ie.invalidSelectionSetDefinitionErrorMessage)(n,v,we,(0,xe.kindToNodeType)(Z))),Q.BREAK}if(J+=1,ne=!1,J<0||J>=d.length)return V.push((0,ie.unparsableFieldSetSelectionErrorMessage)(n,te)),Q.BREAK;E.push(new Set)},leave(){if(ne){let Ee=d[J+1];V.push((0,ie.invalidSelectionSetErrorMessage)(n,v,Ee.name,(0,xe.kindToNodeType)(Ee.kind))),ne=!1}J-=1,d.pop(),E.pop()}}}),V.length>0||!Ne?{errorMessages:V}:{configuration:{fieldName:r,selectionSet:(0,ci.getNormalizedFieldSet)(u)},errorMessages:V}}validateProvidesOrRequires(t,n,r){let i=[],a=[],o=(0,kt.getParentTypeName)(t);for(let[u,l]of n){let{fieldSetParentData:d,errorString:p}=this.getFieldSetParent(r,t,u,o),E=`${o}.${u}`;if(p){i.push(p);continue}if(!d)continue;let{errorMessages:y,configuration:v}=this.validateConditionalFieldSet(d,l,u,r,o);if(y.length>0){i.push(` On field "${E}": - -`+y.join(W.HYPHEN_JOIN));continue}v&&a.push(v)}if(i.length>0){this.errors.push((0,ie.invalidProvidesOrRequiresDirectivesError)((0,ci.getConditionalFieldSetDirectiveName)(r),i));return}if(a.length>0)return a}validateInterfaceImplementations(t){if(t.implementedInterfaceTypeNames.size<1)return;let n=t.directivesByName.has(W.INACCESSIBLE),r=new Map,i=new Map,a=!1;for(let o of t.implementedInterfaceTypeNames){let u=this.parentDefinitionDataByTypeName.get(o);if(Mr.BASE_SCALARS.has(o)&&this.referencedTypeNames.add(o),!u)continue;if(u.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION){i.set(u.name,(0,xe.kindToNodeType)(u.kind));continue}if(t.name===u.name){a=!0;continue}let l={invalidFieldImplementations:new Map,unimplementedFields:[]},d=!1;for(let[p,E]of u.fieldDataByName){this.unvalidatedExternalFieldCoords.delete(`${t.name}.${p}`);let y=!1,v=t.fieldDataByName.get(p);if(!v){d=!0,l.unimplementedFields.push(p);continue}let R={invalidAdditionalArguments:new Set,invalidImplementedArguments:[],isInaccessible:!1,originalResponseType:(0,Ir.printTypeNode)(E.node.type),unimplementedArguments:new Set};(0,kt.isTypeValidImplementation)(E.node.type,v.node.type,this.concreteTypeNamesByAbstractTypeName)||(d=!0,y=!0,R.implementedResponseType=(0,Ir.printTypeNode)(v.node.type));let B=new Set;for(let[V,J]of E.argumentDataByName){B.add(V);let ne=v.argumentDataByName.get(V);if(!ne){d=!0,y=!0,R.unimplementedArguments.add(V);continue}let te=(0,Ir.printTypeNode)(ne.type),Ne=(0,Ir.printTypeNode)(J.type);Ne!==te&&(d=!0,y=!0,R.invalidImplementedArguments.push({actualType:te,argumentName:V,expectedType:Ne}))}for(let[V,J]of v.argumentDataByName)B.has(V)||J.type.kind===Q.Kind.NON_NULL_TYPE&&(d=!0,y=!0,R.invalidAdditionalArguments.add(V));!n&&v.isInaccessible&&!E.isInaccessible&&(d=!0,y=!0,R.isInaccessible=!0),y&&l.invalidFieldImplementations.set(p,R)}d&&r.set(o,l)}i.size>0&&this.errors.push((0,ie.invalidImplementedTypeError)(t.name,i)),a&&this.errors.push((0,ie.selfImplementationError)(t.name)),r.size>0&&this.errors.push((0,ie.invalidInterfaceImplementationError)(t.name,(0,xe.kindToNodeType)(t.kind),r))}handleAuthenticatedDirective(t,n){let r=(0,xe.getValueOrDefault)(this.authorizationDataByParentTypeName,n,()=>(0,Yn.newAuthorizationData)(n));if(t.kind===Q.Kind.FIELD_DEFINITION){let i=(0,xe.getValueOrDefault)(r.fieldAuthDataByFieldName,t.name,()=>(0,Yn.newFieldAuthorizationData)(t.name));i.inheritedData.requiresAuthentication=!0,i.originalData.requiresAuthentication=!0}else r.requiresAuthentication=!0,this.parentTypeNamesWithAuthDirectives.add(n)}handleOverrideDirective({data:t,directiveCoords:n,errorMessages:r,targetSubgraphName:i}){if(i===this.subgraphName){r.push((0,ie.equivalentSourceAndTargetOverrideErrorMessage)(i,n));return}let a=(0,xe.getValueOrDefault)(this.overridesByTargetSubgraphName,i,()=>new Map);(0,xe.getValueOrDefault)(a,t.renamedParentTypeName,()=>new Set).add(t.name)}handleSemanticNonNullDirective({data:t,directiveNode:n,errorMessages:r}){var E;let i=new Set,a=t.node.type,o=0;for(;a;)switch(a.kind){case Q.Kind.LIST_TYPE:{o+=1,a=a.type;break}case Q.Kind.NON_NULL_TYPE:{i.add(o),a=a.type;break}default:{a=null;break}}let u=(E=n.arguments)==null?void 0:E.find(y=>y.name.value===W.LEVELS);if(!u||u.value.kind!==Q.Kind.LIST){r.push(ie.semanticNonNullArgumentErrorMessage);return}let l=u.value.values,d=(0,Ir.printTypeNode)(t.type),p=new Set;for(let{value:y}of l){let v=parseInt(y,10);if(Number.isNaN(v)){r.push((0,ie.semanticNonNullLevelsNaNIndexErrorMessage)(y));continue}if(v<0||v>o){r.push((0,ie.semanticNonNullLevelsIndexOutOfBoundsErrorMessage)({maxIndex:o,typeString:d,value:y}));continue}if(!i.has(v)){p.add(v);continue}r.push((0,ie.semanticNonNullLevelsNonNullErrorMessage)({typeString:d,value:y}))}t.nullLevelsBySubgraphName.set(this.subgraphName,p)}handleCostDirective({data:t,directiveCoords:n,directiveNode:r,errorMessages:i}){var u;let a=(u=r.arguments)==null?void 0:u.find(l=>l.name.value===W.WEIGHT);if(!a||a.value.kind!==Q.Kind.INT)return;let o=parseInt(a.value.value,10);switch(t.kind){case Q.Kind.OBJECT_TYPE_DEFINITION:case Q.Kind.SCALAR_TYPE_DEFINITION:case Q.Kind.ENUM_TYPE_DEFINITION:this.costs.typeWeights.set(t.name,o);break;case Q.Kind.FIELD_DEFINITION:{let l=t.renamedParentTypeName||t.originalParentTypeName,d=this.parentDefinitionDataByTypeName.get(l);if(!d)break;if(d.kind===Q.Kind.INTERFACE_TYPE_DEFINITION){i.push((0,ie.costOnInterfaceFieldErrorMessage)(n));break}let p=`${l}.${t.name}`,E=(0,xe.getValueOrDefault)(this.costs.fieldWeights,p,()=>({typeName:l,fieldName:t.name,argumentWeights:new Map}));E.weight=o;break}case Q.Kind.INPUT_VALUE_DEFINITION:case Q.Kind.ARGUMENT:{let l=t;if(l.isArgument&&l.fieldName){let d=l.renamedParentTypeName||l.originalParentTypeName,p=this.parentDefinitionDataByTypeName.get(d);if(!p)break;if(p.kind===Q.Kind.INTERFACE_TYPE_DEFINITION){i.push((0,ie.costOnInterfaceFieldErrorMessage)(n));break}let E=`${d}.${l.fieldName}`;(0,xe.getValueOrDefault)(this.costs.fieldWeights,E,()=>({typeName:d,fieldName:l.fieldName,argumentWeights:new Map})).argumentWeights.set(l.name,o)}else{let d=l.renamedParentTypeName||l.originalParentTypeName,p=`${d}.${l.name}`,E=(0,xe.getValueOrDefault)(this.costs.fieldWeights,p,()=>({typeName:d,fieldName:l.name,argumentWeights:new Map}));E.weight=o}break}}}handleListSizeDirective({data:t,directiveCoords:n,directiveNode:r,errorMessages:i}){let a=r.arguments;if(!a)return;let o=!1,u=t.renamedParentTypeName||t.originalParentTypeName,l={typeName:u,fieldName:t.name,slicingArguments:[],sizedFields:[],requireOneSlicingArgument:!0};for(let p of a)switch(p.name.value){case W.ASSUMED_SIZE:p.value.kind===Q.Kind.INT&&(l.assumedSize=parseInt(p.value.value,10));break;case W.REQUIRE_ONE_SLICING_ARGUMENT:p.value.kind===Q.Kind.BOOLEAN&&(l.requireOneSlicingArgument=p.value.value);break;case W.SLICING_ARGUMENTS:{let y;if(p.value.kind===Q.Kind.LIST)y=p.value.values;else if(p.value.kind===Q.Kind.STRING)y=[p.value];else continue;for(let v of y){if(v.kind!==Q.Kind.STRING)continue;let R=v.value,B=t.argumentDataByName.get(R);if(!B){i.push((0,ie.listSizeInvalidSlicingArgumentErrorMessage)(n,R));continue}if((B.type.kind===Q.Kind.NON_NULL_TYPE?B.type.type:B.type).kind===Q.Kind.LIST_TYPE||B.namedTypeName!==W.INT_SCALAR){i.push((0,ie.listSizeSlicingArgumentNotIntErrorMessage)(n,R,(0,Ir.printTypeNode)(B.type)));continue}l.slicingArguments.push(R)}break}case W.SIZED_FIELDS:{let y;if(p.value.kind===Q.Kind.LIST)y=p.value.values;else if(p.value.kind===Q.Kind.STRING)y=[p.value];else continue;if(y.length<1)continue;o=!0;let v=t.namedTypeName,R=this.parentDefinitionDataByTypeName.get(v);if(!R||!(0,kt.isParentDataCompositeOutputType)(R)){i.push((0,ie.listSizeSizedFieldsInvalidReturnTypeErrorMessage)(n,v));continue}for(let B of y){if(B.kind!==Q.Kind.STRING)continue;let V=B.value,J=R.fieldDataByName.get(V);if(!J){i.push((0,ie.listSizeSizedFieldNotFoundErrorMessage)(n,V,v));continue}if(!(0,kt.isTypeNodeListType)(J.type)){i.push((0,ie.listSizeSizedFieldNotListErrorMessage)(n,V,v,(0,Ir.printTypeNode)(J.type)));continue}l.sizedFields.push(V)}break}}if(!o&&!(0,kt.isTypeNodeListType)(t.type)&&i.push((0,ie.listSizeFieldMustReturnListOrUseSizedFieldsErrorMessage)(n,(0,Ir.printTypeNode)(t.type))),o&&(0,kt.isTypeNodeListType)(t.type)&&i.push((0,ie.listSizeSizedFieldsOnListsErrorMessage)(n,(0,Ir.printTypeNode)(t.type))),l.assumedSize!==void 0&&l.slicingArguments.length>0)if(l.requireOneSlicingArgument)i.push((0,ie.listSizeAssumedSizeWithRequiredSlicingArgumentErrorMessage)(n));else for(let p of l.slicingArguments){let E=t.argumentDataByName.get(p);E!=null&&E.defaultValue&&i.push((0,ie.listSizeAssumedSizeSlicingArgDefaultErrorMessage)(n,p))}let d=`${u}.${t.name}`;this.costs.listSizes.set(d,l)}extractRequiredScopes({directiveCoords:t,orScopes:n,requiredScopes:r}){if(n.length>Mr.MAX_OR_SCOPES){this.invalidORScopesCoords.add(t);return}for(let i of n){let a=new Set;for(let o of i.values)a.add(o.value);a.size<1||(0,Yn.addScopes)(r,a)}}getKafkaPublishConfiguration(t,n,r,i){let a=[],o=W.DEFAULT_EDFS_PROVIDER_ID;for(let u of t.arguments||[])switch(u.name.value){case W.TOPIC:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push((0,ie.invalidEventSubjectErrorMessage)(W.TOPIC));continue}(0,ci.validateArgumentTemplateReferences)(u.value.value,n,i),a.push(u.value.value);break}case W.PROVIDER_ID:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push(ie.invalidEventProviderIdErrorMessage);continue}o=u.value.value;break}}if(!(i.length>0))return{fieldName:r,providerId:o,providerType:W.PROVIDER_TYPE_KAFKA,topics:a,type:W.PUBLISH}}getKafkaSubscribeConfiguration(t,n,r,i){let a=[],o=W.DEFAULT_EDFS_PROVIDER_ID;for(let u of t.arguments||[])switch(u.name.value){case W.TOPICS:{if(u.value.kind!==Q.Kind.LIST){i.push((0,ie.invalidEventSubjectsErrorMessage)(W.TOPICS));continue}for(let l of u.value.values){if(l.kind!==Q.Kind.STRING||l.value.length<1){i.push((0,ie.invalidEventSubjectsItemErrorMessage)(W.TOPICS));break}(0,ci.validateArgumentTemplateReferences)(l.value,n,i),a.push(l.value)}break}case W.PROVIDER_ID:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push(ie.invalidEventProviderIdErrorMessage);continue}o=u.value.value;break}}if(!(i.length>0))return{fieldName:r,providerId:o,providerType:W.PROVIDER_TYPE_KAFKA,topics:a,type:W.SUBSCRIBE}}getNatsPublishAndRequestConfiguration(t,n,r,i,a){let o=[],u=W.DEFAULT_EDFS_PROVIDER_ID;for(let l of n.arguments||[])switch(l.name.value){case W.SUBJECT:{if(l.value.kind!==Q.Kind.STRING||l.value.value.length<1){a.push((0,ie.invalidEventSubjectErrorMessage)(W.SUBJECT));continue}(0,ci.validateArgumentTemplateReferences)(l.value.value,r,a),o.push(l.value.value);break}case W.PROVIDER_ID:{if(l.value.kind!==Q.Kind.STRING||l.value.value.length<1){a.push(ie.invalidEventProviderIdErrorMessage);continue}u=l.value.value;break}}if(!(a.length>0))return{fieldName:i,providerId:u,providerType:W.PROVIDER_TYPE_NATS,subjects:o,type:t}}getNatsSubscribeConfiguration(t,n,r,i){let a=[],o=W.DEFAULT_EDFS_PROVIDER_ID,u=uh.DEFAULT_CONSUMER_INACTIVE_THRESHOLD,l="",d="";for(let p of t.arguments||[])switch(p.name.value){case W.SUBJECTS:{if(p.value.kind!==Q.Kind.LIST){i.push((0,ie.invalidEventSubjectsErrorMessage)(W.SUBJECTS));continue}for(let E of p.value.values){if(E.kind!==Q.Kind.STRING||E.value.length<1){i.push((0,ie.invalidEventSubjectsItemErrorMessage)(W.SUBJECTS));break}(0,ci.validateArgumentTemplateReferences)(E.value,n,i),a.push(E.value)}break}case W.PROVIDER_ID:{if(p.value.kind!==Q.Kind.STRING||p.value.value.length<1){i.push(ie.invalidEventProviderIdErrorMessage);continue}o=p.value.value;break}case W.STREAM_CONFIGURATION:{if(this.usesEdfsNatsStreamConfiguration=!0,p.value.kind!==Q.Kind.OBJECT||p.value.fields.length<1){i.push(ie.invalidNatsStreamInputErrorMessage);continue}let E=!0,y=new Set,v=new Set(Dp.STREAM_CONFIGURATION_FIELD_NAMES),R=new Set([W.CONSUMER_NAME,W.STREAM_NAME]),B=new Set,V=new Set;for(let J of p.value.fields){let ne=J.name.value;if(!Dp.STREAM_CONFIGURATION_FIELD_NAMES.has(ne)){y.add(ne),E=!1;continue}if(v.has(ne))v.delete(ne);else{B.add(ne),E=!1;continue}switch(R.has(ne)&&R.delete(ne),ne){case W.CONSUMER_NAME:if(J.value.kind!=Q.Kind.STRING||J.value.value.length<1){V.add(ne),E=!1;continue}l=J.value.value;break;case W.STREAM_NAME:if(J.value.kind!=Q.Kind.STRING||J.value.value.length<1){V.add(ne),E=!1;continue}d=J.value.value;break;case W.CONSUMER_INACTIVE_THRESHOLD:if(J.value.kind!=Q.Kind.INT){i.push((0,ie.invalidArgumentValueErrorMessage)((0,Q.print)(J.value),"edfs__NatsStreamConfiguration","consumerInactiveThreshold",W.INT_SCALAR)),E=!1;continue}try{u=parseInt(J.value.value,10)}catch(te){i.push((0,ie.invalidArgumentValueErrorMessage)((0,Q.print)(J.value),"edfs__NatsStreamConfiguration","consumerInactiveThreshold",W.INT_SCALAR)),E=!1}break}}(!E||R.size>0)&&i.push((0,ie.invalidNatsStreamInputFieldsErrorMessage)([...R],[...B],[...V],[...y]))}}if(!(i.length>0))return u<0?(u=uh.DEFAULT_CONSUMER_INACTIVE_THRESHOLD,this.warnings.push((0,us.consumerInactiveThresholdInvalidValueWarning)(this.subgraphName,`The value has been set to ${uh.DEFAULT_CONSUMER_INACTIVE_THRESHOLD}.`))):u>Bfe.MAX_INT32&&(u=0,this.warnings.push((0,us.consumerInactiveThresholdInvalidValueWarning)(this.subgraphName,"The value has been set to 0. This means the consumer will remain indefinitely active until its manual deletion."))),M({fieldName:r,providerId:o,providerType:W.PROVIDER_TYPE_NATS,subjects:a,type:W.SUBSCRIBE},l&&d?{streamConfiguration:{consumerInactiveThreshold:u,consumerName:l,streamName:d}}:{})}getRedisPublishConfiguration(t,n,r,i){let a=[],o=W.DEFAULT_EDFS_PROVIDER_ID;for(let u of t.arguments||[])switch(u.name.value){case W.CHANNEL:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push((0,ie.invalidEventSubjectErrorMessage)(W.CHANNEL));continue}(0,ci.validateArgumentTemplateReferences)(u.value.value,n,i),a.push(u.value.value);break}case W.PROVIDER_ID:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push(ie.invalidEventProviderIdErrorMessage);continue}o=u.value.value;break}}if(!(i.length>0))return{fieldName:r,providerId:o,providerType:W.PROVIDER_TYPE_REDIS,channels:a,type:W.PUBLISH}}getRedisSubscribeConfiguration(t,n,r,i){let a=[],o=W.DEFAULT_EDFS_PROVIDER_ID;for(let u of t.arguments||[])switch(u.name.value){case W.CHANNELS:{if(u.value.kind!==Q.Kind.LIST){i.push((0,ie.invalidEventSubjectsErrorMessage)(W.CHANNELS));continue}for(let l of u.value.values){if(l.kind!==Q.Kind.STRING||l.value.length<1){i.push((0,ie.invalidEventSubjectsItemErrorMessage)(W.CHANNELS));break}(0,ci.validateArgumentTemplateReferences)(l.value,n,i),a.push(l.value)}break}case W.PROVIDER_ID:{if(u.value.kind!==Q.Kind.STRING||u.value.value.length<1){i.push(ie.invalidEventProviderIdErrorMessage);continue}o=u.value.value;break}}if(!(i.length>0))return{fieldName:r,providerId:o,providerType:W.PROVIDER_TYPE_REDIS,channels:a,type:W.SUBSCRIBE}}validateSubscriptionFilterDirectiveLocation(t){if(!t.directives)return;let n=this.renamedParentTypeName||this.originalParentTypeName,r=`${n}.${t.name.value}`,i=this.getOperationTypeNodeForRootTypeName(n)===Q.OperationTypeNode.SUBSCRIPTION;for(let a of t.directives)if(a.name.value===W.SUBSCRIPTION_FILTER&&!i){this.errors.push((0,ie.invalidSubscriptionFilterLocationError)(r));return}}extractEventDirectivesToConfiguration(t,n){if(!t.directives)return;let r=t.name.value,i=`${this.renamedParentTypeName||this.originalParentTypeName}.${r}`;for(let a of t.directives){let o=[],u;switch(a.name.value){case W.EDFS_KAFKA_PUBLISH:u=this.getKafkaPublishConfiguration(a,n,r,o);break;case W.EDFS_KAFKA_SUBSCRIBE:u=this.getKafkaSubscribeConfiguration(a,n,r,o);break;case W.EDFS_NATS_PUBLISH:{u=this.getNatsPublishAndRequestConfiguration(W.PUBLISH,a,n,r,o);break}case W.EDFS_NATS_REQUEST:{u=this.getNatsPublishAndRequestConfiguration(W.REQUEST,a,n,r,o);break}case W.EDFS_NATS_SUBSCRIBE:{u=this.getNatsSubscribeConfiguration(a,n,r,o);break}case W.EDFS_REDIS_PUBLISH:{u=this.getRedisPublishConfiguration(a,n,r,o);break}case W.EDFS_REDIS_SUBSCRIBE:{u=this.getRedisSubscribeConfiguration(a,n,r,o);break}default:continue}if(o.length>0){this.errors.push((0,ie.invalidEventDirectiveError)(a.name.value,i,o));continue}u&&(0,xe.getValueOrDefault)(this.eventsConfigurations,this.renamedParentTypeName||this.originalParentTypeName,()=>[]).push(u)}}getValidEventsDirectiveNamesForOperationTypeNode(t){switch(t){case Q.OperationTypeNode.MUTATION:return new Set([W.EDFS_KAFKA_PUBLISH,W.EDFS_NATS_PUBLISH,W.EDFS_NATS_REQUEST,W.EDFS_REDIS_PUBLISH]);case Q.OperationTypeNode.QUERY:return new Set([W.EDFS_NATS_REQUEST]);case Q.OperationTypeNode.SUBSCRIPTION:return new Set([W.EDFS_KAFKA_SUBSCRIBE,W.EDFS_NATS_SUBSCRIBE,W.EDFS_REDIS_SUBSCRIBE])}}getOperationTypeNodeForRootTypeName(t){let n=this.operationTypeNodeByTypeName.get(t);if(n)return n;switch(t){case W.MUTATION:return Q.OperationTypeNode.MUTATION;case W.QUERY:return Q.OperationTypeNode.QUERY;case W.SUBSCRIPTION:return Q.OperationTypeNode.SUBSCRIPTION;default:return}}validateEventDrivenRootType(t,n,r,i){let a=this.getOperationTypeNodeForRootTypeName(t.name);if(!a){this.errors.push((0,ie.invalidRootTypeError)(t.name));return}let o=this.getValidEventsDirectiveNamesForOperationTypeNode(a);for(let[u,l]of t.fieldDataByName){let d=`${l.originalParentTypeName}.${u}`,p=new Set;for(let V of Dp.EVENT_DIRECTIVE_NAMES)l.directivesByName.has(V)&&p.add(V);let E=new Set;for(let V of p)o.has(V)||E.add(V);if((p.size<1||E.size>0)&&n.set(d,{definesDirectives:p.size>0,invalidDirectiveNames:[...E]}),a===Q.OperationTypeNode.MUTATION){let V=(0,Ir.printTypeNode)(l.type);V!==W.NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT&&i.set(d,V);continue}let y=(0,Ir.printTypeNode)(l.type),v=l.namedTypeName+"!",R=!1,B=this.concreteTypeNamesByAbstractTypeName.get(l.namedTypeName)||new Set([l.namedTypeName]);for(let V of B)if(R||(R=this.entityDataByTypeName.has(V)),R)break;(!R||y!==v)&&r.set(d,y)}}validateEventDrivenKeyDefinition(t,n){let r=this.keyFieldSetDatasByTypeName.get(t);if(r)for(let[i,{isUnresolvable:a}]of r)a||(0,xe.getValueOrDefault)(n,t,()=>[]).push(i)}validateEventDrivenObjectFields(t,n,r,i){var a;for(let[o,u]of t){let l=`${u.originalParentTypeName}.${o}`;if(n.has(o)){(a=u.externalFieldDataBySubgraphName.get(this.subgraphName))!=null&&a.isDefinedExternal||r.set(l,o);continue}i.set(l,o)}}isEdfsPublishResultValid(){let t=this.parentDefinitionDataByTypeName.get(W.EDFS_PUBLISH_RESULT);if(!t)return!0;if(t.kind!==Q.Kind.OBJECT_TYPE_DEFINITION||t.fieldDataByName.size!=1)return!1;for(let[n,r]of t.fieldDataByName)if(r.argumentDataByName.size>0||n!==W.SUCCESS||(0,Ir.printTypeNode)(r.type)!==W.NON_NULLABLE_BOOLEAN)return!1;return!0}isNatsStreamConfigurationInputObjectValid(t){if(!(0,kt.isInputObjectDefinitionData)(t)||t.inputValueDataByName.size!=3)return!1;for(let[n,r]of t.inputValueDataByName)switch(n){case W.CONSUMER_INACTIVE_THRESHOLD:{if((0,Ir.printTypeNode)(r.type)!==W.NON_NULLABLE_INT||!r.defaultValue||r.defaultValue.kind!==Q.Kind.INT||r.defaultValue.value!==`${uh.DEFAULT_CONSUMER_INACTIVE_THRESHOLD}`)return!1;break}case W.CONSUMER_NAME:case W.STREAM_NAME:{if((0,Ir.printTypeNode)(r.type)!==W.NON_NULLABLE_STRING)return!1;break}default:return!1}return!0}validateEventDrivenSubgraph(){let t=[],n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,u=new Map,l=new Set,d=new Set;for(let[p,E]of this.parentDefinitionDataByTypeName){if(p===W.EDFS_PUBLISH_RESULT||p===W.EDFS_NATS_STREAM_CONFIGURATION||E.kind!==Q.Kind.OBJECT_TYPE_DEFINITION)continue;if(E.isRootType){this.validateEventDrivenRootType(E,n,r,i);continue}let y=this.keyFieldNamesByParentTypeName.get(p);if(!y){d.add(p);continue}this.validateEventDrivenKeyDefinition(p,a),this.validateEventDrivenObjectFields(E.fieldDataByName,y,o,u)}if(this.isEdfsPublishResultValid()||t.push(ie.invalidEdfsPublishResultObjectErrorMessage),this.edfsDirectiveReferences.has(W.EDFS_NATS_SUBSCRIBE)){let p=this.parentDefinitionDataByTypeName.get(W.EDFS_NATS_STREAM_CONFIGURATION);p&&this.usesEdfsNatsStreamConfiguration&&!this.isNatsStreamConfigurationInputObjectValid(p)&&t.push(ie.invalidNatsStreamConfigurationDefinitionErrorMessage),this.parentDefinitionDataByTypeName.delete(W.EDFS_NATS_STREAM_CONFIGURATION);let E=this.upsertInputObjectByNode(_V.EDFS_NATS_STREAM_CONFIGURATION_DEFINITION);if(E.success)for(let y of _V.EDFS_NATS_STREAM_CONFIGURATION_DEFINITION.fields)this.addInputValueDataByNode({fieldName:y.name.value,isArgument:!1,inputValueDataByName:E.data.inputValueDataByName,node:y,originalParentTypeName:W.EDFS_NATS_STREAM_CONFIGURATION});else return}n.size>0&&t.push((0,ie.invalidRootTypeFieldEventsDirectivesErrorMessage)(n)),i.size>0&&t.push((0,ie.invalidEventDrivenMutationResponseTypeErrorMessage)(i)),r.size>0&&t.push((0,ie.invalidRootTypeFieldResponseTypesEventDrivenErrorMessage)(r)),a.size>0&&t.push((0,ie.invalidKeyFieldSetsEventDrivenErrorMessage)(a)),o.size>0&&t.push((0,ie.nonExternalKeyFieldNamesEventDrivenErrorMessage)(o)),u.size>0&&t.push((0,ie.nonKeyFieldNamesEventDrivenErrorMessage)(u)),l.size>0&&t.push((0,ie.nonEntityObjectExtensionsEventDrivenErrorMessage)([...l])),d.size>0&&t.push((0,ie.nonKeyComposingObjectTypeNamesEventDrivenErrorMessage)([...d])),t.length>0&&this.errors.push((0,ie.invalidEventDrivenGraphError)(t))}validateUnionMembers(t){if(t.memberByMemberTypeName.size<1){this.errors.push((0,ie.noDefinedUnionMembersError)(t.name));return}let n=[];for(let r of t.memberByMemberTypeName.keys()){let i=this.parentDefinitionDataByTypeName.get(r);i&&i.kind!==Q.Kind.OBJECT_TYPE_DEFINITION&&n.push(`"${r}", which is type "${(0,xe.kindToNodeType)(i.kind)}"`)}n.length>0&&this.errors.push((0,ie.invalidUnionMemberTypeError)(t.name,n))}addConcreteTypeNamesForUnion(t){if(!t.types||t.types.length<1)return;let n=t.name.value;for(let r of t.types){let i=r.name.value;(0,xe.getValueOrDefault)(this.concreteTypeNamesByAbstractTypeName,n,()=>new Set).add(i),this.internalGraph.addEdge(this.internalGraph.addOrUpdateNode(n,{isAbstract:!0}),this.internalGraph.addOrUpdateNode(i),i,!0)}}addValidKeyFieldSetConfigurations(){for(let[t,n]of this.keyFieldSetDatasByTypeName){let r=this.parentDefinitionDataByTypeName.get(t);if(!r||r.kind!==Q.Kind.OBJECT_TYPE_DEFINITION&&r.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION){this.errors.push((0,ie.undefinedCompositeOutputTypeError)(t));continue}let i=(0,kt.getParentTypeName)(r),a=(0,xe.getValueOrDefault)(this.configurationDataByTypeName,i,()=>(0,bp.newConfigurationData)(!0,i)),o=(0,ci.validateKeyFieldSets)(this,r,n);o&&(a.keys=o)}}getValidFlattenedDirectiveArray(t,n,r=!1){let i=[];for(let[a,o]of t){if(r&&W.INHERITABLE_DIRECTIVE_NAMES.has(a))continue;let u=this.directiveDefinitionDataByName.get(a);if(!u)continue;if(!u.isRepeatable&&o.length>1){let p=(0,xe.getValueOrDefault)(this.invalidRepeatedDirectiveNameByCoords,n,()=>new Set);p.has(a)||(p.add(a),this.errors.push((0,ie.invalidDirectiveError)(a,n,"1st",[(0,ie.invalidRepeatedDirectiveErrorMessage)(a)])));continue}if(a!==W.KEY){i.push(...o);continue}let l=[],d=new Set;for(let p=0;p0)return $(M({},t.description?{description:t.description}:{}),{directives:this.getValidFlattenedDirectiveArray(t.directivesByName,t.name),kind:Q.Kind.SCHEMA_DEFINITION,operationTypes:n});if(!(t.directivesByName.size<1))return{directives:this.getValidFlattenedDirectiveArray(t.directivesByName,t.name),kind:Q.Kind.SCHEMA_EXTENSION}}getUnionNodeByData(t){return t.node.description=t.description,t.node.directives=this.getValidFlattenedDirectiveArray(t.directivesByName,t.name),t.node.types=(0,Yn.mapToArrayOfValues)(t.memberByMemberTypeName),t.node}evaluateExternalKeyFields(){let t=[];for(let[n,r]of this.keyFieldSetDatasByTypeName){let i=this.parentDefinitionDataByTypeName.get(n);if(!i||i.kind!==Q.Kind.OBJECT_TYPE_DEFINITION&&i.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION){t.push(n),this.errors.push((0,ie.undefinedCompositeOutputTypeError)(n));continue}let a=this;for(let o of r.values()){let u=[i],l=new Map,d=-1,p=!0;if((0,Q.visit)(o.documentNode,{Argument:{enter(){return Q.BREAK}},Field:{enter(E){let y=u[d],v=y.name;if(p)return Q.BREAK;let R=E.name.value,B=`${v}.${R}`;a.unvalidatedExternalFieldCoords.delete(B);let V=y.fieldDataByName.get(R);if(!V||V.argumentDataByName.size)return Q.BREAK;V.isShareableBySubgraphName.set(a.subgraphName,!0);let J=V.externalFieldDataBySubgraphName.get(a.subgraphName);a.edfsDirectiveReferences.size<1&&J&&J.isDefinedExternal&&!J.isUnconditionallyProvided&&i.extensionType!==os.ExtensionType.NONE&&(J.isUnconditionallyProvided=!0,(0,xe.getValueOrDefault)(l,o.rawFieldSet,()=>new Set).add(B)),(0,xe.getValueOrDefault)(a.keyFieldNamesByParentTypeName,v,()=>new Set).add(R);let ne=(0,lr.getTypeNodeNamedTypeName)(V.node.type);if(Mr.BASE_SCALARS.has(ne))return;let te=a.parentDefinitionDataByTypeName.get(ne);if(!te)return Q.BREAK;if(te.kind===Q.Kind.OBJECT_TYPE_DEFINITION){p=!0,u.push(te);return}if((0,bn.isKindAbstract)(te.kind))return Q.BREAK}},InlineFragment:{enter(){return Q.BREAK}},SelectionSet:{enter(){if(!p||(d+=1,p=!1,d<0||d>=u.length))return Q.BREAK},leave(){p&&(p=!1),d-=1,u.pop()}}}),!(l.size<1))for(let[E,y]of l)this.warnings.push((0,us.externalEntityExtensionKeyFieldWarning)(i.name,E,[...y],this.subgraphName))}}for(let n of t)this.keyFieldSetDatasByTypeName.delete(n)}addValidConditionalFieldSetConfigurations(){for(let[t,n]of this.fieldSetDataByTypeName){let r=this.parentDefinitionDataByTypeName.get(t);if(!r||r.kind!==Q.Kind.OBJECT_TYPE_DEFINITION&&r.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION){this.errors.push((0,ie.undefinedCompositeOutputTypeError)(t));continue}let i=(0,kt.getParentTypeName)(r),a=(0,xe.getValueOrDefault)(this.configurationDataByTypeName,i,()=>(0,bp.newConfigurationData)(!1,i)),o=this.validateProvidesOrRequires(r,n.provides,!0);o&&(a.provides=o);let u=this.validateProvidesOrRequires(r,n.requires,!1);u&&(a.requires=u)}}addFieldNamesToConfigurationData(t,n){let r=new Set;for(let[i,a]of t){let o=a.externalFieldDataBySubgraphName.get(this.subgraphName);if(!o||o.isUnconditionallyProvided){n.fieldNames.add(i);continue}r.add(i),this.edfsDirectiveReferences.size>0&&n.fieldNames.add(i)}r.size>0&&(n.externalFieldNames=r)}validateOneOfDirective({data:t,requiredFieldNames:n}){var r,i;return t.directivesByName.has(W.ONE_OF)?n.size>0?(this.errors.push((0,ie.oneOfRequiredFieldsError)({requiredFieldNames:Array.from(n),typeName:t.name})),!1):(t.inputValueDataByName.size===1&&this.warnings.push((0,us.singleSubgraphInputFieldOneOfWarning)({fieldName:(i=(r=(0,xe.getFirstEntry)(t.inputValueDataByName))==null?void 0:r.name)!=null?i:"unknown",subgraphName:this.subgraphName,typeName:t.name})),!0):!0}normalize(t){var o;(0,gV.upsertDirectiveSchemaAndEntityDefinitions)(this,t),(0,gV.upsertParentsAndChildren)(this,t);let n=[];Il(this,ch,SV).call(this,n),this.validateDirectives(this.schemaData,W.SCHEMA);let r=this.getSchemaNodeByData(this.schemaData);(r==null?void 0:r.kind)===Q.Kind.SCHEMA_DEFINITION&&n.push(r);for(let[u,l]of this.parentDefinitionDataByTypeName)this.validateDirectives(l,u);this.invalidORScopesCoords.size>0&&this.errors.push((0,ie.orScopesLimitError)(Mr.MAX_OR_SCOPES,[...this.invalidORScopesCoords]));for(let u of this.invalidConfigureDescriptionNodeDatas)u.description||this.errors.push((0,ie.configureDescriptionNoDescriptionError)((0,xe.kindToNodeType)(u.kind),u.name));this.evaluateExternalKeyFields();for(let[u,l]of this.parentDefinitionDataByTypeName)switch(l.kind){case Q.Kind.ENUM_TYPE_DEFINITION:{if(l.enumValueDataByName.size<1){this.errors.push((0,ie.noDefinedEnumValuesError)(u));break}n.push(this.getEnumNodeByData(l));break}case Q.Kind.INPUT_OBJECT_TYPE_DEFINITION:{if(l.inputValueDataByName.size<1){this.errors.push((0,ie.noInputValueDefinitionsError)(u));break}let d=new Set;for(let p of l.inputValueDataByName.values()){if((0,kt.isTypeRequired)(p.type)&&d.add(p.name),p.namedTypeKind!==Q.Kind.NULL)continue;let E=this.parentDefinitionDataByTypeName.get(p.namedTypeName);if(E){if(!(0,kt.isInputNodeKind)(E.kind)){this.errors.push((0,ie.invalidNamedTypeError)({data:p,namedTypeData:E,nodeType:`${(0,xe.kindToNodeType)(l.kind)} field`}));continue}p.namedTypeKind=E.kind}}if(!this.validateOneOfDirective({data:l,requiredFieldNames:d}))break;u!==W.EDFS_NATS_STREAM_CONFIGURATION&&n.push(this.getInputObjectNodeByData(l));break}case Q.Kind.INTERFACE_TYPE_DEFINITION:case Q.Kind.OBJECT_TYPE_DEFINITION:{let d=this.entityDataByTypeName.has(u),p=this.operationTypeNodeByTypeName.get(u),E=l.kind===Q.Kind.OBJECT_TYPE_DEFINITION;this.isSubgraphVersionTwo&&l.extensionType===os.ExtensionType.EXTENDS&&(l.extensionType=os.ExtensionType.NONE),p&&(l.fieldDataByName.delete(W.SERVICE_FIELD),l.fieldDataByName.delete(W.ENTITIES_FIELD));let y=[];for(let[J,ne]of l.fieldDataByName){if(!E&&((o=ne.externalFieldDataBySubgraphName.get(this.subgraphName))!=null&&o.isDefinedExternal)&&y.push(J),this.validateArguments(ne,l.kind),ne.namedTypeKind!==Q.Kind.NULL)continue;let te=this.parentDefinitionDataByTypeName.get(ne.namedTypeName);if(te){if(!(0,kt.isOutputNodeKind)(te.kind)){this.errors.push((0,ie.invalidNamedTypeError)({data:ne,namedTypeData:te,nodeType:`${(0,xe.kindToNodeType)(l.kind)} field`}));continue}ne.namedTypeKind=this.entityInterfaceDataByTypeName.get(te.name)?Q.Kind.INTERFACE_TYPE_DEFINITION:te.kind}}y.length>0&&(this.isSubgraphVersionTwo?this.errors.push((0,ie.externalInterfaceFieldsError)(u,y)):this.warnings.push((0,us.externalInterfaceFieldsWarning)(this.subgraphName,u,[...y])));let v=(0,kt.getParentTypeName)(l),R=(0,xe.getValueOrDefault)(this.configurationDataByTypeName,v,()=>(0,bp.newConfigurationData)(d,u)),B=this.entityInterfaceDataByTypeName.get(u);if(B){B.fieldDatas=(0,Yn.fieldDatasToSimpleFieldDatas)(l.fieldDataByName.values());let J=this.concreteTypeNamesByAbstractTypeName.get(u);J&&(0,xe.addIterableToSet)({source:J,target:B.concreteTypeNames}),R.isInterfaceObject=B.isInterfaceObject,R.entityInterfaceConcreteTypeNames=B.concreteTypeNames}let V=this.eventsConfigurations.get(v);V&&(R.events=V),this.addFieldNamesToConfigurationData(l.fieldDataByName,R),this.validateInterfaceImplementations(l),n.push(this.getCompositeOutputNodeByData(l)),l.fieldDataByName.size<1&&!(0,ci.isNodeQuery)(u,p)&&this.errors.push((0,ie.noFieldDefinitionsError)((0,xe.kindToNodeType)(l.kind),u)),l.requireFetchReasonsFieldNames.size>0&&(R.requireFetchReasonsFieldNames=[...l.requireFetchReasonsFieldNames]);break}case Q.Kind.SCALAR_TYPE_DEFINITION:{if(l.extensionType===os.ExtensionType.REAL){this.errors.push((0,ie.noBaseScalarDefinitionError)(u));break}n.push(this.getScalarNodeByData(l));break}case Q.Kind.UNION_TYPE_DEFINITION:{n.push(this.getUnionNodeByData(l)),this.validateUnionMembers(l);break}default:throw(0,ie.unexpectedKindFatalError)(u)}this.isSubgraphEventDrivenGraph=this.edfsDirectiveReferences.size>0,this.addValidConditionalFieldSetConfigurations(),this.addValidKeyFieldSetConfigurations();for(let u of Object.values(Q.OperationTypeNode)){let l=this.schemaData.operationTypes.get(u),d=(0,xe.getOrThrowError)(bn.operationTypeNodeToDefaultType,u,W.OPERATION_TO_DEFAULT),p=l?(0,lr.getTypeNodeNamedTypeName)(l.type):d;if(Mr.BASE_SCALARS.has(p)&&this.referencedTypeNames.add(p),p!==d&&this.parentDefinitionDataByTypeName.has(d)){this.errors.push((0,ie.invalidRootTypeDefinitionError)(u,p,d));continue}let E=this.parentDefinitionDataByTypeName.get(p);if(l){if(!E)continue;this.operationTypeNodeByTypeName.set(p,u)}if(!E)continue;let y=this.configurationDataByTypeName.get(d);y&&(y.isRootNode=!0,y.typeName=d),E.kind!==Q.Kind.OBJECT_TYPE_DEFINITION&&this.errors.push((0,ie.operationDefinitionError)(p,u,E.kind))}for(let u of this.referencedTypeNames){let l=this.parentDefinitionDataByTypeName.get(u);if(!l){this.errors.push((0,ie.undefinedTypeError)(u));continue}if(l.kind!==Q.Kind.INTERFACE_TYPE_DEFINITION)continue;let d=this.concreteTypeNamesByAbstractTypeName.get(u);(!d||d.size<1)&&this.warnings.push((0,us.unimplementedInterfaceOutputTypeWarning)(this.subgraphName,u))}let i=new Map;for(let u of this.directiveDefinitionByName.values()){let l=(0,bn.extractExecutableDirectiveLocations)(u.locations,new Set);l.size<1||this.addPersistedDirectiveDefinitionDataByNode(i,u,l)}this.isSubgraphEventDrivenGraph&&this.validateEventDrivenSubgraph();for(let u of this.unvalidatedExternalFieldCoords)this.isSubgraphVersionTwo?this.errors.push((0,ie.invalidExternalDirectiveError)(u)):this.warnings.push((0,us.invalidExternalFieldWarning)(u,this.subgraphName));if(this.errors.length>0)return{success:!1,errors:this.errors,warnings:this.warnings};let a={kind:Q.Kind.DOCUMENT,definitions:n};return{authorizationDataByParentTypeName:this.authorizationDataByParentTypeName,concreteTypeNamesByAbstractTypeName:this.concreteTypeNamesByAbstractTypeName,conditionalFieldDataByCoordinates:this.conditionalFieldDataByCoords,configurationDataByTypeName:this.configurationDataByTypeName,costs:this.costs,directiveDefinitionByName:this.directiveDefinitionByName,entityDataByTypeName:this.entityDataByTypeName,entityInterfaces:this.entityInterfaceDataByTypeName,fieldCoordsByNamedTypeName:this.fieldCoordsByNamedTypeName,isEventDrivenGraph:this.isSubgraphEventDrivenGraph,isVersionTwo:this.isSubgraphVersionTwo,keyFieldNamesByParentTypeName:this.keyFieldNamesByParentTypeName,keyFieldSetsByEntityTypeNameByKeyFieldCoords:this.keyFieldSetsByEntityTypeNameByFieldCoords,operationTypes:this.operationTypeNodeByTypeName,originalTypeNameByRenamedTypeName:this.originalTypeNameByRenamedTypeName,overridesByTargetSubgraphName:this.overridesByTargetSubgraphName,parentDefinitionDataByTypeName:this.parentDefinitionDataByTypeName,persistedDirectiveDefinitionDataByDirectiveName:i,schemaNode:r,subgraphAST:a,subgraphString:(0,Q.print)(a),schema:(0,Cfe.buildASTSchema)(a,{addInvalidExtensionOrphans:!0,assumeValid:!0,assumeValidSDL:!0}),success:!0,warnings:this.warnings}}};Rp=new WeakSet,mb=function({currentFieldCoords:t,directiveCoords:n,directiveName:r,fieldSet:i}){if(this.isSubgraphVersionTwo){this.errors.push((0,ie.nonExternalConditionalFieldError)({directiveCoords:n,directiveName:r,fieldSet:i,subgraphName:this.subgraphName,targetCoords:t}));return}this.warnings.push((0,us.nonExternalConditionalFieldWarning)(n,this.subgraphName,t,i,r))},ch=new WeakSet,SV=function(t){let n=new Set;for(let r of this.referencedDirectiveNames){let i=Mr.DIRECTIVE_DEFINITION_BY_NAME.get(r);i&&(this.directiveDefinitionByName.set(r,i),(0,xe.addOptionalIterableToSet)({source:Dp.DEPENDENCIES_BY_DIRECTIVE_NAME.get(r),target:n}),t.push(i))}for(let r of this.customDirectiveDefinitionByName.values())t.push(r);t.push(...n)};Kc.NormalizationFactory=Ap;function Mfe({options:e,subgraphs:t}){let n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,u=new Map,l=new Set,d=new Map,p=new Set,E=new Set,y=[],v=new Set,R=new Map,B=[],V=[];for(let te of t)te.name&&(0,Ufe.recordSubgraphName)(te.name,p,E);let J=new Nb.Graph;for(let te=0;te0&&B.push(...he.warnings),!he.success){V.push((0,ie.subgraphValidationError)(Ee,he.errors));continue}if(!he){V.push((0,ie.subgraphValidationError)(Ee,[ie.subgraphValidationFailureError]));continue}d.set(Ee,he.parentDefinitionDataByTypeName);for(let we of he.authorizationDataByParentTypeName.values())(0,Yn.upsertAuthorizationData)(n,we,v);for(let[we,Qe]of he.fieldCoordsByNamedTypeName)(0,xe.addIterableToSet)({source:Qe,target:(0,xe.getValueOrDefault)(R,we,()=>new Set)});for(let[we,Qe]of he.concreteTypeNamesByAbstractTypeName){let Z=r.get(we);if(!Z){r.set(we,new Set(Qe));continue}(0,xe.addIterableToSet)({source:Qe,target:Z})}for(let[we,Qe]of he.entityDataByTypeName){let Z=Qe.keyFieldSetDatasBySubgraphName.get(Ee);Z&&(0,Yn.upsertEntityData)({entityDataByTypeName:i,keyFieldSetDataByFieldSet:Z,typeName:we,subgraphName:Ee})}if(Ne.name&&a.set(Ee,{conditionalFieldDataByCoordinates:he.conditionalFieldDataByCoordinates,configurationDataByTypeName:he.configurationDataByTypeName,costs:he.costs,definitions:he.subgraphAST,directiveDefinitionByName:he.directiveDefinitionByName,entityInterfaces:he.entityInterfaces,isVersionTwo:he.isVersionTwo,keyFieldNamesByParentTypeName:he.keyFieldNamesByParentTypeName,name:Ee,operationTypes:he.operationTypes,overriddenFieldNamesByParentTypeName:new Map,parentDefinitionDataByTypeName:he.parentDefinitionDataByTypeName,persistedDirectiveDefinitionDataByDirectiveName:he.persistedDirectiveDefinitionDataByDirectiveName,schema:he.schema,schemaNode:he.schemaNode,url:Ne.url}),!(he.overridesByTargetSubgraphName.size<1))for(let[we,Qe]of he.overridesByTargetSubgraphName){let Z=p.has(we);for(let[Se,ht]of Qe){let on=he.originalTypeNameByRenamedTypeName.get(Se)||Se;if(!Z)B.push((0,us.invalidOverrideTargetSubgraphNameWarning)(we,on,[...ht],Ne.name));else{let En=(0,xe.getValueOrDefault)(o,we,()=>new Map),un=(0,xe.getValueOrDefault)(En,Se,()=>new Set(ht));(0,xe.addIterableToSet)({source:ht,target:un})}for(let En of ht){let un=`${on}.${En}`,Ft=u.get(un);if(!Ft){u.set(un,[Ee]);continue}Ft.push(Ee),l.add(un)}}}}let ne=[];if(v.size>0&&ne.push((0,ie.orScopesLimitError)(Mr.MAX_OR_SCOPES,[...v])),(y.length>0||E.size>0)&&ne.push((0,ie.invalidSubgraphNamesError)([...E],y)),l.size>0){let te=[];for(let Ne of l){let Ee=(0,xe.getOrThrowError)(u,Ne,"overrideSourceSubgraphNamesByFieldPath");te.push((0,ie.duplicateOverriddenFieldErrorMessage)(Ne,Ee))}ne.push((0,ie.duplicateOverriddenFieldsError)(te))}if(ne.push(...V),ne.length>0)return{errors:ne,success:!1,warnings:B};for(let[te,Ne]of o){let Ee=(0,xe.getOrThrowError)(a,te,"internalSubgraphBySubgraphName");Ee.overriddenFieldNamesByParentTypeName=Ne;for(let[he,we]of Ne){let Qe=Ee.configurationDataByTypeName.get(he);Qe&&((0,Yn.subtractSet)(we,Qe.fieldNames),Qe.fieldNames.size<1&&Ee.configurationDataByTypeName.delete(he))}}return{authorizationDataByParentTypeName:n,concreteTypeNamesByAbstractTypeName:r,entityDataByTypeName:i,fieldCoordsByNamedTypeName:R,internalSubgraphBySubgraphName:a,internalGraph:J,success:!0,warnings:B}}});var lh=F(Qc=>{"use strict";m();T();N();Object.defineProperty(Qc,"__esModule",{value:!0});Qc.DivergentType=void 0;Qc.getLeastRestrictiveMergedTypeNode=qfe;Qc.getMostRestrictiveMergedTypeNode=Vfe;Qc.renameNamedTypeName=jfe;var $c=_e(),DV=Gi(),xfe=Au(),OV=Lr(),bV=Kl(),Gc;(function(e){e[e.NONE=0]="NONE",e[e.CURRENT=1]="CURRENT",e[e.OTHER=2]="OTHER"})(Gc||(Qc.DivergentType=Gc={}));function AV(e,t,n,r,i){t=(0,xfe.getMutableTypeNode)(t,n,i);let a={kind:e.kind},o=Gc.NONE,u=a;for(let l=0;l{"use strict";m();T();N();Object.defineProperty(hb,"__esModule",{value:!0});hb.renameRootTypes=Gfe;var Kfe=_e(),Eb=Lr(),$fe=lh(),Mu=Hn(),Yc=Cr();function Gfe(e,t){let n,r=!1,i;(0,Kfe.visit)(t.definitions,{FieldDefinition:{enter(a){let o=a.name.value;if(r&&(o===Mu.SERVICE_FIELD||o===Mu.ENTITIES_FIELD))return n.fieldDataByName.delete(o),!1;let u=n.name,l=(0,Yc.getOrThrowError)(n.fieldDataByName,o,`${u}.fieldDataByFieldName`),d=t.operationTypes.get(l.namedTypeName);if(d){let p=(0,Yc.getOrThrowError)(Eb.operationTypeNodeToDefaultType,d,Mu.OPERATION_TO_DEFAULT);l.namedTypeName!==p&&(0,$fe.renameNamedTypeName)(l,p,e.errors)}return i!=null&&i.has(o)&&l.isShareableBySubgraphName.delete(t.name),!1}},InterfaceTypeDefinition:{enter(a){let o=a.name.value;if(!e.entityInterfaceFederationDataByTypeName.get(o))return!1;n=(0,Yc.getOrThrowError)(t.parentDefinitionDataByTypeName,o,Mu.PARENT_DEFINITION_DATA)},leave(){n=void 0}},ObjectTypeDefinition:{enter(a){let o=a.name.value,u=t.operationTypes.get(o),l=u?(0,Yc.getOrThrowError)(Eb.operationTypeNodeToDefaultType,u,Mu.OPERATION_TO_DEFAULT):o;n=(0,Yc.getOrThrowError)(t.parentDefinitionDataByTypeName,o,Mu.PARENT_DEFINITION_DATA),r=n.isRootType,!e.entityInterfaceFederationDataByTypeName.get(o)&&(e.addValidPrimaryKeyTargetsToEntityData(o),i=t.overriddenFieldNamesByParentTypeName.get(l),o!==l&&(n.name=l,t.parentDefinitionDataByTypeName.set(l,n),t.parentDefinitionDataByTypeName.delete(o)))},leave(){n=void 0,r=!1,i=void 0}},ObjectTypeExtension:{enter(a){let o=a.name.value,u=t.operationTypes.get(o),l=u?(0,Yc.getOrThrowError)(Eb.operationTypeNodeToDefaultType,u,Mu.OPERATION_TO_DEFAULT):o;n=(0,Yc.getOrThrowError)(t.parentDefinitionDataByTypeName,o,Mu.PARENT_DEFINITION_DATA),r=n.isRootType,e.addValidPrimaryKeyTargetsToEntityData(o),i=t.overriddenFieldNamesByParentTypeName.get(o),o!==l&&(n.name=l,t.parentDefinitionDataByTypeName.set(l,n),t.parentDefinitionDataByTypeName.delete(o))},leave(){n=void 0,r=!1,i=void 0}}})}});var RV=F((Id,Pp)=>{"use strict";m();T();N();(function(){var e,t="4.17.21",n=200,r="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",i="Expected a function",a="Invalid `variable` option passed into `_.template`",o="__lodash_hash_undefined__",u=500,l="__lodash_placeholder__",d=1,p=2,E=4,y=1,v=2,R=1,B=2,V=4,J=8,ne=16,te=32,Ne=64,Ee=128,he=256,we=512,Qe=30,Z="...",Se=800,ht=16,on=1,En=2,un=3,Ft=1/0,rn=9007199254740991,xr=17976931348623157e292,nr=NaN,hn=4294967295,Xt=hn-1,Ln=hn>>>1,se=[["ary",Ee],["bind",R],["bindKey",B],["curry",J],["curryRight",ne],["flip",we],["partial",te],["partialRight",Ne],["rearg",he]],be="[object Arguments]",ge="[object Array]",Ce="[object AsyncFunction]",Dt="[object Boolean]",z="[object Date]",ae="[object DOMException]",je="[object Error]",He="[object Function]",Mt="[object GeneratorFunction]",it="[object Map]",wt="[object Number]",ps="[object Null]",zr="[object Object]",ms="[object Promise]",sl="[object Proxy]",Ba="[object RegExp]",gr="[object Set]",li="[object String]",jt="[object Symbol]",_r="[object Undefined]",Gu="[object WeakMap]",ka="[object WeakSet]",Qu="[object ArrayBuffer]",P="[object DataView]",I="[object Float32Array]",_="[object Float64Array]",U="[object Int8Array]",K="[object Int16Array]",ee="[object Int32Array]",ce="[object Uint8Array]",Tt="[object Uint8ClampedArray]",yn="[object Uint16Array]",cn="[object Uint32Array]",vn=/\b__p \+= '';/g,an=/\b(__p \+=) '' \+/g,hK=/(__e\(.*?\)|\b__t\)) \+\n'';/g,g0=/&(?:amp|lt|gt|quot|#39);/g,_0=/[&<>"']/g,yK=RegExp(g0.source),IK=RegExp(_0.source),gK=/<%-([\s\S]+?)%>/g,_K=/<%([\s\S]+?)%>/g,v0=/<%=([\s\S]+?)%>/g,vK=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,SK=/^\w*$/,OK=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,qh=/[\\^$.*+?()[\]{}|]/g,DK=RegExp(qh.source),Vh=/^\s+/,bK=/\s/,AK=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,RK=/\{\n\/\* \[wrapped with (.+)\] \*/,PK=/,? & /,FK=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,wK=/[()=,{}\[\]\/\s]/,LK=/\\(\\)?/g,CK=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,S0=/\w*$/,UK=/^[-+]0x[0-9a-f]+$/i,BK=/^0b[01]+$/i,kK=/^\[object .+?Constructor\]$/,MK=/^0o[0-7]+$/i,xK=/^(?:0|[1-9]\d*)$/,qK=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,om=/($^)/,VK=/['\n\r\u2028\u2029\\]/g,um="\\ud800-\\udfff",jK="\\u0300-\\u036f",KK="\\ufe20-\\ufe2f",$K="\\u20d0-\\u20ff",O0=jK+KK+$K,D0="\\u2700-\\u27bf",b0="a-z\\xdf-\\xf6\\xf8-\\xff",GK="\\xac\\xb1\\xd7\\xf7",QK="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",YK="\\u2000-\\u206f",JK=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",A0="A-Z\\xc0-\\xd6\\xd8-\\xde",R0="\\ufe0e\\ufe0f",P0=GK+QK+YK+JK,jh="['\u2019]",zK="["+um+"]",F0="["+P0+"]",cm="["+O0+"]",w0="\\d+",HK="["+D0+"]",L0="["+b0+"]",C0="[^"+um+P0+w0+D0+b0+A0+"]",Kh="\\ud83c[\\udffb-\\udfff]",WK="(?:"+cm+"|"+Kh+")",U0="[^"+um+"]",$h="(?:\\ud83c[\\udde6-\\uddff]){2}",Gh="[\\ud800-\\udbff][\\udc00-\\udfff]",ol="["+A0+"]",B0="\\u200d",k0="(?:"+L0+"|"+C0+")",XK="(?:"+ol+"|"+C0+")",M0="(?:"+jh+"(?:d|ll|m|re|s|t|ve))?",x0="(?:"+jh+"(?:D|LL|M|RE|S|T|VE))?",q0=WK+"?",V0="["+R0+"]?",ZK="(?:"+B0+"(?:"+[U0,$h,Gh].join("|")+")"+V0+q0+")*",e$="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",t$="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",j0=V0+q0+ZK,n$="(?:"+[HK,$h,Gh].join("|")+")"+j0,r$="(?:"+[U0+cm+"?",cm,$h,Gh,zK].join("|")+")",i$=RegExp(jh,"g"),a$=RegExp(cm,"g"),Qh=RegExp(Kh+"(?="+Kh+")|"+r$+j0,"g"),s$=RegExp([ol+"?"+L0+"+"+M0+"(?="+[F0,ol,"$"].join("|")+")",XK+"+"+x0+"(?="+[F0,ol+k0,"$"].join("|")+")",ol+"?"+k0+"+"+M0,ol+"+"+x0,t$,e$,w0,n$].join("|"),"g"),o$=RegExp("["+B0+um+O0+R0+"]"),u$=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,c$=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],l$=-1,gn={};gn[I]=gn[_]=gn[U]=gn[K]=gn[ee]=gn[ce]=gn[Tt]=gn[yn]=gn[cn]=!0,gn[be]=gn[ge]=gn[Qu]=gn[Dt]=gn[P]=gn[z]=gn[je]=gn[He]=gn[it]=gn[wt]=gn[zr]=gn[Ba]=gn[gr]=gn[li]=gn[Gu]=!1;var In={};In[be]=In[ge]=In[Qu]=In[P]=In[Dt]=In[z]=In[I]=In[_]=In[U]=In[K]=In[ee]=In[it]=In[wt]=In[zr]=In[Ba]=In[gr]=In[li]=In[jt]=In[ce]=In[Tt]=In[yn]=In[cn]=!0,In[je]=In[He]=In[Gu]=!1;var d$={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},f$={"&":"&","<":"<",">":">",'"':""","'":"'"},p$={"&":"&","<":"<",">":">",""":'"',"'":"'"},m$={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},N$=parseFloat,T$=parseInt,K0=typeof global=="object"&&global&&global.Object===Object&&global,E$=typeof self=="object"&&self&&self.Object===Object&&self,fr=K0||E$||Function("return this")(),Yh=typeof Id=="object"&&Id&&!Id.nodeType&&Id,Yu=Yh&&typeof Pp=="object"&&Pp&&!Pp.nodeType&&Pp,$0=Yu&&Yu.exports===Yh,Jh=$0&&K0.process,Oi=function(){try{var Y=Yu&&Yu.require&&Yu.require("util").types;return Y||Jh&&Jh.binding&&Jh.binding("util")}catch(ue){}}(),G0=Oi&&Oi.isArrayBuffer,Q0=Oi&&Oi.isDate,Y0=Oi&&Oi.isMap,J0=Oi&&Oi.isRegExp,z0=Oi&&Oi.isSet,H0=Oi&&Oi.isTypedArray;function di(Y,ue,re){switch(re.length){case 0:return Y.call(ue);case 1:return Y.call(ue,re[0]);case 2:return Y.call(ue,re[0],re[1]);case 3:return Y.call(ue,re[0],re[1],re[2])}return Y.apply(ue,re)}function h$(Y,ue,re,Ue){for(var dt=-1,zt=Y==null?0:Y.length;++dt-1}function zh(Y,ue,re){for(var Ue=-1,dt=Y==null?0:Y.length;++Ue-1;);return re}function iA(Y,ue){for(var re=Y.length;re--&&ul(ue,Y[re],0)>-1;);return re}function b$(Y,ue){for(var re=Y.length,Ue=0;re--;)Y[re]===ue&&++Ue;return Ue}var A$=Zh(d$),R$=Zh(f$);function P$(Y){return"\\"+m$[Y]}function F$(Y,ue){return Y==null?e:Y[ue]}function cl(Y){return o$.test(Y)}function w$(Y){return u$.test(Y)}function L$(Y){for(var ue,re=[];!(ue=Y.next()).done;)re.push(ue.value);return re}function ry(Y){var ue=-1,re=Array(Y.size);return Y.forEach(function(Ue,dt){re[++ue]=[dt,Ue]}),re}function aA(Y,ue){return function(re){return Y(ue(re))}}function ou(Y,ue){for(var re=-1,Ue=Y.length,dt=0,zt=[];++re-1}function IG(s,c){var f=this.__data__,h=bm(f,s);return h<0?(++this.size,f.push([s,c])):f[h][1]=c,this}Ns.prototype.clear=TG,Ns.prototype.delete=EG,Ns.prototype.get=hG,Ns.prototype.has=yG,Ns.prototype.set=IG;function Ts(s){var c=-1,f=s==null?0:s.length;for(this.clear();++c=c?s:c)),s}function Ri(s,c,f,h,S,L){var x,j=c&d,H=c&p,de=c&E;if(f&&(x=S?f(s,h,S,L):f(s)),x!==e)return x;if(!An(s))return s;var fe=pt(s);if(fe){if(x=SQ(s),!j)return Hr(s,x)}else{var Te=Ar(s),Ae=Te==He||Te==Mt;if(mu(s))return VA(s,j);if(Te==zr||Te==be||Ae&&!S){if(x=H||Ae?{}:sR(s),!j)return H?pQ(s,BG(x,s)):fQ(s,EA(x,s))}else{if(!In[Te])return S?s:{};x=OQ(s,Te,j)}}L||(L=new oa);var $e=L.get(s);if($e)return $e;L.set(s,x),UR(s)?s.forEach(function(nt){x.add(Ri(nt,c,f,nt,s,L))}):LR(s)&&s.forEach(function(nt,bt){x.set(bt,Ri(nt,c,f,bt,s,L))});var tt=de?H?Ry:Ay:H?Xr:pr,gt=fe?e:tt(s);return Di(gt||s,function(nt,bt){gt&&(bt=nt,nt=s[bt]),xd(x,bt,Ri(nt,c,f,bt,s,L))}),x}function kG(s){var c=pr(s);return function(f){return hA(f,s,c)}}function hA(s,c,f){var h=f.length;if(s==null)return!h;for(s=Nn(s);h--;){var S=f[h],L=c[S],x=s[S];if(x===e&&!(S in s)||!L(x))return!1}return!0}function yA(s,c,f){if(typeof s!="function")throw new bi(i);return Qd(function(){s.apply(e,f)},c)}function qd(s,c,f,h){var S=-1,L=lm,x=!0,j=s.length,H=[],de=c.length;if(!j)return H;f&&(c=Sn(c,fi(f))),h?(L=zh,x=!1):c.length>=n&&(L=Ld,x=!1,c=new Hu(c));e:for(;++SS?0:S+f),h=h===e||h>S?S:yt(h),h<0&&(h+=S),h=f>h?0:kR(h);f0&&f(j)?c>1?vr(j,c-1,f,h,S):su(S,j):h||(S[S.length]=j)}return S}var ly=YA(),_A=YA(!0);function Ma(s,c){return s&&ly(s,c,pr)}function dy(s,c){return s&&_A(s,c,pr)}function Rm(s,c){return au(c,function(f){return gs(s[f])})}function Xu(s,c){c=fu(c,s);for(var f=0,h=c.length;s!=null&&fc}function qG(s,c){return s!=null&&sn.call(s,c)}function VG(s,c){return s!=null&&c in Nn(s)}function jG(s,c,f){return s>=br(c,f)&&s=120&&fe.length>=120)?new Hu(x&&fe):e}fe=s[0];var Te=-1,Ae=j[0];e:for(;++Te-1;)j!==s&&Im.call(j,H,1),Im.call(s,H,1);return s}function LA(s,c){for(var f=s?c.length:0,h=f-1;f--;){var S=c[f];if(f==h||S!==L){var L=S;Is(S)?Im.call(s,S,1):gy(s,S)}}return s}function hy(s,c){return s+vm(pA()*(c-s+1))}function tQ(s,c,f,h){for(var S=-1,L=ir(_m((c-s)/(f||1)),0),x=re(L);L--;)x[h?L:++S]=s,s+=f;return x}function yy(s,c){var f="";if(!s||c<1||c>rn)return f;do c%2&&(f+=s),c=vm(c/2),c&&(s+=s);while(c);return f}function vt(s,c){return By(cR(s,c,Zr),s+"")}function nQ(s){return TA(yl(s))}function rQ(s,c){var f=yl(s);return qm(f,Wu(c,0,f.length))}function Kd(s,c,f,h){if(!An(s))return s;c=fu(c,s);for(var S=-1,L=c.length,x=L-1,j=s;j!=null&&++SS?0:S+c),f=f>S?S:f,f<0&&(f+=S),S=c>f?0:f-c>>>0,c>>>=0;for(var L=re(S);++h>>1,x=s[L];x!==null&&!mi(x)&&(f?x<=c:x=n){var de=c?null:EQ(s);if(de)return fm(de);x=!1,S=Ld,H=new Hu}else H=c?[]:j;e:for(;++h=h?s:Pi(s,c,f)}var qA=J$||function(s){return fr.clearTimeout(s)};function VA(s,c){if(c)return s.slice();var f=s.length,h=uA?uA(f):new s.constructor(f);return s.copy(h),h}function Oy(s){var c=new s.constructor(s.byteLength);return new hm(c).set(new hm(s)),c}function uQ(s,c){var f=c?Oy(s.buffer):s.buffer;return new s.constructor(f,s.byteOffset,s.byteLength)}function cQ(s){var c=new s.constructor(s.source,S0.exec(s));return c.lastIndex=s.lastIndex,c}function lQ(s){return Md?Nn(Md.call(s)):{}}function jA(s,c){var f=c?Oy(s.buffer):s.buffer;return new s.constructor(f,s.byteOffset,s.length)}function KA(s,c){if(s!==c){var f=s!==e,h=s===null,S=s===s,L=mi(s),x=c!==e,j=c===null,H=c===c,de=mi(c);if(!j&&!de&&!L&&s>c||L&&x&&H&&!j&&!de||h&&x&&H||!f&&H||!S)return 1;if(!h&&!L&&!de&&s=j)return H;var de=f[h];return H*(de=="desc"?-1:1)}}return s.index-c.index}function $A(s,c,f,h){for(var S=-1,L=s.length,x=f.length,j=-1,H=c.length,de=ir(L-x,0),fe=re(H+de),Te=!h;++j1?f[S-1]:e,x=S>2?f[2]:e;for(L=s.length>3&&typeof L=="function"?(S--,L):e,x&&Vr(f[0],f[1],x)&&(L=S<3?e:L,S=1),c=Nn(c);++h-1?S[L?c[x]:x]:e}}function HA(s){return ys(function(c){var f=c.length,h=f,S=Ai.prototype.thru;for(s&&c.reverse();h--;){var L=c[h];if(typeof L!="function")throw new bi(i);if(S&&!x&&Mm(L)=="wrapper")var x=new Ai([],!0)}for(h=x?h:f;++h1&&Lt.reverse(),fe&&Hj))return!1;var de=L.get(s),fe=L.get(c);if(de&&fe)return de==c&&fe==s;var Te=-1,Ae=!0,$e=f&v?new Hu:e;for(L.set(s,c),L.set(c,s);++Te1?"& ":"")+c[h],c=c.join(f>2?", ":" "),s.replace(AK,`{ -/* [wrapped with `+c+`] */ -`)}function bQ(s){return pt(s)||tc(s)||!!(dA&&s&&s[dA])}function Is(s,c){var f=typeof s;return c=c==null?rn:c,!!c&&(f=="number"||f!="symbol"&&xK.test(s))&&s>-1&&s%1==0&&s0){if(++c>=Se)return arguments[0]}else c=0;return s.apply(e,arguments)}}function qm(s,c){var f=-1,h=s.length,S=h-1;for(c=c===e?h:c;++f1?s[c-1]:e;return f=typeof f=="function"?(s.pop(),f):e,gR(s,f)});function _R(s){var c=w(s);return c.__chain__=!0,c}function MY(s,c){return c(s),s}function Vm(s,c){return c(s)}var xY=ys(function(s){var c=s.length,f=c?s[0]:0,h=this.__wrapped__,S=function(L){return cy(L,s)};return c>1||this.__actions__.length||!(h instanceof At)||!Is(f)?this.thru(S):(h=h.slice(f,+f+(c?1:0)),h.__actions__.push({func:Vm,args:[S],thisArg:e}),new Ai(h,this.__chain__).thru(function(L){return c&&!L.length&&L.push(e),L}))});function qY(){return _R(this)}function VY(){return new Ai(this.value(),this.__chain__)}function jY(){this.__values__===e&&(this.__values__=BR(this.value()));var s=this.__index__>=this.__values__.length,c=s?e:this.__values__[this.__index__++];return{done:s,value:c}}function KY(){return this}function $Y(s){for(var c,f=this;f instanceof Dm;){var h=NR(f);h.__index__=0,h.__values__=e,c?S.__wrapped__=h:c=h;var S=h;f=f.__wrapped__}return S.__wrapped__=s,c}function GY(){var s=this.__wrapped__;if(s instanceof At){var c=s;return this.__actions__.length&&(c=new At(this)),c=c.reverse(),c.__actions__.push({func:Vm,args:[ky],thisArg:e}),new Ai(c,this.__chain__)}return this.thru(ky)}function QY(){return MA(this.__wrapped__,this.__actions__)}var YY=Lm(function(s,c,f){sn.call(s,f)?++s[f]:Es(s,f,1)});function JY(s,c,f){var h=pt(s)?W0:MG;return f&&Vr(s,c,f)&&(c=e),h(s,et(c,3))}function zY(s,c){var f=pt(s)?au:gA;return f(s,et(c,3))}var HY=zA(TR),WY=zA(ER);function XY(s,c){return vr(jm(s,c),1)}function ZY(s,c){return vr(jm(s,c),Ft)}function e2(s,c,f){return f=f===e?1:yt(f),vr(jm(s,c),f)}function vR(s,c){var f=pt(s)?Di:lu;return f(s,et(c,3))}function SR(s,c){var f=pt(s)?y$:IA;return f(s,et(c,3))}var t2=Lm(function(s,c,f){sn.call(s,f)?s[f].push(c):Es(s,f,[c])});function n2(s,c,f,h){s=Wr(s)?s:yl(s),f=f&&!h?yt(f):0;var S=s.length;return f<0&&(f=ir(S+f,0)),Ym(s)?f<=S&&s.indexOf(c,f)>-1:!!S&&ul(s,c,f)>-1}var r2=vt(function(s,c,f){var h=-1,S=typeof c=="function",L=Wr(s)?re(s.length):[];return lu(s,function(x){L[++h]=S?di(c,x,f):Vd(x,c,f)}),L}),i2=Lm(function(s,c,f){Es(s,f,c)});function jm(s,c){var f=pt(s)?Sn:bA;return f(s,et(c,3))}function a2(s,c,f,h){return s==null?[]:(pt(c)||(c=c==null?[]:[c]),f=h?e:f,pt(f)||(f=f==null?[]:[f]),FA(s,c,f))}var s2=Lm(function(s,c,f){s[f?0:1].push(c)},function(){return[[],[]]});function o2(s,c,f){var h=pt(s)?Hh:tA,S=arguments.length<3;return h(s,et(c,4),f,S,lu)}function u2(s,c,f){var h=pt(s)?I$:tA,S=arguments.length<3;return h(s,et(c,4),f,S,IA)}function c2(s,c){var f=pt(s)?au:gA;return f(s,Gm(et(c,3)))}function l2(s){var c=pt(s)?TA:nQ;return c(s)}function d2(s,c,f){(f?Vr(s,c,f):c===e)?c=1:c=yt(c);var h=pt(s)?LG:rQ;return h(s,c)}function f2(s){var c=pt(s)?CG:aQ;return c(s)}function p2(s){if(s==null)return 0;if(Wr(s))return Ym(s)?ll(s):s.length;var c=Ar(s);return c==it||c==gr?s.size:Ny(s).length}function m2(s,c,f){var h=pt(s)?Wh:sQ;return f&&Vr(s,c,f)&&(c=e),h(s,et(c,3))}var N2=vt(function(s,c){if(s==null)return[];var f=c.length;return f>1&&Vr(s,c[0],c[1])?c=[]:f>2&&Vr(c[0],c[1],c[2])&&(c=[c[0]]),FA(s,vr(c,1),[])}),Km=z$||function(){return fr.Date.now()};function T2(s,c){if(typeof c!="function")throw new bi(i);return s=yt(s),function(){if(--s<1)return c.apply(this,arguments)}}function OR(s,c,f){return c=f?e:c,c=s&&c==null?s.length:c,hs(s,Ee,e,e,e,e,c)}function DR(s,c){var f;if(typeof c!="function")throw new bi(i);return s=yt(s),function(){return--s>0&&(f=c.apply(this,arguments)),s<=1&&(c=e),f}}var xy=vt(function(s,c,f){var h=R;if(f.length){var S=ou(f,El(xy));h|=te}return hs(s,h,c,f,S)}),bR=vt(function(s,c,f){var h=R|B;if(f.length){var S=ou(f,El(bR));h|=te}return hs(c,h,s,f,S)});function AR(s,c,f){c=f?e:c;var h=hs(s,J,e,e,e,e,e,c);return h.placeholder=AR.placeholder,h}function RR(s,c,f){c=f?e:c;var h=hs(s,ne,e,e,e,e,e,c);return h.placeholder=RR.placeholder,h}function PR(s,c,f){var h,S,L,x,j,H,de=0,fe=!1,Te=!1,Ae=!0;if(typeof s!="function")throw new bi(i);c=wi(c)||0,An(f)&&(fe=!!f.leading,Te="maxWait"in f,L=Te?ir(wi(f.maxWait)||0,c):L,Ae="trailing"in f?!!f.trailing:Ae);function $e(Vn){var ca=h,vs=S;return h=S=e,de=Vn,x=s.apply(vs,ca),x}function tt(Vn){return de=Vn,j=Qd(bt,c),fe?$e(Vn):x}function gt(Vn){var ca=Vn-H,vs=Vn-de,zR=c-ca;return Te?br(zR,L-vs):zR}function nt(Vn){var ca=Vn-H,vs=Vn-de;return H===e||ca>=c||ca<0||Te&&vs>=L}function bt(){var Vn=Km();if(nt(Vn))return Lt(Vn);j=Qd(bt,gt(Vn))}function Lt(Vn){return j=e,Ae&&h?$e(Vn):(h=S=e,x)}function Ni(){j!==e&&qA(j),de=0,h=H=S=j=e}function jr(){return j===e?x:Lt(Km())}function Ti(){var Vn=Km(),ca=nt(Vn);if(h=arguments,S=this,H=Vn,ca){if(j===e)return tt(H);if(Te)return qA(j),j=Qd(bt,c),$e(H)}return j===e&&(j=Qd(bt,c)),x}return Ti.cancel=Ni,Ti.flush=jr,Ti}var E2=vt(function(s,c){return yA(s,1,c)}),h2=vt(function(s,c,f){return yA(s,wi(c)||0,f)});function y2(s){return hs(s,we)}function $m(s,c){if(typeof s!="function"||c!=null&&typeof c!="function")throw new bi(i);var f=function(){var h=arguments,S=c?c.apply(this,h):h[0],L=f.cache;if(L.has(S))return L.get(S);var x=s.apply(this,h);return f.cache=L.set(S,x)||L,x};return f.cache=new($m.Cache||Ts),f}$m.Cache=Ts;function Gm(s){if(typeof s!="function")throw new bi(i);return function(){var c=arguments;switch(c.length){case 0:return!s.call(this);case 1:return!s.call(this,c[0]);case 2:return!s.call(this,c[0],c[1]);case 3:return!s.call(this,c[0],c[1],c[2])}return!s.apply(this,c)}}function I2(s){return DR(2,s)}var g2=oQ(function(s,c){c=c.length==1&&pt(c[0])?Sn(c[0],fi(et())):Sn(vr(c,1),fi(et()));var f=c.length;return vt(function(h){for(var S=-1,L=br(h.length,f);++S=c}),tc=SA(function(){return arguments}())?SA:function(s){return Cn(s)&&sn.call(s,"callee")&&!lA.call(s,"callee")},pt=re.isArray,B2=G0?fi(G0):$G;function Wr(s){return s!=null&&Qm(s.length)&&!gs(s)}function qn(s){return Cn(s)&&Wr(s)}function k2(s){return s===!0||s===!1||Cn(s)&&qr(s)==Dt}var mu=W$||Wy,M2=Q0?fi(Q0):GG;function x2(s){return Cn(s)&&s.nodeType===1&&!Yd(s)}function q2(s){if(s==null)return!0;if(Wr(s)&&(pt(s)||typeof s=="string"||typeof s.splice=="function"||mu(s)||hl(s)||tc(s)))return!s.length;var c=Ar(s);if(c==it||c==gr)return!s.size;if(Gd(s))return!Ny(s).length;for(var f in s)if(sn.call(s,f))return!1;return!0}function V2(s,c){return jd(s,c)}function j2(s,c,f){f=typeof f=="function"?f:e;var h=f?f(s,c):e;return h===e?jd(s,c,e,f):!!h}function Vy(s){if(!Cn(s))return!1;var c=qr(s);return c==je||c==ae||typeof s.message=="string"&&typeof s.name=="string"&&!Yd(s)}function K2(s){return typeof s=="number"&&fA(s)}function gs(s){if(!An(s))return!1;var c=qr(s);return c==He||c==Mt||c==Ce||c==sl}function wR(s){return typeof s=="number"&&s==yt(s)}function Qm(s){return typeof s=="number"&&s>-1&&s%1==0&&s<=rn}function An(s){var c=typeof s;return s!=null&&(c=="object"||c=="function")}function Cn(s){return s!=null&&typeof s=="object"}var LR=Y0?fi(Y0):YG;function $2(s,c){return s===c||my(s,c,Fy(c))}function G2(s,c,f){return f=typeof f=="function"?f:e,my(s,c,Fy(c),f)}function Q2(s){return CR(s)&&s!=+s}function Y2(s){if(PQ(s))throw new dt(r);return OA(s)}function J2(s){return s===null}function z2(s){return s==null}function CR(s){return typeof s=="number"||Cn(s)&&qr(s)==wt}function Yd(s){if(!Cn(s)||qr(s)!=zr)return!1;var c=ym(s);if(c===null)return!0;var f=sn.call(c,"constructor")&&c.constructor;return typeof f=="function"&&f instanceof f&&Nm.call(f)==G$}var jy=J0?fi(J0):JG;function H2(s){return wR(s)&&s>=-rn&&s<=rn}var UR=z0?fi(z0):zG;function Ym(s){return typeof s=="string"||!pt(s)&&Cn(s)&&qr(s)==li}function mi(s){return typeof s=="symbol"||Cn(s)&&qr(s)==jt}var hl=H0?fi(H0):HG;function W2(s){return s===e}function X2(s){return Cn(s)&&Ar(s)==Gu}function Z2(s){return Cn(s)&&qr(s)==ka}var eJ=km(Ty),tJ=km(function(s,c){return s<=c});function BR(s){if(!s)return[];if(Wr(s))return Ym(s)?sa(s):Hr(s);if(Cd&&s[Cd])return L$(s[Cd]());var c=Ar(s),f=c==it?ry:c==gr?fm:yl;return f(s)}function _s(s){if(!s)return s===0?s:0;if(s=wi(s),s===Ft||s===-Ft){var c=s<0?-1:1;return c*xr}return s===s?s:0}function yt(s){var c=_s(s),f=c%1;return c===c?f?c-f:c:0}function kR(s){return s?Wu(yt(s),0,hn):0}function wi(s){if(typeof s=="number")return s;if(mi(s))return nr;if(An(s)){var c=typeof s.valueOf=="function"?s.valueOf():s;s=An(c)?c+"":c}if(typeof s!="string")return s===0?s:+s;s=nA(s);var f=BK.test(s);return f||MK.test(s)?T$(s.slice(2),f?2:8):UK.test(s)?nr:+s}function MR(s){return xa(s,Xr(s))}function nJ(s){return s?Wu(yt(s),-rn,rn):s===0?s:0}function Zt(s){return s==null?"":pi(s)}var rJ=Nl(function(s,c){if(Gd(c)||Wr(c)){xa(c,pr(c),s);return}for(var f in c)sn.call(c,f)&&xd(s,f,c[f])}),xR=Nl(function(s,c){xa(c,Xr(c),s)}),Jm=Nl(function(s,c,f,h){xa(c,Xr(c),s,h)}),iJ=Nl(function(s,c,f,h){xa(c,pr(c),s,h)}),aJ=ys(cy);function sJ(s,c){var f=ml(s);return c==null?f:EA(f,c)}var oJ=vt(function(s,c){s=Nn(s);var f=-1,h=c.length,S=h>2?c[2]:e;for(S&&Vr(c[0],c[1],S)&&(h=1);++f1),L}),xa(s,Ry(s),f),h&&(f=Ri(f,d|p|E,hQ));for(var S=c.length;S--;)gy(f,c[S]);return f});function OJ(s,c){return VR(s,Gm(et(c)))}var DJ=ys(function(s,c){return s==null?{}:ZG(s,c)});function VR(s,c){if(s==null)return{};var f=Sn(Ry(s),function(h){return[h]});return c=et(c),wA(s,f,function(h,S){return c(h,S[0])})}function bJ(s,c,f){c=fu(c,s);var h=-1,S=c.length;for(S||(S=1,s=e);++hc){var h=s;s=c,c=h}if(f||s%1||c%1){var S=pA();return br(s+S*(c-s+N$("1e-"+((S+"").length-1))),c)}return hy(s,c)}var MJ=Tl(function(s,c,f){return c=c.toLowerCase(),s+(f?$R(c):c)});function $R(s){return Gy(Zt(s).toLowerCase())}function GR(s){return s=Zt(s),s&&s.replace(qK,A$).replace(a$,"")}function xJ(s,c,f){s=Zt(s),c=pi(c);var h=s.length;f=f===e?h:Wu(yt(f),0,h);var S=f;return f-=c.length,f>=0&&s.slice(f,S)==c}function qJ(s){return s=Zt(s),s&&IK.test(s)?s.replace(_0,R$):s}function VJ(s){return s=Zt(s),s&&DK.test(s)?s.replace(qh,"\\$&"):s}var jJ=Tl(function(s,c,f){return s+(f?"-":"")+c.toLowerCase()}),KJ=Tl(function(s,c,f){return s+(f?" ":"")+c.toLowerCase()}),$J=JA("toLowerCase");function GJ(s,c,f){s=Zt(s),c=yt(c);var h=c?ll(s):0;if(!c||h>=c)return s;var S=(c-h)/2;return Bm(vm(S),f)+s+Bm(_m(S),f)}function QJ(s,c,f){s=Zt(s),c=yt(c);var h=c?ll(s):0;return c&&h>>0,f?(s=Zt(s),s&&(typeof c=="string"||c!=null&&!jy(c))&&(c=pi(c),!c&&cl(s))?pu(sa(s),0,f):s.split(c,f)):[]}var ZJ=Tl(function(s,c,f){return s+(f?" ":"")+Gy(c)});function ez(s,c,f){return s=Zt(s),f=f==null?0:Wu(yt(f),0,s.length),c=pi(c),s.slice(f,f+c.length)==c}function tz(s,c,f){var h=w.templateSettings;f&&Vr(s,c,f)&&(c=e),s=Zt(s),c=Jm({},c,h,tR);var S=Jm({},c.imports,h.imports,tR),L=pr(S),x=ny(S,L),j,H,de=0,fe=c.interpolate||om,Te="__p += '",Ae=iy((c.escape||om).source+"|"+fe.source+"|"+(fe===v0?CK:om).source+"|"+(c.evaluate||om).source+"|$","g"),$e="//# sourceURL="+(sn.call(c,"sourceURL")?(c.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++l$+"]")+` -`;s.replace(Ae,function(nt,bt,Lt,Ni,jr,Ti){return Lt||(Lt=Ni),Te+=s.slice(de,Ti).replace(VK,P$),bt&&(j=!0,Te+=`' + -__e(`+bt+`) + -'`),jr&&(H=!0,Te+=`'; -`+jr+`; -__p += '`),Lt&&(Te+=`' + -((__t = (`+Lt+`)) == null ? '' : __t) + -'`),de=Ti+nt.length,nt}),Te+=`'; -`;var tt=sn.call(c,"variable")&&c.variable;if(!tt)Te=`with (obj) { -`+Te+` -} -`;else if(wK.test(tt))throw new dt(a);Te=(H?Te.replace(vn,""):Te).replace(an,"$1").replace(hK,"$1;"),Te="function("+(tt||"obj")+`) { -`+(tt?"":`obj || (obj = {}); -`)+"var __t, __p = ''"+(j?", __e = _.escape":"")+(H?`, __j = Array.prototype.join; -function print() { __p += __j.call(arguments, '') } -`:`; -`)+Te+`return __p -}`;var gt=YR(function(){return zt(L,$e+"return "+Te).apply(e,x)});if(gt.source=Te,Vy(gt))throw gt;return gt}function nz(s){return Zt(s).toLowerCase()}function rz(s){return Zt(s).toUpperCase()}function iz(s,c,f){if(s=Zt(s),s&&(f||c===e))return nA(s);if(!s||!(c=pi(c)))return s;var h=sa(s),S=sa(c),L=rA(h,S),x=iA(h,S)+1;return pu(h,L,x).join("")}function az(s,c,f){if(s=Zt(s),s&&(f||c===e))return s.slice(0,sA(s)+1);if(!s||!(c=pi(c)))return s;var h=sa(s),S=iA(h,sa(c))+1;return pu(h,0,S).join("")}function sz(s,c,f){if(s=Zt(s),s&&(f||c===e))return s.replace(Vh,"");if(!s||!(c=pi(c)))return s;var h=sa(s),S=rA(h,sa(c));return pu(h,S).join("")}function oz(s,c){var f=Qe,h=Z;if(An(c)){var S="separator"in c?c.separator:S;f="length"in c?yt(c.length):f,h="omission"in c?pi(c.omission):h}s=Zt(s);var L=s.length;if(cl(s)){var x=sa(s);L=x.length}if(f>=L)return s;var j=f-ll(h);if(j<1)return h;var H=x?pu(x,0,j).join(""):s.slice(0,j);if(S===e)return H+h;if(x&&(j+=H.length-j),jy(S)){if(s.slice(j).search(S)){var de,fe=H;for(S.global||(S=iy(S.source,Zt(S0.exec(S))+"g")),S.lastIndex=0;de=S.exec(fe);)var Te=de.index;H=H.slice(0,Te===e?j:Te)}}else if(s.indexOf(pi(S),j)!=j){var Ae=H.lastIndexOf(S);Ae>-1&&(H=H.slice(0,Ae))}return H+h}function uz(s){return s=Zt(s),s&&yK.test(s)?s.replace(g0,k$):s}var cz=Tl(function(s,c,f){return s+(f?" ":"")+c.toUpperCase()}),Gy=JA("toUpperCase");function QR(s,c,f){return s=Zt(s),c=f?e:c,c===e?w$(s)?q$(s):v$(s):s.match(c)||[]}var YR=vt(function(s,c){try{return di(s,e,c)}catch(f){return Vy(f)?f:new dt(f)}}),lz=ys(function(s,c){return Di(c,function(f){f=qa(f),Es(s,f,xy(s[f],s))}),s});function dz(s){var c=s==null?0:s.length,f=et();return s=c?Sn(s,function(h){if(typeof h[1]!="function")throw new bi(i);return[f(h[0]),h[1]]}):[],vt(function(h){for(var S=-1;++Srn)return[];var f=hn,h=br(s,hn);c=et(c),s-=hn;for(var S=ty(h,c);++f0||c<0)?new At(f):(s<0?f=f.takeRight(-s):s&&(f=f.drop(s)),c!==e&&(c=yt(c),f=c<0?f.dropRight(-c):f.take(c-s)),f)},At.prototype.takeRightWhile=function(s){return this.reverse().takeWhile(s).reverse()},At.prototype.toArray=function(){return this.take(hn)},Ma(At.prototype,function(s,c){var f=/^(?:filter|find|map|reject)|While$/.test(c),h=/^(?:head|last)$/.test(c),S=w[h?"take"+(c=="last"?"Right":""):c],L=h||/^find/.test(c);S&&(w.prototype[c]=function(){var x=this.__wrapped__,j=h?[1]:arguments,H=x instanceof At,de=j[0],fe=H||pt(x),Te=function(bt){var Lt=S.apply(w,su([bt],j));return h&&Ae?Lt[0]:Lt};fe&&f&&typeof de=="function"&&de.length!=1&&(H=fe=!1);var Ae=this.__chain__,$e=!!this.__actions__.length,tt=L&&!Ae,gt=H&&!$e;if(!L&&fe){x=gt?x:new At(this);var nt=s.apply(x,j);return nt.__actions__.push({func:Vm,args:[Te],thisArg:e}),new Ai(nt,Ae)}return tt&>?s.apply(this,j):(nt=this.thru(Te),tt?h?nt.value()[0]:nt.value():nt)})}),Di(["pop","push","shift","sort","splice","unshift"],function(s){var c=pm[s],f=/^(?:push|sort|unshift)$/.test(s)?"tap":"thru",h=/^(?:pop|shift)$/.test(s);w.prototype[s]=function(){var S=arguments;if(h&&!this.__chain__){var L=this.value();return c.apply(pt(L)?L:[],S)}return this[f](function(x){return c.apply(pt(x)?x:[],S)})}}),Ma(At.prototype,function(s,c){var f=w[c];if(f){var h=f.name+"";sn.call(pl,h)||(pl[h]=[]),pl[h].push({name:c,func:f})}}),pl[Cm(e,B).name]=[{name:"wrapper",func:e}],At.prototype.clone=uG,At.prototype.reverse=cG,At.prototype.value=lG,w.prototype.at=xY,w.prototype.chain=qY,w.prototype.commit=VY,w.prototype.next=jY,w.prototype.plant=$Y,w.prototype.reverse=GY,w.prototype.toJSON=w.prototype.valueOf=w.prototype.value=QY,w.prototype.first=w.prototype.head,Cd&&(w.prototype[Cd]=KY),w},uu=V$();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(fr._=uu,define(function(){return uu})):Yu?((Yu.exports=uu)._=uu,Yh._=uu):fr._=uu}).call(Id)});var CV=F(Hc=>{"use strict";m();T();N();Object.defineProperty(Hc,"__esModule",{value:!0});Hc.FederationFactory=void 0;Hc.federateSubgraphs=Hfe;Hc.federateSubgraphsWithContracts=Wfe;Hc.federateSubgraphsContract=Xfe;var Pe=_e(),PV=Au(),Qr=Lr(),Fe=Gi(),Jc=OT(),zc=md(),Yr=_p(),dh=_E(),Fp=Ru(),Qfe=Tb(),Yfe=vp(),FV=Jf(),ve=Yl(),Jfe=yb(),wV=RV(),gd=lh(),Oe=Hn(),fh=Kl(),me=Cr(),zfe=Sp(),xu=zf(),mh,LV,ph=class{constructor({authorizationDataByParentTypeName:t,concreteTypeNamesByAbstractTypeName:n,entityDataByTypeName:r,entityInterfaceFederationDataByTypeName:i,fieldCoordsByNamedTypeName:a,internalGraph:o,internalSubgraphBySubgraphName:u,options:l,warnings:d}){rc(this,mh);g(this,"authorizationDataByParentTypeName");g(this,"coordsByNamedTypeName",new Map);g(this,"directiveDefinitionByName",new Map);g(this,"clientDefinitions",[]);g(this,"currentSubgraphName","");g(this,"concreteTypeNamesByAbstractTypeName");g(this,"subgraphNamesByNamedTypeNameByFieldCoords",new Map);g(this,"entityDataByTypeName");g(this,"entityInterfaceFederationDataByTypeName");g(this,"errors",[]);g(this,"fieldConfigurationByFieldCoords",new Map);g(this,"fieldCoordsByNamedTypeName");g(this,"inaccessibleCoords",new Set);g(this,"inaccessibleRequiredInputValueErrorByCoords",new Map);g(this,"internalGraph");g(this,"internalSubgraphBySubgraphName");g(this,"invalidORScopesCoords",new Set);g(this,"isMaxDepth",!1);g(this,"isVersionTwo",!1);g(this,"namedInputValueTypeNames",new Set);g(this,"namedOutputTypeNames",new Set);g(this,"options");g(this,"parentDefinitionDataByTypeName",new Map);g(this,"parentTagDataByTypeName",new Map);g(this,"persistedDirectiveDefinitionByDirectiveName",new Map([[Oe.AUTHENTICATED,xu.AUTHENTICATED_DEFINITION],[Oe.DEPRECATED,xu.DEPRECATED_DEFINITION],[Oe.INACCESSIBLE,xu.INACCESSIBLE_DEFINITION],[Oe.ONE_OF,xu.ONE_OF_DEFINITION],[Oe.REQUIRES_SCOPES,xu.REQUIRES_SCOPES_DEFINITION],[Oe.SEMANTIC_NON_NULL,xu.SEMANTIC_NON_NULL_DEFINITION],[Oe.TAG,xu.TAG_DEFINITION]]));g(this,"potentialPersistedDirectiveDefinitionDataByDirectiveName",new Map);g(this,"referencedPersistedDirectiveNames",new Set);g(this,"routerDefinitions",[]);g(this,"subscriptionFilterDataByFieldPath",new Map);g(this,"tagNamesByCoords",new Map);g(this,"warnings");this.authorizationDataByParentTypeName=t,this.options=l!=null?l:{},this.concreteTypeNamesByAbstractTypeName=n,this.entityDataByTypeName=r,this.entityInterfaceFederationDataByTypeName=i,this.fieldCoordsByNamedTypeName=a,this.internalGraph=o,this.internalSubgraphBySubgraphName=u,this.warnings=d}extractPersistedDirectives({data:t,directivesByName:n}){for(let[r,i]of n)if(this.persistedDirectiveDefinitionByDirectiveName.get(r)&&(this.referencedPersistedDirectiveNames.add(r),!(Oe.AUTHORIZATION_DIRECTIVES.has(r)||i.length<1)))switch(r){case Oe.DEPRECATED:{t.isDeprecated=!0,(0,ve.upsertDeprecatedDirective)(t,i[0]);break}case Oe.TAG:{(0,ve.upsertTagDirectives)(t,i);break}default:{let o=t.directivesByName.get(r);if(!o){t.directivesByName.set(r,[...i]);break}if(Oe.NON_REPEATABLE_PERSISTED_DIRECTIVES.has(r))break;o.push(...i)}}return t}getValidImplementedInterfaces(t){var o;let n=[];if(t.implementedInterfaceTypeNames.size<1)return n;let r=(0,ve.isNodeDataInaccessible)(t),i=new Map,a=new Map;for(let u of t.implementedInterfaceTypeNames){n.push((0,Qr.stringToNamedTypeNode)(u));let l=(0,me.getOrThrowError)(this.parentDefinitionDataByTypeName,u,Oe.PARENT_DEFINITION_DATA);if(l.kind!==Pe.Kind.INTERFACE_TYPE_DEFINITION){a.set(l.name,(0,me.kindToNodeType)(l.kind));continue}let d={invalidFieldImplementations:new Map,unimplementedFields:[]},p=!1;for(let[E,y]of l.fieldDataByName){let v=!1,R=t.fieldDataByName.get(E);if(!R){p=!0,d.unimplementedFields.push(E);continue}let B={invalidAdditionalArguments:new Set,invalidImplementedArguments:[],isInaccessible:!1,originalResponseType:(0,dh.printTypeNode)(y.node.type),unimplementedArguments:new Set};(0,ve.isTypeValidImplementation)(y.node.type,R.node.type,this.concreteTypeNamesByAbstractTypeName)||(p=!0,v=!0,B.implementedResponseType=(0,dh.printTypeNode)(R.node.type));let V=new Set;for(let[J,ne]of y.argumentDataByName){let te=ne.node;V.add(J);let Ne=(o=R.argumentDataByName.get(J))==null?void 0:o.node;if(!Ne){p=!0,v=!0,B.unimplementedArguments.add(J);continue}let Ee=(0,dh.printTypeNode)(Ne.type),he=(0,dh.printTypeNode)(te.type);he!==Ee&&(p=!0,v=!0,B.invalidImplementedArguments.push({actualType:Ee,argumentName:J,expectedType:he}))}for(let[J,ne]of R.argumentDataByName){let te=ne.node;V.has(J)||te.type.kind===Pe.Kind.NON_NULL_TYPE&&(p=!0,v=!0,B.invalidAdditionalArguments.add(J))}!r&&R.isInaccessible&&!y.isInaccessible&&(p=!0,v=!0,B.isInaccessible=!0),v&&d.invalidFieldImplementations.set(E,B)}p&&i.set(u,d)}return a.size>0&&this.errors.push((0,Fe.invalidImplementedTypeError)(t.name,a)),i.size>0&&this.errors.push((0,Fe.invalidInterfaceImplementationError)(t.node.name.value,(0,me.kindToNodeType)(t.kind),i)),n}addValidPrimaryKeyTargetsToEntityData(t){var p;let n=this.entityDataByTypeName.get(t);if(!n)return;let r=(0,me.getOrThrowError)(this.internalSubgraphBySubgraphName,this.currentSubgraphName,"internalSubgraphBySubgraphName"),i=r.parentDefinitionDataByTypeName,a=i.get(n.typeName);if(!a||a.kind!==Pe.Kind.OBJECT_TYPE_DEFINITION)throw(0,Fe.incompatibleParentKindFatalError)(n.typeName,Pe.Kind.OBJECT_TYPE_DEFINITION,(a==null?void 0:a.kind)||Pe.Kind.NULL);let o=r.configurationDataByTypeName.get(n.typeName);if(!o)return;let u=[],l=this.internalGraph.nodeByNodeName.get(`${this.currentSubgraphName}.${n.typeName}`);(0,Jc.validateImplicitFieldSets)({conditionalFieldDataByCoords:r.conditionalFieldDataByCoordinates,currentSubgraphName:this.currentSubgraphName,entityData:n,implicitKeys:u,objectData:a,parentDefinitionDataByTypeName:i,graphNode:l});for(let[E,y]of this.entityInterfaceFederationDataByTypeName){if(!((p=y.concreteTypeNames)!=null&&p.has(n.typeName)))continue;let v=this.entityDataByTypeName.get(E);v&&(0,Jc.validateImplicitFieldSets)({conditionalFieldDataByCoords:r.conditionalFieldDataByCoordinates,currentSubgraphName:this.currentSubgraphName,entityData:v,implicitKeys:u,objectData:a,parentDefinitionDataByTypeName:i,graphNode:l})}if(u.length<1)return;if(!o.keys||o.keys.length<1){o.isRootNode=!0,o.keys=u;return}let d=new Set(o.keys.map(E=>E.selectionSet));for(let E of u)d.has(E.selectionSet)||(o.keys.push(E),d.add(E.selectionSet))}addValidPrimaryKeyTargetsFromInterfaceObject(t,n,r,i){let a=t.parentDefinitionDataByTypeName,o=a.get(n);if(!o||!(0,ve.isParentDataCompositeOutputType)(o))throw(0,Fe.incompatibleParentKindFatalError)(n,Pe.Kind.INTERFACE_TYPE_DEFINITION,(o==null?void 0:o.kind)||Pe.Kind.NULL);let u=(0,me.getOrThrowError)(t.configurationDataByTypeName,r.typeName,"internalSubgraph.configurationDataByTypeName"),l=[];if((0,Jc.validateImplicitFieldSets)({conditionalFieldDataByCoords:t.conditionalFieldDataByCoordinates,currentSubgraphName:t.name,entityData:r,implicitKeys:l,objectData:o,parentDefinitionDataByTypeName:a,graphNode:i}),l.length<1)return;if(!u.keys||u.keys.length<1){u.isRootNode=!0,u.keys=l;return}let d=new Set(u.keys.map(p=>p.selectionSet));for(let p of l)d.has(p.selectionSet)||(u.keys.push(p),d.add(p.selectionSet))}getEnumValueMergeMethod(t){return this.namedInputValueTypeNames.has(t)?this.namedOutputTypeNames.has(t)?ve.MergeMethod.CONSISTENT:ve.MergeMethod.INTERSECTION:ve.MergeMethod.UNION}generateTagData(){for(let[t,n]of this.tagNamesByCoords){let r=t.split(Oe.LITERAL_PERIOD);if(r.length<1)continue;let i=(0,me.getValueOrDefault)(this.parentTagDataByTypeName,r[0],()=>(0,Jc.newParentTagData)(r[0]));switch(r.length){case 1:for(let l of n)i.tagNames.add(l);break;case 2:let a=(0,me.getValueOrDefault)(i.childTagDataByChildName,r[1],()=>(0,Jc.newChildTagData)(r[1]));for(let l of n)a.tagNames.add(l);break;case 3:let o=(0,me.getValueOrDefault)(i.childTagDataByChildName,r[1],()=>(0,Jc.newChildTagData)(r[1])),u=(0,me.getValueOrDefault)(o.tagNamesByArgumentName,r[2],()=>new Set);for(let l of n)u.add(l);break;default:break}}}upsertEnumValueData(t,n,r){let i=t.get(n.name),a=i||this.copyEnumValueData(n);this.extractPersistedDirectives({data:a.persistedDirectivesData,directivesByName:n.directivesByName});let o=(0,ve.isNodeDataInaccessible)(n);if((r||o)&&this.inaccessibleCoords.add(a.federatedCoords),this.recordTagNamesByCoords(a,a.federatedCoords),!i){t.set(a.name,a);return}a.appearances+=1,(0,me.addNewObjectValueMapEntries)(n.configureDescriptionDataBySubgraphName,a.configureDescriptionDataBySubgraphName),(0,ve.setLongestDescription)(a,n),(0,me.addIterableToSet)({source:n.subgraphNames,target:a.subgraphNames})}upsertInputValueData(t,n,r,i){let a=t.get(n.name),o=a||this.copyInputValueData(n);if(this.extractPersistedDirectives({data:o.persistedDirectivesData,directivesByName:n.directivesByName}),this.recordTagNamesByCoords(o,`${r}.${o.name}`),this.namedInputValueTypeNames.add(o.namedTypeName),(0,me.getValueOrDefault)(this.coordsByNamedTypeName,o.namedTypeName,()=>new Set).add(o.federatedCoords),!a){t.set(o.name,o);return}(0,me.addNewObjectValueMapEntries)(n.configureDescriptionDataBySubgraphName,o.configureDescriptionDataBySubgraphName),(0,ve.setLongestDescription)(o,n),(0,me.addIterableToSet)({source:n.requiredSubgraphNames,target:o.requiredSubgraphNames}),(0,me.addIterableToSet)({source:n.subgraphNames,target:o.subgraphNames}),this.handleInputValueInaccessibility(i,o,r);let u=(0,gd.getMostRestrictiveMergedTypeNode)(o.type,n.type,o.originalCoords,this.errors);u.success?o.type=u.typeNode:this.errors.push((0,Fe.incompatibleMergedTypesError)({actualType:u.actualType,isArgument:a.isArgument,coords:a.federatedCoords,expectedType:u.expectedType})),(0,ve.compareAndValidateInputValueDefaultValues)(o,n,this.errors)}handleInputValueInaccessibility(t,n,r){if(t){this.inaccessibleRequiredInputValueErrorByCoords.delete(n.federatedCoords),this.inaccessibleCoords.add(n.federatedCoords);return}if((0,ve.isNodeDataInaccessible)(n)){if((0,ve.isTypeRequired)(n.type)){this.inaccessibleRequiredInputValueErrorByCoords.set(n.federatedCoords,(0,Fe.inaccessibleRequiredInputValueError)(n,r));return}this.inaccessibleCoords.add(n.federatedCoords)}}handleSubscriptionFilterDirective(t,n){let r=t.directivesByName.get(Oe.SUBSCRIPTION_FILTER);if(!r)return;let i=(0,me.getFirstEntry)(t.subgraphNames);if(i===void 0){this.errors.push((0,Fe.unknownFieldSubgraphNameError)(t.federatedCoords));return}this.subscriptionFilterDataByFieldPath.set(t.federatedCoords,{directive:r[0],fieldData:n||t,directiveSubgraphName:i})}federateOutputType({current:t,other:n,coords:r,mostRestrictive:i}){n=(0,PV.getMutableTypeNode)(n,r,this.errors);let a={kind:t.kind},o=gd.DivergentType.NONE,u=a;for(let l=0;lnew Set)})}upsertFieldData(t,n,r){let i=t.get(n.name),a=i||this.copyFieldData(n,r||(0,ve.isNodeDataInaccessible)(n));(0,me.getValueOrDefault)(this.coordsByNamedTypeName,n.namedTypeName,()=>new Set).add(a.federatedCoords),this.namedOutputTypeNames.add(n.namedTypeName),this.handleSubscriptionFilterDirective(n,a),this.extractPersistedDirectives({data:a.persistedDirectivesData,directivesByName:n.directivesByName});let o=r||(0,ve.isNodeDataInaccessible)(a);if(o&&this.inaccessibleCoords.add(a.federatedCoords),this.recordTagNamesByCoords(a,a.federatedCoords),!i){t.set(a.name,a);return}let u=this.federateOutputType({current:a.type,other:n.type,coords:a.federatedCoords,mostRestrictive:!1});if(u.success)if(a.type=u.typeNode,a.namedTypeName!==n.namedTypeName){let l=(0,me.getValueOrDefault)(this.subgraphNamesByNamedTypeNameByFieldCoords,a.federatedCoords,()=>new Map),d=(0,me.getValueOrDefault)(l,a.namedTypeName,()=>new Set);if(d.size<1)for(let p of a.subgraphNames)n.subgraphNames.has(p)||d.add(p);(0,me.addIterableToSet)({source:n.subgraphNames,target:(0,me.getValueOrDefault)(l,n.namedTypeName,()=>new Set)})}else this.addSubgraphNameToExistingFieldNamedTypeDisparity(n);for(let l of n.argumentDataByName.values())this.upsertInputValueData(a.argumentDataByName,l,a.federatedCoords,o);(0,me.addNewObjectValueMapEntries)(n.configureDescriptionDataBySubgraphName,i.configureDescriptionDataBySubgraphName),(0,ve.setLongestDescription)(a,n),a.isInaccessible||(a.isInaccessible=n.isInaccessible),(0,me.addNewObjectValueMapEntries)(n.externalFieldDataBySubgraphName,a.externalFieldDataBySubgraphName),(0,me.addMapEntries)({source:n.isShareableBySubgraphName,target:a.isShareableBySubgraphName}),(0,me.addMapEntries)({source:n.nullLevelsBySubgraphName,target:a.nullLevelsBySubgraphName}),(0,me.addIterableToSet)({source:n.subgraphNames,target:a.subgraphNames})}getClientSchemaUnionMembers(t){let n=[];for(let[r,i]of t.memberByMemberTypeName)this.inaccessibleCoords.has(r)||n.push(i);return n}recordTagNamesByCoords(t,n){let r=n||t.name;if(t.persistedDirectivesData.tagDirectiveByName.size<1)return;let i=(0,me.getValueOrDefault)(this.tagNamesByCoords,r,()=>new Set);for(let a of t.persistedDirectivesData.tagDirectiveByName.keys())i.add(a)}copyMutualParentDefinitionData(t){return{configureDescriptionDataBySubgraphName:(0,me.copyObjectValueMap)(t.configureDescriptionDataBySubgraphName),directivesByName:(0,me.copyArrayValueMap)(t.directivesByName),extensionType:t.extensionType,name:t.name,persistedDirectivesData:this.extractPersistedDirectives({data:(0,ve.newPersistedDirectivesData)(),directivesByName:t.directivesByName}),description:(0,ve.getInitialFederatedDescription)(t)}}copyEnumValueData(t){return{appearances:t.appearances,configureDescriptionDataBySubgraphName:(0,me.copyObjectValueMap)(t.configureDescriptionDataBySubgraphName),federatedCoords:t.federatedCoords,directivesByName:(0,me.copyArrayValueMap)(t.directivesByName),kind:t.kind,name:t.name,node:{directives:[],kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},parentTypeName:t.parentTypeName,persistedDirectivesData:this.extractPersistedDirectives({data:(0,ve.newPersistedDirectivesData)(),directivesByName:t.directivesByName}),subgraphNames:new Set(t.subgraphNames),description:(0,ve.getInitialFederatedDescription)(t)}}copyInputValueData(t){return{configureDescriptionDataBySubgraphName:(0,me.copyObjectValueMap)(t.configureDescriptionDataBySubgraphName),directivesByName:(0,me.copyArrayValueMap)(t.directivesByName),federatedCoords:t.federatedCoords,fieldName:t.fieldName,includeDefaultValue:t.includeDefaultValue,isArgument:t.isArgument,kind:t.kind,name:t.name,namedTypeKind:t.namedTypeKind,namedTypeName:t.namedTypeName,node:{directives:[],kind:Pe.Kind.INPUT_VALUE_DEFINITION,name:(0,Qr.stringToNameNode)(t.name),type:t.type},originalCoords:t.originalCoords,originalParentTypeName:t.originalParentTypeName,persistedDirectivesData:this.extractPersistedDirectives({data:(0,ve.newPersistedDirectivesData)(),directivesByName:t.directivesByName}),renamedParentTypeName:t.renamedParentTypeName,requiredSubgraphNames:new Set(t.requiredSubgraphNames),subgraphNames:new Set(t.subgraphNames),type:t.type,defaultValue:t.defaultValue,description:(0,ve.getInitialFederatedDescription)(t)}}copyInputValueDataByValueName(t,n,r){let i=new Map;for(let[a,o]of t){let u=this.copyInputValueData(o);this.handleInputValueInaccessibility(n,u,r),(0,me.getValueOrDefault)(this.coordsByNamedTypeName,u.namedTypeName,()=>new Set).add(u.federatedCoords),this.namedInputValueTypeNames.add(u.namedTypeName),this.recordTagNamesByCoords(u,`${r}.${o.name}`),i.set(a,u)}return i}copyFieldData(t,n){return{argumentDataByName:this.copyInputValueDataByValueName(t.argumentDataByName,n,t.federatedCoords),configureDescriptionDataBySubgraphName:(0,me.copyObjectValueMap)(t.configureDescriptionDataBySubgraphName),directivesByName:(0,me.copyArrayValueMap)(t.directivesByName),externalFieldDataBySubgraphName:(0,me.copyObjectValueMap)(t.externalFieldDataBySubgraphName),federatedCoords:t.federatedCoords,inheritedDirectiveNames:new Set,isInaccessible:t.isInaccessible,isShareableBySubgraphName:new Map(t.isShareableBySubgraphName),kind:t.kind,name:t.name,namedTypeKind:t.namedTypeKind,namedTypeName:t.namedTypeName,node:{arguments:[],directives:[],kind:t.kind,name:(0,Qr.stringToNameNode)(t.name),type:t.type},nullLevelsBySubgraphName:t.nullLevelsBySubgraphName,originalParentTypeName:t.originalParentTypeName,persistedDirectivesData:this.extractPersistedDirectives({data:(0,ve.newPersistedDirectivesData)(),directivesByName:t.directivesByName}),renamedParentTypeName:t.renamedParentTypeName,subgraphNames:new Set(t.subgraphNames),type:t.type,description:(0,ve.getInitialFederatedDescription)(t)}}copyEnumValueDataByName(t,n){let r=new Map;for(let[i,a]of t){let o=this.copyEnumValueData(a);this.recordTagNamesByCoords(o,o.federatedCoords),(n||(0,ve.isNodeDataInaccessible)(o))&&this.inaccessibleCoords.add(o.federatedCoords),r.set(i,o)}return r}copyFieldDataByName(t,n){let r=new Map;for(let[i,a]of t){let o=n||(0,ve.isNodeDataInaccessible)(a),u=this.copyFieldData(a,o);this.handleSubscriptionFilterDirective(u),(0,me.getValueOrDefault)(this.coordsByNamedTypeName,u.namedTypeName,()=>new Set).add(u.federatedCoords),this.namedOutputTypeNames.add(u.namedTypeName),this.recordTagNamesByCoords(u,u.federatedCoords),o&&this.inaccessibleCoords.add(u.federatedCoords),r.set(i,u)}return r}copyParentDefinitionData(t){let n=this.copyMutualParentDefinitionData(t);switch(t.kind){case Pe.Kind.ENUM_TYPE_DEFINITION:return $(M({},n),{appearances:t.appearances,enumValueDataByName:this.copyEnumValueDataByName(t.enumValueDataByName,t.isInaccessible),isInaccessible:t.isInaccessible,kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},subgraphNames:new Set(t.subgraphNames)});case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:return $(M({},n),{inputValueDataByName:this.copyInputValueDataByValueName(t.inputValueDataByName,t.isInaccessible,t.name),isInaccessible:t.isInaccessible,kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},subgraphNames:new Set(t.subgraphNames)});case Pe.Kind.INTERFACE_TYPE_DEFINITION:return $(M({},n),{fieldDataByName:this.copyFieldDataByName(t.fieldDataByName,t.isInaccessible),implementedInterfaceTypeNames:new Set(t.implementedInterfaceTypeNames),isEntity:t.isEntity,isInaccessible:t.isInaccessible,kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},requireFetchReasonsFieldNames:new Set,subgraphNames:new Set(t.subgraphNames)});case Pe.Kind.OBJECT_TYPE_DEFINITION:return $(M({},n),{fieldDataByName:this.copyFieldDataByName(t.fieldDataByName,t.isInaccessible),implementedInterfaceTypeNames:new Set(t.implementedInterfaceTypeNames),isEntity:t.isEntity,isInaccessible:t.isInaccessible,isRootType:t.isRootType,kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.renamedTypeName||t.name)},requireFetchReasonsFieldNames:new Set,renamedTypeName:t.renamedTypeName,subgraphNames:new Set(t.subgraphNames)});case Pe.Kind.SCALAR_TYPE_DEFINITION:return $(M({},n),{kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},subgraphNames:new Set(t.subgraphNames)});case Pe.Kind.UNION_TYPE_DEFINITION:return $(M({},n),{kind:t.kind,node:{kind:t.kind,name:(0,Qr.stringToNameNode)(t.name)},memberByMemberTypeName:new Map(t.memberByMemberTypeName),subgraphNames:new Set(t.subgraphNames)})}}getParentTargetData({existingData:t,incomingData:n}){if(!t){let r=this.copyParentDefinitionData(n);return(0,ve.isParentDataRootType)(r)&&(r.extensionType=FV.ExtensionType.NONE),r}return this.extractPersistedDirectives({data:t.persistedDirectivesData,directivesByName:n.directivesByName}),t}upsertParentDefinitionData(t,n){let r=this.entityInterfaceFederationDataByTypeName.get(t.name),i=this.parentDefinitionDataByTypeName.get(t.name),a=this.getParentTargetData({existingData:i,incomingData:t});this.recordTagNamesByCoords(a);let o=(0,ve.isNodeDataInaccessible)(a);if(o&&this.inaccessibleCoords.add(a.name),r&&r.interfaceObjectSubgraphNames.has(n)){if(i&&i.kind!==Pe.Kind.INTERFACE_TYPE_DEFINITION){this.errors.push((0,Fe.incompatibleParentTypeMergeError)({existingData:i,incomingSubgraphName:n}));return}a.kind=Pe.Kind.INTERFACE_TYPE_DEFINITION,a.node.kind=Pe.Kind.INTERFACE_TYPE_DEFINITION}if(!i){this.parentDefinitionDataByTypeName.set(a.name,a);return}if(a.kind!==t.kind&&(!r||!r.interfaceObjectSubgraphNames.has(n)||a.kind!==Pe.Kind.INTERFACE_TYPE_DEFINITION||t.kind!==Pe.Kind.OBJECT_TYPE_DEFINITION)){this.errors.push((0,Fe.incompatibleParentTypeMergeError)({existingData:a,incomingNodeType:(0,me.kindToNodeType)(t.kind),incomingSubgraphName:n}));return}switch((0,me.addNewObjectValueMapEntries)(t.configureDescriptionDataBySubgraphName,a.configureDescriptionDataBySubgraphName),(0,ve.setLongestDescription)(a,t),(0,ve.setParentDataExtensionType)(a,t),a.kind){case Pe.Kind.ENUM_TYPE_DEFINITION:if(!(0,ve.areKindsEqual)(a,t))return;a.appearances+=1,a.isInaccessible||(a.isInaccessible=o),(0,me.addIterableToSet)({source:t.subgraphNames,target:a.subgraphNames});for(let l of t.enumValueDataByName.values())this.upsertEnumValueData(a.enumValueDataByName,l,o);return;case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:if(!(0,ve.areKindsEqual)(a,t))return;o&&!a.isInaccessible&&this.propagateInaccessibilityToExistingChildren(a),a.isInaccessible||(a.isInaccessible=o),(0,me.addIterableToSet)({source:t.subgraphNames,target:a.subgraphNames});for(let l of t.inputValueDataByName.values())this.upsertInputValueData(a.inputValueDataByName,l,a.name,a.isInaccessible);return;case Pe.Kind.INTERFACE_TYPE_DEFINITION:case Pe.Kind.OBJECT_TYPE_DEFINITION:let u=t;o&&!a.isInaccessible&&this.propagateInaccessibilityToExistingChildren(a),a.isInaccessible||(a.isInaccessible=o),(0,me.addIterableToSet)({source:u.implementedInterfaceTypeNames,target:a.implementedInterfaceTypeNames}),(0,me.addIterableToSet)({source:u.subgraphNames,target:a.subgraphNames});for(let l of u.fieldDataByName.values())this.upsertFieldData(a.fieldDataByName,l,a.isInaccessible);return;case Pe.Kind.UNION_TYPE_DEFINITION:if(!(0,ve.areKindsEqual)(a,t))return;(0,me.addMapEntries)({source:t.memberByMemberTypeName,target:a.memberByMemberTypeName}),(0,me.addIterableToSet)({source:t.subgraphNames,target:a.subgraphNames});return;default:(0,me.addIterableToSet)({source:t.subgraphNames,target:a.subgraphNames});return}}propagateInaccessibilityToExistingChildren(t){switch(t.kind){case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:for(let n of t.inputValueDataByName.values())this.inaccessibleCoords.add(n.federatedCoords);break;default:for(let n of t.fieldDataByName.values()){this.inaccessibleCoords.add(n.federatedCoords);for(let r of n.argumentDataByName.values())this.inaccessibleCoords.add(r.federatedCoords)}}}upsertPersistedDirectiveDefinitionData(t,n){let r=t.name,i=this.potentialPersistedDirectiveDefinitionDataByDirectiveName.get(r);if(!i){if(n>1)return;let a=new Map;for(let o of t.argumentDataByName.values())this.namedInputValueTypeNames.add(o.namedTypeName),this.upsertInputValueData(a,o,`@${t.name}`,!1);this.potentialPersistedDirectiveDefinitionDataByDirectiveName.set(r,{argumentDataByName:a,executableLocations:new Set(t.executableLocations),name:r,repeatable:t.repeatable,subgraphNames:new Set(t.subgraphNames),description:t.description});return}if(i.subgraphNames.size+1!==n){this.potentialPersistedDirectiveDefinitionDataByDirectiveName.delete(r);return}if((0,ve.setMutualExecutableLocations)(i,t.executableLocations),i.executableLocations.size<1){this.potentialPersistedDirectiveDefinitionDataByDirectiveName.delete(r);return}for(let a of t.argumentDataByName.values())this.namedInputValueTypeNames.add((0,PV.getTypeNodeNamedTypeName)(a.type)),this.upsertInputValueData(i.argumentDataByName,a,`@${i.name}`,!1);(0,ve.setLongestDescription)(i,t),i.repeatable&&(i.repeatable=t.repeatable),(0,me.addIterableToSet)({source:t.subgraphNames,target:i.subgraphNames})}shouldUpdateFederatedFieldAbstractNamedType(t,n){if(!t)return!1;let r=this.concreteTypeNamesByAbstractTypeName.get(t);if(!r||r.size<1)return!1;for(let i of n)if(!r.has(i))return!1;return!0}updateTypeNodeNamedType(t,n){let r=t;for(let i=0;i1){this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));continue}break}case Pe.Kind.UNION_TYPE_DEFINITION:{if(l){this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));continue}l=p;break}default:{this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));break}}}if(o.size<1&&!l){this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));continue}let d=l;if(o.size>0){if(l){this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));continue}for(let p of o.keys()){d=p;for(let[E,y]of o)if(p!==E&&!y.implementedInterfaceTypeNames.has(p)){d="";break}if(d)break}}if(!this.shouldUpdateFederatedFieldAbstractNamedType(d,u)){this.errors.push((0,Fe.incompatibleFederatedFieldNamedTypeError)(t,n));continue}a.namedTypeName=d,this.updateTypeNodeNamedType(a.type,d)}}federateInternalSubgraphData(){let t=0,n=!1;for(let r of this.internalSubgraphBySubgraphName.values()){t+=1,this.currentSubgraphName=r.name,this.isVersionTwo||(this.isVersionTwo=r.isVersionTwo),(0,Jfe.renameRootTypes)(this,r);for(let i of r.parentDefinitionDataByTypeName.values())this.upsertParentDefinitionData(i,r.name);if(!n){if(!r.persistedDirectiveDefinitionDataByDirectiveName.size){n=!0;continue}for(let i of r.persistedDirectiveDefinitionDataByDirectiveName.values())this.upsertPersistedDirectiveDefinitionData(i,t);this.potentialPersistedDirectiveDefinitionDataByDirectiveName.size<1&&(n=!0)}}this.handleDisparateFieldNamedTypes()}handleInterfaceObjectForInternalGraph({entityData:t,internalSubgraph:n,interfaceObjectData:r,interfaceObjectNode:i,resolvableKeyFieldSets:a,subgraphName:o}){let u=this.internalGraph.addOrUpdateNode(t.typeName),l=this.internalGraph.addEntityDataNode(t.typeName);for(let p of i.satisfiedFieldSets)u.satisfiedFieldSets.add(p),a.has(p)&&l.addTargetSubgraphByFieldSet(p,o);let d=r.fieldDatasBySubgraphName.get(o);for(let{name:p,namedTypeName:E}of d||[])this.internalGraph.addEdge(u,this.internalGraph.addOrUpdateNode(E),p);this.internalGraph.addEdge(i,u,t.typeName,!0),this.addValidPrimaryKeyTargetsFromInterfaceObject(n,i.typeName,t,u)}handleEntityInterfaces(){var t;for(let[n,r]of this.entityInterfaceFederationDataByTypeName){let i=(0,me.getOrThrowError)(this.parentDefinitionDataByTypeName,n,Oe.PARENT_DEFINITION_DATA);if(i.kind===Pe.Kind.INTERFACE_TYPE_DEFINITION)for(let a of r.interfaceObjectSubgraphNames){let o=(0,me.getOrThrowError)(this.internalSubgraphBySubgraphName,a,"internalSubgraphBySubgraphName"),u=o.configurationDataByTypeName,l=this.concreteTypeNamesByAbstractTypeName.get(n);if(!l)continue;let d=(0,me.getOrThrowError)(u,n,"configurationDataByTypeName"),p=d.keys;if(!p)continue;d.entityInterfaceConcreteTypeNames=new Set(r.concreteTypeNames),this.internalGraph.setSubgraphName(a);let E=this.internalGraph.addOrUpdateNode(n,{isAbstract:!0});for(let y of l){let v=(0,me.getOrThrowError)(this.parentDefinitionDataByTypeName,y,Oe.PARENT_DEFINITION_DATA);if(!(0,Yr.isObjectDefinitionData)(v))continue;let R=(0,me.getOrThrowError)(this.entityDataByTypeName,y,"entityDataByTypeName");R.subgraphNames.add(a);let B=u.get(y);if(B)if((0,me.addIterableToSet)({source:d.fieldNames,target:B.fieldNames}),!B.keys)B.keys=[...p];else e:for(let te of p){for(let{selectionSet:Ne}of B.keys)if(te.selectionSet===Ne)continue e;B.keys.push(te)}else u.set(y,{fieldNames:new Set(d.fieldNames),isRootNode:!0,keys:[...p],typeName:y});let V=new Set;for(let te of p.filter(Ne=>!Ne.disableEntityResolver))V.add(te.selectionSet);let J=this.authorizationDataByParentTypeName.get(n),ne=(0,me.getOrThrowError)(o.parentDefinitionDataByTypeName,n,"internalSubgraph.parentDefinitionDataByTypeName");if((0,Yr.isObjectDefinitionData)(ne)){for(let[te,Ne]of ne.fieldDataByName){let Ee=`${y}.${te}`;(0,me.getValueOrDefault)(this.fieldCoordsByNamedTypeName,Ne.namedTypeName,()=>new Set).add(Ee);let he=J==null?void 0:J.fieldAuthDataByFieldName.get(te);if(he){let Z=(0,me.getValueOrDefault)(this.authorizationDataByParentTypeName,y,()=>(0,Yr.newAuthorizationData)(y));(0,Yr.upsertFieldAuthorizationData)(Z.fieldAuthDataByFieldName,he)||this.invalidORScopesCoords.add(Ee)}let we=v.fieldDataByName.get(te);if(we){let Z=(t=Ne.isShareableBySubgraphName.get(a))!=null?t:!1;we.isShareableBySubgraphName.set(a,Z),we.subgraphNames.add(a);let Se=Ne.externalFieldDataBySubgraphName.get(a);if(!Se)continue;we.externalFieldDataBySubgraphName.set(a,M({},Se));continue}let Qe=i.isInaccessible||v.isInaccessible||Ne.isInaccessible;v.fieldDataByName.set(te,this.copyFieldData(Ne,Qe))}this.handleInterfaceObjectForInternalGraph({internalSubgraph:o,subgraphName:a,interfaceObjectData:r,interfaceObjectNode:E,resolvableKeyFieldSets:V,entityData:R})}}}}}fieldDataToGraphFieldData(t){var n;return{externalSubgraphNames:new Set,name:t.name,namedTypeName:t.namedTypeName,isLeaf:(0,Yr.isNodeLeaf)((n=this.parentDefinitionDataByTypeName.get(t.namedTypeName))==null?void 0:n.kind),subgraphNames:t.subgraphNames}}getValidFlattenedPersistedDirectiveNodeArray(t){var i;let n=(0,Yr.getNodeCoords)(t),r=[];for(let[a,o]of t.persistedDirectivesData.directivesByName){if(a===Oe.SEMANTIC_NON_NULL&&(0,ve.isFieldData)(t)){r.push((0,me.generateSemanticNonNullDirective)((i=(0,me.getFirstEntry)(t.nullLevelsBySubgraphName))!=null?i:new Set([0])));continue}let u=this.persistedDirectiveDefinitionByDirectiveName.get(a);if(u){if(o.length<2){r.push(...o);continue}if(!u.repeatable){this.errors.push((0,Fe.invalidRepeatedFederatedDirectiveErrorMessage)(a,n));continue}r.push(...o)}}return r}getRouterPersistedDirectiveNodes(t){let n=[...t.persistedDirectivesData.tagDirectiveByName.values()];return t.persistedDirectivesData.isDeprecated&&n.push((0,ve.generateDeprecatedDirective)(t.persistedDirectivesData.deprecatedReason)),n.push(...this.getValidFlattenedPersistedDirectiveNodeArray(t)),n}getFederatedGraphNodeDescription(t){if(t.configureDescriptionDataBySubgraphName.size<1)return t.description;let n=[],r="";for(let[i,{propagate:a,description:o}]of t.configureDescriptionDataBySubgraphName)a&&(n.push(i),r=o);if(n.length===1)return(0,Jc.getDescriptionFromString)(r);if(n.length<1)return t.description;this.errors.push((0,Fe.configureDescriptionPropagationError)((0,ve.getDefinitionDataCoords)(t,!0),n))}getNodeForRouterSchemaByData(t){return t.node.name=(0,Qr.stringToNameNode)(t.name),t.node.description=this.getFederatedGraphNodeDescription(t),t.node.directives=this.getRouterPersistedDirectiveNodes(t),t.node}getNodeWithPersistedDirectivesByInputValueData(t){return t.node.name=(0,Qr.stringToNameNode)(t.name),t.node.type=t.type,t.node.description=this.getFederatedGraphNodeDescription(t),t.node.directives=this.getRouterPersistedDirectiveNodes(t),t.includeDefaultValue&&(t.node.defaultValue=t.defaultValue),t.node}getValidFieldArgumentNodes(t){let n=[],r=[],i=[],a=`${t.renamedParentTypeName}.${t.name}`;for(let[o,u]of t.argumentDataByName)t.subgraphNames.size===u.subgraphNames.size?(r.push(o),n.push(this.getNodeWithPersistedDirectivesByInputValueData(u))):(0,ve.isTypeRequired)(u.type)&&i.push({inputValueName:o,missingSubgraphs:(0,me.getEntriesNotInHashSet)(t.subgraphNames,u.subgraphNames),requiredSubgraphs:[...u.requiredSubgraphNames]});return i.length>0?this.errors.push((0,Fe.invalidRequiredInputValueError)(Oe.FIELD,a,i)):r.length>0&&((0,me.getValueOrDefault)(this.fieldConfigurationByFieldCoords,a,()=>({argumentNames:r,fieldName:t.name,typeName:t.renamedParentTypeName})).argumentNames=r),n}getNodeWithPersistedDirectivesByFieldData(t,n){return t.node.arguments=n,t.node.name=(0,Qr.stringToNameNode)(t.name),t.node.type=t.type,t.node.description=this.getFederatedGraphNodeDescription(t),t.node.directives=this.getRouterPersistedDirectiveNodes(t),t.node}validateSemanticNonNull(t){let n;for(let r of t.nullLevelsBySubgraphName.values()){if(!n){n=r;continue}if(n.size!==r.size){this.errors.push((0,Fe.semanticNonNullInconsistentLevelsError)(t));return}for(let i of r)if(!n.has(i)){this.errors.push((0,Fe.semanticNonNullInconsistentLevelsError)(t));return}}}validateOneOfDirective({data:t,inputValueNodes:n,requiredFieldNames:r}){return t.directivesByName.has(Oe.ONE_OF)?r.size>0?(this.errors.push((0,Fe.oneOfRequiredFieldsError)({requiredFieldNames:Array.from(r),typeName:t.name})),!1):(n.length===1&&this.warnings.push((0,zfe.singleFederatedInputFieldOneOfWarning)({fieldName:n[0].name.value,typeName:t.name})),!0):!0}pushParentDefinitionDataToDocumentDefinitions(t){for(let[n,r]of this.parentDefinitionDataByTypeName)switch(r.extensionType!==FV.ExtensionType.NONE&&this.errors.push((0,Fe.noBaseDefinitionForExtensionError)((0,me.kindToNodeType)(r.kind),n)),r.kind){case Pe.Kind.ENUM_TYPE_DEFINITION:{if(zc.IGNORED_FEDERATED_TYPE_NAMES.has(n))break;let i=[],a=[],o=this.getEnumValueMergeMethod(n);(0,ve.propagateAuthDirectives)(r,this.authorizationDataByParentTypeName.get(n));for(let u of r.enumValueDataByName.values()){let l=this.getNodeForRouterSchemaByData(u),d=(0,ve.isNodeDataInaccessible)(u),p=$(M({},u.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(u)});switch(o){case ve.MergeMethod.CONSISTENT:!d&&r.appearances>u.appearances&&this.errors.push((0,Fe.incompatibleSharedEnumError)(n)),i.push(l),d||a.push(p);break;case ve.MergeMethod.INTERSECTION:r.appearances===u.appearances&&(i.push(l),d||a.push(p));break;default:i.push(l),d||a.push(p);break}}if(r.node.values=i,this.routerDefinitions.push(this.getNodeForRouterSchemaByData(r)),(0,ve.isNodeDataInaccessible)(r)){this.validateReferencesOfInaccessibleType(r),this.internalGraph.setNodeInaccessible(r.name);break}if(a.length<1){this.errors.push((0,Fe.allChildDefinitionsAreInaccessibleError)((0,me.kindToNodeType)(r.kind),n,Oe.ENUM_VALUE));break}this.clientDefinitions.push($(M({},r.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(r),values:a}));break}case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:{if(zc.IGNORED_FEDERATED_TYPE_NAMES.has(n))break;let i=new Array,a=new Array,o=new Array,u=new Set;for(let[l,d]of r.inputValueDataByName)if((0,ve.isTypeRequired)(d.type)&&u.add(l),r.subgraphNames.size===d.subgraphNames.size){if(a.push(this.getNodeWithPersistedDirectivesByInputValueData(d)),(0,ve.isNodeDataInaccessible)(d))continue;o.push($(M({},d.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(d)}))}else(0,ve.isTypeRequired)(d.type)&&i.push({inputValueName:l,missingSubgraphs:(0,me.getEntriesNotInHashSet)(r.subgraphNames,d.subgraphNames),requiredSubgraphs:[...d.requiredSubgraphNames]});if(i.length>0){this.errors.push((0,Fe.invalidRequiredInputValueError)(Oe.INPUT_OBJECT,n,i,!1));break}if(!this.validateOneOfDirective({data:r,inputValueNodes:a,requiredFieldNames:u}))break;if(r.node.fields=a,this.routerDefinitions.push(this.getNodeForRouterSchemaByData(r)),(0,ve.isNodeDataInaccessible)(r)){this.validateReferencesOfInaccessibleType(r);break}if(o.length<1){this.errors.push((0,Fe.allChildDefinitionsAreInaccessibleError)((0,me.kindToNodeType)(r.kind),n,"Input field"));break}this.clientDefinitions.push($(M({},r.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(r),fields:o}));break}case Pe.Kind.INTERFACE_TYPE_DEFINITION:case Pe.Kind.OBJECT_TYPE_DEFINITION:{let i=[],a=[],o=new Map,u=(0,ve.newInvalidFieldNames)(),l=r.kind===Pe.Kind.OBJECT_TYPE_DEFINITION,d=this.authorizationDataByParentTypeName.get(n);(0,ve.propagateAuthDirectives)(r,d);for(let[E,y]of r.fieldDataByName){(0,ve.propagateFieldAuthDirectives)(y,d);let v=this.getValidFieldArgumentNodes(y);l&&(0,ve.validateExternalAndShareable)(y,u),this.validateSemanticNonNull(y),i.push(this.getNodeWithPersistedDirectivesByFieldData(y,v)),!(0,ve.isNodeDataInaccessible)(y)&&(a.push((0,ve.getClientSchemaFieldNodeByFieldData)(y)),o.set(E,this.fieldDataToGraphFieldData(y)))}if(l&&(u.byShareable.size>0&&this.errors.push((0,Fe.invalidFieldShareabilityError)(r,u.byShareable)),u.subgraphNamesByExternalFieldName.size>0&&this.errors.push((0,Fe.allExternalFieldInstancesError)(n,u.subgraphNamesByExternalFieldName))),r.node.fields=i,this.internalGraph.initializeNode(n,o),r.implementedInterfaceTypeNames.size>0){t.push({data:r,clientSchemaFieldNodes:a});break}this.routerDefinitions.push(this.getNodeForRouterSchemaByData(r));let p=(0,Yfe.isNodeQuery)(n);if((0,ve.isNodeDataInaccessible)(r)){if(p){this.errors.push(Fe.inaccessibleQueryRootTypeError);break}this.validateReferencesOfInaccessibleType(r),this.internalGraph.setNodeInaccessible(r.name);break}if(a.length<1){let E=p?(0,Fe.noQueryRootTypeError)(!1):(0,Fe.allChildDefinitionsAreInaccessibleError)((0,me.kindToNodeType)(r.kind),n,Oe.FIELD);this.errors.push(E);break}this.clientDefinitions.push($(M({},r.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(r),fields:a}));break}case Pe.Kind.SCALAR_TYPE_DEFINITION:{if(zc.IGNORED_FEDERATED_TYPE_NAMES.has(n))break;if((0,ve.propagateAuthDirectives)(r,this.authorizationDataByParentTypeName.get(n)),this.routerDefinitions.push(this.getNodeForRouterSchemaByData(r)),(0,ve.isNodeDataInaccessible)(r)){this.validateReferencesOfInaccessibleType(r),this.internalGraph.setNodeInaccessible(r.name);break}this.clientDefinitions.push($(M({},r.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(r)}));break}case Pe.Kind.UNION_TYPE_DEFINITION:{if(r.node.types=(0,Yr.mapToArrayOfValues)(r.memberByMemberTypeName),this.routerDefinitions.push(this.getNodeForRouterSchemaByData(r)),(0,ve.isNodeDataInaccessible)(r)){this.validateReferencesOfInaccessibleType(r),this.internalGraph.setNodeInaccessible(r.name);break}let i=this.getClientSchemaUnionMembers(r);if(i.length<1){this.errors.push((0,Fe.allChildDefinitionsAreInaccessibleError)(Oe.UNION,n,"union member type"));break}this.clientDefinitions.push($(M({},r.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(r),types:i}));break}}}pushNamedTypeAuthDataToFields(){var t;for(let[n,r]of this.authorizationDataByParentTypeName){if(!r.requiresAuthentication&&r.requiredScopes.length<1)continue;let i=this.fieldCoordsByNamedTypeName.get(n);if(i)for(let a of i){let o=a.split(Oe.LITERAL_PERIOD);switch(o.length){case 2:{let u=(0,me.getValueOrDefault)(this.authorizationDataByParentTypeName,o[0],()=>(0,Yr.newAuthorizationData)(o[0])),l=(0,me.getValueOrDefault)(u.fieldAuthDataByFieldName,o[1],()=>(0,Yr.newFieldAuthorizationData)(o[1]));(t=l.inheritedData).requiresAuthentication||(t.requiresAuthentication=r.requiresAuthentication),l.inheritedData.requiredScopes.length*r.requiredScopes.length>Fp.MAX_OR_SCOPES?this.invalidORScopesCoords.add(a):(l.inheritedData.requiredScopesByOR=(0,Yr.mergeRequiredScopesByAND)(l.inheritedData.requiredScopesByOR,r.requiredScopesByOR),l.inheritedData.requiredScopes=(0,Yr.mergeRequiredScopesByAND)(l.inheritedData.requiredScopes,r.requiredScopes));break}default:break}}}}federateSubgraphData(){this.federateInternalSubgraphData(),this.handleEntityInterfaces(),this.generateTagData(),Il(this,mh,LV).call(this),this.pushNamedTypeAuthDataToFields()}validateInterfaceImplementationsAndPushToDocumentDefinitions(t){for(let{data:n,clientSchemaFieldNodes:r}of t){if(n.node.interfaces=this.getValidImplementedInterfaces(n),this.routerDefinitions.push(this.getNodeForRouterSchemaByData(n)),(0,ve.isNodeDataInaccessible)(n)){this.validateReferencesOfInaccessibleType(n),this.internalGraph.setNodeInaccessible(n.name);continue}let i=[];for(let a of n.implementedInterfaceTypeNames)this.inaccessibleCoords.has(a)||i.push((0,Qr.stringToNamedTypeNode)(a));this.clientDefinitions.push($(M({},n.node),{directives:(0,ve.getClientPersistedDirectiveNodes)(n),fields:r,interfaces:i}))}}validatePathSegmentInaccessibility(t){if(!t)return!1;let r=t.split(Oe.LEFT_PARENTHESIS)[0].split(Oe.LITERAL_PERIOD),i=r[0];for(let a=0;a0&&this.errors.push((0,Fe.invalidReferencesOfInaccessibleTypeError)((0,me.kindToNodeType)(t.kind),t.name,r))}validateQueryRootType(){let t=this.parentDefinitionDataByTypeName.get(Oe.QUERY);if(!t||t.kind!==Pe.Kind.OBJECT_TYPE_DEFINITION||t.fieldDataByName.size<1){this.errors.push((0,Fe.noQueryRootTypeError)());return}for(let n of t.fieldDataByName.values())if(!(0,ve.isNodeDataInaccessible)(n))return;this.errors.push((0,Fe.noQueryRootTypeError)())}validateSubscriptionFieldConditionFieldPath(t,n,r,i,a){let o=t.split(Oe.LITERAL_PERIOD);if(o.length<1)return a.push((0,Fe.invalidSubscriptionFieldConditionFieldPathErrorMessage)(r,t)),[];let u=n;if(this.inaccessibleCoords.has(u.renamedTypeName))return a.push((0,Fe.inaccessibleSubscriptionFieldConditionFieldPathFieldErrorMessage)(r,t,o[0],u.renamedTypeName)),[];let l="";for(let d=0;d0?`.${p}`:p,u.kind!==Pe.Kind.OBJECT_TYPE_DEFINITION)return a.push((0,Fe.invalidSubscriptionFieldConditionFieldPathParentErrorMessage)(r,t,l)),[];let E=u.fieldDataByName.get(p);if(!E)return a.push((0,Fe.undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage)(r,t,l,p,u.renamedTypeName)),[];let y=`${u.renamedTypeName}.${p}`;if(!E.subgraphNames.has(i))return a.push((0,Fe.invalidSubscriptionFieldConditionFieldPathFieldErrorMessage)(r,t,l,y,i)),[];if(this.inaccessibleCoords.has(y))return a.push((0,Fe.inaccessibleSubscriptionFieldConditionFieldPathFieldErrorMessage)(r,t,l,y)),[];if(Fp.BASE_SCALARS.has(E.namedTypeName)){u={kind:Pe.Kind.SCALAR_TYPE_DEFINITION,name:E.namedTypeName};continue}u=(0,me.getOrThrowError)(this.parentDefinitionDataByTypeName,E.namedTypeName,Oe.PARENT_DEFINITION_DATA)}return(0,ve.isLeafKind)(u.kind)?o:(a.push((0,Fe.nonLeafSubscriptionFieldConditionFieldPathFinalFieldErrorMessage)(r,t,o[o.length-1],(0,me.kindToNodeType)(u.kind),u.name)),[])}validateSubscriptionFieldCondition(t,n,r,i,a,o,u){if(i>fh.MAX_SUBSCRIPTION_FILTER_DEPTH||this.isMaxDepth)return u.push((0,Fe.subscriptionFilterConditionDepthExceededErrorMessage)(a)),this.isMaxDepth=!0,!1;let l=!1,d=new Set([Oe.FIELD_PATH,Oe.VALUES]),p=new Set,E=new Set,y=[];for(let v of t.fields){let R=v.name.value,B=a+`.${R}`;switch(R){case Oe.FIELD_PATH:{if(d.has(Oe.FIELD_PATH))d.delete(Oe.FIELD_PATH);else{l=!0,p.add(Oe.FIELD_PATH);break}if(v.value.kind!==Pe.Kind.STRING){y.push((0,Fe.invalidInputFieldTypeErrorMessage)(B,Oe.STRING,(0,me.kindToNodeType)(v.value.kind))),l=!0;break}let V=this.validateSubscriptionFieldConditionFieldPath(v.value.value,r,B,o,y);if(V.length<1){l=!0;break}n.fieldPath=V;break}case Oe.VALUES:{if(d.has(Oe.VALUES))d.delete(Oe.VALUES);else{l=!0,p.add(Oe.VALUES);break}let V=v.value.kind;if(V==Pe.Kind.NULL||V==Pe.Kind.OBJECT){y.push((0,Fe.invalidInputFieldTypeErrorMessage)(B,Oe.LIST,(0,me.kindToNodeType)(v.value.kind))),l=!0;break}if(V!==Pe.Kind.LIST){n.values=[(0,ve.getSubscriptionFilterValue)(v.value)];break}let J=new Set,ne=[];for(let te=0;te0){y.push((0,Fe.subscriptionFieldConditionInvalidValuesArrayErrorMessage)(B,ne));continue}if(J.size<1){l=!0,y.push((0,Fe.subscriptionFieldConditionEmptyValuesArrayErrorMessage)(B));continue}n.values=[...J];break}default:l=!0,E.add(R)}}return l?(u.push((0,Fe.subscriptionFieldConditionInvalidInputFieldErrorMessage)(a,[...d],[...p],[...E],y)),!1):!0}validateSubscriptionFilterCondition(t,n,r,i,a,o,u){if(i>fh.MAX_SUBSCRIPTION_FILTER_DEPTH||this.isMaxDepth)return u.push((0,Fe.subscriptionFilterConditionDepthExceededErrorMessage)(a)),this.isMaxDepth=!0,!1;if(i+=1,t.fields.length!==1)return u.push((0,Fe.subscriptionFilterConditionInvalidInputFieldNumberErrorMessage)(a,t.fields.length)),!1;let l=t.fields[0],d=l.name.value;if(!zc.SUBSCRIPTION_FILTER_INPUT_NAMES.has(d))return u.push((0,Fe.subscriptionFilterConditionInvalidInputFieldErrorMessage)(a,d)),!1;let p=a+`.${d}`;switch(l.value.kind){case Pe.Kind.OBJECT:switch(d){case Oe.IN_UPPER:return n.in={fieldPath:[],values:[]},this.validateSubscriptionFieldCondition(l.value,n.in,r,i,a+".IN",o,u);case Oe.NOT_UPPER:return n.not={},this.validateSubscriptionFilterCondition(l.value,n.not,r,i,a+".NOT",o,u);default:return u.push((0,Fe.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(p,Oe.LIST,Oe.OBJECT)),!1}case Pe.Kind.LIST:{let E=[];switch(d){case Oe.AND_UPPER:{n.and=E;break}case Oe.OR_UPPER:{n.or=E;break}default:return u.push((0,Fe.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(p,Oe.OBJECT,Oe.LIST)),!1}let y=l.value.values.length;if(y<1||y>5)return u.push((0,Fe.subscriptionFilterArrayConditionInvalidLengthErrorMessage)(p,y)),!1;let v=!0,R=[];for(let B=0;B0?(u.push((0,Fe.subscriptionFilterArrayConditionInvalidItemTypeErrorMessage)(p,R)),!1):v}default:{let E=zc.SUBSCRIPTION_FILTER_LIST_INPUT_NAMES.has(d)?Oe.LIST:Oe.OBJECT;return u.push((0,Fe.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(p,E,(0,me.kindToNodeType)(l.value.kind))),!1}}}validateSubscriptionFilterAndGenerateConfiguration(t,n,r,i,a,o){if(!t.arguments||t.arguments.length!==1)return;let u=t.arguments[0];if(u.value.kind!==Pe.Kind.OBJECT){this.errors.push((0,Fe.invalidSubscriptionFilterDirectiveError)(r,[(0,Fe.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(Oe.CONDITION,Oe.OBJECT,(0,me.kindToNodeType)(u.value.kind))]));return}let l={},d=[];if(!this.validateSubscriptionFilterCondition(u.value,l,n,0,Oe.CONDITION,o,d)){this.errors.push((0,Fe.invalidSubscriptionFilterDirectiveError)(r,d)),this.isMaxDepth=!1;return}(0,me.getValueOrDefault)(this.fieldConfigurationByFieldCoords,r,()=>({argumentNames:[],fieldName:i,typeName:a})).subscriptionFilterCondition=l}validateSubscriptionFiltersAndGenerateConfiguration(){for(let[t,n]of this.subscriptionFilterDataByFieldPath){if(this.inaccessibleCoords.has(t))continue;let r=this.parentDefinitionDataByTypeName.get(n.fieldData.namedTypeName);if(!r){this.errors.push((0,Fe.invalidSubscriptionFilterDirectiveError)(t,[(0,Fe.subscriptionFilterNamedTypeErrorMessage)(n.fieldData.namedTypeName)]));continue}(0,ve.isNodeDataInaccessible)(r)||r.kind===Pe.Kind.OBJECT_TYPE_DEFINITION&&this.validateSubscriptionFilterAndGenerateConfiguration(n.directive,r,t,n.fieldData.name,n.fieldData.renamedParentTypeName,n.directiveSubgraphName)}}buildFederationResult(){this.subscriptionFilterDataByFieldPath.size>0&&this.validateSubscriptionFiltersAndGenerateConfiguration(),this.invalidORScopesCoords.size>0&&this.errors.push((0,Fe.orScopesLimitError)(Fp.MAX_OR_SCOPES,[...this.invalidORScopesCoords]));for(let a of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values())(0,ve.addValidPersistedDirectiveDefinitionNodeByData)(this.routerDefinitions,a,this.persistedDirectiveDefinitionByDirectiveName,this.errors);let t=[];this.pushParentDefinitionDataToDocumentDefinitions(t),this.validateInterfaceImplementationsAndPushToDocumentDefinitions(t),this.validateQueryRootType();for(let a of this.inaccessibleRequiredInputValueErrorByCoords.values())this.errors.push(a);if(this.errors.length>0)return{errors:this.errors,success:!1,warnings:this.warnings};if(!this.options.disableResolvabilityValidation&&this.internalSubgraphBySubgraphName.size>1){let a=this.internalGraph.validate();if(!a.success)return{errors:a.errors,success:!1,warnings:this.warnings}}let n={kind:Pe.Kind.DOCUMENT,definitions:this.routerDefinitions},r=(0,Pe.buildASTSchema)({kind:Pe.Kind.DOCUMENT,definitions:this.clientDefinitions},{assumeValid:!0,assumeValidSDL:!0}),i=new Map;for(let{configurationDataByTypeName:a,costs:o,directiveDefinitionByName:u,isVersionTwo:l,name:d,parentDefinitionDataByTypeName:p,schema:E,schemaNode:y}of this.internalSubgraphBySubgraphName.values())i.set(d,{configurationDataByTypeName:a,costs:o,directiveDefinitionByName:u,isVersionTwo:l,parentDefinitionDataByTypeName:p,schema:E,schemaNode:y});for(let a of this.authorizationDataByParentTypeName.values())(0,Yr.upsertAuthorizationConfiguration)(this.fieldConfigurationByFieldCoords,a);return M({directiveDefinitionByName:this.directiveDefinitionByName,fieldConfigurations:Array.from(this.fieldConfigurationByFieldCoords.values()),federatedGraphAST:n,federatedGraphSchema:(0,Pe.buildASTSchema)(n,{assumeValid:!0,assumeValidSDL:!0}),federatedGraphClientSchema:r,parentDefinitionDataByTypeName:this.parentDefinitionDataByTypeName,subgraphConfigBySubgraphName:i,success:!0,warnings:this.warnings},this.getClientSchemaObjectBoolean())}getClientSchemaObjectBoolean(){return this.inaccessibleCoords.size<1&&this.tagNamesByCoords.size<1?{}:{shouldIncludeClientSchema:!0}}handleChildTagExclusions(t,n,r,i){let a=n.size;for(let[o,u]of r){let l=(0,me.getOrThrowError)(n,o,`${t.name}.childDataByChildName`);if((0,ve.isNodeDataInaccessible)(l)){a-=1;continue}i.isDisjointFrom(u.tagNames)||((0,me.getValueOrDefault)(l.persistedDirectivesData.directivesByName,Oe.INACCESSIBLE,()=>[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(`${t.name}.${o}`),a-=1)}a<1&&(t.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(t.name))}handleChildTagInclusions(t,n,r,i){let a=n.size;for(let[o,u]of n){if((0,ve.isNodeDataInaccessible)(u)){a-=1;continue}let l=r.get(o);(!l||i.isDisjointFrom(l.tagNames))&&((0,me.getValueOrDefault)(u.persistedDirectivesData.directivesByName,Oe.INACCESSIBLE,()=>[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(`${t.name}.${o}`),a-=1)}a<1&&(t.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(t.name))}buildFederationContractResult(t){if(this.isVersionTwo||this.routerDefinitions.push(xu.INACCESSIBLE_DEFINITION),t.tagNamesToExclude.size>0)for(let[o,u]of this.parentTagDataByTypeName){let l=(0,me.getOrThrowError)(this.parentDefinitionDataByTypeName,o,Oe.PARENT_DEFINITION_DATA);if(!(0,ve.isNodeDataInaccessible)(l)){if(!t.tagNamesToExclude.isDisjointFrom(u.tagNames)){l.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(o);continue}if(!(u.childTagDataByChildName.size<1))switch(l.kind){case Pe.Kind.SCALAR_TYPE_DEFINITION:case Pe.Kind.UNION_TYPE_DEFINITION:break;case Pe.Kind.ENUM_TYPE_DEFINITION:{this.handleChildTagExclusions(l,l.enumValueDataByName,u.childTagDataByChildName,t.tagNamesToExclude);break}case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:{this.handleChildTagExclusions(l,l.inputValueDataByName,u.childTagDataByChildName,t.tagNamesToExclude);break}default:{let d=l.fieldDataByName.size;for(let[p,E]of u.childTagDataByChildName){let y=(0,me.getOrThrowError)(l.fieldDataByName,p,`${o}.fieldDataByFieldName`);if((0,ve.isNodeDataInaccessible)(y)){d-=1;continue}if(!t.tagNamesToExclude.isDisjointFrom(E.tagNames)){(0,me.getValueOrDefault)(y.persistedDirectivesData.directivesByName,Oe.INACCESSIBLE,()=>[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(y.federatedCoords),d-=1;continue}for(let[v,R]of E.tagNamesByArgumentName){let B=(0,me.getOrThrowError)(y.argumentDataByName,v,`${p}.argumentDataByArgumentName`);(0,ve.isNodeDataInaccessible)(B)||t.tagNamesToExclude.isDisjointFrom(R)||((0,me.getValueOrDefault)(B.persistedDirectivesData.directivesByName,Oe.INACCESSIBLE,()=>[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(B.federatedCoords))}}d<1&&(l.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(o))}}}}else if(t.tagNamesToInclude.size>0)for(let[o,u]of this.parentDefinitionDataByTypeName){if((0,ve.isNodeDataInaccessible)(u))continue;let l=this.parentTagDataByTypeName.get(o);if(!l){u.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(o);continue}if(t.tagNamesToInclude.isDisjointFrom(l.tagNames)){if(l.childTagDataByChildName.size<1){u.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(o);continue}switch(u.kind){case Pe.Kind.SCALAR_TYPE_DEFINITION:case Pe.Kind.UNION_TYPE_DEFINITION:continue;case Pe.Kind.ENUM_TYPE_DEFINITION:this.handleChildTagInclusions(u,u.enumValueDataByName,l.childTagDataByChildName,t.tagNamesToInclude);break;case Pe.Kind.INPUT_OBJECT_TYPE_DEFINITION:this.handleChildTagInclusions(u,u.inputValueDataByName,l.childTagDataByChildName,t.tagNamesToInclude);break;default:let d=u.fieldDataByName.size;for(let[p,E]of u.fieldDataByName){if((0,ve.isNodeDataInaccessible)(E)){d-=1;continue}let y=l.childTagDataByChildName.get(p);(!y||t.tagNamesToInclude.isDisjointFrom(y.tagNames))&&((0,me.getValueOrDefault)(E.persistedDirectivesData.directivesByName,Oe.INACCESSIBLE,()=>[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(E.federatedCoords),d-=1)}d<1&&(u.persistedDirectivesData.directivesByName.set(Oe.INACCESSIBLE,[(0,me.generateSimpleDirective)(Oe.INACCESSIBLE)]),this.inaccessibleCoords.add(o))}}}this.subscriptionFilterDataByFieldPath.size>0&&this.validateSubscriptionFiltersAndGenerateConfiguration();for(let o of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values())(0,ve.addValidPersistedDirectiveDefinitionNodeByData)(this.routerDefinitions,o,this.persistedDirectiveDefinitionByDirectiveName,this.errors);let n=[];if(this.pushParentDefinitionDataToDocumentDefinitions(n),this.validateInterfaceImplementationsAndPushToDocumentDefinitions(n),this.validateQueryRootType(),this.errors.length>0)return{errors:this.errors,success:!1,warnings:this.warnings};let r={kind:Pe.Kind.DOCUMENT,definitions:this.routerDefinitions},i=(0,Pe.buildASTSchema)({kind:Pe.Kind.DOCUMENT,definitions:this.clientDefinitions},{assumeValid:!0,assumeValidSDL:!0}),a=new Map;for(let{configurationDataByTypeName:o,costs:u,directiveDefinitionByName:l,isVersionTwo:d,name:p,parentDefinitionDataByTypeName:E,schema:y,schemaNode:v}of this.internalSubgraphBySubgraphName.values())a.set(p,{configurationDataByTypeName:o,costs:u,directiveDefinitionByName:l,isVersionTwo:d,parentDefinitionDataByTypeName:E,schema:y,schemaNode:v});for(let o of this.authorizationDataByParentTypeName.values())(0,Yr.upsertAuthorizationConfiguration)(this.fieldConfigurationByFieldCoords,o);return M({directiveDefinitionByName:this.directiveDefinitionByName,fieldConfigurations:Array.from(this.fieldConfigurationByFieldCoords.values()),federatedGraphAST:r,federatedGraphSchema:(0,Pe.buildASTSchema)(r,{assumeValid:!0,assumeValidSDL:!0}),federatedGraphClientSchema:i,parentDefinitionDataByTypeName:this.parentDefinitionDataByTypeName,subgraphConfigBySubgraphName:a,success:!0,warnings:this.warnings},this.getClientSchemaObjectBoolean())}federateSubgraphsInternal(){return this.federateSubgraphData(),this.buildFederationResult()}};mh=new WeakSet,LV=function(){var r;let t=new Set,n=new Set;for(let i of this.referencedPersistedDirectiveNames){let a=Fp.DIRECTIVE_DEFINITION_BY_NAME.get(i);if(!a)continue;let o=(r=zc.DEPENDENCIES_BY_DIRECTIVE_NAME.get(i))!=null?r:[];this.directiveDefinitionByName.set(i,a),zc.CLIENT_PERSISTED_DIRECTIVE_NAMES.has(i)&&(this.clientDefinitions.push(a),(0,me.addIterableToSet)({source:o,target:t})),this.routerDefinitions.push(a),(0,me.addIterableToSet)({source:o,target:n})}this.clientDefinitions.push(...t),this.routerDefinitions.push(...n)};Hc.FederationFactory=ph;function Ib({options:e,subgraphs:t}){if(t.length<1)return{errors:[Fe.minimumSubgraphRequirementError],success:!1,warnings:[]};let n=(0,Qfe.batchNormalize)({subgraphs:t,options:e});if(!n.success)return{errors:n.errors,success:!1,warnings:n.warnings};let r=new Map,i=new Map;for(let[u,l]of n.internalSubgraphBySubgraphName)for(let[d,p]of l.entityInterfaces){let E=r.get(d);if(!E){r.set(d,(0,Yr.newEntityInterfaceFederationData)(p,u));continue}(0,Yr.upsertEntityInterfaceFederationData)(E,p,u)}let a=new Array,o=new Map;for(let[u,l]of r){let d=l.concreteTypeNames.size;for(let[p,E]of l.subgraphDataByTypeName){let y=(0,me.getValueOrDefault)(o,p,()=>new Set);if((0,me.addIterableToSet)({source:E.concreteTypeNames,target:y}),!E.isInterfaceObject){E.resolvable&&E.concreteTypeNames.size!==d&&(0,me.getValueOrDefault)(i,u,()=>new Array).push({subgraphName:p,definedConcreteTypeNames:new Set(E.concreteTypeNames),requiredConcreteTypeNames:new Set(l.concreteTypeNames)});continue}(0,me.addIterableToSet)({source:l.concreteTypeNames,target:y});let{parentDefinitionDataByTypeName:v}=(0,me.getOrThrowError)(n.internalSubgraphBySubgraphName,p,"internalSubgraphBySubgraphName"),R=[];for(let B of l.concreteTypeNames)v.has(B)&&R.push(B);R.length>0&&a.push((0,Fe.invalidInterfaceObjectImplementationDefinitionsError)(u,p,R))}}for(let[u,l]of i){let d=new Array;for(let p of l){let E=o.get(p.subgraphName);if(!E){d.push(p);continue}let y=p.requiredConcreteTypeNames.intersection(E);p.requiredConcreteTypeNames.size!==y.size&&(p.definedConcreteTypeNames=y,d.push(p))}if(d.length>0){i.set(u,d);continue}i.delete(u)}return i.size>0&&a.push((0,Fe.undefinedEntityInterfaceImplementationsError)(i,r)),a.length>0?{errors:a,success:!1,warnings:n.warnings}:{federationFactory:new ph({authorizationDataByParentTypeName:n.authorizationDataByParentTypeName,concreteTypeNamesByAbstractTypeName:n.concreteTypeNamesByAbstractTypeName,entityDataByTypeName:n.entityDataByTypeName,entityInterfaceFederationDataByTypeName:r,fieldCoordsByNamedTypeName:n.fieldCoordsByNamedTypeName,internalSubgraphBySubgraphName:n.internalSubgraphBySubgraphName,internalGraph:n.internalGraph,options:e,warnings:n.warnings}),success:!0,warnings:n.warnings}}function Hfe({options:e,subgraphs:t}){let n=Ib({options:e,subgraphs:t});return n.success?n.federationFactory.federateSubgraphsInternal():{errors:n.errors,success:!1,warnings:n.warnings}}function Wfe({options:e,subgraphs:t,tagOptionsByContractName:n}){let r=Ib({options:e,subgraphs:t});if(!r.success)return{errors:r.errors,success:!1,warnings:r.warnings};r.federationFactory.federateSubgraphData();let i=[(0,wV.cloneDeep)(r.federationFactory)],a=r.federationFactory.buildFederationResult();if(!a.success)return{errors:a.errors,success:!1,warnings:a.warnings};let o=n.size-1,u=new Map,l=0;for(let[d,p]of n){l!==o&&i.push((0,wV.cloneDeep)(i[l]));let E=i[l].buildFederationContractResult(p);u.set(d,E),l++}return $(M({},a),{federationResultByContractName:u})}function Xfe({contractTagOptions:e,options:t,subgraphs:n}){let r=Ib({options:t,subgraphs:n});return r.success?(r.federationFactory.federateSubgraphData(),r.federationFactory.buildFederationContractResult(e)):{errors:r.errors,success:!1,warnings:r.warnings}}});var Nh=F(xs=>{"use strict";m();T();N();Object.defineProperty(xs,"__esModule",{value:!0});xs.LATEST_ROUTER_COMPATIBILITY_VERSION=xs.ROUTER_COMPATIBILITY_VERSIONS=xs.ROUTER_COMPATIBILITY_VERSION_ONE=void 0;xs.ROUTER_COMPATIBILITY_VERSION_ONE="1";xs.ROUTER_COMPATIBILITY_VERSIONS=new Set([xs.ROUTER_COMPATIBILITY_VERSION_ONE]);xs.LATEST_ROUTER_COMPATIBILITY_VERSION="1"});var UV=F(wp=>{"use strict";m();T();N();Object.defineProperty(wp,"__esModule",{value:!0});wp.federateSubgraphs=Zfe;wp.federateSubgraphsWithContracts=epe;wp.federateSubgraphsContract=tpe;var gb=CV(),_b=Nh();function Zfe({options:e,subgraphs:t,version:n=_b.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(n){default:return(0,gb.federateSubgraphs)({options:e,subgraphs:t})}}function epe({options:e,subgraphs:t,tagOptionsByContractName:n,version:r=_b.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(r){default:return(0,gb.federateSubgraphsWithContracts)({options:e,subgraphs:t,tagOptionsByContractName:n})}}function tpe({contractTagOptions:e,options:t,subgraphs:n,version:r=_b.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(r){default:return(0,gb.federateSubgraphsContract)({contractTagOptions:e,options:t,subgraphs:n})}}});var kV=F(BV=>{"use strict";m();T();N();Object.defineProperty(BV,"__esModule",{value:!0})});var xV=F(MV=>{"use strict";m();T();N();Object.defineProperty(MV,"__esModule",{value:!0})});var qV=F(Lp=>{"use strict";m();T();N();Object.defineProperty(Lp,"__esModule",{value:!0});Lp.normalizeSubgraphFromString=npe;Lp.normalizeSubgraph=rpe;Lp.batchNormalize=ipe;var vb=Tb(),Sb=Nh();function npe({noLocation:e=!0,options:t,sdlString:n,version:r=Sb.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(r){default:return(0,vb.normalizeSubgraphFromString)({noLocation:e,options:t,sdlString:n})}}function rpe({document:e,internalGraph:t,options:n,subgraphName:r,version:i=Sb.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(i){default:return(0,vb.normalizeSubgraph)({document:e,internalGraph:t,options:n,subgraphName:r})}}function ipe({options:e,subgraphs:t,version:n=Sb.ROUTER_COMPATIBILITY_VERSION_ONE}){switch(n){default:return(0,vb.batchNormalize)({options:e,subgraphs:t})}}});var jV=F(VV=>{"use strict";m();T();N();Object.defineProperty(VV,"__esModule",{value:!0})});var $V=F(KV=>{"use strict";m();T();N();Object.defineProperty(KV,"__esModule",{value:!0})});var QV=F(GV=>{"use strict";m();T();N();Object.defineProperty(GV,"__esModule",{value:!0})});var JV=F(YV=>{"use strict";m();T();N();Object.defineProperty(YV,"__esModule",{value:!0})});var HV=F(zV=>{"use strict";m();T();N();Object.defineProperty(zV,"__esModule",{value:!0})});var XV=F(WV=>{"use strict";m();T();N();Object.defineProperty(WV,"__esModule",{value:!0})});var ej=F(ZV=>{"use strict";m();T();N();Object.defineProperty(ZV,"__esModule",{value:!0})});var nj=F(tj=>{"use strict";m();T();N();Object.defineProperty(tj,"__esModule",{value:!0})});var rj=F(Th=>{"use strict";m();T();N();Object.defineProperty(Th,"__esModule",{value:!0});Th.COMPOSITION_VERSION=void 0;Th.COMPOSITION_VERSION="{{$COMPOSITION__VERSION}}"});var aj=F(ij=>{"use strict";m();T();N();Object.defineProperty(ij,"__esModule",{value:!0})});var oj=F(sj=>{"use strict";m();T();N();Object.defineProperty(sj,"__esModule",{value:!0})});var cj=F(uj=>{"use strict";m();T();N();Object.defineProperty(uj,"__esModule",{value:!0})});var dj=F(lj=>{"use strict";m();T();N();Object.defineProperty(lj,"__esModule",{value:!0})});var Eh=F(We=>{"use strict";m();T();N();var ape=We&&We.__createBinding||(Object.create?function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]}),ot=We&&We.__exportStar||function(e,t){for(var n in e)n!=="default"&&!Object.prototype.hasOwnProperty.call(t,n)&&ape(t,e,n)};Object.defineProperty(We,"__esModule",{value:!0});ot(Lr(),We);ot(Yv(),We);ot(Gi(),We);ot(ox(),We);ot(UV(),We);ot(kV(),We);ot(xV(),We);ot(qV(),We);ot(jV(),We);ot($V(),We);ot(fb(),We);ot(tb(),We);ot(th(),We);ot(QV(),We);ot(JV(),We);ot(sb(),We);ot(Nh(),We);ot(HV(),We);ot(pb(),We);ot(Au(),We);ot(Jf(),We);ot(Yl(),We);ot(XV(),We);ot(ej(),We);ot(nj(),We);ot(rj(),We);ot(aj(),We);ot(Hn(),We);ot(oj(),We);ot(Cr(),We);ot(QD(),We);ot(Ru(),We);ot(zf(),We);ot(OE(),We);ot(DE(),We);ot(md(),We);ot(ST(),We);ot(cj(),We);ot(OT(),We);ot(yb(),We);ot(VD(),We);ot(vp(),We);ot(dj(),We);ot(HD(),We);ot(lh(),We);ot($D(),We);ot(_p(),We);ot(Sp(),We)});var nme={};Hm(nme,{buildRouterConfiguration:()=>tme,federateSubgraphs:()=>eme});m();T();N();var il=Ei(Eh());m();T();N();m();T();N();function Ob(e){if(!e)return e;if(!URL.canParse(e))throw new Error("Invalid URL");let t=e.indexOf("?"),n=e.indexOf("#"),r=e;return t>0?r=r.slice(0,n>0?Math.min(t,n):t):n>0&&(r=r.slice(0,n)),r}m();T();N();m();T();N();var fj={};m();T();N();function pj(e){return e!=null}m();T();N();m();T();N();var yh=Ei(_e(),1);m();T();N();m();T();N();function qu(e){return hh(e,[])}function hh(e,t){switch(typeof e){case"string":return JSON.stringify(e);case"function":return e.name?`[function ${e.name}]`:"[function]";case"object":return spe(e,t);default:return String(e)}}function mj(e){return(e.name="GraphQLError")?e.toString():`${e.name}: ${e.message}; - ${e.stack}`}function spe(e,t){if(e===null)return"null";if(e instanceof Error)return e.name==="AggregateError"?mj(e)+` -`+Nj(e.errors,t):mj(e);if(t.includes(e))return"[Circular]";let n=[...t,e];if(ope(e)){let r=e.toJSON();if(r!==e)return typeof r=="string"?r:hh(r,n)}else if(Array.isArray(e))return Nj(e,n);return upe(e,n)}function ope(e){return typeof e.toJSON=="function"}function upe(e,t){let n=Object.entries(e);return n.length===0?"{}":t.length>3?"["+cpe(e)+"]":"{ "+n.map(([i,a])=>i+": "+hh(a,t)).join(", ")+" }"}function Nj(e,t){if(e.length===0)return"[]";if(t.length>3)return"[Array]";let n=e.length,r=[];for(let i=0;ilpe.includes(t))}function _d(e,t){t!=null&&t.originalError&&!(t.originalError instanceof Error)&&dpe(t.originalError)&&(t.originalError=_d(t.originalError.message,t.originalError));let n=Cp.GraphQLError,r=Cp.versionInfo.major>=16?new n(e,t):new n(e,t==null?void 0:t.nodes,t==null?void 0:t.source,t==null?void 0:t.positions,t==null?void 0:t.path,t==null?void 0:t.originalError,t==null?void 0:t.extensions);return t!=null&&t.coordinate&&r.coordinate==null&&Object.defineProperties(r,{coordinate:{value:t.coordinate,enumerable:!0,configurable:!0}}),r}m();T();N();function Tj(e){return e!=null&&typeof e=="object"&&Symbol.iterator in e}function Ej(e){return typeof e=="object"&&e!==null}function hj(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function yj(e,t,n={}){var o;let r={},a=((o=t.arguments)!=null?o:[]).reduce((u,l)=>$(M({},u),{[l.name.value]:l}),{});for(let{name:u,type:l,defaultValue:d}of e.args){let p=a[u];if(!p){if(d!==void 0)r[u]=d;else if((0,Fa.isNonNullType)(l))throw _d(`Argument "${u}" of required type "${qu(l)}" was not provided.`,{nodes:[t]});continue}let E=p.value,y=E.kind===Fa.Kind.NULL;if(E.kind===Fa.Kind.VARIABLE){let R=E.name.value;if(n==null||!hj(n,R)){if(d!==void 0)r[u]=d;else if((0,Fa.isNonNullType)(l))throw _d(`Argument "${u}" of required type "${qu(l)}" was provided the variable "$${R}" which was not provided a runtime value.`,{nodes:[E]});continue}y=n[R]==null}if(y&&(0,Fa.isNonNullType)(l))throw _d(`Argument "${u}" of non-null type "${qu(l)}" must not be null.`,{nodes:[E]});let v=(0,Fa.valueFromAST)(E,l,n);if(v===void 0)throw _d(`Argument "${u}" has invalid value ${(0,Fa.print)(E)}.`,{nodes:[E]});r[u]=v}return r}m();T();N();function vd(e){let t=new WeakMap;return function(r){let i=t.get(r);if(i===void 0){let a=e(r);return t.set(r,a),a}return i}}function Ij(e,t,n=["directives"]){var o;let r={};if(e.extensions){let u=e.extensions;for(let l of n)u=u==null?void 0:u[l];if(u!=null)for(let l in u){let d=u[l],p=l;if(Array.isArray(d))for(let E of d){let y=r[p];y||(y=[],r[p]=y),y.push(E)}else{let E=r[p];E||(E=[],r[p]=E),E.push(d)}}}let i=vd(u=>JSON.stringify(u)),a=[];e.astNode&&a.push(e.astNode),e.extensionASTNodes&&a.push(...e.extensionASTNodes);for(let u of a)if((o=u.directives)!=null&&o.length)for(let l of u.directives){let d=l.name.value,p=r[d];p||(p=[],r[d]=p);let E=t==null?void 0:t.getDirective(d),y={};if(E&&(y=yj(E,l)),l.arguments)for(let v of l.arguments){let R=v.name.value;if(y[R]==null){let B=E==null?void 0:E.args.find(V=>V.name===R);B&&(y[R]=(0,yh.valueFromAST)(v.value,B.type))}y[R]==null&&(y[R]=(0,yh.valueFromASTUntyped)(v.value))}if(a.length>0&&p.length>0){let v=i(y);if(p.some(R=>i(R)===v))continue}p.push(y)}return r}function Db(e,t=["directives"]){let n=Ij(e,void 0,t);return Object.entries(n).map(([r,i])=>i==null?void 0:i.map(a=>({name:r,args:a}))).flat(1/0).filter(Boolean)}m();T();N();var ze=Ei(_e(),1);m();T();N();var cs=Ei(_e(),1);function ls(e){if((0,cs.isNonNullType)(e)){let t=ls(e.ofType);if(t.kind===cs.Kind.NON_NULL_TYPE)throw new Error(`Invalid type node ${qu(e)}. Inner type of non-null type cannot be a non-null type.`);return{kind:cs.Kind.NON_NULL_TYPE,type:t}}else if((0,cs.isListType)(e))return{kind:cs.Kind.LIST_TYPE,type:ls(e.ofType)};return{kind:cs.Kind.NAMED_TYPE,name:{kind:cs.Kind.NAME,value:e.name}}}m();T();N();var dr=Ei(_e(),1);m();T();N();var wa=Ei(_e(),1);function Wc(e){if(e===null)return{kind:wa.Kind.NULL};if(e===void 0)return null;if(Array.isArray(e)){let t=[];for(let n of e){let r=Wc(n);r!=null&&t.push(r)}return{kind:wa.Kind.LIST,values:t}}if(typeof e=="object"){if(e!=null&&e.toJSON)return Wc(e.toJSON());let t=[];for(let n in e){let r=e[n],i=Wc(r);i&&t.push({kind:wa.Kind.OBJECT_FIELD,name:{kind:wa.Kind.NAME,value:n},value:i})}return{kind:wa.Kind.OBJECT,fields:t}}if(typeof e=="boolean")return{kind:wa.Kind.BOOLEAN,value:e};if(typeof e=="bigint")return{kind:wa.Kind.INT,value:String(e)};if(typeof e=="number"&&isFinite(e)){let t=String(e);return fpe.test(t)?{kind:wa.Kind.INT,value:t}:{kind:wa.Kind.FLOAT,value:t}}if(typeof e=="string")return{kind:wa.Kind.STRING,value:e};throw new TypeError(`Cannot convert value to AST: ${e}.`)}var fpe=/^-?(?:0|[1-9][0-9]*)$/;function Vu(e,t){if((0,dr.isNonNullType)(t)){let n=Vu(e,t.ofType);return(n==null?void 0:n.kind)===dr.Kind.NULL?null:n}if(e===null)return{kind:dr.Kind.NULL};if(e===void 0)return null;if((0,dr.isListType)(t)){let n=t.ofType;if(Tj(e)){let r=[];for(let i of e){let a=Vu(i,n);a!=null&&r.push(a)}return{kind:dr.Kind.LIST,values:r}}return Vu(e,n)}if((0,dr.isInputObjectType)(t)){if(!Ej(e))return null;let n=[];for(let r of Object.values(t.getFields())){let i=Vu(e[r.name],r.type);i&&n.push({kind:dr.Kind.OBJECT_FIELD,name:{kind:dr.Kind.NAME,value:r.name},value:i})}return{kind:dr.Kind.OBJECT,fields:n}}if((0,dr.isLeafType)(t)){let n=t.serialize(e);return n==null?null:(0,dr.isEnumType)(t)?{kind:dr.Kind.ENUM,value:n}:t.name==="ID"&&typeof n=="string"&&ppe.test(n)?{kind:dr.Kind.INT,value:n}:Wc(n)}console.assert(!1,"Unexpected input type: "+qu(t))}var ppe=/^-?(?:0|[1-9][0-9]*)$/;m();T();N();var gj=Ei(_e(),1);function Si(e){var t;if((t=e.astNode)!=null&&t.description)return $(M({},e.astNode.description),{block:!0});if(e.description)return{kind:gj.Kind.STRING,value:e.description,block:!0}}m();T();N();var m1e=vd(function(t){let n=mpe(t);return new Set([...n].map(r=>r.name))}),mpe=vd(function(t){let n=bb(t);return new Set(n.values())}),bb=vd(function(t){let n=new Map,r=t.getQueryType();r&&n.set("query",r);let i=t.getMutationType();i&&n.set("mutation",i);let a=t.getSubscriptionType();return a&&n.set("subscription",a),n});function Npe(e,t={}){let n=t.pathToDirectivesInExtensions,r=e.getTypeMap(),i=Tpe(e,n),a=i!=null?[i]:[],o=e.getDirectives();for(let u of o)(0,ze.isSpecifiedDirective)(u)||a.push(Epe(u,e,n));for(let u in r){let l=r[u],d=(0,ze.isSpecifiedScalarType)(l),p=(0,ze.isIntrospectionType)(l);if(!(d||p))if((0,ze.isObjectType)(l))a.push(hpe(l,e,n));else if((0,ze.isInterfaceType)(l))a.push(ype(l,e,n));else if((0,ze.isUnionType)(l))a.push(Ipe(l,e,n));else if((0,ze.isInputObjectType)(l))a.push(gpe(l,e,n));else if((0,ze.isEnumType)(l))a.push(_pe(l,e,n));else if((0,ze.isScalarType)(l))a.push(vpe(l,e,n));else throw new Error(`Unknown type ${l}.`)}return{kind:ze.Kind.DOCUMENT,definitions:a}}function _j(e,t={}){let n=Npe(e,t);return(0,ze.print)(n)}function Tpe(e,t){let n=new Map([["query",void 0],["mutation",void 0],["subscription",void 0]]),r=[];if(e.astNode!=null&&r.push(e.astNode),e.extensionASTNodes!=null)for(let d of e.extensionASTNodes)r.push(d);for(let d of r)if(d.operationTypes)for(let p of d.operationTypes)n.set(p.operation,p);let i=bb(e);for(let[d,p]of n){let E=i.get(d);if(E!=null){let y=ls(E);p!=null?p.type=y:n.set(d,{kind:ze.Kind.OPERATION_TYPE_DEFINITION,operation:d,type:y})}}let a=[...n.values()].filter(pj),o=ds(e,e,t);if(!a.length&&!o.length)return null;let u={kind:a.length?ze.Kind.SCHEMA_DEFINITION:ze.Kind.SCHEMA_EXTENSION,operationTypes:a,directives:o},l=Si(e);return l&&(u.description=l),u}function Epe(e,t,n){var r,i;return{kind:ze.Kind.DIRECTIVE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},arguments:(r=e.args)==null?void 0:r.map(a=>vj(a,t,n)),repeatable:e.isRepeatable,locations:((i=e.locations)==null?void 0:i.map(a=>({kind:ze.Kind.NAME,value:a})))||[]}}function ds(e,t,n){let r=[],i=Db(e,n),a;i!=null&&(a=Oj(t,i));let o=null,u=null,l=null;if(a!=null&&(r=a.filter(d=>ze.specifiedDirectives.every(p=>p.name!==d.name.value)),o=a.find(d=>d.name.value==="deprecated"),u=a.find(d=>d.name.value==="specifiedBy"),l=a.find(d=>d.name.value==="oneOf")),e.deprecationReason!=null&&o==null&&(o=Dpe(e.deprecationReason)),e.specifiedByUrl!=null||e.specifiedByURL!=null&&u==null){let p={url:e.specifiedByUrl||e.specifiedByURL};u=Up("specifiedBy",p)}return e.isOneOf&&l==null&&(l=Up("oneOf")),o!=null&&r.push(o),u!=null&&r.push(u),l!=null&&r.push(l),r}function vj(e,t,n){var r;return{kind:ze.Kind.INPUT_VALUE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},type:ls(e.type),defaultValue:e.defaultValue!==void 0&&(r=Vu(e.defaultValue,e.type))!=null?r:void 0,directives:ds(e,t,n)}}function hpe(e,t,n){return{kind:ze.Kind.OBJECT_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(r=>Sj(r,t,n)),interfaces:Object.values(e.getInterfaces()).map(r=>ls(r)),directives:ds(e,t,n)}}function ype(e,t,n){let r={kind:ze.Kind.INTERFACE_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(i=>Sj(i,t,n)),directives:ds(e,t,n)};return"getInterfaces"in e&&(r.interfaces=Object.values(e.getInterfaces()).map(i=>ls(i))),r}function Ipe(e,t,n){return{kind:ze.Kind.UNION_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},directives:ds(e,t,n),types:e.getTypes().map(r=>ls(r))}}function gpe(e,t,n){return{kind:ze.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},fields:Object.values(e.getFields()).map(r=>Spe(r,t,n)),directives:ds(e,t,n)}}function _pe(e,t,n){return{kind:ze.Kind.ENUM_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},values:Object.values(e.getValues()).map(r=>Ope(r,t,n)),directives:ds(e,t,n)}}function vpe(e,t,n){let r=Db(e,n),i=Oj(t,r),a=e.specifiedByUrl||e.specifiedByURL;if(a&&!i.some(o=>o.name.value==="specifiedBy")){let o={url:a};i.push(Up("specifiedBy",o))}return{kind:ze.Kind.SCALAR_TYPE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},directives:i}}function Sj(e,t,n){return{kind:ze.Kind.FIELD_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},arguments:e.args.map(r=>vj(r,t,n)),type:ls(e.type),directives:ds(e,t,n)}}function Spe(e,t,n){var r;return{kind:ze.Kind.INPUT_VALUE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},type:ls(e.type),directives:ds(e,t,n),defaultValue:(r=Vu(e.defaultValue,e.type))!=null?r:void 0}}function Ope(e,t,n){return{kind:ze.Kind.ENUM_VALUE_DEFINITION,description:Si(e),name:{kind:ze.Kind.NAME,value:e.name},directives:ds(e,t,n)}}function Dpe(e){return Up("deprecated",{reason:e},ze.GraphQLDeprecatedDirective)}function Up(e,t,n){let r=[];for(let i in t){let a=t[i],o;if(n!=null){let u=n.args.find(l=>l.name===i);u&&(o=Vu(a,u.type))}o==null&&(o=Wc(a)),o!=null&&r.push({kind:ze.Kind.ARGUMENT,name:{kind:ze.Kind.NAME,value:i},value:o})}return{kind:ze.Kind.DIRECTIVE,name:{kind:ze.Kind.NAME,value:e},arguments:r}}function Oj(e,t){let n=[];for(let{name:r,args:i}of t){let a=e==null?void 0:e.getDirective(r);n.push(Up(r,i,a))}return n}var wd=Ei(Eh(),1);m();T();N();m();T();N();m();T();N();m();T();N();m();T();N();m();T();N();function mn(e,t){if(!e)throw new Error(t)}var bpe=34028234663852886e22,Ape=-34028234663852886e22,Rpe=4294967295,Ppe=2147483647,Fpe=-2147483648;function Sd(e){if(typeof e!="number")throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>Ppe||eRpe||e<0)throw new Error("invalid uint 32: "+e)}function Ih(e){if(typeof e!="number")throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>bpe||e({no:i.no,name:i.name,localName:e[i.no]})),r)}function Rb(e,t,n){let r=Object.create(null),i=Object.create(null),a=[];for(let o of t){let u=Rj(o);a.push(u),r[o.name]=u,i[o.no]=u}return{typeName:e,values:a,findName(o){return r[o]},findNumber(o){return i[o]}}}function Aj(e,t,n){let r={};for(let i of t){let a=Rj(i);r[a.localName]=a.no,r[a.no]=a.localName}return Ab(r,e,t,n),r}function Rj(e){return"localName"in e?e:Object.assign(Object.assign({},e),{localName:e.name})}m();T();N();m();T();N();var Re=class{equals(t){return this.getType().runtime.util.equals(this.getType(),this,t)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(t,n){let r=this.getType(),i=r.runtime.bin,a=i.makeReadOptions(n);return i.readMessage(this,a.readerFactory(t),t.byteLength,a),this}fromJson(t,n){let r=this.getType(),i=r.runtime.json,a=i.makeReadOptions(n);return i.readMessage(r,t,a,this),this}fromJsonString(t,n){let r;try{r=JSON.parse(t)}catch(i){throw new Error(`cannot decode ${this.getType().typeName} from JSON: ${i instanceof Error?i.message:String(i)}`)}return this.fromJson(r,n)}toBinary(t){let n=this.getType(),r=n.runtime.bin,i=r.makeWriteOptions(t),a=i.writerFactory();return r.writeMessage(this,a,i),a.finish()}toJson(t){let n=this.getType(),r=n.runtime.json,i=r.makeWriteOptions(t);return r.writeMessage(this,i)}toJsonString(t){var n;let r=this.toJson(t);return JSON.stringify(r,null,(n=t==null?void 0:t.prettySpaces)!==null&&n!==void 0?n:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}};function Pj(e,t,n,r){var i;let a=(i=r==null?void 0:r.localName)!==null&&i!==void 0?i:t.substring(t.lastIndexOf(".")+1),o={[a]:function(u){e.util.initFields(this),e.util.initPartial(u,this)}}[a];return Object.setPrototypeOf(o.prototype,new Re),Object.assign(o,{runtime:e,typeName:t,fields:e.util.newFieldList(n),fromBinary(u,l){return new o().fromBinary(u,l)},fromJson(u,l){return new o().fromJson(u,l)},fromJsonString(u,l){return new o().fromJsonString(u,l)},equals(u,l){return e.util.equals(o,u,l)}}),o}m();T();N();m();T();N();m();T();N();m();T();N();function wj(){let e=0,t=0;for(let r=0;r<28;r+=7){let i=this.buf[this.pos++];if(e|=(i&127)<>4,!(n&128))return this.assertBounds(),[e,t];for(let r=3;r<=31;r+=7){let i=this.buf[this.pos++];if(t|=(i&127)<>>a,u=!(!(o>>>7)&&t==0),l=(u?o|128:o)&255;if(n.push(l),!u)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),!!i){for(let a=3;a<31;a=a+7){let o=t>>>a,u=!!(o>>>7),l=(u?o|128:o)&255;if(n.push(l),!u)return}n.push(t>>>31&1)}}var gh=4294967296;function Pb(e){let t=e[0]==="-";t&&(e=e.slice(1));let n=1e6,r=0,i=0;function a(o,u){let l=Number(e.slice(o,u));i*=n,r=r*n+l,r>=gh&&(i=i+(r/gh|0),r=r%gh)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Cj(r,i):wb(r,i)}function Lj(e,t){let n=wb(e,t),r=n.hi&2147483648;r&&(n=Cj(n.lo,n.hi));let i=Fb(n.lo,n.hi);return r?"-"+i:i}function Fb(e,t){if({lo:e,hi:t}=wpe(e,t),t<=2097151)return String(gh*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,u=i*2,l=1e7;return a>=l&&(o+=Math.floor(a/l),a%=l),o>=l&&(u+=Math.floor(o/l),o%=l),u.toString()+Fj(o)+Fj(a)}function wpe(e,t){return{lo:e>>>0,hi:t>>>0}}function wb(e,t){return{lo:e|0,hi:t|0}}function Cj(e,t){return t=~t,e?e=~e+1:t+=1,wb(e,t)}var Fj=e=>{let t=String(e);return"0000000".slice(t.length)+t};function Lb(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function Uj(){let e=this.buf[this.pos++],t=e&127;if(!(e&128))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;e&128&&n<10;n++)e=this.buf[this.pos++];if(e&128)throw new Error("invalid varint");return this.assertBounds(),t>>>0}function Lpe(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(typeof O!="object"||typeof O.env!="object"||O.env.BUF_BIGINT_DISABLE!=="1")){let i=BigInt("-9223372036854775808"),a=BigInt("9223372036854775807"),o=BigInt("0"),u=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(l){let d=typeof l=="bigint"?l:BigInt(l);if(d>a||du||dmn(/^-?[0-9]+$/.test(i),`int64 invalid: ${i}`),r=i=>mn(/^[0-9]+$/.test(i),`uint64 invalid: ${i}`);return{zero:"0",supported:!1,parse(i){return typeof i!="string"&&(i=i.toString()),n(i),i},uParse(i){return typeof i!="string"&&(i=i.toString()),r(i),i},enc(i){return typeof i!="string"&&(i=i.toString()),n(i),Pb(i)},uEnc(i){return typeof i!="string"&&(i=i.toString()),r(i),Pb(i)},dec(i,a){return Lj(i,a)},uDec(i,a){return Fb(i,a)}}}var Jn=Lpe();m();T();N();var pe;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(pe||(pe={}));var La;(function(e){e[e.BIGINT=0]="BIGINT",e[e.STRING=1]="STRING"})(La||(La={}));function qs(e,t,n){if(t===n)return!0;if(e==pe.BYTES){if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array)||t.length!==n.length)return!1;for(let r=0;r>>0)}raw(t){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(t),this}uint32(t){for(Bp(t);t>127;)this.buf.push(t&127|128),t=t>>>7;return this.buf.push(t),this}int32(t){return Sd(t),Lb(t,this.buf),this}bool(t){return this.buf.push(t?1:0),this}bytes(t){return this.uint32(t.byteLength),this.raw(t)}string(t){let n=this.textEncoder.encode(t);return this.uint32(n.byteLength),this.raw(n)}float(t){Ih(t);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,t,!0),this.raw(n)}double(t){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,t,!0),this.raw(n)}fixed32(t){Bp(t);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,t,!0),this.raw(n)}sfixed32(t){Sd(t);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),this.raw(n)}sint32(t){return Sd(t),t=(t<<1^t>>31)>>>0,Lb(t,this.buf),this}sfixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),i=Jn.enc(t);return r.setInt32(0,i.lo,!0),r.setInt32(4,i.hi,!0),this.raw(n)}fixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),i=Jn.uEnc(t);return r.setInt32(0,i.lo,!0),r.setInt32(4,i.hi,!0),this.raw(n)}int64(t){let n=Jn.enc(t);return _h(n.lo,n.hi,this.buf),this}sint64(t){let n=Jn.enc(t),r=n.hi>>31,i=n.lo<<1^r,a=(n.hi<<1|n.lo>>>31)^r;return _h(i,a,this.buf),this}uint64(t){let n=Jn.uEnc(t);return _h(n.lo,n.hi,this.buf),this}},Oh=class{constructor(t,n){this.varint64=wj,this.uint32=Uj,this.buf=t,this.len=t.length,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.textDecoder=n!=null?n:new TextDecoder}tag(){let t=this.uint32(),n=t>>>3,r=t&7;if(n<=0||r<0||r>5)throw new Error("illegal tag: field no "+n+" wire type "+r);return[n,r]}skip(t){let n=this.pos;switch(t){case xn.Varint:for(;this.buf[this.pos++]&128;);break;case xn.Bit64:this.pos+=4;case xn.Bit32:this.pos+=4;break;case xn.LengthDelimited:let r=this.uint32();this.pos+=r;break;case xn.StartGroup:let i;for(;(i=this.tag()[1])!==xn.EndGroup;)this.skip(i);break;default:throw new Error("cant skip wire type "+t)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)}int64(){return Jn.dec(...this.varint64())}uint64(){return Jn.uDec(...this.varint64())}sint64(){let[t,n]=this.varint64(),r=-(t&1);return t=(t>>>1|(n&1)<<31)^r,n=n>>>1^r,Jn.dec(t,n)}bool(){let[t,n]=this.varint64();return t!==0||n!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return Jn.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return Jn.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let t=this.uint32(),n=this.pos;return this.pos+=t,this.assertBounds(),this.buf.subarray(n,n+t)}string(){return this.textDecoder.decode(this.bytes())}};function Bj(e,t,n,r){let i;return{typeName:t,extendee:n,get field(){if(!i){let a=typeof r=="function"?r():r;a.name=t.split(".").pop(),a.jsonName=`[${t}]`,i=e.util.newFieldList([a]).list()[0]}return i},runtime:e}}function Dh(e){let t=e.field.localName,n=Object.create(null);return n[t]=Cpe(e),[n,()=>n[t]]}function Cpe(e){let t=e.field;if(t.repeated)return[];if(t.default!==void 0)return t.default;switch(t.kind){case"enum":return t.T.values[0].no;case"scalar":return Ca(t.T,t.L);case"message":let n=t.T,r=new n;return n.fieldWrapper?n.fieldWrapper.unwrapField(r):r;case"map":throw"map fields are not allowed to be extensions"}}function kj(e,t){if(!t.repeated&&(t.kind=="enum"||t.kind=="scalar")){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.no)return[e[n]];return[]}return e.filter(n=>n.no===t.no)}m();T();N();m();T();N();var Vs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),bh=[];for(let e=0;e>4,o=a,i=2;break;case 2:n[r++]=(o&15)<<4|(a&60)>>2,o=a,i=3;break;case 3:n[r++]=(o&3)<<6|a,i=0;break}}if(i==1)throw Error("invalid base64 string.");return n.subarray(0,r)},enc(e){let t="",n=0,r,i=0;for(let a=0;a>2],i=(r&3)<<4,n=1;break;case 1:t+=Vs[i|r>>4],i=(r&15)<<2,n=2;break;case 2:t+=Vs[i|r>>6],t+=Vs[r&63],n=0;break}return n&&(t+=Vs[i],t+="=",n==1&&(t+="=")),t}};m();T();N();function Mj(e,t,n){qj(t,e);let r=t.runtime.bin.makeReadOptions(n),i=kj(e.getType().runtime.bin.listUnknownFields(e),t.field),[a,o]=Dh(t);for(let u of i)t.runtime.bin.readField(a,r.readerFactory(u.data),t.field,u.wireType,r);return o()}function xj(e,t,n,r){qj(t,e);let i=t.runtime.bin.makeReadOptions(r),a=t.runtime.bin.makeWriteOptions(r);if(Ub(e,t)){let d=e.getType().runtime.bin.listUnknownFields(e).filter(p=>p.no!=t.field.no);e.getType().runtime.bin.discardUnknownFields(e);for(let p of d)e.getType().runtime.bin.onUnknownField(e,p.no,p.wireType,p.data)}let o=a.writerFactory(),u=t.field;!u.opt&&!u.repeated&&(u.kind=="enum"||u.kind=="scalar")&&(u=Object.assign(Object.assign({},t.field),{opt:!0})),t.runtime.bin.writeField(u,n,o,a);let l=i.readerFactory(o.finish());for(;l.posr.no==t.field.no)}function qj(e,t){mn(e.extendee.typeName==t.getType().typeName,`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}m();T();N();function Ah(e,t){let n=e.localName;if(e.repeated)return t[n].length>0;if(e.oneof)return t[e.oneof.localName].case===n;switch(e.kind){case"enum":case"scalar":return e.opt||e.req?t[n]!==void 0:e.kind=="enum"?t[n]!==e.T.values[0].no:!vh(e.T,t[n]);case"message":return t[n]!==void 0;case"map":return Object.keys(t[n]).length>0}}function Bb(e,t){let n=e.localName,r=!e.opt&&!e.req;if(e.repeated)t[n]=[];else if(e.oneof)t[e.oneof.localName]={case:void 0};else switch(e.kind){case"map":t[n]={};break;case"enum":t[n]=r?e.T.values[0].no:void 0;break;case"scalar":t[n]=r?Ca(e.T,e.L):void 0;break;case"message":t[n]=void 0;break}}m();T();N();m();T();N();function Ua(e,t){if(e===null||typeof e!="object"||!Object.getOwnPropertyNames(Re.prototype).every(r=>r in e&&typeof e[r]=="function"))return!1;let n=e.getType();return n===null||typeof n!="function"||!("typeName"in n)||typeof n.typeName!="string"?!1:t===void 0?!0:n.typeName==t.typeName}function Rh(e,t){return Ua(t)||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}var zVe={"google.protobuf.DoubleValue":pe.DOUBLE,"google.protobuf.FloatValue":pe.FLOAT,"google.protobuf.Int64Value":pe.INT64,"google.protobuf.UInt64Value":pe.UINT64,"google.protobuf.Int32Value":pe.INT32,"google.protobuf.UInt32Value":pe.UINT32,"google.protobuf.BoolValue":pe.BOOL,"google.protobuf.StringValue":pe.STRING,"google.protobuf.BytesValue":pe.BYTES};var Vj={ignoreUnknownFields:!1},jj={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Upe(e){return e?Object.assign(Object.assign({},Vj),e):Vj}function Bpe(e){return e?Object.assign(Object.assign({},jj),e):jj}var wh=Symbol(),Ph=Symbol();function Gj(){return{makeReadOptions:Upe,makeWriteOptions:Bpe,readMessage(e,t,n,r){if(t==null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.typeName} from JSON: ${fs(t)}`);r=r!=null?r:new e;let i=new Map,a=n.typeRegistry;for(let[o,u]of Object.entries(t)){let l=e.fields.findJsonName(o);if(l){if(l.oneof){if(u===null&&l.kind=="scalar")continue;let d=i.get(l.oneof);if(d!==void 0)throw new Error(`cannot decode message ${e.typeName} from JSON: multiple keys for oneof "${l.oneof.name}" present: "${d}", "${o}"`);i.set(l.oneof,o)}Kj(r,u,l,n,e)}else{let d=!1;if(a!=null&&a.findExtension&&o.startsWith("[")&&o.endsWith("]")){let p=a.findExtension(o.substring(1,o.length-1));if(p&&p.extendee.typeName==e.typeName){d=!0;let[E,y]=Dh(p);Kj(E,u,p.field,n,p),xj(r,p,y(),n)}}if(!d&&!n.ignoreUnknownFields)throw new Error(`cannot decode message ${e.typeName} from JSON: key "${o}" is unknown`)}}return r},writeMessage(e,t){let n=e.getType(),r={},i;try{for(i of n.fields.byNumber()){if(!Ah(i,e)){if(i.req)throw"required field not set";if(!t.emitDefaultValues||!Mpe(i))continue}let o=i.oneof?e[i.oneof.localName].value:e[i.localName],u=$j(i,o,t);u!==void 0&&(r[t.useProtoFieldName?i.name:i.jsonName]=u)}let a=t.typeRegistry;if(a!=null&&a.findExtensionFor)for(let o of n.runtime.bin.listUnknownFields(e)){let u=a.findExtensionFor(n.typeName,o.no);if(u&&Ub(e,u)){let l=Mj(e,u,t),d=$j(u.field,l,t);d!==void 0&&(r[u.field.jsonName]=d)}}}catch(a){let o=i?`cannot encode field ${n.typeName}.${i.name} to JSON`:`cannot encode message ${n.typeName} to JSON`,u=a instanceof Error?a.message:String(a);throw new Error(o+(u.length>0?`: ${u}`:""))}return r},readScalar(e,t,n){return kp(e,t,n!=null?n:La.BIGINT,!0)},writeScalar(e,t,n){if(t!==void 0&&(n||vh(e,t)))return Fh(e,t)},debug:fs}}function fs(e){if(e===null)return"null";switch(typeof e){case"object":return Array.isArray(e)?"array":"object";case"string":return e.length>100?"string":`"${e.split('"').join('\\"')}"`;default:return String(e)}}function Kj(e,t,n,r,i){let a=n.localName;if(n.repeated){if(mn(n.kind!="map"),t===null)return;if(!Array.isArray(t))throw new Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${fs(t)}`);let o=e[a];for(let u of t){if(u===null)throw new Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${fs(u)}`);switch(n.kind){case"message":o.push(n.T.fromJson(u,r));break;case"enum":let l=kb(n.T,u,r.ignoreUnknownFields,!0);l!==Ph&&o.push(l);break;case"scalar":try{o.push(kp(n.T,u,n.L,!0))}catch(d){let p=`cannot decode field ${i.typeName}.${n.name} from JSON: ${fs(u)}`;throw d instanceof Error&&d.message.length>0&&(p+=`: ${d.message}`),new Error(p)}break}}}else if(n.kind=="map"){if(t===null)return;if(typeof t!="object"||Array.isArray(t))throw new Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${fs(t)}`);let o=e[a];for(let[u,l]of Object.entries(t)){if(l===null)throw new Error(`cannot decode field ${i.typeName}.${n.name} from JSON: map value null`);let d;try{d=kpe(n.K,u)}catch(p){let E=`cannot decode map key for field ${i.typeName}.${n.name} from JSON: ${fs(t)}`;throw p instanceof Error&&p.message.length>0&&(E+=`: ${p.message}`),new Error(E)}switch(n.V.kind){case"message":o[d]=n.V.T.fromJson(l,r);break;case"enum":let p=kb(n.V.T,l,r.ignoreUnknownFields,!0);p!==Ph&&(o[d]=p);break;case"scalar":try{o[d]=kp(n.V.T,l,La.BIGINT,!0)}catch(E){let y=`cannot decode map value for field ${i.typeName}.${n.name} from JSON: ${fs(t)}`;throw E instanceof Error&&E.message.length>0&&(y+=`: ${E.message}`),new Error(y)}break}}}else switch(n.oneof&&(e=e[n.oneof.localName]={case:a},a="value"),n.kind){case"message":let o=n.T;if(t===null&&o.typeName!="google.protobuf.Value")return;let u=e[a];Ua(u)?u.fromJson(t,r):(e[a]=u=o.fromJson(t,r),o.fieldWrapper&&!n.oneof&&(e[a]=o.fieldWrapper.unwrapField(u)));break;case"enum":let l=kb(n.T,t,r.ignoreUnknownFields,!1);switch(l){case wh:Bb(n,e);break;case Ph:break;default:e[a]=l;break}break;case"scalar":try{let d=kp(n.T,t,n.L,!1);switch(d){case wh:Bb(n,e);break;default:e[a]=d;break}}catch(d){let p=`cannot decode field ${i.typeName}.${n.name} from JSON: ${fs(t)}`;throw d instanceof Error&&d.message.length>0&&(p+=`: ${d.message}`),new Error(p)}break}}function kpe(e,t){if(e===pe.BOOL)switch(t){case"true":t=!0;break;case"false":t=!1;break}return kp(e,t,La.BIGINT,!0).toString()}function kp(e,t,n,r){if(t===null)return r?Ca(e,n):wh;switch(e){case pe.DOUBLE:case pe.FLOAT:if(t==="NaN")return Number.NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(t===""||typeof t=="string"&&t.trim().length!==t.length||typeof t!="string"&&typeof t!="number")break;let i=Number(t);if(Number.isNaN(i)||!Number.isFinite(i))break;return e==pe.FLOAT&&Ih(i),i;case pe.INT32:case pe.FIXED32:case pe.SFIXED32:case pe.SINT32:case pe.UINT32:let a;if(typeof t=="number"?a=t:typeof t=="string"&&t.length>0&&t.trim().length===t.length&&(a=Number(t)),a===void 0)break;return e==pe.UINT32||e==pe.FIXED32?Bp(a):Sd(a),a;case pe.INT64:case pe.SFIXED64:case pe.SINT64:if(typeof t!="number"&&typeof t!="string")break;let o=Jn.parse(t);return n?o.toString():o;case pe.FIXED64:case pe.UINT64:if(typeof t!="number"&&typeof t!="string")break;let u=Jn.uParse(t);return n?u.toString():u;case pe.BOOL:if(typeof t!="boolean")break;return t;case pe.STRING:if(typeof t!="string")break;try{encodeURIComponent(t)}catch(l){throw new Error("invalid UTF8")}return t;case pe.BYTES:if(t==="")return new Uint8Array(0);if(typeof t!="string")break;return Cb.dec(t)}throw new Error}function kb(e,t,n,r){if(t===null)return e.typeName=="google.protobuf.NullValue"?0:r?e.values[0].no:wh;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let i=e.findName(t);if(i!==void 0)return i.no;if(n)return Ph;break}throw new Error(`cannot decode enum ${e.typeName} from JSON: ${fs(t)}`)}function Mpe(e){return e.repeated||e.kind=="map"?!0:!(e.oneof||e.kind=="message"||e.opt||e.req)}function $j(e,t,n){if(e.kind=="map"){mn(typeof t=="object"&&t!=null);let r={},i=Object.entries(t);switch(e.V.kind){case"scalar":for(let[o,u]of i)r[o.toString()]=Fh(e.V.T,u);break;case"message":for(let[o,u]of i)r[o.toString()]=u.toJson(n);break;case"enum":let a=e.V.T;for(let[o,u]of i)r[o.toString()]=Mb(a,u,n.enumAsInteger);break}return n.emitDefaultValues||i.length>0?r:void 0}if(e.repeated){mn(Array.isArray(t));let r=[];switch(e.kind){case"scalar":for(let i=0;i0?r:void 0}switch(e.kind){case"scalar":return Fh(e.T,t);case"enum":return Mb(e.T,t,n.enumAsInteger);case"message":return Rh(e.T,t).toJson(n)}}function Mb(e,t,n){var r;if(mn(typeof t=="number"),e.typeName=="google.protobuf.NullValue")return null;if(n)return t;let i=e.findNumber(t);return(r=i==null?void 0:i.name)!==null&&r!==void 0?r:t}function Fh(e,t){switch(e){case pe.INT32:case pe.SFIXED32:case pe.SINT32:case pe.FIXED32:case pe.UINT32:return mn(typeof t=="number"),t;case pe.FLOAT:case pe.DOUBLE:return mn(typeof t=="number"),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t;case pe.STRING:return mn(typeof t=="string"),t;case pe.BOOL:return mn(typeof t=="boolean"),t;case pe.UINT64:case pe.FIXED64:case pe.INT64:case pe.SFIXED64:case pe.SINT64:return mn(typeof t=="bigint"||typeof t=="string"||typeof t=="number"),t.toString();case pe.BYTES:return mn(t instanceof Uint8Array),Cb.enc(t)}}m();T();N();var Od=Symbol("@bufbuild/protobuf/unknown-fields"),Qj={readUnknownFields:!0,readerFactory:e=>new Oh(e)},Yj={writeUnknownFields:!0,writerFactory:()=>new Sh};function xpe(e){return e?Object.assign(Object.assign({},Qj),e):Qj}function qpe(e){return e?Object.assign(Object.assign({},Yj),e):Yj}function Wj(){return{makeReadOptions:xpe,makeWriteOptions:qpe,listUnknownFields(e){var t;return(t=e[Od])!==null&&t!==void 0?t:[]},discardUnknownFields(e){delete e[Od]},writeUnknownFields(e,t){let r=e[Od];if(r)for(let i of r)t.tag(i.no,i.wireType).raw(i.data)},onUnknownField(e,t,n,r){let i=e;Array.isArray(i[Od])||(i[Od]=[]),i[Od].push({no:t,wireType:n,data:r})},readMessage(e,t,n,r,i){let a=e.getType(),o=i?t.len:t.pos+n,u,l;for(;t.pos0&&(l=jpe),a){let y=e[o];if(r==xn.LengthDelimited&&u!=pe.STRING&&u!=pe.BYTES){let R=t.uint32()+t.pos;for(;t.posUa(y,E)?y:new E(y));else{let y=o[i];E.fieldWrapper?E.typeName==="google.protobuf.BytesValue"?a[i]=xp(y):a[i]=y:a[i]=Ua(y,E)?y:new E(y)}break}}},equals(e,t,n){return t===n?!0:!t||!n?!1:e.fields.byMember().every(r=>{let i=t[r.localName],a=n[r.localName];if(r.repeated){if(i.length!==a.length)return!1;switch(r.kind){case"message":return i.every((o,u)=>r.T.equals(o,a[u]));case"scalar":return i.every((o,u)=>qs(r.T,o,a[u]));case"enum":return i.every((o,u)=>qs(pe.INT32,o,a[u]))}throw new Error(`repeated cannot contain ${r.kind}`)}switch(r.kind){case"message":return r.T.equals(i,a);case"enum":return qs(pe.INT32,i,a);case"scalar":return qs(r.T,i,a);case"oneof":if(i.case!==a.case)return!1;let o=r.findField(i.case);if(o===void 0)return!0;switch(o.kind){case"message":return o.T.equals(i.value,a.value);case"enum":return qs(pe.INT32,i.value,a.value);case"scalar":return qs(o.T,i.value,a.value)}throw new Error(`oneof cannot contain ${o.kind}`);case"map":let u=Object.keys(i).concat(Object.keys(a));switch(r.V.kind){case"message":let l=r.V.T;return u.every(p=>l.equals(i[p],a[p]));case"enum":return u.every(p=>qs(pe.INT32,i[p],a[p]));case"scalar":let d=r.V.T;return u.every(p=>qs(d,i[p],a[p]))}break}})},clone(e){let t=e.getType(),n=new t,r=n;for(let i of t.fields.byMember()){let a=e[i.localName],o;if(i.repeated)o=a.map(Uh);else if(i.kind=="map"){o=r[i.localName];for(let[u,l]of Object.entries(a))o[u]=Uh(l)}else i.kind=="oneof"?o=i.findField(a.case)?{case:a.case,value:Uh(a.value)}:{case:void 0}:o=Uh(a);r[i.localName]=o}for(let i of t.runtime.bin.listUnknownFields(e))t.runtime.bin.onUnknownField(r,i.no,i.wireType,i.data);return n}}}function Uh(e){if(e===void 0)return e;if(Ua(e))return e.clone();if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t}return e}function xp(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function eK(e,t,n){return{syntax:e,json:Gj(),bin:Wj(),util:Object.assign(Object.assign({},Zj()),{newFieldList:t,initFields:n}),makeMessageType(r,i,a){return Pj(this,r,i,a)},makeEnum:Aj,makeEnumType:Rb,getEnumType:bj,makeExtension(r,i,a){return Bj(this,r,i,a)}}}m();T();N();var Bh=class{constructor(t,n){this._fields=t,this._normalizer=n}findJsonName(t){if(!this.jsonNames){let n={};for(let r of this.list())n[r.jsonName]=n[r.name]=r;this.jsonNames=n}return this.jsonNames[t]}find(t){if(!this.numbers){let n={};for(let r of this.list())n[r.no]=r;this.numbers=n}return this.numbers[t]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((t,n)=>t.no-n.no)),this.numbersAsc}byMember(){if(!this.members){this.members=[];let t=this.members,n;for(let r of this.list())r.oneof?r.oneof!==n&&(n=r.oneof,t.push(n)):t.push(r)}return this.members}};m();T();N();m();T();N();m();T();N();function xb(e,t){let n=rK(e);return t?n:Jpe(Ype(n))}function tK(e){return xb(e,!1)}var nK=rK;function rK(e){let t=!1,n=[];for(let r=0;r`${e}$`,Ype=e=>Qpe.has(e)?iK(e):e,Jpe=e=>Gpe.has(e)?iK(e):e;var kh=class{constructor(t){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=t,this.localName=tK(t)}addField(t){mn(t.oneof===this,`field ${t.name} not one of ${this.name}`),this.fields.push(t)}findField(t){if(!this._lookup){this._lookup=Object.create(null);for(let n=0;nnew Bh(e,t=>aK(t,!0)),e=>{for(let t of e.getType().fields.byMember()){if(t.opt)continue;let n=t.localName,r=e;if(t.repeated){r[n]=[];continue}switch(t.kind){case"oneof":r[n]={case:void 0};break;case"enum":r[n]=0;break;case"map":r[n]={};break;case"scalar":r[n]=Ca(t.T,t.L);break;case"message":break}}});var Dd;(function(e){e[e.OK=0]="OK",e[e.ERR=1]="ERR",e[e.ERR_NOT_FOUND=2]="ERR_NOT_FOUND",e[e.ERR_ALREADY_EXISTS=3]="ERR_ALREADY_EXISTS",e[e.ERR_INVALID_SUBGRAPH_SCHEMA=4]="ERR_INVALID_SUBGRAPH_SCHEMA",e[e.ERR_SUBGRAPH_COMPOSITION_FAILED=5]="ERR_SUBGRAPH_COMPOSITION_FAILED",e[e.ERR_SUBGRAPH_CHECK_FAILED=6]="ERR_SUBGRAPH_CHECK_FAILED",e[e.ERR_INVALID_LABELS=7]="ERR_INVALID_LABELS",e[e.ERR_ANALYTICS_DISABLED=8]="ERR_ANALYTICS_DISABLED",e[e.ERROR_NOT_AUTHENTICATED=9]="ERROR_NOT_AUTHENTICATED",e[e.ERR_OPENAI_DISABLED=10]="ERR_OPENAI_DISABLED",e[e.ERR_FREE_TRIAL_EXPIRED=11]="ERR_FREE_TRIAL_EXPIRED",e[e.ERROR_NOT_AUTHORIZED=12]="ERROR_NOT_AUTHORIZED",e[e.ERR_LIMIT_REACHED=13]="ERR_LIMIT_REACHED",e[e.ERR_DEPLOYMENT_FAILED=14]="ERR_DEPLOYMENT_FAILED",e[e.ERR_INVALID_NAME=15]="ERR_INVALID_NAME",e[e.ERR_UPGRADE_PLAN=16]="ERR_UPGRADE_PLAN",e[e.ERR_BAD_REQUEST=17]="ERR_BAD_REQUEST",e[e.ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL=18]="ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL"})(Dd||(Dd={}));C.util.setEnumType(Dd,"wg.cosmo.common.EnumStatusCode",[{no:0,name:"OK"},{no:1,name:"ERR"},{no:2,name:"ERR_NOT_FOUND"},{no:3,name:"ERR_ALREADY_EXISTS"},{no:4,name:"ERR_INVALID_SUBGRAPH_SCHEMA"},{no:5,name:"ERR_SUBGRAPH_COMPOSITION_FAILED"},{no:6,name:"ERR_SUBGRAPH_CHECK_FAILED"},{no:7,name:"ERR_INVALID_LABELS"},{no:8,name:"ERR_ANALYTICS_DISABLED"},{no:9,name:"ERROR_NOT_AUTHENTICATED"},{no:10,name:"ERR_OPENAI_DISABLED"},{no:11,name:"ERR_FREE_TRIAL_EXPIRED"},{no:12,name:"ERROR_NOT_AUTHORIZED"},{no:13,name:"ERR_LIMIT_REACHED"},{no:14,name:"ERR_DEPLOYMENT_FAILED"},{no:15,name:"ERR_INVALID_NAME"},{no:16,name:"ERR_UPGRADE_PLAN"},{no:17,name:"ERR_BAD_REQUEST"},{no:18,name:"ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL"}]);var js;(function(e){e[e.GRAPHQL_SUBSCRIPTION_PROTOCOL_WS=0]="GRAPHQL_SUBSCRIPTION_PROTOCOL_WS",e[e.GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE=1]="GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE",e[e.GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE_POST=2]="GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE_POST"})(js||(js={}));C.util.setEnumType(js,"wg.cosmo.common.GraphQLSubscriptionProtocol",[{no:0,name:"GRAPHQL_SUBSCRIPTION_PROTOCOL_WS"},{no:1,name:"GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE"},{no:2,name:"GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE_POST"}]);var Ks;(function(e){e[e.GRAPHQL_WEBSOCKET_SUBPROTOCOL_AUTO=0]="GRAPHQL_WEBSOCKET_SUBPROTOCOL_AUTO",e[e.GRAPHQL_WEBSOCKET_SUBPROTOCOL_WS=1]="GRAPHQL_WEBSOCKET_SUBPROTOCOL_WS",e[e.GRAPHQL_WEBSOCKET_SUBPROTOCOL_TRANSPORT_WS=2]="GRAPHQL_WEBSOCKET_SUBPROTOCOL_TRANSPORT_WS"})(Ks||(Ks={}));C.util.setEnumType(Ks,"wg.cosmo.common.GraphQLWebsocketSubprotocol",[{no:0,name:"GRAPHQL_WEBSOCKET_SUBPROTOCOL_AUTO"},{no:1,name:"GRAPHQL_WEBSOCKET_SUBPROTOCOL_WS"},{no:2,name:"GRAPHQL_WEBSOCKET_SUBPROTOCOL_TRANSPORT_WS"}]);var NK=Ei(_e(),1);m();T();N();var qb;(function(e){e[e.RENDER_ARGUMENT_DEFAULT=0]="RENDER_ARGUMENT_DEFAULT",e[e.RENDER_ARGUMENT_AS_GRAPHQL_VALUE=1]="RENDER_ARGUMENT_AS_GRAPHQL_VALUE",e[e.RENDER_ARGUMENT_AS_ARRAY_CSV=2]="RENDER_ARGUMENT_AS_ARRAY_CSV"})(qb||(qb={}));C.util.setEnumType(qb,"wg.cosmo.node.v1.ArgumentRenderConfiguration",[{no:0,name:"RENDER_ARGUMENT_DEFAULT"},{no:1,name:"RENDER_ARGUMENT_AS_GRAPHQL_VALUE"},{no:2,name:"RENDER_ARGUMENT_AS_ARRAY_CSV"}]);var Zc;(function(e){e[e.OBJECT_FIELD=0]="OBJECT_FIELD",e[e.FIELD_ARGUMENT=1]="FIELD_ARGUMENT"})(Zc||(Zc={}));C.util.setEnumType(Zc,"wg.cosmo.node.v1.ArgumentSource",[{no:0,name:"OBJECT_FIELD"},{no:1,name:"FIELD_ARGUMENT"}]);var ju;(function(e){e[e.STATIC=0]="STATIC",e[e.GRAPHQL=1]="GRAPHQL",e[e.PUBSUB=2]="PUBSUB"})(ju||(ju={}));C.util.setEnumType(ju,"wg.cosmo.node.v1.DataSourceKind",[{no:0,name:"STATIC"},{no:1,name:"GRAPHQL"},{no:2,name:"PUBSUB"}]);var qp;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RESOLVE=1]="RESOLVE",e[e.REQUIRES=2]="REQUIRES"})(qp||(qp={}));C.util.setEnumType(qp,"wg.cosmo.node.v1.LookupType",[{no:0,name:"LOOKUP_TYPE_UNSPECIFIED"},{no:1,name:"LOOKUP_TYPE_RESOLVE"},{no:2,name:"LOOKUP_TYPE_REQUIRES"}]);var Vp;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.QUERY=1]="QUERY",e[e.MUTATION=2]="MUTATION",e[e.SUBSCRIPTION=3]="SUBSCRIPTION"})(Vp||(Vp={}));C.util.setEnumType(Vp,"wg.cosmo.node.v1.OperationType",[{no:0,name:"OPERATION_TYPE_UNSPECIFIED"},{no:1,name:"OPERATION_TYPE_QUERY"},{no:2,name:"OPERATION_TYPE_MUTATION"},{no:3,name:"OPERATION_TYPE_SUBSCRIPTION"}]);var ru;(function(e){e[e.PUBLISH=0]="PUBLISH",e[e.REQUEST=1]="REQUEST",e[e.SUBSCRIBE=2]="SUBSCRIBE"})(ru||(ru={}));C.util.setEnumType(ru,"wg.cosmo.node.v1.EventType",[{no:0,name:"PUBLISH"},{no:1,name:"REQUEST"},{no:2,name:"SUBSCRIBE"}]);var Ku;(function(e){e[e.STATIC_CONFIGURATION_VARIABLE=0]="STATIC_CONFIGURATION_VARIABLE",e[e.ENV_CONFIGURATION_VARIABLE=1]="ENV_CONFIGURATION_VARIABLE",e[e.PLACEHOLDER_CONFIGURATION_VARIABLE=2]="PLACEHOLDER_CONFIGURATION_VARIABLE"})(Ku||(Ku={}));C.util.setEnumType(Ku,"wg.cosmo.node.v1.ConfigurationVariableKind",[{no:0,name:"STATIC_CONFIGURATION_VARIABLE"},{no:1,name:"ENV_CONFIGURATION_VARIABLE"},{no:2,name:"PLACEHOLDER_CONFIGURATION_VARIABLE"}]);var el;(function(e){e[e.GET=0]="GET",e[e.POST=1]="POST",e[e.PUT=2]="PUT",e[e.DELETE=3]="DELETE",e[e.OPTIONS=4]="OPTIONS"})(el||(el={}));C.util.setEnumType(el,"wg.cosmo.node.v1.HTTPMethod",[{no:0,name:"GET"},{no:1,name:"POST"},{no:2,name:"PUT"},{no:3,name:"DELETE"},{no:4,name:"OPTIONS"}]);var $s=class $s extends Re{constructor(n){super();g(this,"id","");g(this,"name","");g(this,"routingUrl","");C.util.initPartial(n,this)}static fromBinary(n,r){return new $s().fromBinary(n,r)}static fromJson(n,r){return new $s().fromJson(n,r)}static fromJsonString(n,r){return new $s().fromJsonString(n,r)}static equals(n,r){return C.util.equals($s,n,r)}};g($s,"runtime",C),g($s,"typeName","wg.cosmo.node.v1.Subgraph"),g($s,"fields",C.util.newFieldList(()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"routing_url",kind:"scalar",T:9}]));var Mh=$s,Gs=class Gs extends Re{constructor(n){super();g(this,"configByFeatureFlagName",{});C.util.initPartial(n,this)}static fromBinary(n,r){return new Gs().fromBinary(n,r)}static fromJson(n,r){return new Gs().fromJson(n,r)}static fromJsonString(n,r){return new Gs().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Gs,n,r)}};g(Gs,"runtime",C),g(Gs,"typeName","wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs"),g(Gs,"fields",C.util.newFieldList(()=>[{no:1,name:"config_by_feature_flag_name",kind:"map",K:9,V:{kind:"message",T:jb}}]));var Vb=Gs,Qs=class Qs extends Re{constructor(n){super();g(this,"engineConfig");g(this,"version","");g(this,"subgraphs",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new Qs().fromBinary(n,r)}static fromJson(n,r){return new Qs().fromJson(n,r)}static fromJsonString(n,r){return new Qs().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Qs,n,r)}};g(Qs,"runtime",C),g(Qs,"typeName","wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig"),g(Qs,"fields",C.util.newFieldList(()=>[{no:1,name:"engine_config",kind:"message",T:bd},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"subgraphs",kind:"message",T:Mh,repeated:!0}]));var jb=Qs,Ys=class Ys extends Re{constructor(n){super();g(this,"engineConfig");g(this,"version","");g(this,"subgraphs",[]);g(this,"featureFlagConfigs");g(this,"compatibilityVersion","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Ys().fromBinary(n,r)}static fromJson(n,r){return new Ys().fromJson(n,r)}static fromJsonString(n,r){return new Ys().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ys,n,r)}};g(Ys,"runtime",C),g(Ys,"typeName","wg.cosmo.node.v1.RouterConfig"),g(Ys,"fields",C.util.newFieldList(()=>[{no:1,name:"engine_config",kind:"message",T:bd},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"subgraphs",kind:"message",T:Mh,repeated:!0},{no:4,name:"feature_flag_configs",kind:"message",T:Vb,opt:!0},{no:5,name:"compatibility_version",kind:"scalar",T:9}]));var jp=Ys,Js=class Js extends Re{constructor(n){super();g(this,"code",Dd.OK);g(this,"details");C.util.initPartial(n,this)}static fromBinary(n,r){return new Js().fromBinary(n,r)}static fromJson(n,r){return new Js().fromJson(n,r)}static fromJsonString(n,r){return new Js().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Js,n,r)}};g(Js,"runtime",C),g(Js,"typeName","wg.cosmo.node.v1.Response"),g(Js,"fields",C.util.newFieldList(()=>[{no:1,name:"code",kind:"enum",T:C.getEnumType(Dd)},{no:2,name:"details",kind:"scalar",T:9,opt:!0}]));var Kb=Js,zs=class zs extends Re{constructor(n){super();g(this,"code",0);g(this,"message","");C.util.initPartial(n,this)}static fromBinary(n,r){return new zs().fromBinary(n,r)}static fromJson(n,r){return new zs().fromJson(n,r)}static fromJsonString(n,r){return new zs().fromJsonString(n,r)}static equals(n,r){return C.util.equals(zs,n,r)}};g(zs,"runtime",C),g(zs,"typeName","wg.cosmo.node.v1.ResponseStatus"),g(zs,"fields",C.util.newFieldList(()=>[{no:1,name:"code",kind:"scalar",T:5},{no:2,name:"message",kind:"scalar",T:9}]));var sK=zs,Hs=class Hs extends Re{constructor(n){super();g(this,"accountLimits");g(this,"graphPublicKey","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Hs().fromBinary(n,r)}static fromJson(n,r){return new Hs().fromJson(n,r)}static fromJsonString(n,r){return new Hs().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Hs,n,r)}};g(Hs,"runtime",C),g(Hs,"typeName","wg.cosmo.node.v1.RegistrationInfo"),g(Hs,"fields",C.util.newFieldList(()=>[{no:1,name:"account_limits",kind:"message",T:Gb},{no:2,name:"graph_public_key",kind:"scalar",T:9}]));var $b=Hs,Ws=class Ws extends Re{constructor(n){super();g(this,"traceSamplingRate",0);C.util.initPartial(n,this)}static fromBinary(n,r){return new Ws().fromBinary(n,r)}static fromJson(n,r){return new Ws().fromJson(n,r)}static fromJsonString(n,r){return new Ws().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ws,n,r)}};g(Ws,"runtime",C),g(Ws,"typeName","wg.cosmo.node.v1.AccountLimits"),g(Ws,"fields",C.util.newFieldList(()=>[{no:1,name:"trace_sampling_rate",kind:"scalar",T:2}]));var Gb=Ws,Xs=class Xs extends Re{constructor(t){super(),C.util.initPartial(t,this)}static fromBinary(t,n){return new Xs().fromBinary(t,n)}static fromJson(t,n){return new Xs().fromJson(t,n)}static fromJsonString(t,n){return new Xs().fromJsonString(t,n)}static equals(t,n){return C.util.equals(Xs,t,n)}};g(Xs,"runtime",C),g(Xs,"typeName","wg.cosmo.node.v1.SelfRegisterRequest"),g(Xs,"fields",C.util.newFieldList(()=>[]));var oK=Xs,Zs=class Zs extends Re{constructor(n){super();g(this,"response");g(this,"registrationInfo");C.util.initPartial(n,this)}static fromBinary(n,r){return new Zs().fromBinary(n,r)}static fromJson(n,r){return new Zs().fromJson(n,r)}static fromJsonString(n,r){return new Zs().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Zs,n,r)}};g(Zs,"runtime",C),g(Zs,"typeName","wg.cosmo.node.v1.SelfRegisterResponse"),g(Zs,"fields",C.util.newFieldList(()=>[{no:1,name:"response",kind:"message",T:Kb},{no:2,name:"registrationInfo",kind:"message",T:$b,opt:!0}]));var uK=Zs,eo=class eo extends Re{constructor(n){super();g(this,"defaultFlushInterval",Jn.zero);g(this,"datasourceConfigurations",[]);g(this,"fieldConfigurations",[]);g(this,"graphqlSchema","");g(this,"typeConfigurations",[]);g(this,"stringStorage",{});g(this,"graphqlClientSchema");C.util.initPartial(n,this)}static fromBinary(n,r){return new eo().fromBinary(n,r)}static fromJson(n,r){return new eo().fromJson(n,r)}static fromJsonString(n,r){return new eo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(eo,n,r)}};g(eo,"runtime",C),g(eo,"typeName","wg.cosmo.node.v1.EngineConfiguration"),g(eo,"fields",C.util.newFieldList(()=>[{no:1,name:"defaultFlushInterval",kind:"scalar",T:3},{no:2,name:"datasource_configurations",kind:"message",T:Kp,repeated:!0},{no:3,name:"field_configurations",kind:"message",T:zp,repeated:!0},{no:4,name:"graphqlSchema",kind:"scalar",T:9},{no:5,name:"type_configurations",kind:"message",T:Qb,repeated:!0},{no:6,name:"string_storage",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:7,name:"graphql_client_schema",kind:"scalar",T:9,opt:!0}]));var bd=eo,to=class to extends Re{constructor(n){super();g(this,"kind",ju.STATIC);g(this,"rootNodes",[]);g(this,"childNodes",[]);g(this,"overrideFieldPathFromAlias",!1);g(this,"customGraphql");g(this,"customStatic");g(this,"directives",[]);g(this,"requestTimeoutSeconds",Jn.zero);g(this,"id","");g(this,"keys",[]);g(this,"provides",[]);g(this,"requires",[]);g(this,"customEvents");g(this,"entityInterfaces",[]);g(this,"interfaceObjects",[]);g(this,"costConfiguration");C.util.initPartial(n,this)}static fromBinary(n,r){return new to().fromBinary(n,r)}static fromJson(n,r){return new to().fromJson(n,r)}static fromJsonString(n,r){return new to().fromJsonString(n,r)}static equals(n,r){return C.util.equals(to,n,r)}};g(to,"runtime",C),g(to,"typeName","wg.cosmo.node.v1.DataSourceConfiguration"),g(to,"fields",C.util.newFieldList(()=>[{no:1,name:"kind",kind:"enum",T:C.getEnumType(ju)},{no:2,name:"root_nodes",kind:"message",T:Ad,repeated:!0},{no:3,name:"child_nodes",kind:"message",T:Ad,repeated:!0},{no:4,name:"override_field_path_from_alias",kind:"scalar",T:8},{no:5,name:"custom_graphql",kind:"message",T:Xp},{no:6,name:"custom_static",kind:"message",T:a0},{no:7,name:"directives",kind:"message",T:s0,repeated:!0},{no:8,name:"request_timeout_seconds",kind:"scalar",T:3},{no:9,name:"id",kind:"scalar",T:9},{no:10,name:"keys",kind:"message",T:Xc,repeated:!0},{no:11,name:"provides",kind:"message",T:Xc,repeated:!0},{no:12,name:"requires",kind:"message",T:Xc,repeated:!0},{no:13,name:"custom_events",kind:"message",T:nl},{no:14,name:"entity_interfaces",kind:"message",T:Rd,repeated:!0},{no:15,name:"interface_objects",kind:"message",T:Rd,repeated:!0},{no:16,name:"cost_configuration",kind:"message",T:$p}]));var Kp=to,no=class no extends Re{constructor(n){super();g(this,"fieldWeights",[]);g(this,"listSizes",[]);g(this,"typeWeights",{});g(this,"directiveArgumentWeights",{});C.util.initPartial(n,this)}static fromBinary(n,r){return new no().fromBinary(n,r)}static fromJson(n,r){return new no().fromJson(n,r)}static fromJsonString(n,r){return new no().fromJsonString(n,r)}static equals(n,r){return C.util.equals(no,n,r)}};g(no,"runtime",C),g(no,"typeName","wg.cosmo.node.v1.CostConfiguration"),g(no,"fields",C.util.newFieldList(()=>[{no:1,name:"field_weights",kind:"message",T:Gp,repeated:!0},{no:2,name:"list_sizes",kind:"message",T:Qp,repeated:!0},{no:3,name:"type_weights",kind:"map",K:9,V:{kind:"scalar",T:5}},{no:4,name:"directive_argument_weights",kind:"map",K:9,V:{kind:"scalar",T:5}}]));var $p=no,ro=class ro extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldName","");g(this,"weight");g(this,"argumentWeights",{});C.util.initPartial(n,this)}static fromBinary(n,r){return new ro().fromBinary(n,r)}static fromJson(n,r){return new ro().fromJson(n,r)}static fromJsonString(n,r){return new ro().fromJsonString(n,r)}static equals(n,r){return C.util.equals(ro,n,r)}};g(ro,"runtime",C),g(ro,"typeName","wg.cosmo.node.v1.FieldWeightConfiguration"),g(ro,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_name",kind:"scalar",T:9},{no:3,name:"weight",kind:"scalar",T:5,opt:!0},{no:4,name:"argument_weights",kind:"map",K:9,V:{kind:"scalar",T:5}}]));var Gp=ro,io=class io extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldName","");g(this,"assumedSize");g(this,"slicingArguments",[]);g(this,"sizedFields",[]);g(this,"requireOneSlicingArgument");C.util.initPartial(n,this)}static fromBinary(n,r){return new io().fromBinary(n,r)}static fromJson(n,r){return new io().fromJson(n,r)}static fromJsonString(n,r){return new io().fromJsonString(n,r)}static equals(n,r){return C.util.equals(io,n,r)}};g(io,"runtime",C),g(io,"typeName","wg.cosmo.node.v1.FieldListSizeConfiguration"),g(io,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_name",kind:"scalar",T:9},{no:3,name:"assumed_size",kind:"scalar",T:5,opt:!0},{no:4,name:"slicing_arguments",kind:"scalar",T:9,repeated:!0},{no:5,name:"sized_fields",kind:"scalar",T:9,repeated:!0},{no:6,name:"require_one_slicing_argument",kind:"scalar",T:8,opt:!0}]));var Qp=io,ao=class ao extends Re{constructor(n){super();g(this,"name","");g(this,"sourceType",Zc.OBJECT_FIELD);C.util.initPartial(n,this)}static fromBinary(n,r){return new ao().fromBinary(n,r)}static fromJson(n,r){return new ao().fromJson(n,r)}static fromJsonString(n,r){return new ao().fromJsonString(n,r)}static equals(n,r){return C.util.equals(ao,n,r)}};g(ao,"runtime",C),g(ao,"typeName","wg.cosmo.node.v1.ArgumentConfiguration"),g(ao,"fields",C.util.newFieldList(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"source_type",kind:"enum",T:C.getEnumType(Zc)}]));var Yp=ao,so=class so extends Re{constructor(n){super();g(this,"requiredAndScopes",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new so().fromBinary(n,r)}static fromJson(n,r){return new so().fromJson(n,r)}static fromJsonString(n,r){return new so().fromJsonString(n,r)}static equals(n,r){return C.util.equals(so,n,r)}};g(so,"runtime",C),g(so,"typeName","wg.cosmo.node.v1.Scopes"),g(so,"fields",C.util.newFieldList(()=>[{no:1,name:"required_and_scopes",kind:"scalar",T:9,repeated:!0}]));var tl=so,oo=class oo extends Re{constructor(n){super();g(this,"requiresAuthentication",!1);g(this,"requiredOrScopes",[]);g(this,"requiredOrScopesByOr",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new oo().fromBinary(n,r)}static fromJson(n,r){return new oo().fromJson(n,r)}static fromJsonString(n,r){return new oo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(oo,n,r)}};g(oo,"runtime",C),g(oo,"typeName","wg.cosmo.node.v1.AuthorizationConfiguration"),g(oo,"fields",C.util.newFieldList(()=>[{no:1,name:"requires_authentication",kind:"scalar",T:8},{no:2,name:"required_or_scopes",kind:"message",T:tl,repeated:!0},{no:3,name:"required_or_scopes_by_or",kind:"message",T:tl,repeated:!0}]));var Jp=oo,uo=class uo extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldName","");g(this,"argumentsConfiguration",[]);g(this,"authorizationConfiguration");g(this,"subscriptionFilterCondition");C.util.initPartial(n,this)}static fromBinary(n,r){return new uo().fromBinary(n,r)}static fromJson(n,r){return new uo().fromJson(n,r)}static fromJsonString(n,r){return new uo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(uo,n,r)}};g(uo,"runtime",C),g(uo,"typeName","wg.cosmo.node.v1.FieldConfiguration"),g(uo,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_name",kind:"scalar",T:9},{no:3,name:"arguments_configuration",kind:"message",T:Yp,repeated:!0},{no:4,name:"authorization_configuration",kind:"message",T:Jp},{no:5,name:"subscription_filter_condition",kind:"message",T:$u,opt:!0}]));var zp=uo,co=class co extends Re{constructor(n){super();g(this,"typeName","");g(this,"renameTo","");C.util.initPartial(n,this)}static fromBinary(n,r){return new co().fromBinary(n,r)}static fromJson(n,r){return new co().fromJson(n,r)}static fromJsonString(n,r){return new co().fromJsonString(n,r)}static equals(n,r){return C.util.equals(co,n,r)}};g(co,"runtime",C),g(co,"typeName","wg.cosmo.node.v1.TypeConfiguration"),g(co,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"rename_to",kind:"scalar",T:9}]));var Qb=co,lo=class lo extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldNames",[]);g(this,"externalFieldNames",[]);g(this,"requireFetchReasonsFieldNames",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new lo().fromBinary(n,r)}static fromJson(n,r){return new lo().fromJson(n,r)}static fromJsonString(n,r){return new lo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(lo,n,r)}};g(lo,"runtime",C),g(lo,"typeName","wg.cosmo.node.v1.TypeField"),g(lo,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_names",kind:"scalar",T:9,repeated:!0},{no:3,name:"external_field_names",kind:"scalar",T:9,repeated:!0},{no:4,name:"require_fetch_reasons_field_names",kind:"scalar",T:9,repeated:!0}]));var Ad=lo,fo=class fo extends Re{constructor(n){super();g(this,"fieldName","");g(this,"typeName","");C.util.initPartial(n,this)}static fromBinary(n,r){return new fo().fromBinary(n,r)}static fromJson(n,r){return new fo().fromJson(n,r)}static fromJsonString(n,r){return new fo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(fo,n,r)}};g(fo,"runtime",C),g(fo,"typeName","wg.cosmo.node.v1.FieldCoordinates"),g(fo,"fields",C.util.newFieldList(()=>[{no:1,name:"field_name",kind:"scalar",T:9},{no:2,name:"type_name",kind:"scalar",T:9}]));var Hp=fo,po=class po extends Re{constructor(n){super();g(this,"fieldCoordinatesPath",[]);g(this,"fieldPath",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new po().fromBinary(n,r)}static fromJson(n,r){return new po().fromJson(n,r)}static fromJsonString(n,r){return new po().fromJsonString(n,r)}static equals(n,r){return C.util.equals(po,n,r)}};g(po,"runtime",C),g(po,"typeName","wg.cosmo.node.v1.FieldSetCondition"),g(po,"fields",C.util.newFieldList(()=>[{no:1,name:"field_coordinates_path",kind:"message",T:Hp,repeated:!0},{no:2,name:"field_path",kind:"scalar",T:9,repeated:!0}]));var Wp=po,mo=class mo extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldName","");g(this,"selectionSet","");g(this,"disableEntityResolver",!1);g(this,"conditions",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new mo().fromBinary(n,r)}static fromJson(n,r){return new mo().fromJson(n,r)}static fromJsonString(n,r){return new mo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(mo,n,r)}};g(mo,"runtime",C),g(mo,"typeName","wg.cosmo.node.v1.RequiredField"),g(mo,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_name",kind:"scalar",T:9},{no:3,name:"selection_set",kind:"scalar",T:9},{no:4,name:"disable_entity_resolver",kind:"scalar",T:8},{no:5,name:"conditions",kind:"message",T:Wp,repeated:!0}]));var Xc=mo,No=class No extends Re{constructor(n){super();g(this,"interfaceTypeName","");g(this,"concreteTypeNames",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new No().fromBinary(n,r)}static fromJson(n,r){return new No().fromJson(n,r)}static fromJsonString(n,r){return new No().fromJsonString(n,r)}static equals(n,r){return C.util.equals(No,n,r)}};g(No,"runtime",C),g(No,"typeName","wg.cosmo.node.v1.EntityInterfaceConfiguration"),g(No,"fields",C.util.newFieldList(()=>[{no:1,name:"interface_type_name",kind:"scalar",T:9},{no:2,name:"concrete_type_names",kind:"scalar",T:9,repeated:!0}]));var Rd=No,To=class To extends Re{constructor(n){super();g(this,"url");g(this,"method",el.GET);g(this,"header",{});g(this,"body");g(this,"query",[]);g(this,"urlEncodeBody",!1);g(this,"mtls");g(this,"baseUrl");g(this,"path");g(this,"httpProxyUrl");C.util.initPartial(n,this)}static fromBinary(n,r){return new To().fromBinary(n,r)}static fromJson(n,r){return new To().fromJson(n,r)}static fromJsonString(n,r){return new To().fromJsonString(n,r)}static equals(n,r){return C.util.equals(To,n,r)}};g(To,"runtime",C),g(To,"typeName","wg.cosmo.node.v1.FetchConfiguration"),g(To,"fields",C.util.newFieldList(()=>[{no:1,name:"url",kind:"message",T:Jr},{no:2,name:"method",kind:"enum",T:C.getEnumType(el)},{no:3,name:"header",kind:"map",K:9,V:{kind:"message",T:u0}},{no:4,name:"body",kind:"message",T:Jr},{no:5,name:"query",kind:"message",T:o0,repeated:!0},{no:7,name:"url_encode_body",kind:"scalar",T:8},{no:8,name:"mtls",kind:"message",T:c0},{no:9,name:"base_url",kind:"message",T:Jr},{no:10,name:"path",kind:"message",T:Jr},{no:11,name:"http_proxy_url",kind:"message",T:Jr,opt:!0}]));var Yb=To,Eo=class Eo extends Re{constructor(n){super();g(this,"statusCode",Jn.zero);g(this,"typeName","");g(this,"injectStatusCodeIntoBody",!1);C.util.initPartial(n,this)}static fromBinary(n,r){return new Eo().fromBinary(n,r)}static fromJson(n,r){return new Eo().fromJson(n,r)}static fromJsonString(n,r){return new Eo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Eo,n,r)}};g(Eo,"runtime",C),g(Eo,"typeName","wg.cosmo.node.v1.StatusCodeTypeMapping"),g(Eo,"fields",C.util.newFieldList(()=>[{no:1,name:"status_code",kind:"scalar",T:3},{no:2,name:"type_name",kind:"scalar",T:9},{no:3,name:"inject_status_code_into_body",kind:"scalar",T:8}]));var cK=Eo,ho=class ho extends Re{constructor(n){super();g(this,"fetch");g(this,"subscription");g(this,"federation");g(this,"upstreamSchema");g(this,"customScalarTypeFields",[]);g(this,"grpc");C.util.initPartial(n,this)}static fromBinary(n,r){return new ho().fromBinary(n,r)}static fromJson(n,r){return new ho().fromJson(n,r)}static fromJsonString(n,r){return new ho().fromJsonString(n,r)}static equals(n,r){return C.util.equals(ho,n,r)}};g(ho,"runtime",C),g(ho,"typeName","wg.cosmo.node.v1.DataSourceCustom_GraphQL"),g(ho,"fields",C.util.newFieldList(()=>[{no:1,name:"fetch",kind:"message",T:Yb},{no:2,name:"subscription",kind:"message",T:l0},{no:3,name:"federation",kind:"message",T:d0},{no:4,name:"upstream_schema",kind:"message",T:am},{no:6,name:"custom_scalar_type_fields",kind:"message",T:f0,repeated:!0},{no:7,name:"grpc",kind:"message",T:Pd}]));var Xp=ho,yo=class yo extends Re{constructor(n){super();g(this,"mapping");g(this,"protoSchema","");g(this,"plugin");C.util.initPartial(n,this)}static fromBinary(n,r){return new yo().fromBinary(n,r)}static fromJson(n,r){return new yo().fromJson(n,r)}static fromJsonString(n,r){return new yo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(yo,n,r)}};g(yo,"runtime",C),g(yo,"typeName","wg.cosmo.node.v1.GRPCConfiguration"),g(yo,"fields",C.util.newFieldList(()=>[{no:1,name:"mapping",kind:"message",T:zb},{no:2,name:"proto_schema",kind:"scalar",T:9},{no:3,name:"plugin",kind:"message",T:Zp}]));var Pd=yo,Io=class Io extends Re{constructor(n){super();g(this,"repository","");g(this,"reference","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Io().fromBinary(n,r)}static fromJson(n,r){return new Io().fromJson(n,r)}static fromJsonString(n,r){return new Io().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Io,n,r)}};g(Io,"runtime",C),g(Io,"typeName","wg.cosmo.node.v1.ImageReference"),g(Io,"fields",C.util.newFieldList(()=>[{no:1,name:"repository",kind:"scalar",T:9},{no:2,name:"reference",kind:"scalar",T:9}]));var Jb=Io,go=class go extends Re{constructor(n){super();g(this,"name","");g(this,"version","");g(this,"imageReference");C.util.initPartial(n,this)}static fromBinary(n,r){return new go().fromBinary(n,r)}static fromJson(n,r){return new go().fromJson(n,r)}static fromJsonString(n,r){return new go().fromJsonString(n,r)}static equals(n,r){return C.util.equals(go,n,r)}};g(go,"runtime",C),g(go,"typeName","wg.cosmo.node.v1.PluginConfiguration"),g(go,"fields",C.util.newFieldList(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"image_reference",kind:"message",T:Jb,opt:!0}]));var Zp=go,_o=class _o extends Re{constructor(n){super();g(this,"enabled",!1);C.util.initPartial(n,this)}static fromBinary(n,r){return new _o().fromBinary(n,r)}static fromJson(n,r){return new _o().fromJson(n,r)}static fromJsonString(n,r){return new _o().fromJsonString(n,r)}static equals(n,r){return C.util.equals(_o,n,r)}};g(_o,"runtime",C),g(_o,"typeName","wg.cosmo.node.v1.SSLConfiguration"),g(_o,"fields",C.util.newFieldList(()=>[{no:1,name:"enabled",kind:"scalar",T:8}]));var lK=_o,vo=class vo extends Re{constructor(n){super();g(this,"version",0);g(this,"service","");g(this,"operationMappings",[]);g(this,"entityMappings",[]);g(this,"typeFieldMappings",[]);g(this,"enumMappings",[]);g(this,"resolveMappings",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new vo().fromBinary(n,r)}static fromJson(n,r){return new vo().fromJson(n,r)}static fromJsonString(n,r){return new vo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(vo,n,r)}};g(vo,"runtime",C),g(vo,"typeName","wg.cosmo.node.v1.GRPCMapping"),g(vo,"fields",C.util.newFieldList(()=>[{no:1,name:"version",kind:"scalar",T:5},{no:2,name:"service",kind:"scalar",T:9},{no:3,name:"operation_mappings",kind:"message",T:Xb,repeated:!0},{no:4,name:"entity_mappings",kind:"message",T:Zb,repeated:!0},{no:5,name:"type_field_mappings",kind:"message",T:t0,repeated:!0},{no:6,name:"enum_mappings",kind:"message",T:r0,repeated:!0},{no:7,name:"resolve_mappings",kind:"message",T:Hb,repeated:!0}]));var zb=vo,So=class So extends Re{constructor(n){super();g(this,"type",qp.UNSPECIFIED);g(this,"lookupMapping");g(this,"rpc","");g(this,"request","");g(this,"response","");C.util.initPartial(n,this)}static fromBinary(n,r){return new So().fromBinary(n,r)}static fromJson(n,r){return new So().fromJson(n,r)}static fromJsonString(n,r){return new So().fromJsonString(n,r)}static equals(n,r){return C.util.equals(So,n,r)}};g(So,"runtime",C),g(So,"typeName","wg.cosmo.node.v1.LookupMapping"),g(So,"fields",C.util.newFieldList(()=>[{no:1,name:"type",kind:"enum",T:C.getEnumType(qp)},{no:2,name:"lookup_mapping",kind:"message",T:Wb},{no:3,name:"rpc",kind:"scalar",T:9},{no:4,name:"request",kind:"scalar",T:9},{no:5,name:"response",kind:"scalar",T:9}]));var Hb=So,Oo=class Oo extends Re{constructor(n){super();g(this,"type","");g(this,"fieldMapping");C.util.initPartial(n,this)}static fromBinary(n,r){return new Oo().fromBinary(n,r)}static fromJson(n,r){return new Oo().fromJson(n,r)}static fromJsonString(n,r){return new Oo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Oo,n,r)}};g(Oo,"runtime",C),g(Oo,"typeName","wg.cosmo.node.v1.LookupFieldMapping"),g(Oo,"fields",C.util.newFieldList(()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"field_mapping",kind:"message",T:em}]));var Wb=Oo,Do=class Do extends Re{constructor(n){super();g(this,"type",Vp.UNSPECIFIED);g(this,"original","");g(this,"mapped","");g(this,"request","");g(this,"response","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Do().fromBinary(n,r)}static fromJson(n,r){return new Do().fromJson(n,r)}static fromJsonString(n,r){return new Do().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Do,n,r)}};g(Do,"runtime",C),g(Do,"typeName","wg.cosmo.node.v1.OperationMapping"),g(Do,"fields",C.util.newFieldList(()=>[{no:1,name:"type",kind:"enum",T:C.getEnumType(Vp)},{no:2,name:"original",kind:"scalar",T:9},{no:3,name:"mapped",kind:"scalar",T:9},{no:4,name:"request",kind:"scalar",T:9},{no:5,name:"response",kind:"scalar",T:9}]));var Xb=Do,bo=class bo extends Re{constructor(n){super();g(this,"typeName","");g(this,"kind","");g(this,"key","");g(this,"rpc","");g(this,"request","");g(this,"response","");g(this,"requiredFieldMappings",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new bo().fromBinary(n,r)}static fromJson(n,r){return new bo().fromJson(n,r)}static fromJsonString(n,r){return new bo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(bo,n,r)}};g(bo,"runtime",C),g(bo,"typeName","wg.cosmo.node.v1.EntityMapping"),g(bo,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"kind",kind:"scalar",T:9},{no:3,name:"key",kind:"scalar",T:9},{no:4,name:"rpc",kind:"scalar",T:9},{no:5,name:"request",kind:"scalar",T:9},{no:6,name:"response",kind:"scalar",T:9},{no:7,name:"required_field_mappings",kind:"message",T:e0,repeated:!0}]));var Zb=bo,Ao=class Ao extends Re{constructor(n){super();g(this,"fieldMapping");g(this,"rpc","");g(this,"request","");g(this,"response","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Ao().fromBinary(n,r)}static fromJson(n,r){return new Ao().fromJson(n,r)}static fromJsonString(n,r){return new Ao().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ao,n,r)}};g(Ao,"runtime",C),g(Ao,"typeName","wg.cosmo.node.v1.RequiredFieldMapping"),g(Ao,"fields",C.util.newFieldList(()=>[{no:1,name:"field_mapping",kind:"message",T:em},{no:2,name:"rpc",kind:"scalar",T:9},{no:3,name:"request",kind:"scalar",T:9},{no:4,name:"response",kind:"scalar",T:9}]));var e0=Ao,Ro=class Ro extends Re{constructor(n){super();g(this,"type","");g(this,"fieldMappings",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new Ro().fromBinary(n,r)}static fromJson(n,r){return new Ro().fromJson(n,r)}static fromJsonString(n,r){return new Ro().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ro,n,r)}};g(Ro,"runtime",C),g(Ro,"typeName","wg.cosmo.node.v1.TypeFieldMapping"),g(Ro,"fields",C.util.newFieldList(()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"field_mappings",kind:"message",T:em,repeated:!0}]));var t0=Ro,Po=class Po extends Re{constructor(n){super();g(this,"original","");g(this,"mapped","");g(this,"argumentMappings",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new Po().fromBinary(n,r)}static fromJson(n,r){return new Po().fromJson(n,r)}static fromJsonString(n,r){return new Po().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Po,n,r)}};g(Po,"runtime",C),g(Po,"typeName","wg.cosmo.node.v1.FieldMapping"),g(Po,"fields",C.util.newFieldList(()=>[{no:1,name:"original",kind:"scalar",T:9},{no:2,name:"mapped",kind:"scalar",T:9},{no:3,name:"argument_mappings",kind:"message",T:n0,repeated:!0}]));var em=Po,Fo=class Fo extends Re{constructor(n){super();g(this,"original","");g(this,"mapped","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Fo().fromBinary(n,r)}static fromJson(n,r){return new Fo().fromJson(n,r)}static fromJsonString(n,r){return new Fo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Fo,n,r)}};g(Fo,"runtime",C),g(Fo,"typeName","wg.cosmo.node.v1.ArgumentMapping"),g(Fo,"fields",C.util.newFieldList(()=>[{no:1,name:"original",kind:"scalar",T:9},{no:2,name:"mapped",kind:"scalar",T:9}]));var n0=Fo,wo=class wo extends Re{constructor(n){super();g(this,"type","");g(this,"values",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new wo().fromBinary(n,r)}static fromJson(n,r){return new wo().fromJson(n,r)}static fromJsonString(n,r){return new wo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(wo,n,r)}};g(wo,"runtime",C),g(wo,"typeName","wg.cosmo.node.v1.EnumMapping"),g(wo,"fields",C.util.newFieldList(()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"values",kind:"message",T:i0,repeated:!0}]));var r0=wo,Lo=class Lo extends Re{constructor(n){super();g(this,"original","");g(this,"mapped","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Lo().fromBinary(n,r)}static fromJson(n,r){return new Lo().fromJson(n,r)}static fromJsonString(n,r){return new Lo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Lo,n,r)}};g(Lo,"runtime",C),g(Lo,"typeName","wg.cosmo.node.v1.EnumValueMapping"),g(Lo,"fields",C.util.newFieldList(()=>[{no:1,name:"original",kind:"scalar",T:9},{no:2,name:"mapped",kind:"scalar",T:9}]));var i0=Lo,Co=class Co extends Re{constructor(n){super();g(this,"consumerName","");g(this,"streamName","");g(this,"consumerInactiveThreshold",0);C.util.initPartial(n,this)}static fromBinary(n,r){return new Co().fromBinary(n,r)}static fromJson(n,r){return new Co().fromJson(n,r)}static fromJsonString(n,r){return new Co().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Co,n,r)}};g(Co,"runtime",C),g(Co,"typeName","wg.cosmo.node.v1.NatsStreamConfiguration"),g(Co,"fields",C.util.newFieldList(()=>[{no:1,name:"consumer_name",kind:"scalar",T:9},{no:2,name:"stream_name",kind:"scalar",T:9},{no:3,name:"consumer_inactive_threshold",kind:"scalar",T:5}]));var tm=Co,Uo=class Uo extends Re{constructor(n){super();g(this,"engineEventConfiguration");g(this,"subjects",[]);g(this,"streamConfiguration");C.util.initPartial(n,this)}static fromBinary(n,r){return new Uo().fromBinary(n,r)}static fromJson(n,r){return new Uo().fromJson(n,r)}static fromJsonString(n,r){return new Uo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Uo,n,r)}};g(Uo,"runtime",C),g(Uo,"typeName","wg.cosmo.node.v1.NatsEventConfiguration"),g(Uo,"fields",C.util.newFieldList(()=>[{no:1,name:"engine_event_configuration",kind:"message",T:iu},{no:2,name:"subjects",kind:"scalar",T:9,repeated:!0},{no:3,name:"stream_configuration",kind:"message",T:tm}]));var nm=Uo,Bo=class Bo extends Re{constructor(n){super();g(this,"engineEventConfiguration");g(this,"topics",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new Bo().fromBinary(n,r)}static fromJson(n,r){return new Bo().fromJson(n,r)}static fromJsonString(n,r){return new Bo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Bo,n,r)}};g(Bo,"runtime",C),g(Bo,"typeName","wg.cosmo.node.v1.KafkaEventConfiguration"),g(Bo,"fields",C.util.newFieldList(()=>[{no:1,name:"engine_event_configuration",kind:"message",T:iu},{no:2,name:"topics",kind:"scalar",T:9,repeated:!0}]));var rm=Bo,ko=class ko extends Re{constructor(n){super();g(this,"engineEventConfiguration");g(this,"channels",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new ko().fromBinary(n,r)}static fromJson(n,r){return new ko().fromJson(n,r)}static fromJsonString(n,r){return new ko().fromJsonString(n,r)}static equals(n,r){return C.util.equals(ko,n,r)}};g(ko,"runtime",C),g(ko,"typeName","wg.cosmo.node.v1.RedisEventConfiguration"),g(ko,"fields",C.util.newFieldList(()=>[{no:1,name:"engine_event_configuration",kind:"message",T:iu},{no:2,name:"channels",kind:"scalar",T:9,repeated:!0}]));var im=ko,Mo=class Mo extends Re{constructor(n){super();g(this,"providerId","");g(this,"type",ru.PUBLISH);g(this,"typeName","");g(this,"fieldName","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Mo().fromBinary(n,r)}static fromJson(n,r){return new Mo().fromJson(n,r)}static fromJsonString(n,r){return new Mo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Mo,n,r)}};g(Mo,"runtime",C),g(Mo,"typeName","wg.cosmo.node.v1.EngineEventConfiguration"),g(Mo,"fields",C.util.newFieldList(()=>[{no:1,name:"provider_id",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:C.getEnumType(ru)},{no:3,name:"type_name",kind:"scalar",T:9},{no:4,name:"field_name",kind:"scalar",T:9}]));var iu=Mo,xo=class xo extends Re{constructor(n){super();g(this,"nats",[]);g(this,"kafka",[]);g(this,"redis",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new xo().fromBinary(n,r)}static fromJson(n,r){return new xo().fromJson(n,r)}static fromJsonString(n,r){return new xo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(xo,n,r)}};g(xo,"runtime",C),g(xo,"typeName","wg.cosmo.node.v1.DataSourceCustomEvents"),g(xo,"fields",C.util.newFieldList(()=>[{no:1,name:"nats",kind:"message",T:nm,repeated:!0},{no:2,name:"kafka",kind:"message",T:rm,repeated:!0},{no:3,name:"redis",kind:"message",T:im,repeated:!0}]));var nl=xo,qo=class qo extends Re{constructor(n){super();g(this,"data");C.util.initPartial(n,this)}static fromBinary(n,r){return new qo().fromBinary(n,r)}static fromJson(n,r){return new qo().fromJson(n,r)}static fromJsonString(n,r){return new qo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(qo,n,r)}};g(qo,"runtime",C),g(qo,"typeName","wg.cosmo.node.v1.DataSourceCustom_Static"),g(qo,"fields",C.util.newFieldList(()=>[{no:1,name:"data",kind:"message",T:Jr}]));var a0=qo,Vo=class Vo extends Re{constructor(n){super();g(this,"kind",Ku.STATIC_CONFIGURATION_VARIABLE);g(this,"staticVariableContent","");g(this,"environmentVariableName","");g(this,"environmentVariableDefaultValue","");g(this,"placeholderVariableName","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Vo().fromBinary(n,r)}static fromJson(n,r){return new Vo().fromJson(n,r)}static fromJsonString(n,r){return new Vo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Vo,n,r)}};g(Vo,"runtime",C),g(Vo,"typeName","wg.cosmo.node.v1.ConfigurationVariable"),g(Vo,"fields",C.util.newFieldList(()=>[{no:1,name:"kind",kind:"enum",T:C.getEnumType(Ku)},{no:2,name:"static_variable_content",kind:"scalar",T:9},{no:3,name:"environment_variable_name",kind:"scalar",T:9},{no:4,name:"environment_variable_default_value",kind:"scalar",T:9},{no:5,name:"placeholder_variable_name",kind:"scalar",T:9}]));var Jr=Vo,jo=class jo extends Re{constructor(n){super();g(this,"directiveName","");g(this,"renameTo","");C.util.initPartial(n,this)}static fromBinary(n,r){return new jo().fromBinary(n,r)}static fromJson(n,r){return new jo().fromJson(n,r)}static fromJsonString(n,r){return new jo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(jo,n,r)}};g(jo,"runtime",C),g(jo,"typeName","wg.cosmo.node.v1.DirectiveConfiguration"),g(jo,"fields",C.util.newFieldList(()=>[{no:1,name:"directive_name",kind:"scalar",T:9},{no:2,name:"rename_to",kind:"scalar",T:9}]));var s0=jo,Ko=class Ko extends Re{constructor(n){super();g(this,"name","");g(this,"value","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Ko().fromBinary(n,r)}static fromJson(n,r){return new Ko().fromJson(n,r)}static fromJsonString(n,r){return new Ko().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ko,n,r)}};g(Ko,"runtime",C),g(Ko,"typeName","wg.cosmo.node.v1.URLQueryConfiguration"),g(Ko,"fields",C.util.newFieldList(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"value",kind:"scalar",T:9}]));var o0=Ko,$o=class $o extends Re{constructor(n){super();g(this,"values",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new $o().fromBinary(n,r)}static fromJson(n,r){return new $o().fromJson(n,r)}static fromJsonString(n,r){return new $o().fromJsonString(n,r)}static equals(n,r){return C.util.equals($o,n,r)}};g($o,"runtime",C),g($o,"typeName","wg.cosmo.node.v1.HTTPHeader"),g($o,"fields",C.util.newFieldList(()=>[{no:1,name:"values",kind:"message",T:Jr,repeated:!0}]));var u0=$o,Go=class Go extends Re{constructor(n){super();g(this,"key");g(this,"cert");g(this,"insecureSkipVerify",!1);C.util.initPartial(n,this)}static fromBinary(n,r){return new Go().fromBinary(n,r)}static fromJson(n,r){return new Go().fromJson(n,r)}static fromJsonString(n,r){return new Go().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Go,n,r)}};g(Go,"runtime",C),g(Go,"typeName","wg.cosmo.node.v1.MTLSConfiguration"),g(Go,"fields",C.util.newFieldList(()=>[{no:1,name:"key",kind:"message",T:Jr},{no:2,name:"cert",kind:"message",T:Jr},{no:3,name:"insecureSkipVerify",kind:"scalar",T:8}]));var c0=Go,Qo=class Qo extends Re{constructor(n){super();g(this,"enabled",!1);g(this,"url");g(this,"useSSE");g(this,"protocol");g(this,"websocketSubprotocol");C.util.initPartial(n,this)}static fromBinary(n,r){return new Qo().fromBinary(n,r)}static fromJson(n,r){return new Qo().fromJson(n,r)}static fromJsonString(n,r){return new Qo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Qo,n,r)}};g(Qo,"runtime",C),g(Qo,"typeName","wg.cosmo.node.v1.GraphQLSubscriptionConfiguration"),g(Qo,"fields",C.util.newFieldList(()=>[{no:1,name:"enabled",kind:"scalar",T:8},{no:2,name:"url",kind:"message",T:Jr},{no:3,name:"useSSE",kind:"scalar",T:8,opt:!0},{no:4,name:"protocol",kind:"enum",T:C.getEnumType(js),opt:!0},{no:5,name:"websocketSubprotocol",kind:"enum",T:C.getEnumType(Ks),opt:!0}]));var l0=Qo,Yo=class Yo extends Re{constructor(n){super();g(this,"enabled",!1);g(this,"serviceSdl","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Yo().fromBinary(n,r)}static fromJson(n,r){return new Yo().fromJson(n,r)}static fromJsonString(n,r){return new Yo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Yo,n,r)}};g(Yo,"runtime",C),g(Yo,"typeName","wg.cosmo.node.v1.GraphQLFederationConfiguration"),g(Yo,"fields",C.util.newFieldList(()=>[{no:1,name:"enabled",kind:"scalar",T:8},{no:2,name:"serviceSdl",kind:"scalar",T:9}]));var d0=Yo,Jo=class Jo extends Re{constructor(n){super();g(this,"key","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Jo().fromBinary(n,r)}static fromJson(n,r){return new Jo().fromJson(n,r)}static fromJsonString(n,r){return new Jo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Jo,n,r)}};g(Jo,"runtime",C),g(Jo,"typeName","wg.cosmo.node.v1.InternedString"),g(Jo,"fields",C.util.newFieldList(()=>[{no:1,name:"key",kind:"scalar",T:9}]));var am=Jo,zo=class zo extends Re{constructor(n){super();g(this,"typeName","");g(this,"fieldName","");C.util.initPartial(n,this)}static fromBinary(n,r){return new zo().fromBinary(n,r)}static fromJson(n,r){return new zo().fromJson(n,r)}static fromJsonString(n,r){return new zo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(zo,n,r)}};g(zo,"runtime",C),g(zo,"typeName","wg.cosmo.node.v1.SingleTypeField"),g(zo,"fields",C.util.newFieldList(()=>[{no:1,name:"type_name",kind:"scalar",T:9},{no:2,name:"field_name",kind:"scalar",T:9}]));var f0=zo,Ho=class Ho extends Re{constructor(n){super();g(this,"fieldPath",[]);g(this,"json","");C.util.initPartial(n,this)}static fromBinary(n,r){return new Ho().fromBinary(n,r)}static fromJson(n,r){return new Ho().fromJson(n,r)}static fromJsonString(n,r){return new Ho().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Ho,n,r)}};g(Ho,"runtime",C),g(Ho,"typeName","wg.cosmo.node.v1.SubscriptionFieldCondition"),g(Ho,"fields",C.util.newFieldList(()=>[{no:1,name:"field_path",kind:"scalar",T:9,repeated:!0},{no:2,name:"json",kind:"scalar",T:9}]));var sm=Ho,aa=class aa extends Re{constructor(n){super();g(this,"and",[]);g(this,"in");g(this,"not");g(this,"or",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new aa().fromBinary(n,r)}static fromJson(n,r){return new aa().fromJson(n,r)}static fromJsonString(n,r){return new aa().fromJsonString(n,r)}static equals(n,r){return C.util.equals(aa,n,r)}};g(aa,"runtime",C),g(aa,"typeName","wg.cosmo.node.v1.SubscriptionFilterCondition"),g(aa,"fields",C.util.newFieldList(()=>[{no:1,name:"and",kind:"message",T:aa,repeated:!0},{no:2,name:"in",kind:"message",T:sm,opt:!0},{no:3,name:"not",kind:"message",T:aa,opt:!0},{no:4,name:"or",kind:"message",T:aa,repeated:!0}]));var $u=aa,Wo=class Wo extends Re{constructor(n){super();g(this,"operations",[]);C.util.initPartial(n,this)}static fromBinary(n,r){return new Wo().fromBinary(n,r)}static fromJson(n,r){return new Wo().fromJson(n,r)}static fromJsonString(n,r){return new Wo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Wo,n,r)}};g(Wo,"runtime",C),g(Wo,"typeName","wg.cosmo.node.v1.CacheWarmerOperations"),g(Wo,"fields",C.util.newFieldList(()=>[{no:1,name:"operations",kind:"message",T:p0,repeated:!0}]));var dK=Wo,Xo=class Xo extends Re{constructor(n){super();g(this,"request");g(this,"client");C.util.initPartial(n,this)}static fromBinary(n,r){return new Xo().fromBinary(n,r)}static fromJson(n,r){return new Xo().fromJson(n,r)}static fromJsonString(n,r){return new Xo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Xo,n,r)}};g(Xo,"runtime",C),g(Xo,"typeName","wg.cosmo.node.v1.Operation"),g(Xo,"fields",C.util.newFieldList(()=>[{no:1,name:"request",kind:"message",T:m0},{no:2,name:"client",kind:"message",T:E0}]));var p0=Xo,Zo=class Zo extends Re{constructor(n){super();g(this,"operationName","");g(this,"query","");g(this,"extensions");C.util.initPartial(n,this)}static fromBinary(n,r){return new Zo().fromBinary(n,r)}static fromJson(n,r){return new Zo().fromJson(n,r)}static fromJsonString(n,r){return new Zo().fromJsonString(n,r)}static equals(n,r){return C.util.equals(Zo,n,r)}};g(Zo,"runtime",C),g(Zo,"typeName","wg.cosmo.node.v1.OperationRequest"),g(Zo,"fields",C.util.newFieldList(()=>[{no:1,name:"operation_name",kind:"scalar",T:9},{no:2,name:"query",kind:"scalar",T:9},{no:3,name:"extensions",kind:"message",T:N0}]));var m0=Zo,eu=class eu extends Re{constructor(n){super();g(this,"persistedQuery");C.util.initPartial(n,this)}static fromBinary(n,r){return new eu().fromBinary(n,r)}static fromJson(n,r){return new eu().fromJson(n,r)}static fromJsonString(n,r){return new eu().fromJsonString(n,r)}static equals(n,r){return C.util.equals(eu,n,r)}};g(eu,"runtime",C),g(eu,"typeName","wg.cosmo.node.v1.Extension"),g(eu,"fields",C.util.newFieldList(()=>[{no:1,name:"persisted_query",kind:"message",T:T0}]));var N0=eu,tu=class tu extends Re{constructor(n){super();g(this,"sha256Hash","");g(this,"version",0);C.util.initPartial(n,this)}static fromBinary(n,r){return new tu().fromBinary(n,r)}static fromJson(n,r){return new tu().fromJson(n,r)}static fromJsonString(n,r){return new tu().fromJsonString(n,r)}static equals(n,r){return C.util.equals(tu,n,r)}};g(tu,"runtime",C),g(tu,"typeName","wg.cosmo.node.v1.PersistedQuery"),g(tu,"fields",C.util.newFieldList(()=>[{no:1,name:"sha256_hash",kind:"scalar",T:9},{no:2,name:"version",kind:"scalar",T:5}]));var T0=tu,nu=class nu extends Re{constructor(n){super();g(this,"name","");g(this,"version","");C.util.initPartial(n,this)}static fromBinary(n,r){return new nu().fromBinary(n,r)}static fromJson(n,r){return new nu().fromJson(n,r)}static fromJsonString(n,r){return new nu().fromJsonString(n,r)}static equals(n,r){return C.util.equals(nu,n,r)}};g(nu,"runtime",C),g(nu,"typeName","wg.cosmo.node.v1.ClientInfo"),g(nu,"fields",C.util.newFieldList(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"version",kind:"scalar",T:9}]));var E0=nu;m();T();N();function h0(e){return new Error(`Normalization failed to return a ${e}.`)}function fK(e){return new Error(`Invalid router compatibility version "${e}".`)}m();T();N();var Fd=Ei(Eh(),1);function zpe(e){if(!e.conditions)return;let t=[];for(let n of e.conditions){let r=[];for(let i of n.fieldCoordinatesPath){let a=i.split(".");if(a.length!==2)throw new Error(`fatal: malformed conditional field coordinates "${i}" for field set "${e.selectionSet}".`);r.push(new Hp({fieldName:a[1],typeName:a[0]}))}t.push(new Wp({fieldCoordinatesPath:r,fieldPath:n.fieldPath}))}return t}function y0(e,t,n){if(e)for(let r of e){let i=zpe(r);t.push(new Xc(M(M({typeName:n,fieldName:r.fieldName,selectionSet:r.selectionSet},r.disableEntityResolver?{disableEntityResolver:!0}:{}),i?{conditions:i}:{})))}}function I0(e){switch(e){case"publish":return ru.PUBLISH;case"request":return ru.REQUEST;case"subscribe":return ru.SUBSCRIBE}}function pK(e){var n;let t={rootNodes:[],childNodes:[],keys:[],provides:[],events:new nl({nats:[],kafka:[],redis:[]}),requires:[],entityInterfaces:[],interfaceObjects:[]};for(let r of e.values()){let i=r.typeName,a=[...r.fieldNames],o=new Ad({fieldNames:a,typeName:i});if(r.externalFieldNames&&r.externalFieldNames.size>0&&(o.externalFieldNames=[...r.externalFieldNames]),r.requireFetchReasonsFieldNames&&r.requireFetchReasonsFieldNames.length>0&&(o.requireFetchReasonsFieldNames=[...r.requireFetchReasonsFieldNames]),r.isRootNode?t.rootNodes.push(o):t.childNodes.push(o),r.entityInterfaceConcreteTypeNames){let p=new Rd({interfaceTypeName:i,concreteTypeNames:[...r.entityInterfaceConcreteTypeNames]});r.isInterfaceObject?t.interfaceObjects.push(p):t.entityInterfaces.push(p)}y0(r.keys,t.keys,i),y0(r.provides,t.provides,i),y0(r.requires,t.requires,i);let u=[],l=[],d=[];for(let p of(n=r.events)!=null?n:[])switch(p.providerType){case Fd.PROVIDER_TYPE_KAFKA:{l.push(new rm({engineEventConfiguration:new iu({fieldName:p.fieldName,providerId:p.providerId,type:I0(p.type),typeName:i}),topics:p.topics}));break}case Fd.PROVIDER_TYPE_NATS:{u.push(new nm(M({engineEventConfiguration:new iu({fieldName:p.fieldName,providerId:p.providerId,type:I0(p.type),typeName:i}),subjects:p.subjects},p.streamConfiguration?{streamConfiguration:new tm({consumerInactiveThreshold:p.streamConfiguration.consumerInactiveThreshold,consumerName:p.streamConfiguration.consumerName,streamName:p.streamConfiguration.streamName})}:{})));break}case Fd.PROVIDER_TYPE_REDIS:{d.push(new im({engineEventConfiguration:new iu({fieldName:p.fieldName,providerId:p.providerId,type:I0(p.type),typeName:i}),channels:p.channels}));break}default:throw new Error("Fatal: Unknown event provider.")}t.events.nats.push(...u),t.events.kafka.push(...l),t.events.redis.push(...d)}return t}function mK(e){var n,r;let t=[];for(let i of e){let a=i.argumentNames.map(p=>new Yp({name:p,sourceType:Zc.FIELD_ARGUMENT})),o=new zp({argumentsConfiguration:a,fieldName:i.fieldName,typeName:i.typeName}),u=((n=i.requiredScopes)==null?void 0:n.map(p=>new tl({requiredAndScopes:p})))||[],l=((r=i.requiredScopesByOR)==null?void 0:r.map(p=>new tl({requiredAndScopes:p})))||[],d=u.length>0;if((i.requiresAuthentication||d)&&(o.authorizationConfiguration=new Jp({requiresAuthentication:i.requiresAuthentication||d,requiredOrScopes:u,requiredOrScopesByOr:l})),i.subscriptionFilterCondition){let p=new $u;xh(p,i.subscriptionFilterCondition),o.subscriptionFilterCondition=p}t.push(o)}return t}function xh(e,t){if(t.and!==void 0){let n=[];for(let r of t.and){let i=new $u;xh(i,r),n.push(i)}e.and=n;return}if(t.in!==void 0){e.in=new sm({fieldPath:t.in.fieldPath,json:JSON.stringify(t.in.values)});return}if(t.not!==void 0){e.not=new $u,xh(e.not,t.not);return}if(t.or!==void 0){let n=[];for(let r of t.or){let i=new $u;xh(i,r),n.push(i)}e.or=n;return}throw new Error("Fatal: Incoming SubscriptionCondition object was malformed.")}function Hpe(e){if(e&&!(e.fieldWeights.size===0&&e.listSizes.size===0&&e.typeWeights.size===0&&e.directiveArgumentWeights.size===0))return new $p({fieldWeights:[...e.fieldWeights.values()].map(t=>new Gp($(M({},t),{argumentWeights:Object.fromEntries(t.argumentWeights)}))),listSizes:[...e.listSizes.values()].map(t=>new Qp(t)),typeWeights:Object.fromEntries(e.typeWeights),directiveArgumentWeights:Object.fromEntries(e.directiveArgumentWeights)})}var rl;(function(e){e[e.Plugin=0]="Plugin",e[e.Standard=1]="Standard",e[e.GRPC=2]="GRPC"})(rl||(rl={}));var Wpe=(e,t)=>{let n=stringHash(t);return e.stringStorage[n]=t,new am({key:n})},Xpe=e=>{switch(e){case"ws":return js.GRAPHQL_SUBSCRIPTION_PROTOCOL_WS;case"sse":return js.GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE;case"sse_post":return js.GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE_POST}},Zpe=e=>{switch(e){case"auto":return Ks.GRAPHQL_WEBSOCKET_SUBPROTOCOL_AUTO;case"graphql-ws":return Ks.GRAPHQL_WEBSOCKET_SUBPROTOCOL_WS;case"graphql-transport-ws":return Ks.GRAPHQL_WEBSOCKET_SUBPROTOCOL_TRANSPORT_WS}},TK=function(e){if(!wd.ROUTER_COMPATIBILITY_VERSIONS.has(e.routerCompatibilityVersion))throw fK(e.routerCompatibilityVersion);let t=new bd({defaultFlushInterval:BigInt(500),datasourceConfigurations:[],fieldConfigurations:[],graphqlSchema:"",stringStorage:{},typeConfigurations:[]});for(let n of e.subgraphs){if(!n.configurationDataByTypeName)throw h0("ConfigurationDataByTypeName");if(!n.schema)throw h0("GraphQLSchema");let r={enabled:!0},i=Wpe(t,_j((0,NK.lexicographicSortSchema)(n.schema))),{childNodes:a,entityInterfaces:o,events:u,interfaceObjects:l,keys:d,provides:p,requires:E,rootNodes:y}=pK(n.configurationDataByTypeName),v;switch(n.kind){case rl.Standard:{r.enabled=!0,r.protocol=Xpe(n.subscriptionProtocol||"ws"),r.websocketSubprotocol=Zpe(n.websocketSubprotocol||"auto"),r.url=new Jr({kind:Ku.STATIC_CONFIGURATION_VARIABLE,staticVariableContent:n.subscriptionUrl||n.url});break}case rl.Plugin:{v=new Pd({mapping:n.mapping,protoSchema:n.protoSchema,plugin:new Zp({name:n.name,version:n.version,imageReference:n.imageReference})});break}case rl.GRPC:{v=new Pd({mapping:n.mapping,protoSchema:n.protoSchema});break}}let R,B,V;if(u.kafka.length>0||u.nats.length>0||u.redis.length>0){R=ju.PUBSUB,V=new nl({kafka:u.kafka,nats:u.nats,redis:u.redis});let ne=Ee=>wd.ROOT_TYPE_NAMES.has(Ee.typeName),te=0,Ne=0;for(;te({id:n.id,name:n.name,routingUrl:n.url})),compatibilityVersion:`${e.routerCompatibilityVersion}:${wd.COMPOSITION_VERSION}`})};m();T();N();var al=Ei(_e());function EK(e){let t;try{t=(0,al.parse)(e.schema)}catch(n){throw new Error(`could not parse schema for Graph ${e.name}: ${n}`)}return{definitions:t,name:e.name,url:e.url}}function eme(e){let t=(0,il.federateSubgraphs)({subgraphs:e.map(EK),version:il.LATEST_ROUTER_COMPATIBILITY_VERSION});if(!t.success)throw new Error(`could not federate schema: ${t.errors.map(n=>n.message).join(", ")}`);return{fieldConfigurations:t.fieldConfigurations,sdl:(0,al.print)(t.federatedGraphAST)}}function tme(e){let t=(0,il.federateSubgraphs)({subgraphs:e.map(EK),version:il.LATEST_ROUTER_COMPATIBILITY_VERSION});if(!t.success)throw new Error(`could not federate schema: ${t.errors.map(r=>r.message).join(", ")}`);return TK({federatedClientSDL:(0,al.printSchema)(t.federatedGraphClientSchema),federatedSDL:(0,al.printSchema)(t.federatedGraphSchema),fieldConfigurations:t.fieldConfigurations,routerCompatibilityVersion:il.LATEST_ROUTER_COMPATIBILITY_VERSION,schemaVersionId:"",subgraphs:e.map((r,i)=>{var l,d;let a=t.subgraphConfigBySubgraphName.get(r.name),o=a==null?void 0:a.schema,u=a==null?void 0:a.configurationDataByTypeName;return{kind:rl.Standard,id:`${i}`,name:r.name,url:Ob(r.url),sdl:r.schema,subscriptionUrl:Ob((l=r.subscription_url)!=null?l:r.url),subscriptionProtocol:(d=r.subscription_protocol)!=null?d:"ws",websocketSubprotocol:r.subscription_protocol==="ws"?r.websocketSubprotocol||"auto":void 0,schema:o,configurationDataByTypeName:u}})}).toJsonString()}return Wm(nme);})(); -/*! Bundled license information: - -@jspm/core/nodelibs/browser/buffer.js: - (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) - -lodash/lodash.js: - (** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) -*/ diff --git a/composition-go/polyfill.go b/composition-go/polyfill.go deleted file mode 100644 index d53dc31659..0000000000 --- a/composition-go/polyfill.go +++ /dev/null @@ -1,69 +0,0 @@ -package composition - -import ( - "crypto/sha1" - "encoding/hex" - "io" - "net/url" -) - -// stringHash produces a sha1 hash of the given string, it is -// used as a shim for replacing the bits we use from node:crypto -func stringHash(str string) (string, error) { - s := sha1.New() - if _, err := io.WriteString(s, str); err != nil { - return "", err - } - return hex.EncodeToString(s.Sum(nil)), nil -} - -type urlShim struct { - Hash string `goja:"hash"` - Host string `goja:"host"` - Hostname string `goja:"hostname"` - Href string `goja:"href"` - Origin string `goja:"origin"` - Password string `goja:"password"` - Pathname string `goja:"pathname"` - Port string `goja:"port"` - Protocol string `goja:"protocol"` - Search string `goja:"search"` - // XXX:SearchParams is not supported! - Username string `goja:"username"` -} - -func urlParse(rawURL string, base string) (*urlShim, error) { - var u *url.URL - var err error - if base != "" { - var b *url.URL - b, err = url.Parse(base) - if err != nil { - return nil, err - } - u, err = b.Parse(rawURL) - } else { - u, err = url.Parse(rawURL) - } - if err != nil { - return nil, err - } - return &urlShim{ - Hash: u.Fragment, - Host: u.Host, - Hostname: u.Hostname(), - Href: u.String(), - Origin: u.Scheme + "://" + u.Host, - Password: u.User.Username(), - Pathname: u.Path, - Port: u.Port(), - Protocol: u.Scheme + ":", - Search: "?" + u.RawQuery, - Username: u.User.Username(), - }, nil -} - -func urlCanParse(rawURL string, base string) bool { - _, err := urlParse(rawURL, base) - return err == nil -} diff --git a/composition-go/shim/.gitignore b/composition-go/shim/.gitignore deleted file mode 100644 index 9b1c8b133c..0000000000 --- a/composition-go/shim/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/dist diff --git a/composition-go/shim/package.json b/composition-go/shim/package.json deleted file mode 100644 index 8e3b114117..0000000000 --- a/composition-go/shim/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@wundergraph/composition-shim", - "version": "1.0.0", - "description": "", - "private": true, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "scripts": { - "dev": "tsc --watch", - "build": "tsup" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@wundergraph/composition": "workspace:*", - "@wundergraph/cosmo-shared": "workspace:*", - "graphql": "^16.9.0" - }, - "devDependencies": { - "@types/node": "^20.8.10", - "esbuild": "^0.25.0", - "esbuild-plugin-polyfill-node": "^0.3.0", - "tsup": "^8.0.1", - "typescript": "^5.2.2" - } -} diff --git a/composition-go/shim/src/index.ts b/composition-go/shim/src/index.ts deleted file mode 100644 index 62f5a3ace9..0000000000 --- a/composition-go/shim/src/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { - federateSubgraphs as realFederateSubgraphs, - FieldConfiguration, - LATEST_ROUTER_COMPATIBILITY_VERSION, -} from '@wundergraph/composition'; -import { - buildRouterConfig, - normalizeURL, - SubgraphKind, - SubscriptionProtocol, - WebsocketSubprotocol, -} from '@wundergraph/cosmo-shared'; -import { DocumentNode, parse, print, printSchema } from 'graphql'; - -export type Subgraph = { - schema: string; - name: string; - url: string; - subscription_url?: string; - subscription_protocol?: SubscriptionProtocol; - websocketSubprotocol?: WebsocketSubprotocol; -}; - -export type FederatedGraph = { - fieldConfigurations: FieldConfiguration[]; - sdl: string; -}; - -function createFederableSubgraph(subgraph: Subgraph) { - let definitions: DocumentNode; - try { - definitions = parse(subgraph.schema); - } catch (e: any) { - throw new Error(`could not parse schema for Graph ${subgraph.name}: ${e}`); - } - return { - definitions, - name: subgraph.name, - url: subgraph.url, - }; -} - -export function federateSubgraphs(subgraphs: Subgraph[]): FederatedGraph { - const result = realFederateSubgraphs({ subgraphs: subgraphs.map(createFederableSubgraph), version: LATEST_ROUTER_COMPATIBILITY_VERSION }); - if (!result.success) { - throw new Error(`could not federate schema: ${result.errors.map((e: Error) => e.message).join(', ')}`); - } - return { - fieldConfigurations: result.fieldConfigurations, - sdl: print(result.federatedGraphAST), - }; -} - -export function buildRouterConfiguration(subgraphs: Subgraph[]): string { - const result = realFederateSubgraphs({ subgraphs: subgraphs.map(createFederableSubgraph), version: LATEST_ROUTER_COMPATIBILITY_VERSION }); - if (!result.success) { - throw new Error(`could not federate schema: ${result.errors.map((e: Error) => e.message).join(', ')}`); - } - const config = buildRouterConfig({ - federatedClientSDL: printSchema(result.federatedGraphClientSchema), - federatedSDL: printSchema(result.federatedGraphSchema), - fieldConfigurations: result.fieldConfigurations, - routerCompatibilityVersion: LATEST_ROUTER_COMPATIBILITY_VERSION, - schemaVersionId: '', - subgraphs: subgraphs.map((s, index) => { - const subgraphConfig = result.subgraphConfigBySubgraphName.get(s.name); - const schema = subgraphConfig?.schema; - const configurationDataByTypeName = subgraphConfig?.configurationDataByTypeName; - return { - kind: SubgraphKind.Standard, - id: `${index}`, - name: s.name, - url: normalizeURL(s.url), - sdl: s.schema, - subscriptionUrl: normalizeURL(s.subscription_url ?? s.url), - subscriptionProtocol: s.subscription_protocol ?? 'ws', - websocketSubprotocol: s.subscription_protocol === 'ws' ? s.websocketSubprotocol || 'auto' : undefined, - schema, - configurationDataByTypeName, - }; - }), - }); - return config.toJsonString(); -} diff --git a/composition-go/shim/src/polyfill.js b/composition-go/shim/src/polyfill.js deleted file mode 100644 index eea4140ac7..0000000000 --- a/composition-go/shim/src/polyfill.js +++ /dev/null @@ -1,17 +0,0 @@ -function BigInt(value) { - return value; -} - -class URL { - constructor(url, base) { - // urlParse is provided by the runtime - const result = urlParse(url, base || ''); - for (const prop in result) { - this[prop] = result[prop] - } - } - - static canParse(url, base = undefined) { - return urlCanParse(url, base || ''); - } -} diff --git a/composition-go/shim/tsconfig.json b/composition-go/shim/tsconfig.json deleted file mode 100644 index 9149760958..0000000000 --- a/composition-go/shim/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "target": "ESNext", - "declaration": true, - "outDir": "./dist/js", - "module": "ESNext", - "incremental": false - }, - "include": ["src/**/*"], - "exclude": ["node_modules"] -} diff --git a/composition-go/shim/tsup.config.ts b/composition-go/shim/tsup.config.ts deleted file mode 100644 index b42a1a8cd3..0000000000 --- a/composition-go/shim/tsup.config.ts +++ /dev/null @@ -1,51 +0,0 @@ -import * as fs from 'fs'; -import type { Options } from 'tsup'; -import type { Plugin } from 'esbuild'; -import { polyfillNode } from 'esbuild-plugin-polyfill-node'; - -const polyfillPlugin: Plugin = { - name: 'Polyfill', - setup(build) { - build.onEnd((result) => { - for (const file of result.outputFiles ?? []) { - if (!file.path.endsWith('polyfill.js')) { - const polyfill = fs.readFileSync('src/polyfill.js', 'utf-8'); - const replaced = polyfill + file.text; - file.contents = new TextEncoder().encode(replaced); - } - } - }); - }, -}; - -const stringHashPLugin: Plugin = { - name: 'stringHash', - setup(build) { - build.onEnd((result) => { - // Replace hashing with a shim function that we provide - // in the runtime - const needle = /[A-Za-z_][A-Za-z0-9_]*\.createHash\("sha1"\).update\((.*?)\).digest\("hex"\)/g; - for (const file of result.outputFiles ?? []) { - const replaced = file.text.replace(needle, 'stringHash($1)'); - file.contents = new TextEncoder().encode(replaced); - } - }); - }, -}; - -const polyfillNodePlugin = polyfillNode({}) as any; - -export const tsup: Options = { - splitting: false, - clean: true, - dts: true, - globalName: 'shim', - format: ['iife'], - minify: true, - esbuildPlugins: [polyfillNodePlugin, polyfillPlugin, stringHashPLugin], - noExternal: [/(.*)/], - watch: false, - target: 'es6', // goja supports only es6 - outDir: 'dist', - entry: ['src/**/index.ts'], -}; diff --git a/composition-go/vm_goja.go b/composition-go/vm_goja.go deleted file mode 100644 index 6e911dd9c8..0000000000 --- a/composition-go/vm_goja.go +++ /dev/null @@ -1,90 +0,0 @@ -//go:build !wg_composition_v8 - -package composition - -import ( - "errors" - "fmt" - - "github.com/dop251/goja" - "github.com/dop251/goja/parser" -) - -type gojaVm struct { - runtime *goja.Runtime - federateSubgraphs goja.Callable - buildRouterConfiguration goja.Callable -} - -func (m *gojaVm) Dispose() {} - -func (m *gojaVm) FederateSubgraphs(subgraphs []*Subgraph) (*FederatedGraph, error) { - result, err := m.federateSubgraphs(goja.Undefined(), m.runtime.ToValue(subgraphs)) - if err != nil { - return nil, err - } - - var federated FederatedGraph - if err := m.runtime.ExportTo(result, &federated); err != nil { - return nil, err - } - return &federated, nil -} - -func (m *gojaVm) BuildRouterConfiguration(subgraphs []*Subgraph) (string, error) { - result, err := m.buildRouterConfiguration(goja.Undefined(), m.runtime.ToValue(subgraphs)) - if err != nil { - return "", err - } - return result.String(), nil -} - -func newVM() (*gojaVm, error) { - runtime := goja.New() - runtime.SetFieldNameMapper(goja.TagFieldNameMapper("goja", true)) - runtime.SetParserOptions(parser.WithDisableSourceMaps) - if _, err := runtime.RunString(jsPrelude); err != nil { - return nil, fmt.Errorf("error running prelude: %w", err) - } - if _, err := runtime.RunString(indexJs); err != nil { - return nil, fmt.Errorf("could not load shim: %w", err) - } - shimValue := runtime.Get("shim") - if shimValue == nil { - return nil, errors.New("could not retrieve shim") - } - shimObject := shimValue.ToObject(runtime) - shimFunc := func(name string) (goja.Callable, error) { - fn, ok := goja.AssertFunction(shimObject.Get(name)) - if !ok { - return nil, fmt.Errorf("could not get shim function %s()", name) - } - return fn, nil - - } - federateSubgraphs, err := shimFunc("federateSubgraphs") - if err != nil { - return nil, err - } - buildRouterConfiguration, err := shimFunc("buildRouterConfiguration") - if err != nil { - return nil, err - } - if err := runtime.Set("stringHash", stringHash); err != nil { - return nil, err - } - if err := runtime.Set("urlParse", urlParse); err != nil { - return nil, err - } - if err := runtime.Set("urlCanParse", urlCanParse); err != nil { - return nil, err - } - - return &gojaVm{ - runtime: runtime, - federateSubgraphs: federateSubgraphs, - buildRouterConfiguration: buildRouterConfiguration, - }, nil -} - -type vm = gojaVm diff --git a/composition-go/vm_v8.go b/composition-go/vm_v8.go deleted file mode 100644 index b90496d412..0000000000 --- a/composition-go/vm_v8.go +++ /dev/null @@ -1,317 +0,0 @@ -//go:build wg_composition_v8 - -package composition - -import ( - "fmt" - "os" - "reflect" - - v8 "rogchap.com/v8go" -) - -func deserializeArray[T any](arrayObject *v8.Object, elementDecoder func(*v8.Object) (T, error)) ([]T, error) { - lengthValue, err := arrayObject.Get("length") - if err != nil { - return nil, err - } - length := lengthValue.Integer() - result := make([]T, length) - for ii := 0; ii < int(length); ii++ { - elementValue, err := arrayObject.GetIdx(uint32(ii)) - if err != nil { - return nil, err - } - elementObject := elementValue.Object() - element, err := elementDecoder(elementObject) - if err != nil { - return nil, err - } - result[ii] = element - } - return result, nil -} - -// serializes an object for v8 using reflect and the goja -// tags for field names -func serializeGojaObject(ctx *v8.Context, v any) (*v8.Value, error) { - rv := reflect.ValueOf(v) - for rv.Kind() == reflect.Ptr { - rv = rv.Elem() - } - rt := rv.Type() - switch rt.Kind() { - case reflect.Struct: - tmpl := v8.NewObjectTemplate(ctx.Isolate()) - obj, err := tmpl.NewInstance(ctx) - if err != nil { - return nil, err - } - for ii := 0; ii < rt.NumField(); ii++ { - field := rt.Field(ii) - tag := field.Tag.Get("goja") - if tag == "" { - return nil, fmt.Errorf("no goja field tag in field %s", field.Name) - } - value := rv.Field(ii).Interface() - valueObject, err := serializeGojaObject(ctx, value) - if err != nil { - return nil, err - } - obj.Set(tag, valueObject) - } - return obj.Value, nil - case reflect.String: - return v8.NewValue(ctx.Isolate(), rv.String()) - default: - return nil, fmt.Errorf("cannot serialize type kind %s", rt.Kind()) - } -} - -type v8Vm struct { - isolate *v8.Isolate - ctx *v8.Context - null v8.Valuer - federateSubgraphs *v8.Function - buildRouterConfiguration *v8.Function -} - -func (m *v8Vm) Dispose() { - m.isolate.Dispose() -} - -func (m *v8Vm) subgraphsToJS(subgraphs []*Subgraph) (*v8.Object, error) { - tmpl := v8.NewObjectTemplate(m.ctx.Isolate()) - arrayValue, err := m.ctx.RunScript("[]", "array") - if err != nil { - return nil, err - } - arrayObject := arrayValue.Object() - arrayObject.Set("length", len(subgraphs)) - for ii := range subgraphs { - obj, err := tmpl.NewInstance(m.ctx) - if err != nil { - return nil, err - } - obj.Set("name", subgraphs[ii].Name) - obj.Set("url", subgraphs[ii].URL) - obj.Set("schema", subgraphs[ii].Schema) - arrayObject.SetIdx(uint32(ii), obj) - } - return arrayObject, nil -} - -func (m *v8Vm) FederateSubgraphs(subgraphs []*Subgraph) (*FederatedGraph, error) { - arrayObject, err := m.subgraphsToJS(subgraphs) - if err != nil { - return nil, err - } - result, err := m.federateSubgraphs.Call(m.null, arrayObject) - if err != nil { - return nil, err - } - resultObject := result.Object() - fieldConfigurationsValue, err := resultObject.Get("fieldConfigurations") - if err != nil { - return nil, err - } - fieldConfigurationsObject := fieldConfigurationsValue.Object() - fieldConfigurations, err := deserializeArray(fieldConfigurationsObject, func(o *v8.Object) (*FieldConfiguration, error) { - argumentNamesValue, err := o.Get("argumentNames") - if err != nil { - return nil, err - } - argumentNames, err := deserializeArray(argumentNamesValue.Object(), func(o *v8.Object) (string, error) { - return o.String(), nil - }) - if err != nil { - return nil, err - } - fieldNameValue, err := o.Get("fieldName") - if err != nil { - return nil, err - } - typeNameValue, err := o.Get("typeName") - if err != nil { - return nil, err - } - requiresAuthenticationValue, _ := o.Get("requiresAuthentication") - requiredScopesValue, _ := o.Get("requiredScopes") - fieldConfiguration := &FieldConfiguration{ - ArgumentNames: argumentNames, - FieldName: fieldNameValue.String(), - TypeName: typeNameValue.String(), - } - if requiresAuthenticationValue.IsBoolean() { - fieldConfiguration.RequiresAuthentication = requiresAuthenticationValue.Boolean() - } - if requiredScopesValue.IsArray() { - requiredScopes, err := deserializeArray(requiredScopesValue.Object(), func(orScopes *v8.Object) ([]string, error) { - deserializedAndScopes, err := deserializeArray(orScopes, func(andScopes *v8.Object) (string, error) { - return andScopes.String(), nil - }) - if err != nil { - return nil, err - } - return deserializedAndScopes, nil - }) - if err != nil { - return nil, err - } - fieldConfiguration.RequiredScopes = requiredScopes - } - return fieldConfiguration, nil - }) - if err != nil { - return nil, err - } - sdl, err := resultObject.Get("sdl") - if err != nil { - return nil, err - } - return &FederatedGraph{ - FieldConfigurations: fieldConfigurations, - SDL: sdl.String(), - }, nil -} - -func (m *v8Vm) BuildRouterConfiguration(subgraphs []*Subgraph) (string, error) { - arrayObject, err := m.subgraphsToJS(subgraphs) - if err != nil { - return "", err - } - result, err := m.buildRouterConfiguration.Call(m.null, arrayObject) - if err != nil { - return "", err - } - return result.String(), nil -} - -func debugErr(err error) error { - if os.Getenv("DEBUG_V8_ERRORS") != "" { - if e, ok := err.(*v8.JSError); ok { - fmt.Fprintln(os.Stderr, e.Message) - fmt.Fprintln(os.Stderr, e.Location) - fmt.Fprintln(os.Stderr, e.StackTrace) - } - } - return err -} - -func v8Exception(isolate *v8.Isolate, err error) { - exc, err := v8.NewValue(isolate, err.Error()) - if err != nil { - panic(err) - } - isolate.ThrowException(exc) -} - -func stringHashV8(info *v8.FunctionCallbackInfo) *v8.Value { - isolate := info.Context().Isolate() - input := info.Args()[0].String() - result, err := stringHash(input) - if err != nil { - v8Exception(isolate, err) - return nil - } - resultValue, err := v8.NewValue(isolate, result) - if err != nil { - panic(err) - } - return resultValue -} - -func urlParseV8(info *v8.FunctionCallbackInfo) *v8.Value { - isolate := info.Context().Isolate() - args := info.Args() - url := args[0].String() - base := args[1].String() - - result, err := urlParse(url, base) - if err != nil { - v8Exception(isolate, err) - return nil - } - value, err := serializeGojaObject(info.Context(), result) - if err != nil { - panic(err) - } - return value -} - -func urlCanParseV8(info *v8.FunctionCallbackInfo) *v8.Value { - isolate := info.Context().Isolate() - args := info.Args() - url := args[0].String() - base := args[1].String() - - result := urlCanParse(url, base) - value, err := v8.NewValue(isolate, result) - if err != nil { - panic(err) - } - return value -} - -func newVM() (*v8Vm, error) { - isolate := v8.NewIsolate() - - global := v8.NewObjectTemplate(isolate) - - stringHash := v8.NewFunctionTemplate(isolate, stringHashV8) - if err := global.Set("stringHash", stringHash, v8.ReadOnly); err != nil { - return nil, err - } - - urlParse := v8.NewFunctionTemplate(isolate, urlParseV8) - if err := global.Set("urlParse", urlParse, v8.ReadOnly); err != nil { - return nil, err - } - - urlCanParse := v8.NewFunctionTemplate(isolate, urlCanParseV8) - if err := global.Set("urlCanParse", urlCanParse, v8.ReadOnly); err != nil { - return nil, err - } - - ctx := v8.NewContext(isolate, global) - - if _, err := ctx.RunScript(jsPrelude, "prelude.js"); err != nil { - return nil, fmt.Errorf("error running prelude: %w", debugErr(err)) - } - if _, err := ctx.RunScript(indexJs, "shim.js"); err != nil { - return nil, fmt.Errorf("error loading shim: %w", debugErr(err)) - } - shim, err := ctx.Global().Get("shim") - if err != nil { - return nil, fmt.Errorf("error retrieving shim: %w", debugErr(err)) - } - shimFunc := func(name string) (*v8.Function, error) { - fpv, err := shim.Object().Get(name) - if err != nil { - return nil, fmt.Errorf("error retrieving shim function %s: %w", name, debugErr(err)) - } - fp, err := fpv.AsFunction() - if err != nil { - return nil, fmt.Errorf("error converting shim function to JS function %s: %w", name, debugErr(err)) - } - return fp, nil - } - federateSubgraphs, err := shimFunc("federateSubgraphs") - if err != nil { - return nil, err - } - buildRouterConfiguration, err := shimFunc("buildRouterConfiguration") - if err != nil { - return nil, err - } - - return &v8Vm{ - isolate: isolate, - ctx: ctx, - null: v8.Null(ctx.Isolate()), - federateSubgraphs: federateSubgraphs, - buildRouterConfiguration: buildRouterConfiguration, - }, nil -} - -type vm = v8Vm diff --git a/composition/ARCHITECTURE.md b/composition/ARCHITECTURE.md index f0c8e69d28..85cf630367 100644 --- a/composition/ARCHITECTURE.md +++ b/composition/ARCHITECTURE.md @@ -5,7 +5,6 @@ This is a beginner-friendly guide to the `composition` package. Scope: - In scope: `composition/*` -- Out of scope: `composition-go/*` ## Who this is for diff --git a/composition/CHANGELOG.md b/composition/CHANGELOG.md index 5e70918379..eac4446406 100644 --- a/composition/CHANGELOG.md +++ b/composition/CHANGELOG.md @@ -4,6 +4,64 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.59.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.58.4...@wundergraph/composition@0.59.0) (2026-05-18) + +### Features + +* support dot-path in slicingArguments ([#2801](https://github.com/wundergraph/cosmo/issues/2801)) ([aec1738](https://github.com/wundergraph/cosmo/commit/aec1738c071e028893239b6c4f9bf492cf175f36)) (@ysmolski) + +## [0.58.4](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.58.3...@wundergraph/composition@0.58.4) (2026-05-14) + +### Bug Fixes + +* **composition:** apply subscription filters on union and interface return types ([#2797](https://github.com/wundergraph/cosmo/issues/2797)) ([4c91d4f](https://github.com/wundergraph/cosmo/commit/4c91d4fd7420b19b2e9aa0dd382ba7e1c95b85a3)) (@jensneuse) + +## [0.58.3](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.58.2...@wundergraph/composition@0.58.3) (2026-05-07) + +**Note:** Version bump only for package @wundergraph/composition + +## [0.58.2](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.58.1...@wundergraph/composition@0.58.2) (2026-05-01) + +### Bug Fixes + +* import set methods explicitly ([#2812](https://github.com/wundergraph/cosmo/issues/2812)) ([aa5cae1](https://github.com/wundergraph/cosmo/commit/aa5cae10723fef95fceaa89995233529c39dbc01)) (@Aenimus) + +## [0.58.1](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.58.0...@wundergraph/composition@0.58.1) (2026-05-01) + +**Note:** Version bump only for package @wundergraph/composition + +# [0.58.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.57.0...@wundergraph/composition@0.58.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) +* **router:** support costs on arguments of directives ([#2781](https://github.com/wundergraph/cosmo/issues/2781)) ([b70a55b](https://github.com/wundergraph/cosmo/commit/b70a55b85b3f50468e3d1218d6746d51cc1b4733)) (@ysmolski) + +# [0.57.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.56.0...@wundergraph/composition@0.57.0) (2026-04-24) + +### Features + +* update `lodash` and `lodash-es` ([#2780](https://github.com/wundergraph/cosmo/issues/2780)) ([bbf1e38](https://github.com/wundergraph/cosmo/commit/bbf1e38b3a346363fe742801f2982dbafb267454)) (@wilsonrivera) + +# [0.56.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.55.1...@wundergraph/composition@0.56.0) (2026-04-15) + +### Features + +* allow string kind enum default values ([#2767](https://github.com/wundergraph/cosmo/issues/2767)) ([addfbc6](https://github.com/wundergraph/cosmo/commit/addfbc6747114b5afb8720426c30874a42ab7efa)) (@Aenimus) + +## [0.55.1](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.55.0...@wundergraph/composition@0.55.1) (2026-04-14) + +### Bug Fixes + +* allow interface subtype for implemented interface fields ([#2764](https://github.com/wundergraph/cosmo/issues/2764)) ([8fe04a8](https://github.com/wundergraph/cosmo/commit/8fe04a835ce0bbb8f1ab9ded2ed3ef93fe59ee10)) (@Aenimus) +* short-circuit before propagating non-fully validated resolvabili… ([#2759](https://github.com/wundergraph/cosmo/issues/2759)) ([b39e30e](https://github.com/wundergraph/cosmo/commit/b39e30ee72fe594c94f65445c1d362345ca54f63)) (@Aenimus) + +# [0.55.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.54.1...@wundergraph/composition@0.55.0) (2026-04-02) + +### Features + +* fix long composition errors ([#2728](https://github.com/wundergraph/cosmo/issues/2728)) ([d376585](https://github.com/wundergraph/cosmo/commit/d37658546d5678e9f5a6e8a386e297a6061c57f6)) (@wilsonrivera) + ## [0.54.1](https://github.com/wundergraph/cosmo/compare/@wundergraph/composition@0.54.0...@wundergraph/composition@0.54.1) (2026-03-18) **Note:** Version bump only for package @wundergraph/composition diff --git a/composition/package.json b/composition/package.json index 3ace992e38..c7fe0ec12a 100644 --- a/composition/package.json +++ b/composition/package.json @@ -1,6 +1,6 @@ { "name": "@wundergraph/composition", - "version": "0.54.1", + "version": "0.59.0", "author": { "name": "WunderGraph Maintainers", "email": "info@wundergraph.com" @@ -32,17 +32,23 @@ "dependencies": { "@graphql-tools/merge": "^9.0.0", "@graphql-tools/schema": "^10.0.0", - "@graphql-tools/utils": "^11.0.0", + "@graphql-tools/utils": "catalog:", "core-js": "^3.41.0", - "graphql": "^16.9.0", - "lodash": "^4.17.21", - "pathe": "^1.1.1" + "graphql": "catalog:", + "lodash": "catalog:", + "pathe": "^1.1.1", + "set.prototype.difference": "1.1.7", + "set.prototype.intersection": "1.1.8", + "set.prototype.isdisjointfrom": "1.1.5", + "set.prototype.issubsetof": "1.1.4", + "set.prototype.issupersetof": "1.1.3" }, "devDependencies": { - "@types/lodash": "^4.17.0", - "@vitest/coverage-v8": "3.2.4", - "del-cli": "^5.0.0", - "typescript": "5.5.2", - "vitest": "^3.2.4" + "@types/lodash": "catalog:", + "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", + "del-cli": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/composition/src/ast/utils.ts b/composition/src/ast/utils.ts index a4c9e9635a..563c2a1a3f 100644 --- a/composition/src/ast/utils.ts +++ b/composition/src/ast/utils.ts @@ -290,6 +290,14 @@ export type ScalarTypeNode = ScalarTypeDefinitionNode | ScalarTypeExtensionNode; export type SchemaNode = SchemaDefinitionNode | SchemaExtensionNode; export type UnionTypeNode = UnionTypeDefinitionNode | UnionTypeExtensionNode; +export type ParentTypeNode = + | EnumTypeNode + | InputObjectTypeNode + | InterfaceTypeNode + | ObjectTypeNode + | ScalarTypeNode + | UnionTypeNode; + export type InterfaceNodeKind = Kind.INTERFACE_TYPE_DEFINITION | Kind.INTERFACE_TYPE_EXTENSION; export type ObjectNodeKind = Kind.OBJECT_TYPE_DEFINITION | Kind.OBJECT_TYPE_EXTENSION; export type CompositeOutputNodeKind = InterfaceNodeKind | ObjectNodeKind; diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts new file mode 100644 index 0000000000..c3d8e0af4e --- /dev/null +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -0,0 +1,947 @@ +import { stringToNamedTypeNode } from '../ast/utils'; +import { DEFAULT_DEPRECATION_REASON, Kind } from 'graphql'; +import { + ARGUMENT_DEFINITION_UPPER, + AS, + ASSUMED_SIZE, + AUTHENTICATED, + BOOLEAN_SCALAR, + CHANNEL, + CHANNELS, + COMPOSE_DIRECTIVE, + CONDITION, + CONFIGURE_CHILD_DESCRIPTIONS, + CONFIGURE_DESCRIPTION, + CONNECT_FIELD_RESOLVER, + CONTEXT, + COST, + DEFAULT_EDFS_PROVIDER_ID, + DEPRECATED, + DESCRIPTION_OVERRIDE, + EDFS_KAFKA_PUBLISH, + EDFS_KAFKA_SUBSCRIBE, + EDFS_NATS_PUBLISH, + EDFS_NATS_REQUEST, + EDFS_NATS_STREAM_CONFIGURATION, + EDFS_NATS_SUBSCRIBE, + EDFS_REDIS_PUBLISH, + EDFS_REDIS_SUBSCRIBE, + ENUM_UPPER, + ENUM_VALUE_UPPER, + EXTENDS, + EXTERNAL, + FIELD_DEFINITION_UPPER, + FIELDS, + FOR, + FROM, + IMPORT, + INACCESSIBLE, + INPUT_FIELD_DEFINITION_UPPER, + INPUT_OBJECT_UPPER, + INT_SCALAR, + INTERFACE_OBJECT, + INTERFACE_UPPER, + KEY, + LEVELS, + LINK, + LINK_IMPORT, + LINK_PURPOSE, + LIST_SIZE, + NAME, + OBJECT_UPPER, + ONE_OF, + OVERRIDE, + PROPAGATE, + PROVIDER_ID, + PROVIDES, + REASON, + REQUIRE_FETCH_REASONS, + REQUIRE_ONE_SLICING_ARGUMENT, + REQUIRES, + REQUIRES_SCOPES, + RESOLVABLE, + SCALAR_UPPER, + SCHEMA_UPPER, + SCOPE_SCALAR, + SCOPES, + SEMANTIC_NON_NULL, + SHAREABLE, + SIZED_FIELDS, + SLICING_ARGUMENTS, + SPECIFIED_BY, + STREAM_CONFIGURATION, + STRING_SCALAR, + SUBJECT, + SUBJECTS, + SUBSCRIPTION_FILTER, + SUBSCRIPTION_FILTER_CONDITION, + TAG, + TOPIC, + TOPICS, + UNION_UPPER, + URL_LOWER, + WEIGHT, +} from '../utils/string-constants'; +import { + AUTHENTICATED_DEFINITION, + COMPOSE_DIRECTIVE_DEFINITION, + CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION, + CONFIGURE_DESCRIPTION_DEFINITION, + CONNECT_FIELD_RESOLVER_DEFINITION, + COST_DEFINITION, + DEPRECATED_DEFINITION, + EDFS_KAFKA_PUBLISH_DEFINITION, + EDFS_KAFKA_SUBSCRIBE_DEFINITION, + EDFS_NATS_PUBLISH_DEFINITION, + EDFS_NATS_REQUEST_DEFINITION, + EDFS_NATS_SUBSCRIBE_DEFINITION, + EDFS_REDIS_PUBLISH_DEFINITION, + EDFS_REDIS_SUBSCRIBE_DEFINITION, + EXTENDS_DEFINITION, + EXTERNAL_DEFINITION, + INACCESSIBLE_DEFINITION, + INTERFACE_OBJECT_DEFINITION, + KEY_DEFINITION, + LINK_DEFINITION, + LIST_SIZE_DEFINITION, + ONE_OF_DEFINITION, + OVERRIDE_DEFINITION, + PROVIDES_DEFINITION, + REQUIRE_FETCH_REASONS_DEFINITION, + REQUIRES_DEFINITION, + REQUIRES_SCOPES_DEFINITION, + SEMANTIC_NON_NULL_DEFINITION, + SHAREABLE_DEFINITION, + SPECIFIED_BY_DEFINITION, + SUBSCRIPTION_FILTER_DEFINITION, + TAG_DEFINITION, +} from '../v1/constants/directive-definitions'; +import { REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_STRING_TYPE_NODE } from '../v1/constants/type-nodes'; +import { type ArgumentName, type DirectiveLocation } from '../types/types'; +import { newDirectiveArgumentData, newDirectiveDefinitionData } from './utils'; +import { type DirectiveArgumentData, DirectiveDefinitionData } from './types/types'; + +// Note that arguments with default values are classed as optional and should be placed into `optionalArgumentNames`. + +export const AUTHENTICATED_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([ + ENUM_UPPER, + FIELD_DEFINITION_UPPER, + INTERFACE_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + ]), + name: AUTHENTICATED, + node: AUTHENTICATED_DEFINITION, +}); + +export const COMPOSE_DIRECTIVE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + NAME, + newDirectiveArgumentData({ + directive: `@${COMPOSE_DIRECTIVE}`, + name: NAME, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + isRepeatable: true, + locations: new Set([SCHEMA_UPPER]), + name: COMPOSE_DIRECTIVE, + node: COMPOSE_DIRECTIVE_DEFINITION, + requiredArgumentNames: new Set([NAME]), +}); + +export const CONFIGURE_DESCRIPTION_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + PROPAGATE, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.BOOLEAN, + value: true, + }, + directive: `@${CONFIGURE_DESCRIPTION}`, + name: PROPAGATE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(BOOLEAN_SCALAR), + }, + }), + ], + [ + DESCRIPTION_OVERRIDE, + newDirectiveArgumentData({ + directive: `@${CONFIGURE_DESCRIPTION}`, + name: DESCRIPTION_OVERRIDE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(STRING_SCALAR), + }), + ], + ]), + locations: new Set([ + ARGUMENT_DEFINITION_UPPER, + ENUM_UPPER, + ENUM_VALUE_UPPER, + FIELD_DEFINITION_UPPER, + INTERFACE_UPPER, + INPUT_OBJECT_UPPER, + INPUT_FIELD_DEFINITION_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + SCHEMA_UPPER, + UNION_UPPER, + ]), + name: CONFIGURE_DESCRIPTION, + node: CONFIGURE_DESCRIPTION_DEFINITION, + optionalArgumentNames: new Set([PROPAGATE, DESCRIPTION_OVERRIDE]), +}); + +export const CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + PROPAGATE, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.BOOLEAN, + value: true, + }, + directive: `@${CONFIGURE_CHILD_DESCRIPTIONS}`, + name: PROPAGATE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(BOOLEAN_SCALAR), + }, + }), + ], + ]), + locations: new Set([ENUM_UPPER, INPUT_OBJECT_UPPER, INTERFACE_UPPER, OBJECT_UPPER]), + name: CONFIGURE_CHILD_DESCRIPTIONS, + node: CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION, + optionalArgumentNames: new Set([PROPAGATE]), +}); + +export const CONNECT_FIELD_RESOLVER_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + CONTEXT, + newDirectiveArgumentData({ + directive: `@${CONNECT_FIELD_RESOLVER}`, + name: CONTEXT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_FIELDSET_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: CONNECT_FIELD_RESOLVER, + node: CONNECT_FIELD_RESOLVER_DEFINITION, + requiredArgumentNames: new Set([CONTEXT]), +}); + +export const COST_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + WEIGHT, + newDirectiveArgumentData({ + directive: `@${COST}`, + name: WEIGHT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(INT_SCALAR), + }, + }), + ], + ]), + locations: new Set([ + ARGUMENT_DEFINITION_UPPER, + ENUM_UPPER, + FIELD_DEFINITION_UPPER, + INPUT_FIELD_DEFINITION_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + ]), + name: COST, + node: COST_DEFINITION, + requiredArgumentNames: new Set([WEIGHT]), +}); + +export const DEPRECATED_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + REASON, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_DEPRECATION_REASON, + }, + directive: `@${DEPRECATED}`, + name: REASON, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(STRING_SCALAR), + }), + ], + ]), + locations: new Set([ + ARGUMENT_DEFINITION_UPPER, + ENUM_VALUE_UPPER, + FIELD_DEFINITION_UPPER, + INPUT_FIELD_DEFINITION_UPPER, + ]), + name: DEPRECATED, + node: DEPRECATED_DEFINITION, + optionalArgumentNames: new Set([REASON]), +}); + +export const EXTENDS_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([INTERFACE_UPPER, OBJECT_UPPER]), + name: EXTENDS, + node: EXTENDS_DEFINITION, +}); + +export const EXTERNAL_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([FIELD_DEFINITION_UPPER, OBJECT_UPPER]), + name: EXTERNAL, + node: EXTERNAL_DEFINITION, +}); + +export const INACCESSIBLE_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([ + ARGUMENT_DEFINITION_UPPER, + ENUM_UPPER, + ENUM_VALUE_UPPER, + FIELD_DEFINITION_UPPER, + INPUT_FIELD_DEFINITION_UPPER, + INPUT_OBJECT_UPPER, + INTERFACE_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + UNION_UPPER, + ]), + name: INACCESSIBLE, + node: INACCESSIBLE_DEFINITION, +}); + +export const INTERFACE_OBJECT_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([OBJECT_UPPER]), + name: INTERFACE_OBJECT, + node: INTERFACE_OBJECT_DEFINITION, +}); + +export const KAFKA_PUBLISH_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + TOPIC, + newDirectiveArgumentData({ + directive: `@${EDFS_KAFKA_PUBLISH}`, + name: TOPIC, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + directive: `@${EDFS_KAFKA_PUBLISH}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_KAFKA_PUBLISH, + node: EDFS_KAFKA_PUBLISH_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([TOPIC]), +}); + +export const KAFKA_SUBSCRIBE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + TOPICS, + newDirectiveArgumentData({ + directive: `@${EDFS_KAFKA_SUBSCRIBE}`, + name: TOPICS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: REQUIRED_STRING_TYPE_NODE, + }, + }, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + directive: `@${EDFS_KAFKA_SUBSCRIBE}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_KAFKA_SUBSCRIBE, + node: EDFS_KAFKA_SUBSCRIBE_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([TOPICS]), +}); + +export const NATS_PUBLISH_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + SUBJECT, + newDirectiveArgumentData({ + directive: `@${EDFS_NATS_PUBLISH}`, + name: SUBJECT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + directive: `@${EDFS_NATS_PUBLISH}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + isComposed: true, + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_NATS_PUBLISH, + node: EDFS_NATS_PUBLISH_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([SUBJECT]), +}); + +export const NATS_REQUEST_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + SUBJECT, + newDirectiveArgumentData({ + directive: `@${EDFS_NATS_REQUEST}`, + name: SUBJECT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + directive: `@${EDFS_NATS_REQUEST}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_NATS_REQUEST, + node: EDFS_NATS_REQUEST_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([SUBJECT]), +}); + +export const NATS_SUBSCRIBE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + SUBJECTS, + newDirectiveArgumentData({ + directive: `@${EDFS_NATS_SUBSCRIBE}`, + name: SUBJECTS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: REQUIRED_STRING_TYPE_NODE, + }, + }, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + directive: `@${EDFS_NATS_SUBSCRIBE}`, + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + STREAM_CONFIGURATION, + newDirectiveArgumentData({ + directive: `@${EDFS_NATS_SUBSCRIBE}`, + name: STREAM_CONFIGURATION, + namedTypeKind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(EDFS_NATS_STREAM_CONFIGURATION), + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_NATS_SUBSCRIBE, + node: EDFS_NATS_SUBSCRIBE_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID, STREAM_CONFIGURATION]), + requiredArgumentNames: new Set([SUBJECTS]), +}); + +export const ONE_OF_DEFINITION_DATA = newDirectiveDefinitionData({ + locations: new Set([INPUT_OBJECT_UPPER]), + name: ONE_OF, + node: ONE_OF_DEFINITION, +}); + +export const OVERRIDE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + FROM, + newDirectiveArgumentData({ + directive: `@${OVERRIDE}`, + name: FROM, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: OVERRIDE, + node: OVERRIDE_DEFINITION, + requiredArgumentNames: new Set([FROM]), +}); + +export const KEY_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + FIELDS, + newDirectiveArgumentData({ + directive: `@${KEY}`, + name: FIELDS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_FIELDSET_TYPE_NODE, + }), + ], + [ + RESOLVABLE, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.BOOLEAN, + value: true, + }, + directive: `@${KEY}`, + name: RESOLVABLE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + ]), + isRepeatable: true, + locations: new Set([INTERFACE_UPPER, OBJECT_UPPER]), + name: KEY, + node: KEY_DEFINITION, + optionalArgumentNames: new Set([RESOLVABLE]), + requiredArgumentNames: new Set([FIELDS]), +}); + +export const LINK_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + URL_LOWER, + newDirectiveArgumentData({ + directive: `@${LINK}`, + name: URL_LOWER, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + AS, + newDirectiveArgumentData({ + directive: `@${LINK}`, + name: AS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(STRING_SCALAR), + }), + ], + [ + FOR, + newDirectiveArgumentData({ + directive: `@${LINK}`, + name: FOR, + namedTypeKind: Kind.ENUM_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(LINK_PURPOSE), + }), + ], + [ + IMPORT, + newDirectiveArgumentData({ + directive: `@${LINK}`, + name: IMPORT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.LIST_TYPE, + type: stringToNamedTypeNode(LINK_IMPORT), + }, + }), + ], + ]), + isRepeatable: true, + locations: new Set([SCHEMA_UPPER]), + name: LINK, + node: LINK_DEFINITION, + optionalArgumentNames: new Set([AS, FOR, IMPORT]), + requiredArgumentNames: new Set([URL_LOWER]), +}); + +export const LIST_SIZE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + ASSUMED_SIZE, + newDirectiveArgumentData({ + directive: `@${LIST_SIZE}`, + name: ASSUMED_SIZE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(INT_SCALAR), + }), + ], + [ + SLICING_ARGUMENTS, + newDirectiveArgumentData({ + directive: `@${LIST_SIZE}`, + name: SLICING_ARGUMENTS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.LIST_TYPE, + type: REQUIRED_STRING_TYPE_NODE, + }, + }), + ], + [ + SIZED_FIELDS, + newDirectiveArgumentData({ + directive: `@${LIST_SIZE}`, + name: SIZED_FIELDS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.LIST_TYPE, + type: REQUIRED_STRING_TYPE_NODE, + }, + }), + ], + [ + REQUIRE_ONE_SLICING_ARGUMENT, + newDirectiveArgumentData({ + directive: `@${LIST_SIZE}`, + name: REQUIRE_ONE_SLICING_ARGUMENT, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + defaultValue: { + kind: Kind.BOOLEAN, + value: true, + }, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: LIST_SIZE, + node: LIST_SIZE_DEFINITION, + optionalArgumentNames: new Set([ + ASSUMED_SIZE, + SLICING_ARGUMENTS, + SIZED_FIELDS, + REQUIRE_ONE_SLICING_ARGUMENT, + ]), +}); + +export const PROVIDES_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + FIELDS, + newDirectiveArgumentData({ + directive: `@${PROVIDES}`, + name: FIELDS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_FIELDSET_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: PROVIDES, + node: PROVIDES_DEFINITION, + requiredArgumentNames: new Set([FIELDS]), +}); + +export const REQUIRES_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + FIELDS, + newDirectiveArgumentData({ + directive: `@${REQUIRES}`, + name: FIELDS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_FIELDSET_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: REQUIRES, + node: REQUIRES_DEFINITION, + requiredArgumentNames: new Set([FIELDS]), +}); + +export const REDIS_PUBLISH_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + CHANNEL, + newDirectiveArgumentData({ + directive: `@${EDFS_REDIS_PUBLISH}`, + name: CHANNEL, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + directive: `@${EDFS_REDIS_PUBLISH}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_REDIS_PUBLISH, + node: EDFS_REDIS_PUBLISH_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([CHANNEL]), +}); + +export const REDIS_SUBSCRIBE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + CHANNELS, + newDirectiveArgumentData({ + directive: `@${EDFS_REDIS_SUBSCRIBE}`, + name: CHANNELS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: REQUIRED_STRING_TYPE_NODE, + }, + }, + }), + ], + [ + PROVIDER_ID, + newDirectiveArgumentData({ + directive: `@${EDFS_REDIS_SUBSCRIBE}`, + name: PROVIDER_ID, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + defaultValue: { + kind: Kind.STRING, + value: DEFAULT_EDFS_PROVIDER_ID, + }, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: EDFS_REDIS_SUBSCRIBE, + node: EDFS_REDIS_SUBSCRIBE_DEFINITION, + optionalArgumentNames: new Set([PROVIDER_ID]), + requiredArgumentNames: new Set([CHANNELS]), +}); + +export const REQUIRE_FETCH_REASONS_DEFINITION_DATA = newDirectiveDefinitionData({ + isRepeatable: true, + locations: new Set([FIELD_DEFINITION_UPPER, INTERFACE_UPPER, OBJECT_UPPER]), + name: REQUIRE_FETCH_REASONS, + node: REQUIRE_FETCH_REASONS_DEFINITION, +}); + +export const REQUIRES_SCOPES_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + SCOPES, + newDirectiveArgumentData({ + directive: `@${REQUIRES_SCOPES}`, + name: SCOPES, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(SCOPE_SCALAR), + }, + }, + }, + }, + }, + }), + ], + ]), + locations: new Set([ + ENUM_UPPER, + FIELD_DEFINITION_UPPER, + INTERFACE_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + ]), + name: REQUIRES_SCOPES, + node: REQUIRES_SCOPES_DEFINITION, + requiredArgumentNames: new Set([SCOPES]), +}); + +export const SEMANTIC_NON_NULL_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + LEVELS, + newDirectiveArgumentData({ + defaultValue: { + kind: Kind.LIST, + values: [ + { + kind: Kind.INT, + value: '0', + }, + ], + }, + directive: `@${SEMANTIC_NON_NULL}`, + name: LEVELS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: { + kind: Kind.LIST_TYPE, + type: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(INT_SCALAR), + }, + }, + }, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: SEMANTIC_NON_NULL, + node: SEMANTIC_NON_NULL_DEFINITION, + optionalArgumentNames: new Set([LEVELS]), +}); + +export const SPECIFIED_BY_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + URL_LOWER, + newDirectiveArgumentData({ + directive: `@${SPECIFIED_BY}`, + name: URL_LOWER, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([SCALAR_UPPER]), + name: SPECIFIED_BY, + node: SPECIFIED_BY_DEFINITION, + requiredArgumentNames: new Set([URL_LOWER]), +}); + +export const SHAREABLE_DEFINITION_DATA = newDirectiveDefinitionData({ + isRepeatable: true, + locations: new Set([FIELD_DEFINITION_UPPER, OBJECT_UPPER]), + name: SHAREABLE, + node: SHAREABLE_DEFINITION, +}); + +export const SUBSCRIPTION_FILTER_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + CONDITION, + newDirectiveArgumentData({ + directive: `@${SUBSCRIPTION_FILTER}`, + name: CONDITION, + namedTypeKind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + typeNode: { + kind: Kind.NON_NULL_TYPE, + type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION), + }, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: SUBSCRIPTION_FILTER, + node: SUBSCRIPTION_FILTER_DEFINITION, + requiredArgumentNames: new Set([CONDITION]), +}); + +export const TAG_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + NAME, + newDirectiveArgumentData({ + directive: `@${TAG}`, + name: NAME, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + isRepeatable: true, + locations: new Set([ + ARGUMENT_DEFINITION_UPPER, + ENUM_UPPER, + ENUM_VALUE_UPPER, + FIELD_DEFINITION_UPPER, + INPUT_FIELD_DEFINITION_UPPER, + INPUT_OBJECT_UPPER, + INTERFACE_UPPER, + OBJECT_UPPER, + SCALAR_UPPER, + UNION_UPPER, + ]), + name: TAG, + node: TAG_DEFINITION, + requiredArgumentNames: new Set([NAME]), +}); diff --git a/composition/src/directive-definition-data/types/params.ts b/composition/src/directive-definition-data/types/params.ts new file mode 100644 index 0000000000..dffc39c727 --- /dev/null +++ b/composition/src/directive-definition-data/types/params.ts @@ -0,0 +1,67 @@ +import { + type ArgumentName, + type Directive, + type DirectiveLocation, + type DirectiveName, + type SubgraphName, +} from '../../types/types'; +import { type ConfigureDescriptionData } from '../../schema-building/types/types'; +import { + type ConstDirectiveNode, + type ConstValueNode, + type DirectiveDefinitionNode, + type InputValueDefinitionNode, + type Kind, + type StringValueNode, +} from 'graphql/'; +import { type InputNodeKind } from '../../utils/types'; +import type { MutableInputValueNode, MutableTypeNode } from '../../schema-building/ast'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from './types'; + +export type UpsertFederatedDirectiveDataParams = { + executableDirectiveDatasByName: Map>; + existingDataByName: Map; + incomingDataByName: Map; +}; + +export type AddDirectiveArgumentDataByNodeParams = { + directiveName: DirectiveName; + node: InputValueDefinitionNode; + optionalArgumentNames: Set; + requiredArgumentNames: Set; +}; + +export type DirectiveArgumentDataParams = { + directive: Directive; + name: ArgumentName; + namedTypeKind: InputNodeKind | Kind.NULL; + typeNode: MutableTypeNode; + configureDescriptionDataBySubgraphName?: Map; + directivesByName?: Map>; + defaultValue?: ConstValueNode; + description?: StringValueNode; + node?: MutableInputValueNode; + requiredSubgraphNames?: Set; + subgraphNames?: Set; +}; + +export type DirectiveDefinitionDataParams = { + locations: Set; + name: DirectiveName; + node: DirectiveDefinitionNode; + // configureDescriptionDataBySubgraphName?: Map; + argumentDataByName?: Map; + description?: StringValueNode; + isComposed?: boolean; + isReferenced?: boolean; + isRepeatable?: boolean; + optionalArgumentNames?: Set; + requiredArgumentNames?: Set; + subgraphNames?: Set; +}; + +export type ExtractDirectiveArgumentDataParams = { + directiveName: DirectiveName; + errorMessages: Array; + argumentNodes?: ReadonlyArray | Array; +}; diff --git a/composition/src/directive-definition-data/types/types.ts b/composition/src/directive-definition-data/types/types.ts new file mode 100644 index 0000000000..057592774f --- /dev/null +++ b/composition/src/directive-definition-data/types/types.ts @@ -0,0 +1,48 @@ +import { + type ArgumentName, + type DirectiveLocation, + type DirectiveName, + type SubgraphName, + type TypeName, +} from '../../types/types'; +import type { ConstDirectiveNode, ConstValueNode, DirectiveDefinitionNode, Kind, StringValueNode } from 'graphql'; +import type { InputNodeKind } from '../../utils/types'; +import type { MutableInputValueNode, MutableTypeNode } from '../../schema-building/ast'; +import { type ConfigureDescriptionData, type FederatedDirectivesData } from '../../schema-building/types/types'; + +export type DirectiveArgumentData = { + configureDescriptionDataBySubgraphName: Map; + directivesByName: Map>; + federatedCoords: string; + originalCoords: string; + includeDefaultValue: boolean; + kind: Kind.ARGUMENT; + name: ArgumentName; + namedTypeKind: InputNodeKind | Kind.NULL; + namedTypeName: TypeName; + node: MutableInputValueNode; + federatedDirectivesData: FederatedDirectivesData; + requiredSubgraphNames: Set; + subgraphNames: Set; + type: MutableTypeNode; + defaultValue?: ConstValueNode; + description?: StringValueNode; +}; + +export type DirectiveDefinitionData = { + argumentDataByName: Map; + executableLocations: Set; + isComposed: boolean; + isReferenced: boolean; + isRepeatable: boolean; + locations: Set; + majorVersion: number; + minorVersion: number; + name: DirectiveName; + node: DirectiveDefinitionNode; + // required arguments with a default value are considered optional + optionalArgumentNames: Set; + requiredArgumentNames: Set; + subgraphNames: Set; + description?: StringValueNode; +}; diff --git a/composition/src/directive-definition-data/utils.ts b/composition/src/directive-definition-data/utils.ts new file mode 100644 index 0000000000..7545bd3f32 --- /dev/null +++ b/composition/src/directive-definition-data/utils.ts @@ -0,0 +1,116 @@ +import { type DirectiveArgumentDataParams, type DirectiveDefinitionDataParams } from './types/params'; +import { type ConfigureDescriptionData } from '../schema-building/types/types'; +import { type ArgumentName, type DirectiveName, type SubgraphName } from '../types/types'; +import { EXECUTABLE_DIRECTIVE_LOCATIONS } from '../utils/string-constants'; +import { type ConstDirectiveNode, Kind } from 'graphql'; +import { newFederatedDirectivesData } from '../schema-building/utils'; +import { getTypeNodeNamedTypeName } from '../schema-building/ast'; +import { stringToNameNode } from '../ast/utils'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from './types/types'; +import { copyObjectValueMap } from '../utils/utils'; + +export function newDirectiveArgumentData({ + configureDescriptionDataBySubgraphName, + directive, + defaultValue, + description, + directivesByName, + name, + namedTypeKind, + node, + requiredSubgraphNames, + subgraphNames, + typeNode, +}: DirectiveArgumentDataParams): DirectiveArgumentData { + return { + configureDescriptionDataBySubgraphName: + configureDescriptionDataBySubgraphName ?? new Map(), + directivesByName: directivesByName ?? new Map>(), + federatedCoords: directive, + federatedDirectivesData: newFederatedDirectivesData(), + includeDefaultValue: !!defaultValue, + kind: Kind.ARGUMENT, + name, + namedTypeKind, + namedTypeName: getTypeNodeNamedTypeName(typeNode), + node: node ?? { + directives: [], + defaultValue, + description, + name: stringToNameNode(name), + kind: Kind.INPUT_VALUE_DEFINITION, + type: typeNode, + }, + originalCoords: directive, + requiredSubgraphNames: requiredSubgraphNames ?? new Set(), + subgraphNames: subgraphNames ?? new Set(), + type: typeNode, + defaultValue, + description, + }; +} + +export function newDirectiveDefinitionData({ + argumentDataByName, + description, + isComposed, + isReferenced, + isRepeatable, + locations, + name, + node, + optionalArgumentNames, + requiredArgumentNames, + subgraphNames, +}: DirectiveDefinitionDataParams): DirectiveDefinitionData { + return { + argumentDataByName: argumentDataByName ?? new Map(), + description, + executableLocations: locations.intersection(EXECUTABLE_DIRECTIVE_LOCATIONS), + isComposed: !!isComposed, + isReferenced: !!isReferenced, + isRepeatable: !!isRepeatable, + locations, + majorVersion: -1, + minorVersion: -1, + name, + optionalArgumentNames: optionalArgumentNames ?? new Set(), + node, + requiredArgumentNames: requiredArgumentNames ?? new Set(), + subgraphNames: subgraphNames ?? new Set(), + }; +} + +export function copyDirectiveDefinitionData({ + argumentDataByName, + description, + executableLocations, + isComposed, + isReferenced, + isRepeatable, + locations, + name, + node, + minorVersion, + majorVersion, + optionalArgumentNames, + requiredArgumentNames, + subgraphNames, +}: DirectiveDefinitionData): DirectiveDefinitionData { + return { + argumentDataByName: copyObjectValueMap(argumentDataByName), + description: description ? { ...description } : undefined, + executableLocations: new Set(executableLocations), + isComposed, + isReferenced, + isRepeatable, + locations: new Set(locations), + majorVersion, + minorVersion, + name, + node: { ...node }, + optionalArgumentNames: new Set(optionalArgumentNames), + requiredArgumentNames: new Set(requiredArgumentNames), + subgraphNames: new Set(subgraphNames), + }; +} diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index cdbc701cf1..3d9258b484 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -4,18 +4,24 @@ import { type FieldData, type InputValueData, type ObjectDefinitionData, -} from '../schema-building/types'; +} from '../schema-building/types/types'; import { type IncompatibleMergedTypesErrorParams, type IncompatibleParentTypeMergeErrorParams, type IncompatibleTypeWithProvidesErrorMessageParams, + type InvalidArgumentValueErrorParams, + type InvalidCustomDirectiveErrorParams, + type InvalidDirectiveLocationErrorParams, + type InvalidLinkDirectiveImportObjectErrorParams, type InvalidNamedTypeErrorParams, - type InvalidRootTypeFieldEventsDirectiveData, + type InvalidRepeatedDirectiveErrorParams, + type InvalidSubValueFieldLinkDirectiveImportErrorParams, + type invalidVersionLinkDirectiveUrlErrorParams, type NonExternalConditionalFieldErrorParams, type OneOfRequiredFieldsErrorParams, type SemanticNonNullLevelsIndexOutOfBoundsErrorParams, type SemanticNonNullLevelsNonNullErrorParams, -} from './types'; +} from './types/params'; import { type UnresolvableFieldData } from '../resolvability-graph/utils/utils'; import { AND_UPPER, @@ -40,7 +46,7 @@ import { VALUES, } from '../utils/string-constants'; import { MAX_SUBSCRIPTION_FILTER_DEPTH, MAXIMUM_TYPE_NESTING } from '../utils/integer-constants'; -import { getEntriesNotInHashSet, getOrThrowError, kindToNodeType, numberToOrdinal } from '../utils/utils'; +import { getEntriesNotInHashSet, getOrThrowError, kindToNodeType } from '../utils/utils'; import { type ImplementationErrors, type InvalidEntityInterface, @@ -51,10 +57,14 @@ import { printTypeNode } from '@graphql-tools/merge'; import { type ArgumentName, type DirectiveArgumentCoords, + type DirectiveLocation, + type DirectiveName, type FieldName, type NodeType, + type SubgraphName, type TypeName, } from '../types/types'; +import { type InvalidRootTypeFieldEventsDirectiveData } from './types/types'; export const minimumSubgraphRequirementError = new Error('At least one subgraph is required for federation.'); @@ -71,12 +81,12 @@ export function multipleNamedTypeDefinitionError( export function incompatibleInputValueDefaultValueTypeError( prefix: string, - path: string, + coords: string, typeString: string, defaultValue: string, ): Error { return new Error( - `The ${prefix} of type "${typeString}" defined on path "${path}" is` + + `The ${prefix} of type "${typeString}" defined on coords "${coords}" is` + ` incompatible with the default value of "${defaultValue}".`, ); } @@ -260,10 +270,17 @@ export function invalidDirectiveError( ); } -export function invalidRepeatedFederatedDirectiveErrorMessage(directiveName: string, directiveCoords: string): Error { +export function invalidCustomDirectiveError({ + directiveCoords, + directiveName, + errors, + ordinal, +}: InvalidCustomDirectiveErrorParams) { return new Error( - `The definition for the directive "@${directiveName}" does not define it as repeatable,` + - ` but the directive has been declared on more than one instance of the type "${directiveCoords}".`, + `The ${ordinal} post-federation instance of the directive "@${directiveName}" declared on coordinates` + + ` "${directiveCoords}" is invalid for the following reason` + + (errors.length > 1 ? 's:\n' : ':\n - ') + + errors.map((error) => error.message).join('\n - '), ); } @@ -271,6 +288,39 @@ export function invalidDirectiveLocationErrorMessage(directiveName: string, loca return ` The definition for "@${directiveName}" does not define "${location}" as a valid location.`; } +export function invalidDirectiveLocationError({ + directiveCoords, + directiveName, + location, +}: InvalidDirectiveLocationErrorParams): Error { + return new Error( + `The directive "@${directiveName}" declared on "${directiveCoords}" is invalid because the` + + ` directive definition for "@${directiveName}" does not define "${location}" as a valid location.`, + ); +} + +export function invalidRepeatedDirectiveError({ + directiveCoords, + directiveName, +}: InvalidRepeatedDirectiveErrorParams): Error { + return new Error( + `The multiple instances of directive "@${directiveName}" declared on "${directiveCoords}" are invalid because` + + ` the directive definition for "@${directiveName}" does not define it as repeatable.`, + ); +} + +export function undefinedRequiredArgumentsError(requiredArgumentNames: Array): Error { + return new Error( + ` The following ` + + requiredArgumentNames.length + + ` required argument` + + (requiredArgumentNames.length > 1 ? 's are' : ' is') + + ` not defined: "` + + requiredArgumentNames.join(QUOTATION_JOIN) + + `"`, + ); +} + export function undefinedRequiredArgumentsErrorMessage( directiveName: string, requiredArgumentNames: string[], @@ -298,6 +348,16 @@ export function undefinedRequiredArgumentsErrorMessage( ); } +export function unexpectedArgumentProvisionError(argumentNames: Array): Error { + return new Error( + `The following unexpected argument` + + (argumentNames.length > 1 ? 's are' : ' is') + + ` provided: "` + + argumentNames.join(QUOTATION_JOIN) + + `".`, + ); +} + export function unexpectedDirectiveArgumentErrorMessage(directiveName: string, argumentNames: string[]): string { return ( ` The definition for "@${directiveName}" does not define the following argument` + @@ -308,6 +368,15 @@ export function unexpectedDirectiveArgumentErrorMessage(directiveName: string, a ); } +export function duplicateArgumentDefinitionError(argumentNames: Array): Error { + return new Error( + `The following argument` + + (argumentNames.length > 1 ? 's are' : ' is') + + ` defined more than once: "` + + argumentNames.join(QUOTATION_JOIN) + + `".`, + ); +} export function duplicateDirectiveArgumentDefinitionsErrorMessage(argumentNames: string[]): string { return ( ` The following argument` + @@ -318,6 +387,16 @@ export function duplicateDirectiveArgumentDefinitionsErrorMessage(argumentNames: ); } +export function invalidArgumentValueError({ + argumentName, + expectedTypeString, + value, +}: InvalidArgumentValueErrorParams): Error { + return new Error( + ` The value "${value}" provided to argument "${argumentName}" is not a valid "${expectedTypeString}" type.`, + ); +} + export function invalidArgumentValueErrorMessage( value: string, hostName: string, @@ -382,10 +461,6 @@ export function invalidKeyFatalError(key: K, mapName: string): Error { return new Error(`Fatal: Expected key "${key}" to exist in the map "${mapName}".`); } -export const subgraphValidationFailureError: Error = new Error( - ` Fatal: Subgraph validation did not return a valid AST.`, -); - export function unexpectedParentKindForChildError( parentTypeName: string, expectedTypeString: string, @@ -408,10 +483,14 @@ export function subgraphValidationError(subgraphName: string, errors: Error[]): ); } -export function invalidSubgraphNameErrorMessage(index: number, newName: string): string { - return ( - `The ${numberToOrdinal(index + 1)} subgraph in the array did not define a name.` + - ` Consequently, any further errors will temporarily identify this subgraph as "${newName}".` +export const noSubgraphNameError = new Error( + `Federation could not be attempted because at least one subgraph does not define a name.`, +); + +export function duplicateSubgraphNamesError(subgraphNames: Array): Error { + return new Error( + `Federation could not be attempted because the following subgraph names are defined more` + + ` than once: "${subgraphNames.join(QUOTATION_JOIN)}".`, ); } @@ -691,13 +770,6 @@ export function duplicateFieldInFieldSetErrorMessage(fieldSet: string, fieldPath ); } -export function invalidConfigurationDataErrorMessage(typeName: string, fieldName: string, fieldSet: string): string { - return ( - ` Expected ConfigurationData to exist for type "${typeName}" when adding field "${fieldName}"` + - ` while validating field set "${fieldSet}".` - ); -} - export function incompatibleTypeWithProvidesErrorMessage({ fieldCoords, responseType, @@ -1108,12 +1180,6 @@ export const invalidNatsStreamConfigurationDefinitionErrorMessage = ` instead have the following definition:\n input edfs__NatsStreamConfiguration {\n consumerInactiveThreshold: Int! = 30\n` + ` consumerName: String!\n streamName: String!\n }`; -export function invalidEdfsDirectiveName(directiveName: string): Error { - return new Error( - `Could not retrieve definition for Event-Driven Federated Subscription directive "${directiveName}".`, - ); -} - export function invalidImplementedTypeError( typeName: string, invalidImplementationTypeStringByTypeName: Map, @@ -1211,25 +1277,63 @@ export function invalidSubscriptionFilterLocationError(path: string): Error { ); } -export function invalidSubscriptionFilterDirectiveError(fieldPath: string, errorMessages: string[]): Error { +export function invalidSubscriptionFilterDirectiveError(fieldPath: string, errors: Error[]): Error { return new Error( `The "@${SUBSCRIPTION_FILTER}" directive defined on path "${fieldPath}" is invalid for the` + ` following reason` + - (errorMessages.length > 1 ? 's' : '') + + (errors.length > 1 ? 's' : '') + `:\n` + - errorMessages.join(`\n`), + errors.join(`\n`), ); } -export function subscriptionFilterNamedTypeErrorMessage(namedTypeName: string): string { - return ` Unknown type "${namedTypeName}".`; +export function subscriptionFilterNamedTypeError(namedTypeName: string): Error { + return new Error(`Unknown type "${namedTypeName}".`); } -export function subscriptionFilterConditionDepthExceededErrorMessage(inputPath: string): string { - return ( - ` The input path "${inputPath}" exceeds the maximum depth of ${MAX_SUBSCRIPTION_FILTER_DEPTH}` + - ` for any one filter condition.\n` + - ` If you require a larger maximum depth, please contact support.` +export function subscriptionFilterUnionMemberInvalidError( + unionTypeName: string, + memberTypeName: string, + detail: string, +): Error { + return new Error( + `The "@openfed__subscriptionFilter" condition is invalid for union member "${memberTypeName}" of union "${unionTypeName}":\n` + + detail, + ); +} + +export function subscriptionFilterInterfaceImplementationInvalidError( + interfaceTypeName: string, + implementerTypeName: string, + detail: string, +): Error { + return new Error( + `The "@openfed__subscriptionFilter" condition is invalid for concrete type "${implementerTypeName}" implementing interface "${interfaceTypeName}":\n` + + detail, + ); +} + +export function subscriptionFilterNoAccessibleConcreteTypesError( + abstractTypeName: string, + abstractKind: string, +): Error { + return new Error( + `The ${abstractKind} "${abstractTypeName}" has no accessible concrete types against which the "@openfed__subscriptionFilter" condition can be validated.`, + ); +} + +export function subscriptionFilterUnsupportedNamedTypeKindError(namedTypeName: string, kind: string): Error { + return new Error( + `The named type "${namedTypeName}" of kind "${kind}" is not supported by the "@${SUBSCRIPTION_FILTER}" directive.` + + `Only object, union, and interface return types are supported.`, + ); +} + +export function subscriptionFilterConditionDepthExceededError(inputPath: string): Error { + return new Error( + `The input path "${inputPath}" exceeds the maximum depth of ${MAX_SUBSCRIPTION_FILTER_DEPTH}` + + ` for any one filter condition.\n` + + ` If you require a larger maximum depth, please contact support.`, ); } @@ -1237,31 +1341,27 @@ const subscriptionFilterConditionFieldsString = ` Each "${SUBSCRIPTION_FILTER_CONDITION}" input object must define exactly one of the following` + ` input value fields: "${AND_UPPER}", "${IN_UPPER}", "${NOT_UPPER}", or "${OR_UPPER}".\n`; -export function subscriptionFilterConditionInvalidInputFieldNumberErrorMessage( - inputPath: string, - fieldNumber: number, -): string { - return subscriptionFilterConditionFieldsString + ` However, input path "${inputPath}" defines ${fieldNumber} fields.`; +export function subscriptionFilterConditionInvalidInputFieldNumberError(inputPath: string, fieldNumber: number): Error { + return new Error( + subscriptionFilterConditionFieldsString + ` However, input path "${inputPath}" defines ${fieldNumber} fields.`, + ); } -export function subscriptionFilterConditionInvalidInputFieldErrorMessage( - inputPath: string, - invalidFieldName: string, -): string { - return ( +export function subscriptionFilterConditionInvalidInputFieldError(inputPath: string, invalidFieldName: string): Error { + return new Error( subscriptionFilterConditionFieldsString + - ` However, input path "${inputPath}" defines the invalid input value field "${invalidFieldName}".` + ` However, input path "${inputPath}" defines the invalid input value field "${invalidFieldName}".`, ); } -export function subscriptionFilterConditionInvalidInputFieldTypeErrorMessage( +export function subscriptionFilterConditionInvalidInputFieldTypeError( inputPath: string, expectedTypeString: string, actualTypeString: string, -): string { - return ( +): Error { + return new Error( ` Expected the value of input path "${inputPath}" to be type "${expectedTypeString}"` + - ` but received type "${actualTypeString}"` + ` but received type "${actualTypeString}"`, ); } @@ -1272,26 +1372,23 @@ const subscriptionFilterConditionArrayString = export function subscriptionFilterArrayConditionInvalidItemTypeErrorMessage( inputPath: string, invalidIndices: number[], -): string { +): Error { const isPlural = invalidIndices.length > 1; - return ( + return new Error( subscriptionFilterConditionArrayString + - ` However, the following ` + - (isPlural ? `indices` : 'index') + - ` defined on input path "${inputPath}" ` + - (isPlural ? `are` : `is`) + - ` not type "object": ` + - invalidIndices.join(`, `) + ` However, the following ` + + (isPlural ? `indices` : 'index') + + ` defined on input path "${inputPath}" ` + + (isPlural ? `are` : `is`) + + ` not type "object": ` + + invalidIndices.join(`, `), ); } -export function subscriptionFilterArrayConditionInvalidLengthErrorMessage( - inputPath: string, - actualLength: number, -): string { - return ( +export function subscriptionFilterArrayConditionInvalidLengthError(inputPath: string, actualLength: number): Error { + return new Error( subscriptionFilterConditionArrayString + - ` However, the list defined on input path "${inputPath}" has a length of ${actualLength}.` + ` However, the list defined on input path "${inputPath}" has a length of ${actualLength}.`, ); } @@ -1306,13 +1403,13 @@ export function invalidInputFieldTypeErrorMessage( ); } -export function subscriptionFieldConditionInvalidInputFieldErrorMessage( +export function subscriptionFieldConditionInvalidInputFieldError( inputPath: string, missingFieldNames: string[], duplicatedFieldNames: string[], invalidFieldNames: string[], fieldErrorMessages: string[], -): string { +): Error { let message = ` Each "${SUBSCRIPTION_FIELD_CONDITION}" input object must only define the following two` + ` input value fields: "${FIELD_PATH}" and "${VALUES}".\n However, input path "${inputPath}" is invalid because:`; @@ -1343,7 +1440,7 @@ export function subscriptionFieldConditionInvalidInputFieldErrorMessage( if (fieldErrorMessages.length > 0) { message += `\n ` + fieldErrorMessages.join(`\n `); } - return message; + return new Error(message); } const subscriptionFieldConditionValuesString = @@ -1590,10 +1687,18 @@ export function duplicateDirectiveDefinitionArgumentErrorMessage(argumentNames: ); } +export function duplicateDirectiveDefinitionLocationError(location: DirectiveLocation): Error { + return new Error(`The location "${location}" is defined multiple times.`); +} + export function duplicateDirectiveDefinitionLocationErrorMessage(locationName: string): string { return `- The location "${locationName}" is defined multiple times.`; } +export function invalidDirectiveDefinitionLocationError(locationName: string): Error { + return new Error(`"${locationName}" is not a valid directive location.`); +} + export function invalidDirectiveDefinitionLocationErrorMessage(locationName: string): string { return `- "${locationName}" is not a valid directive location.`; } @@ -1707,22 +1812,57 @@ export function oneOfRequiredFieldsError({ requiredFieldNames, typeName }: OneOf export function listSizeInvalidSlicingArgumentErrorMessage( directiveCoords: DirectiveArgumentCoords, - argumentName: ArgumentName, + path: ArgumentName, ): string { - return ` The "slicingArguments" value "${argumentName}" on "${directiveCoords}" does not reference a defined argument on this field.`; + return ` The "slicingArguments" value "${path}" on "${directiveCoords}" does not reference a defined argument on this field.`; } export function listSizeSlicingArgumentNotIntErrorMessage( directiveCoords: DirectiveArgumentCoords, - argumentName: ArgumentName, + path: ArgumentName, actualType: TypeName, ): string { return ( - ` The "slicingArguments" value "${argumentName}" on "${directiveCoords}" references an argument of type` + + ` The "slicingArguments" value "${path}" on "${directiveCoords}" references an argument of type` + ` "${actualType}", but slicing arguments must be of type "Int" or "Int!".` ); } +export function listSizeSlicingArgumentMalformedPathErrorMessage( + directiveCoords: DirectiveArgumentCoords, + path: string, +): string { + return ( + ` The "slicingArguments" value "${path}" on "${directiveCoords}" is not a valid path.` + + ` A path must be a non-empty argument name, optionally followed by "." segments,` + + ` with no empty segments and no leading or trailing dots.` + ); +} + +export function listSizeSlicingArgumentSegmentNotFoundErrorMessage( + directiveCoords: DirectiveArgumentCoords, + path: string, + segment: string, + parentTypeName: TypeName, +): string { + return ( + ` The "slicingArguments" path "${path}" on "${directiveCoords}" references "${segment}",` + + ` which is not a defined field on Input Object type "${parentTypeName}".` + ); +} + +export function listSizeSlicingArgumentSegmentNotInputObjectErrorMessage( + directiveCoords: DirectiveArgumentCoords, + path: string, + segment: string, + typeName: TypeName, +): string { + return ( + ` The "slicingArguments" path "${path}" on "${directiveCoords}" references "${segment}",` + + ` whose type "${typeName}" is not an Input Object.` + ); +} + export function listSizeSizedFieldNotFoundErrorMessage( directiveCoords: DirectiveArgumentCoords, fieldName: FieldName, @@ -1800,3 +1940,113 @@ export function costOnInterfaceFieldErrorMessage(directiveCoords: DirectiveArgum ` on the concrete types that implement the interface.` ); } + +export function unknownComposeDirectiveNameError(directiveName: DirectiveName): Error { + return new Error( + ` A "@composeDirective" directive defines the "name" argument value "${directiveName}" without a` + + ` corresponding directive definition in the schema.`, + ); +} + +export function invalidComposeDirectiveNameError(directiveName: DirectiveName): Error { + return new Error( + ` A "@composeDirective" directive defines the "name" argument value "${directiveName}", which is not a` + + ` custom, user-defined directive.`, + ); +} + +export function noLeadingAtComposeDirectiveNameError(directiveName: DirectiveName) { + return new Error( + `A "@composeDirective" directive defines the "name" argument value "${directiveName}" without a leading "@".`, + ); +} + +export function unimportedComposeDirectiveNameError(directiveName: DirectiveName): Error { + return new Error( + ` A "@composeDirective" directive defines the "name" argument value "${directiveName}",` + + ` which is not a member of a core feature (imported through a "@link" directive).`, + ); +} + +export const noLinkDirectiveUrlError = new Error(` A "@link" directive was defined without a "url" argument.`); + +export function invalidLinkDirectiveUrlError(url: string): Error { + return new Error(` A "@link" directive defines the "url" argument value with invalid URL "${url}".`); +} + +export function noPathLinkDirectiveUrlError(url: string) { + return new Error(` A "@link" directive defines the "url" argument value without a path in URL "${url}".`); +} + +export function noFeatureNameLinkDirectiveUrlError(url: string): Error { + return new Error( + ` A "@link" directive defines the "url" argument value without a feature name component in URL "${url}".`, + ); +} + +export function noVersionLinkDirectiveUrlError(url: string): Error { + return new Error( + ` A "@link" directive defines the "url" argument value without a version component in URL "${url}".`, + ); +} + +export function invalidVersionLinkDirectiveUrlError({ + url, + versionString, +}: invalidVersionLinkDirectiveUrlErrorParams): Error { + return new Error( + ` A "@link" directive defines the "url" argument value with invalid version string "${versionString}"` + + ` (not of the form "v1.2") in URL "${url}".`, + ); +} + +export function nonIterableLinkDirectiveImportError(kind: Kind): Error { + return new Error(` A "@link" directive defines the "import" value with non-iterable kind "${kind}"`); +} + +export function invalidFieldLinkDirectiveImportObjectError({ + fieldName, + value, +}: InvalidSubValueFieldLinkDirectiveImportErrorParams): Error { + return new Error(` A "@link" directive defines invalid sub-value "${value}": field "${fieldName}" must be a string.`); +} + +export function noNameFieldLinkDirectiveImportObjectError(value: string): Error { + return new Error(` A "@link" directive defines invalid sub-value "${value}": required field "name" is missing.`); +} + +export function unknownFieldLinkDirectiveImportObjectError({ + fieldName, + value, +}: InvalidSubValueFieldLinkDirectiveImportErrorParams): Error { + return new Error(` A "@link" directive defines invalid sub-value "${value}": unknown field "${fieldName}".`); +} + +export function invalidLinkDirectiveImportObjectError({ + name, + rename, +}: InvalidLinkDirectiveImportObjectErrorParams): Error { + return new Error( + ` A "@link" directive imports "${name}" and renames to "${rename}": if an import is not a` + + ` directive, neither value should begin with "@"; otherwise, both values should be referenced with a leading "@".`, + ); +} + +export function invalidSubValueLinkDirectiveImportError(index: number): Error { + return new Error( + ` A "@link" directive defines invalid sub-value at index ${index}:` + + ` values should be either strings or input object values of the form { name: "", as: "" }.`, + ); +} + +export function nonEqualCoreFeatureComposeDirectiveError(directiveName: DirectiveName): Error { + return new Error(` Composed directive "${directiveName}" is not linked by the same core feature in every subgraph.`); +} + +export function nonEqualComposeDirectiveMajorVersionError(directiveName: DirectiveName): Error { + return new Error(` Composed directive "${directiveName}" defines a major version mismatch across subgraphs.`); +} + +export function unknownSubgraphNameError(subgraphName: SubgraphName): Error { + return new Error(`Internal Error: Expected subgraph "${subgraphName}" to be a valid record.`); +} diff --git a/composition/src/errors/types.ts b/composition/src/errors/types/params.ts similarity index 53% rename from composition/src/errors/types.ts rename to composition/src/errors/types/params.ts index cf2e62d127..05e060c4a6 100644 --- a/composition/src/errors/types.ts +++ b/composition/src/errors/types/params.ts @@ -1,10 +1,11 @@ -import { type FieldData, type InputValueData, type ParentDefinitionData } from '../schema-building/types'; -import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../types/types'; - -export type InvalidRootTypeFieldEventsDirectiveData = { - definesDirectives: boolean; - invalidDirectiveNames: Array; -}; +import { type FieldData, type InputValueData, type ParentDefinitionData } from '../../schema-building/types/types'; +import { + type ArgumentName, + type DirectiveName, + type FieldName, + type SubgraphName, + type TypeName, +} from '../../types/types'; export type IncompatibleMergedTypesErrorParams = { actualType: string; @@ -54,3 +55,42 @@ export type NonExternalConditionalFieldErrorParams = { subgraphName: SubgraphName; targetCoords: string; }; + +export type invalidVersionLinkDirectiveUrlErrorParams = { + url: string; + versionString: string; +}; + +export type InvalidSubValueFieldLinkDirectiveImportErrorParams = { + fieldName: FieldName; + value: string; +}; + +export type InvalidLinkDirectiveImportObjectErrorParams = { + name: string; + rename: string; +}; + +export type InvalidCustomDirectiveErrorParams = { + directiveCoords: string; + directiveName: DirectiveName; + errors: Array; + ordinal: string; +}; + +export type InvalidDirectiveLocationErrorParams = { + directiveCoords: string; + directiveName: DirectiveName; + location: string; +}; + +export type InvalidRepeatedDirectiveErrorParams = { + directiveCoords: string; + directiveName: DirectiveName; +}; + +export type InvalidArgumentValueErrorParams = { + argumentName: ArgumentName; + value: string; + expectedTypeString: string; +}; diff --git a/composition/src/errors/types/types.ts b/composition/src/errors/types/types.ts new file mode 100644 index 0000000000..5916bd76e9 --- /dev/null +++ b/composition/src/errors/types/types.ts @@ -0,0 +1,6 @@ +import { type DirectiveName } from '../../types/types'; + +export type InvalidRootTypeFieldEventsDirectiveData = { + definesDirectives: boolean; + invalidDirectiveNames: Array; +}; diff --git a/composition/src/federation/federation.ts b/composition/src/federation/federation.ts index b822bbccfa..cd3f5e006a 100644 --- a/composition/src/federation/federation.ts +++ b/composition/src/federation/federation.ts @@ -1,4 +1,4 @@ -import { type FederationResult, type FederationResultWithContracts } from './types'; +import { type FederationResult, type FederationResultWithContracts } from './types/types'; import { federateSubgraphs as federateSubgraphsV1, federateSubgraphsContract as federateSubgraphsContractV1, @@ -9,7 +9,7 @@ import { type FederateSubgraphsContractParams, type FederateSubgraphsParams, type FederateSubgraphsWithContractsParams, -} from './params'; +} from './types/params'; export function federateSubgraphs({ options, diff --git a/composition/src/federation/params.ts b/composition/src/federation/types/params.ts similarity index 68% rename from composition/src/federation/params.ts rename to composition/src/federation/types/params.ts index 74070075d2..aa92389ea6 100644 --- a/composition/src/federation/params.ts +++ b/composition/src/federation/types/params.ts @@ -1,7 +1,7 @@ -import { type Subgraph } from '../subgraph/types'; -import type { CompositionOptions } from '../types/params'; -import { type SupportedRouterCompatibilityVersion } from '../router-compatibility-version/router-compatibility-version'; -import type { ContractName } from '../types/types'; +import { type Subgraph } from '../../subgraph/types'; +import type { CompositionOptions } from '../../types/params'; +import { type SupportedRouterCompatibilityVersion } from '../../router-compatibility-version/router-compatibility-version'; +import type { ContractName } from '../../types/types'; import { type ContractTagOptions } from './types'; export type FederateSubgraphsParams = { diff --git a/composition/src/federation/types/results.ts b/composition/src/federation/types/results.ts new file mode 100644 index 0000000000..d4c4edd163 --- /dev/null +++ b/composition/src/federation/types/results.ts @@ -0,0 +1,8 @@ +import { type ExecutionSuccess, type ExecutionMultiFailure } from '../../types/results'; +import { type SubscriptionCondition } from '../../router-configuration/types'; + +export interface SubscriptionFilterTargetSuccess extends ExecutionSuccess { + condition: SubscriptionCondition; +} + +export type SubscriptionFilterTargetResult = SubscriptionFilterTargetSuccess | ExecutionMultiFailure; diff --git a/composition/src/federation/types.ts b/composition/src/federation/types/types.ts similarity index 65% rename from composition/src/federation/types.ts rename to composition/src/federation/types/types.ts index 959f32b3d9..ca4c8d8810 100644 --- a/composition/src/federation/types.ts +++ b/composition/src/federation/types/types.ts @@ -1,4 +1,4 @@ -import { type Warning } from '../warnings/types'; +import { type Warning } from '../../warnings/types'; import { type ConstDirectiveNode, type DirectiveDefinitionNode, @@ -9,41 +9,39 @@ import { import { type ConfigureDescriptionData, type ExtensionType, + type FederatedDirectivesData, type ParentDefinitionData, - type PersistedDirectivesData, -} from '../schema-building/types'; -import { type FieldConfiguration } from '../router-configuration/types'; -import { type SubgraphConfig } from '../subgraph/types'; -import type { DirectiveName, SubgraphName, TypeName } from '../types/types'; +} from '../../schema-building/types/types'; +import { type FieldConfiguration } from '../../router-configuration/types'; +import { type SubgraphConfig } from '../../subgraph/types'; +import type { DirectiveName, SubgraphName, TypeName } from '../../types/types'; +import { type ExecutionMultiFailure, type ExecutionSuccess } from '../../types/results'; -export type FederationFailure = { +export interface FederationFailure extends ExecutionMultiFailure { errors: Array; - success: false; warnings: Array; -}; +} -export type FederationSuccess = { +export interface FederationSuccess extends ExecutionSuccess { directiveDefinitionByName: Map; fieldConfigurations: Array; federatedGraphAST: DocumentNode; federatedGraphClientSchema: GraphQLSchema; federatedGraphSchema: GraphQLSchema; - parentDefinitionDataByTypeName: Map; - subgraphConfigBySubgraphName: Map; + parentDefinitionDataByTypeName: Map; + subgraphConfigBySubgraphName: Map; shouldIncludeClientSchema?: boolean; - success: true; warnings: Array; -}; +} export type FederationResult = FederationFailure | FederationSuccess; -export type FederationResultWithContractsFailure = { - success: false; +export interface FederationResultWithContractsFailure extends ExecutionMultiFailure { errors: Array; warnings: Array; -}; +} -export type FederationResultWithContractsSuccess = { +export interface FederationResultWithContractsSuccess extends ExecutionSuccess { directiveDefinitionByName: Map; fieldConfigurations: Array; federatedGraphAST: DocumentNode; @@ -52,10 +50,9 @@ export type FederationResultWithContractsSuccess = { federationResultByContractName: Map; parentDefinitionDataByTypeName: Map; subgraphConfigBySubgraphName: Map; - success: true; warnings: Array; shouldIncludeClientSchema?: boolean; -}; +} export type FederationResultWithContracts = FederationResultWithContractsFailure | FederationResultWithContractsSuccess; @@ -69,6 +66,6 @@ export type MutualParentDefinitionData = { directivesByName: Map>; extensionType: ExtensionType; name: TypeName; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; description?: StringValueNode; }; diff --git a/composition/src/index.ts b/composition/src/index.ts index c9f27f9ac5..336c3e5584 100644 --- a/composition/src/index.ts +++ b/composition/src/index.ts @@ -1,10 +1,23 @@ +// set methods +import 'set.prototype.difference/auto'; +import 'set.prototype.isdisjointfrom/auto'; +import 'set.prototype.intersection/auto'; +import 'set.prototype.issubsetof/auto'; +import 'set.prototype.issupersetof/auto'; + export * from './ast/utils'; export * from './buildASTSchema/buildASTSchema'; +export * from './directive-definition-data/directive-definition-data'; +export * from './directive-definition-data/types/params'; +export * from './directive-definition-data/types/types'; +export * from './directive-definition-data/utils'; export * from './errors/errors'; -export * from './errors/types'; +export * from './errors/types/params'; +export * from './errors/types/types'; export * from './federation/federation'; -export * from './federation/params'; -export * from './federation/types'; +export * from './federation/types/params'; +export * from './federation/types/types'; +export * from './federation/types/results'; export * from './normalization/normalization'; export * from './normalization/params'; export * from './normalization/types'; @@ -18,7 +31,9 @@ export * from './router-compatibility-version/router-compatibility-version'; export * from './router-configuration/types'; export * from './router-configuration/utils'; export * from './schema-building/ast'; -export * from './schema-building/types'; +export * from './schema-building/types/params'; +export * from './schema-building/types/results'; +export * from './schema-building/types/types'; export * from './schema-building/utils'; export * from './subgraph/types'; export * from './types/params'; @@ -32,17 +47,19 @@ export * from './warnings/types'; // v1 export * from './v1/constants/constants'; +export * from './v1/constants/constants'; export * from './v1/constants/directive-definitions'; export * from './v1/constants/integers'; export * from './v1/constants/non-directive-definitions'; export * from './v1/constants/strings'; export * from './v1/constants/type-nodes'; -export * from './v1/federation/params'; +export * from './v1/federation/types/params'; export * from './v1/federation/utils'; export * from './v1/federation/walkers'; -export * from './v1/normalization/directive-definition-data'; +export * from './v1/normalization/batch-normalization/batch-normalizer'; +export * from './directive-definition-data/directive-definition-data'; export * from './v1/normalization/utils'; -export * from './v1/normalization/types'; +export * from './v1/normalization/types/types'; export * from './v1/normalization/walkers'; export * from './v1/schema-building/type-merging'; export * from './v1/subgraph/subgraph'; diff --git a/composition/src/normalization/normalization.ts b/composition/src/normalization/normalization.ts index 7a6138509b..374ec4d102 100644 --- a/composition/src/normalization/normalization.ts +++ b/composition/src/normalization/normalization.ts @@ -1,15 +1,10 @@ import { - batchNormalize as batchNormalizeV1, normalizeSubgraph as normalizeSubgraphV1, normalizeSubgraphFromString as normalizeSubgraphFromStringV1, } from '../v1/normalization/normalization-factory'; import { ROUTER_COMPATIBILITY_VERSION_ONE } from '../router-compatibility-version/router-compatibility-version'; -import { type BatchNormalizationResult, type NormalizationResult } from './types'; -import { - type BatchNormalizeParams, - type NormalizeSubgraphFromStringParams, - type NormalizeSubgraphParams, -} from './params'; +import { type NormalizationResult } from './types'; +import { type NormalizeSubgraphFromStringParams, type NormalizeSubgraphParams } from './params'; export function normalizeSubgraphFromString({ noLocation = true, @@ -37,15 +32,3 @@ export function normalizeSubgraph({ } } } - -export function batchNormalize({ - options, - subgraphs, - version = ROUTER_COMPATIBILITY_VERSION_ONE, -}: BatchNormalizeParams): BatchNormalizationResult { - switch (version) { - default: { - return batchNormalizeV1({ options, subgraphs }); - } - } -} diff --git a/composition/src/normalization/types.ts b/composition/src/normalization/types.ts index 3e598440ba..c0edd86fa4 100644 --- a/composition/src/normalization/types.ts +++ b/composition/src/normalization/types.ts @@ -14,37 +14,46 @@ import { type EntityData, type EntityInterfaceSubgraphData, type ParentDefinitionData, - type PersistedDirectiveDefinitionData, -} from '../schema-building/types'; +} from '../schema-building/types/types'; import { type Graph } from '../resolvability-graph/graph'; import { type InternalSubgraph } from '../subgraph/types'; -import { type DirectiveName, type TypeName } from '../types/types'; +import { + type AbstractTypeName, + type DirectiveName, + type FieldName, + type InterfaceTypeName, + type SubgraphName, + type TypeName, +} from '../types/types'; +import { type ExecutionMultiFailure } from '../types/results'; +import { type LinkImportData } from '../v1/normalization/types/types'; +import { type DirectiveDefinitionData } from '../directive-definition-data/types/types'; -export type NormalizationFailure = { - errors: Array; - success: false; +export interface NormalizationFailure extends ExecutionMultiFailure { warnings: Array; -}; +} export type NormalizationSuccess = { - authorizationDataByParentTypeName: Map; - concreteTypeNamesByAbstractTypeName: Map>; + authorizationDataByParentTypeName: Map; + concreteTypeNamesByAbstractTypeName: Map>; conditionalFieldDataByCoordinates: Map; configurationDataByTypeName: Map; costs: Costs; directiveDefinitionByName: Map; entityInterfaces: Map; - entityDataByTypeName: Map; - fieldCoordsByNamedTypeName: Map>; - originalTypeNameByRenamedTypeName: Map; + entityDataByTypeName: Map; + federatedDirectiveDataByName: Map; + fieldCoordsByNamedTypeName: Map>; + importDataByDirectiveName: Map; + interfaceImplementationTypeNamesByInterfaceTypeName: Map>; isEventDrivenGraph: boolean; isVersionTwo: boolean; keyFieldNamesByParentTypeName: Map>; keyFieldSetsByEntityTypeNameByKeyFieldCoords: Map>>; operationTypes: Map; - overridesByTargetSubgraphName: Map>>; - parentDefinitionDataByTypeName: Map; - persistedDirectiveDefinitionDataByDirectiveName: Map; + originalTypeNameByRenamedTypeName: Map; + overriddenFieldNamesByParentTypeNameByTargetSubgraphName: Map>>; + parentDefinitionDataByTypeName: Map; schema: GraphQLSchema; subgraphAST: DocumentNode; subgraphString: string; @@ -55,20 +64,22 @@ export type NormalizationSuccess = { export type NormalizationResult = NormalizationFailure | NormalizationSuccess; -export type BatchNormalizationFailure = { +export interface BatchNormalizationFailure extends ExecutionMultiFailure { errors: Array; - success: false; warnings: Array; -}; +} export type BatchNormalizationSuccess = { success: true; - authorizationDataByParentTypeName: Map; - concreteTypeNamesByAbstractTypeName: Map>; - entityDataByTypeName: Map; - fieldCoordsByNamedTypeName: Map>; - internalSubgraphBySubgraphName: Map; + authorizationDataByParentTypeName: Map; + concreteTypeNamesByAbstractTypeName: Map>; + entityDataByTypeName: Map; + executableDirectiveDatasByName: Map>; + federatedDirectiveDataByName: Map; + fieldCoordsByNamedTypeName: Map>; + interfaceImplementationTypeNamesByInterfaceTypeName: Map>; internalGraph: Graph; + internalSubgraphByName: Map; warnings: Array; }; diff --git a/composition/src/resolvability-graph/constants/number-constants.ts b/composition/src/resolvability-graph/constants/number-constants.ts new file mode 100644 index 0000000000..a727b32303 --- /dev/null +++ b/composition/src/resolvability-graph/constants/number-constants.ts @@ -0,0 +1 @@ +export const MAX_RESOLVABILITY_PATH_SIZE: number = 5; diff --git a/composition/src/resolvability-graph/graph.ts b/composition/src/resolvability-graph/graph.ts index f7b87863e2..5de592761a 100644 --- a/composition/src/resolvability-graph/graph.ts +++ b/composition/src/resolvability-graph/graph.ts @@ -29,6 +29,7 @@ import { type EntityResolvabilityErrorsParams, type EntitySharedRootFieldResolvabilityErrorsParams, } from './utils/types/params'; +import { type EntityAncestorCollection } from './utils/types/types'; export class Graph { edgeId = -1; @@ -250,6 +251,7 @@ export class Graph { if (rootFieldWalker.unresolvablePaths.size < 1 && !involvesEntities) { continue; } + const fieldData = getOrThrowError(rootNode.fieldDataByName, rootFieldName, 'fieldDataByName'); const rootFieldData = newRootFieldData(rootNode.typeName, rootFieldName, fieldData.subgraphNames); // If there are no nested entities, then the unresolvable fields must be impossible to resolve. @@ -263,6 +265,7 @@ export class Graph { success: false, }; } + const result = this.validateEntities({ isSharedRootField, rootFieldData, walker: rootFieldWalker }); if (!result.success) { return result; @@ -336,6 +339,11 @@ export class Graph { validateSharedRootFieldEntities({ rootFieldData, walker }: ValidateEntitiesParams): ValidationResult { const resolvedPaths = new Set(); for (const [pathFromRoot, entityNodeNames] of walker.entityNodeNamesByPath) { + if (walker.unresolvablePaths.size < 1) { + return { + success: true, + }; + } const subgraphNameByUnresolvablePath = new Map(); // Shared fields are unique contexts, so the resolution data cannot be reused. const resDataByRelativeOriginPath = new Map(); @@ -361,41 +369,33 @@ export class Graph { subgraphNameByUnresolvablePath, walker, }); + + // Check nothing further needs to be done if (subgraphNameByUnresolvablePath.size < 1) { continue; } + + // Only do this if we have to this.consolidateUnresolvableEntityWithRootPaths({ pathFromRoot, resDataByRelativeOriginPath, subgraphNameByUnresolvablePath, walker, }); - const errors = new Array(); - if (subgraphNameByUnresolvablePath.size > 0) { - errors.push( - ...this.getSharedEntityResolvabilityErrors({ - entityNodeNames, - resDataByPath: resDataByRelativeOriginPath, - pathFromRoot, - rootFieldData, - subgraphNameByUnresolvablePath, - }), - ); - } - if (walker.unresolvablePaths.size > 0) { - errors.push( - ...generateRootResolvabilityErrors({ - unresolvablePaths: walker.unresolvablePaths, - resDataByPath: walker.resDataByPath, - rootFieldData, - }), - ); - } - if (errors.length < 1) { + + // Check again before returning an error + if (subgraphNameByUnresolvablePath.size < 1) { continue; } + return { - errors, + errors: generateSharedEntityResolvabilityErrors({ + entityAncestors: this.getEntityAncestorCollection(entityNodeNames), + pathFromRoot, + resDataByPath: resDataByRelativeOriginPath, + rootFieldData: rootFieldData, + subgraphNameByUnresolvablePath, + }), success: false, }; } @@ -456,6 +456,7 @@ export class Graph { success: false, }; } + return { success: true, }; @@ -498,35 +499,32 @@ export class Graph { }); } - getSharedEntityResolvabilityErrors({ - entityNodeNames, - pathFromRoot, - rootFieldData, - resDataByPath, - subgraphNameByUnresolvablePath, - }: EntitySharedRootFieldResolvabilityErrorsParams): Array { - let entityTypeName: string | undefined = undefined; - const subgraphNames = new Array(); - for (const entityNodeName of entityNodeNames) { - const segments = entityNodeName.split(LITERAL_PERIOD); - entityTypeName ??= segments[1]; - subgraphNames.push(segments[0]); - } + getEntityAncestorCollection(entityNodeNames: Set): EntityAncestorCollection { + const typeName = getFirstEntry(entityNodeNames)!.split(LITERAL_PERIOD)[1]; const { fieldSetsByTargetSubgraphName } = getOrThrowError( this.entityDataNodeByTypeName, - entityTypeName, + typeName, 'entityDataNodeByTypeName', ); - return generateSharedEntityResolvabilityErrors({ - entityAncestors: { - fieldSetsByTargetSubgraphName, - subgraphNames, - typeName: entityTypeName!, - }, - pathFromRoot, - resDataByPath, - rootFieldData: rootFieldData, - subgraphNameByUnresolvablePath, - }); + const subgraphNames = new Array(); + const sourceSubgraphNamesBySatisfiedFieldSet = new Map>(); + for (const entityNodeName of entityNodeNames) { + const { satisfiedFieldSets, subgraphName } = getOrThrowError( + this.nodeByNodeName, + entityNodeName, + 'nodeByNodeName', + ); + for (const fieldSet of satisfiedFieldSets) { + getValueOrDefault(sourceSubgraphNamesBySatisfiedFieldSet, fieldSet, () => []).push(subgraphName); + } + subgraphNames.push(subgraphName); + } + + return { + fieldSetsByTargetSubgraphName, + sourceSubgraphNamesBySatisfiedFieldSet, + subgraphNames, + typeName, + }; } } diff --git a/composition/src/resolvability-graph/types/types.ts b/composition/src/resolvability-graph/types/types.ts index 7bd5150a51..24fcf21843 100644 --- a/composition/src/resolvability-graph/types/types.ts +++ b/composition/src/resolvability-graph/types/types.ts @@ -7,6 +7,8 @@ export type VisitNodeResult = { export type FieldName = string; +export type FieldCoords = `${TypeName}.${FieldName}`; + export type NodeName = `${SubgraphName}.${TypeName}`; export type SelectionPath = string; @@ -16,7 +18,7 @@ export type SubgraphName = string; export type TypeName = string; export type RootFieldData = { - coords: `${TypeName}.${FieldName}`; + coords: FieldCoords; message: string; subgraphNames: Set; }; diff --git a/composition/src/resolvability-graph/utils/types/params.ts b/composition/src/resolvability-graph/utils/types/params.ts index e1b3c23153..deb8f5e042 100644 --- a/composition/src/resolvability-graph/utils/types/params.ts +++ b/composition/src/resolvability-graph/utils/types/params.ts @@ -1,4 +1,10 @@ -import { type NodeName, type RootFieldData, type SelectionPath, type SubgraphName } from '../../types/types'; +import { + type FieldCoords, + type NodeName, + type RootFieldData, + type SelectionPath, + type SubgraphName, +} from '../../types/types'; import { type NodeResolutionData } from '../../node-resolution-data/node-resolution-data'; import { type EntityAncestorCollection, type EntityAncestorData } from './types'; @@ -57,3 +63,11 @@ export type GenerateSharedResolvabilityErrorReasonsParams = { unresolvableFieldData: UnresolvableFieldData; entityAncestors: EntityAncestorCollection; }; + +export type GetEntityReasonsParams = { + coords: FieldCoords; + entityAncestors: EntityAncestorCollection; + fieldSets: Set; + reasons: Array; + targetSubgraphName: SubgraphName; +}; diff --git a/composition/src/resolvability-graph/utils/types/types.ts b/composition/src/resolvability-graph/utils/types/types.ts index 621f651460..eeec9e3228 100644 --- a/composition/src/resolvability-graph/utils/types/types.ts +++ b/composition/src/resolvability-graph/utils/types/types.ts @@ -8,6 +8,7 @@ export type EntityAncestorData = { export type EntityAncestorCollection = { fieldSetsByTargetSubgraphName: Map>; + sourceSubgraphNamesBySatisfiedFieldSet: Map>; subgraphNames: Array; typeName: TypeName; }; diff --git a/composition/src/resolvability-graph/utils/utils.ts b/composition/src/resolvability-graph/utils/utils.ts index c7cf370b48..898f49f154 100644 --- a/composition/src/resolvability-graph/utils/utils.ts +++ b/composition/src/resolvability-graph/utils/utils.ts @@ -2,6 +2,7 @@ import { unresolvablePathError } from '../../errors/errors'; import { getOrThrowError } from '../../utils/utils'; import { type GraphFieldData } from '../../utils/types'; import { + type FieldCoords, type FieldName, type RootFieldData, type SelectionPath, @@ -12,6 +13,7 @@ import { import { type GenerateResolvabilityErrorReasonsParams, type GenerateSharedResolvabilityErrorReasonsParams, + type GetEntityReasonsParams, type GetMultipliedRelativeOriginPathsParams, type ResolvabilityErrorsParams, type RootResolvabilityErrorsParams, @@ -19,6 +21,7 @@ import { } from './types/params'; import { type SelectionSetSegments } from './types/types'; import { LITERAL_SPACE, QUOTATION_JOIN } from '../constants/string-constants'; +import { MAX_RESOLVABILITY_PATH_SIZE } from '../constants/number-constants'; export type UnresolvableFieldData = { externalSubgraphNames: Set; @@ -123,12 +126,74 @@ export function generateResolvabilityErrorReasons({ return reasons; } +function getSelfEntityReasons({ + entityAncestors: { subgraphNames, typeName }, + fieldSets, + reasons, + targetSubgraphName, +}: GetEntityReasonsParams) { + for (const fieldSet of fieldSets) { + const filteredSubgraphNames = subgraphNames.filter((subgraphName) => subgraphName !== targetSubgraphName); + if (filteredSubgraphNames.length < 1) { + continue; + } + + const isSubsetPlural = filteredSubgraphNames.length > 1; + reasons.push( + `The entity ancestor${isSubsetPlural ? 's' : ''} "${typeName}" in` + + ` subgraph${isSubsetPlural ? `s` : ``} "${filteredSubgraphNames.join(QUOTATION_JOIN)}"` + + ` do${isSubsetPlural ? `` : `es`} not satisfy the key field set "${fieldSet}"` + + ` to access subgraph "${targetSubgraphName}".`, + ); + } +} + +function getAncestorEntityReasons({ + coords, + entityAncestors: { sourceSubgraphNamesBySatisfiedFieldSet, subgraphNames, typeName }, + fieldSets, + reasons, + targetSubgraphName, +}: GetEntityReasonsParams) { + const unsatisfiedFieldSetReasons: Array = []; + const satisfiedFieldSetReasons: Array = []; + for (const fieldSet of fieldSets) { + const sourceSubgraphNames = sourceSubgraphNamesBySatisfiedFieldSet.get(fieldSet); + if (!sourceSubgraphNames) { + const filteredSubgraphNames = subgraphNames.filter((subgraphName) => subgraphName !== targetSubgraphName); + const isSubsetPlural = filteredSubgraphNames.length > 1; + unsatisfiedFieldSetReasons.push( + `The entity ancestor${isSubsetPlural ? 's' : ''} "${typeName}" in` + + ` subgraph${isSubsetPlural ? `s` : ``} "${filteredSubgraphNames.join(QUOTATION_JOIN)}" ` + + ` do${isSubsetPlural ? `` : `es`} not satisfy the key field set "${fieldSet}"` + + ` to access subgraph "${targetSubgraphName}".`, + ); + continue; + } + + const filteredSubgraphNames = sourceSubgraphNames.filter((subgraphName) => subgraphName !== targetSubgraphName); + if (filteredSubgraphNames.length < 1) { + continue; + } + + const isSubsetPlural = filteredSubgraphNames.length > 1; + satisfiedFieldSetReasons.push( + `The entity ancestor "${typeName}" in subgraph${isSubsetPlural ? `s` : ``}` + + ` "${filteredSubgraphNames.join(QUOTATION_JOIN)}" ${isSubsetPlural ? 'are' : 'is'} able to satisfy at least` + + ` one key field set to access subgraph "${targetSubgraphName}", but this still does not provide a route` + + ` to resolve "${coords}".`, + ); + } + reasons.push(...(satisfiedFieldSetReasons.length > 0 ? satisfiedFieldSetReasons : unsatisfiedFieldSetReasons)); +} + export function generateSharedResolvabilityErrorReasons({ entityAncestors, rootFieldData, unresolvableFieldData, }: GenerateSharedResolvabilityErrorReasonsParams): Array { const { externalSubgraphNames, fieldName, typeName, subgraphNames } = unresolvableFieldData; + const coords: FieldCoords = `${typeName}.${fieldName}`; const reasons: Array = [rootFieldData.message]; if (externalSubgraphNames.size > 0) { const nonExternalSubgraphNames = subgraphNames.difference(externalSubgraphNames); @@ -147,30 +212,38 @@ export function generateSharedResolvabilityErrorReasons({ `: "${[...subgraphNames].join(QUOTATION_JOIN)}".`, ); } + const isEntity = typeName === entityAncestors.typeName; let hasIntersectingTargetSubgraph = false; for (const [targetSubgraphName, fieldSets] of entityAncestors.fieldSetsByTargetSubgraphName) { if (!subgraphNames.has(targetSubgraphName)) { continue; } - const filteredSubgraphNames = entityAncestors.subgraphNames.filter( - (subgraphName) => subgraphName !== targetSubgraphName, - ); - const isSubsetPlural = filteredSubgraphNames.length > 1; + hasIntersectingTargetSubgraph = true; - for (const fieldSet of fieldSets) { - reasons.push( - `The entity ancestor "${entityAncestors.typeName}" in subgraph${isSubsetPlural ? `s` : ``}` + - ` "${filteredSubgraphNames.join(QUOTATION_JOIN)}" do${isSubsetPlural ? `` : `es`} not satisfy` + - ` the key field set "${fieldSet}" to access subgraph "${targetSubgraphName}".`, - ); + if (isEntity) { + getSelfEntityReasons({ + coords, + entityAncestors, + fieldSets, + reasons, + targetSubgraphName, + }); + } else { + getAncestorEntityReasons({ + coords, + entityAncestors, + fieldSets, + reasons, + targetSubgraphName, + }); } } if (!hasIntersectingTargetSubgraph) { const isPlural = entityAncestors.subgraphNames.length > 1; reasons.push( `The entity ancestor "${entityAncestors.typeName}" in subgraph${isPlural ? `s` : ``}` + - ` "${entityAncestors.subgraphNames.join(QUOTATION_JOIN)}" ha${isPlural ? `ve` : `s`} no accessible target` + - ` entities (resolvable @key directives) in the subgraphs where "${typeName}.${fieldName}" is defined.`, + ` "${entityAncestors.subgraphNames.join(QUOTATION_JOIN)}" has no accessible target` + + ` entities (resolvable @key directives) in the subgraphs where "${coords}" is defined.`, ); } reasons.push( @@ -178,18 +251,32 @@ export function generateSharedResolvabilityErrorReasons({ ); if (typeName !== entityAncestors.typeName) { reasons.push( - `The type "${typeName}" has no accessible target entities (resolvable @key directives) in any other subgraph, so accessing other subgraphs is not possible.`, + `The type "${typeName}" has no accessible target entities (resolvable @key directives) in any` + + ` other subgraph, so accessing other subgraphs is not possible.`, ); } return reasons; } -export function generateSelectionSetSegments(fieldPath: string): SelectionSetSegments { +export function generateSelectionSetSegments( + fieldPath: string, + limit: number = MAX_RESOLVABILITY_PATH_SIZE, +): SelectionSetSegments { // Regex is to split on singular periods and not fragments (... on TypeName) const pathNodes = fieldPath.split(/(?<=\w)\./); let outputStart = ''; let outputEnd = ''; + let shouldTruncate = false; + const truncatedNumber = pathNodes.length - limit * 2; + if (limit > 0 && pathNodes.length > limit * 2 + 1) { + // +1 so we always include the root field as the first selection + shouldTruncate = true; + pathNodes.splice(limit + 1, truncatedNumber - 1); + } for (let i = 0; i < pathNodes.length; i++) { + if (shouldTruncate && i === limit + 1) { + outputStart += LITERAL_SPACE.repeat(i + 1) + `... # and ${truncatedNumber} truncated selections\n`; + } outputStart += LITERAL_SPACE.repeat(i + 1) + pathNodes[i] + ` {\n`; outputEnd = LITERAL_SPACE.repeat(i + 1) + `}\n` + outputEnd; } diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index c966c632bf..c731aa506e 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -109,6 +109,7 @@ export type Costs = { export type FieldWeightConfiguration = { argumentWeights: Map; + directiveArgumentWeights: Map; fieldName: FieldName; typeName: TypeName; weight?: number; diff --git a/composition/src/schema-building/ast.ts b/composition/src/schema-building/ast.ts index 22d28dc253..22abf43e36 100644 --- a/composition/src/schema-building/ast.ts +++ b/composition/src/schema-building/ast.ts @@ -15,9 +15,20 @@ import { type StringValueNode, type TypeNode, } from 'graphql'; -import { formatDescription, stringToNameNode } from '../ast/utils'; -import { maximumTypeNestingExceededError, unexpectedTypeNodeKindFatalError } from '../errors/errors'; +import { extractExecutableDirectiveLocations, formatDescription, stringToNameNode } from '../ast/utils'; +import { + duplicateDirectiveDefinitionLocationError, + duplicateDirectiveDefinitionLocationErrorMessage, + invalidDirectiveDefinitionLocationError, + invalidDirectiveDefinitionLocationErrorMessage, + maximumTypeNestingExceededError, + unexpectedTypeNodeKindFatalError, +} from '../errors/errors'; import { MAXIMUM_TYPE_NESTING } from '../utils/integer-constants'; +import { EXECUTABLE_DIRECTIVE_LOCATIONS } from '../utils/string-constants'; +import { TYPE_SYSTEM_DIRECTIVE_LOCATIONS } from '../v1/constants/strings'; +import { type DirectiveLocation } from '../types/types'; +import { type ExtractDirectiveLocationsResult } from './types/results'; export type MutableDirectiveDefinitionNode = { arguments: MutableInputValueNode[]; @@ -28,17 +39,6 @@ export type MutableDirectiveDefinitionNode = { description?: StringValueNode; }; -export function getMutableDirectiveDefinitionNode(node: DirectiveDefinitionNode): MutableDirectiveDefinitionNode { - return { - arguments: [], - kind: node.kind, - locations: [], - name: { ...node.name }, - repeatable: node.repeatable, - description: formatDescription(node.description), - }; -} - export type MutableEnumNode = { kind: Kind.ENUM_TYPE_DEFINITION; name: NameNode; @@ -161,26 +161,6 @@ export function getMutableObjectNode(nameNode: NameNode): MutableObjectNode { }; } -export type MutableObjectExtensionNode = { - kind: Kind.OBJECT_TYPE_EXTENSION; - name: NameNode; - description?: StringValueNode; // @extends directive would allow for a description - directives?: ConstDirectiveNode[]; - fields?: FieldDefinitionNode[]; - interfaces?: NamedTypeNode[]; -}; - -export function getMutableObjectExtensionNode( - node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode, -): MutableObjectExtensionNode { - const description = node.kind === Kind.OBJECT_TYPE_DEFINITION ? node.description : undefined; - return { - kind: Kind.OBJECT_TYPE_EXTENSION, - name: { ...node.name }, - description: formatDescription(description), - }; -} - export type MutableScalarNode = { kind: Kind.SCALAR_TYPE_DEFINITION; name: NameNode; @@ -279,21 +259,42 @@ export type CompositeOutputNode = | ObjectTypeExtensionNode; export function getTypeNodeNamedTypeName(typeNode: TypeNode): string { - switch (typeNode.kind) { - case Kind.NAMED_TYPE: - return typeNode.name.value; - case Kind.LIST_TYPE: - // intentional fallthrough - case Kind.NON_NULL_TYPE: - return getTypeNodeNamedTypeName(typeNode.type); + if (typeNode.kind === Kind.NAMED_TYPE) { + return typeNode.name.value; } + return getTypeNodeNamedTypeName(typeNode.type); } export function getNamedTypeNode(typeNode: TypeNode): TypeNode { - switch (typeNode.kind) { - case Kind.NAMED_TYPE: - return typeNode; - default: - return getNamedTypeNode(typeNode.type); + if (typeNode.kind === Kind.NAMED_TYPE) { + return typeNode; + } + return getNamedTypeNode(typeNode.type); +} + +export function extractDirectiveLocations(node: DirectiveDefinitionNode): ExtractDirectiveLocationsResult { + const errors: Array = []; + const locations = new Set(); + const handledLocations = new Set(); + for (const locationNode of node.locations) { + const locationName = locationNode.value; + if (handledLocations.has(locationName)) { + continue; + } + if (!EXECUTABLE_DIRECTIVE_LOCATIONS.has(locationName) && !TYPE_SYSTEM_DIRECTIVE_LOCATIONS.has(locationName)) { + errors.push(invalidDirectiveDefinitionLocationError(locationName)); + handledLocations.add(locationName); + continue; + } + if (locations.has(locationName)) { + errors.push(duplicateDirectiveDefinitionLocationError(locationName)); + handledLocations.add(locationName); + continue; + } + locations.add(locationName); } + return { + errors, + locations, + }; } diff --git a/composition/src/schema-building/types/params.ts b/composition/src/schema-building/types/params.ts new file mode 100644 index 0000000000..70f4749882 --- /dev/null +++ b/composition/src/schema-building/types/params.ts @@ -0,0 +1,69 @@ +import { type StringValueNode, type TypeNode } from 'graphql'; +import { type DirectiveName, type InterfaceTypeName, type TypeName } from '../../types/types'; +import { + type EnumValueData, + type FieldData, + type InputValueData, + type NodeData, + type ParentDefinitionData, +} from './types'; +import type { MutableInputValueNode } from '../ast'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; + +export type IsTypeValidImplementationParams = { + concreteTypeNamesByAbstractTypeName: Map>; + implementationType: TypeNode; + interfaceImplementationTypeNamesByInterfaceTypeName: Map>; + originalType: TypeNode; +}; + +export type GetRouterFederatedDirectiveNodesParams = { + data: NodeData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; +}; + +export type GetValidArgumentNodesParams = { + data: DirectiveDefinitionData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; +}; + +export type DirectiveDefinitionNodeFromDataParams = { + data: DirectiveDefinitionData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; +}; + +export type SanitizeDefaultValueParams = { + data: DirectiveArgumentData | InputValueData; + namedTypeData: ParentDefinitionData; + node?: MutableInputValueNode; +}; + +export type RouterSchemaFieldNodeFromDataParams = { + argumentNodes: Array; + data: FieldData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; + description?: StringValueNode; +}; + +export type RouterSchemaInputValueNodeFromDataParams = { + data: DirectiveArgumentData | InputValueData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; + description?: StringValueNode; +}; + +export type RouterSchemaNodeFromDataParams = { + data: EnumValueData | ParentDefinitionData; + federatedDirectiveDataByName: Map; + parentDefinitionDataByTypeName: Map; + description?: StringValueNode; +}; + +export type CompareAndValidateInputDefaultValuesParams = { + existingData: DirectiveArgumentData | InputValueData; + incomingData: DirectiveArgumentData | InputValueData; +}; diff --git a/composition/src/schema-building/types/results.ts b/composition/src/schema-building/types/results.ts new file mode 100644 index 0000000000..ed1d1eb3ad --- /dev/null +++ b/composition/src/schema-building/types/results.ts @@ -0,0 +1,57 @@ +import { type ConstDirectiveNode, type DirectiveDefinitionNode } from 'graphql'; +import { type MutableEnumValueNode, type MutableFieldNode, type MutableInputValueNode } from '../ast'; +import { type ExecutionMultiFailure, type ExecutionSuccess } from '../../types/results'; +import { type MutableParentDefinitionNode } from './types'; +import { type DirectiveLocation } from '../../types/types'; +import { type Warning } from '../../warnings/types'; + +export interface GetFederatedDirectiveNodesSuccess extends ExecutionSuccess { + nodes: Array; + warnings: Array; +} + +export type GetFederatedDirectiveNodesResult = ExecutionMultiFailure | GetFederatedDirectiveNodesSuccess; + +export interface InputValueNodesSuccess extends ExecutionSuccess { + nodes: Array; + warnings: Array; +} + +export type InputValueNodesResult = ExecutionMultiFailure | InputValueNodesSuccess; + +export interface DirectiveDefinitionNodeSuccess extends ExecutionSuccess { + node: DirectiveDefinitionNode; +} + +export type DirectiveDefinitionNodeResult = ExecutionMultiFailure | DirectiveDefinitionNodeSuccess; + +export interface RouterSchemaFieldNodeFromDataSuccess extends ExecutionSuccess { + node: MutableFieldNode; + warnings: Array; +} + +export type RouterSchemaFieldNodeFromDataResult = ExecutionMultiFailure | RouterSchemaFieldNodeFromDataSuccess; + +export interface RouterSchemaInputValueNodeFromDataSuccess extends ExecutionSuccess { + node: MutableInputValueNode; + warnings: Array; +} + +export type RouterSchemaInputValueNodeFromDataResult = + | ExecutionMultiFailure + | RouterSchemaInputValueNodeFromDataSuccess; + +export interface RouterSchemaNodeFromDataSuccess + extends ExecutionSuccess { + node: T; + warnings: Array; +} + +export type RouterSchemaNodeFromDataResult = + | ExecutionMultiFailure + | RouterSchemaNodeFromDataSuccess; + +export type ExtractDirectiveLocationsResult = { + errors: Array; + locations: Set; +}; diff --git a/composition/src/schema-building/types.ts b/composition/src/schema-building/types/types.ts similarity index 83% rename from composition/src/schema-building/types.ts rename to composition/src/schema-building/types/types.ts index 7861f0e540..eec1c2b8c9 100644 --- a/composition/src/schema-building/types.ts +++ b/composition/src/schema-building/types/types.ts @@ -1,14 +1,12 @@ import { type ConstDirectiveNode, type ConstValueNode, - type DirectiveDefinitionNode, type DocumentNode, type Kind, type NamedTypeNode, type OperationTypeDefinitionNode, type OperationTypeNode, type StringValueNode, - type TypeNode, } from 'graphql'; import { type MutableEnumNode, @@ -21,34 +19,24 @@ import { type MutableScalarNode, type MutableTypeNode, type MutableUnionNode, -} from './ast'; -import { type FieldSetConditionData } from '../router-configuration/types'; -import { type KeyFieldSetData } from '../v1/normalization/types'; -import { type InputNodeKind, type OutputNodeKind } from '../utils/types'; -import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../types/types'; - -export type ArgumentData = { - name: string; - typeNode: TypeNode; - defaultValue?: ConstValueNode; -}; +} from '../ast'; +import { type FieldSetConditionData } from '../../router-configuration/types'; +import { type KeyFieldSetData } from '../../v1/normalization/types/types'; +import { type InputNodeKind, type OutputNodeKind } from '../../utils/types'; +import { + type ArgumentName, + type DirectiveName, + type FieldName, + type SubgraphName, + type TypeName, +} from '../../types/types'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; export type ConfigureDescriptionData = { propagate: boolean; description: string; }; -export type DirectiveDefinitionData = { - argumentTypeNodeByName: Map; - isRepeatable: boolean; - locations: Set; - name: string; - node: DirectiveDefinitionNode; - // required arguments with a default value are considered optional - optionalArgumentNames: Set; - requiredArgumentNames: Set; -}; - export enum ExtensionType { EXTENDS, NONE, @@ -65,7 +53,7 @@ export type EnumDefinitionData = { kind: Kind.ENUM_TYPE_DEFINITION; name: string; node: MutableEnumNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; subgraphNames: Set; description?: StringValueNode; }; @@ -79,7 +67,7 @@ export type EnumValueData = { name: string; node: MutableEnumValueNode; parentTypeName: TypeName; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; subgraphNames: Set; description?: StringValueNode; }; @@ -95,7 +83,7 @@ export type ExternalFieldData = { }; export type FieldData = { - argumentDataByName: Map; + argumentDataByName: Map; configureDescriptionDataBySubgraphName: Map; directivesByName: Map>; externalFieldDataBySubgraphName: Map; @@ -110,7 +98,7 @@ export type FieldData = { node: MutableFieldNode; nullLevelsBySubgraphName: Map>; originalParentTypeName: TypeName; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; renamedParentTypeName: TypeName; subgraphNames: Set; type: MutableTypeNode; @@ -126,7 +114,7 @@ export type InputObjectDefinitionData = { kind: Kind.INPUT_OBJECT_TYPE_DEFINITION; name: TypeName; node: MutableInputObjectNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; subgraphNames: Set; description?: StringValueNode; }; @@ -144,7 +132,7 @@ export type InputValueData = { node: MutableInputValueNode; originalCoords: string; originalParentTypeName: TypeName; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; renamedParentTypeName: TypeName; requiredSubgraphNames: Set; subgraphNames: Set; @@ -165,7 +153,7 @@ export type InterfaceDefinitionData = { kind: Kind.INTERFACE_TYPE_DEFINITION; name: TypeName; node: MutableInterfaceNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; requireFetchReasonsFieldNames: Set; subgraphNames: Set; description?: StringValueNode; @@ -183,23 +171,14 @@ export type ObjectDefinitionData = { kind: Kind.OBJECT_TYPE_DEFINITION; name: TypeName; node: MutableObjectNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; renamedTypeName: TypeName; requireFetchReasonsFieldNames: Set; subgraphNames: Set; description?: StringValueNode; }; -export type PersistedDirectiveDefinitionData = { - argumentDataByName: Map; - executableLocations: Set; - name: DirectiveName; - repeatable: boolean; - subgraphNames: Set; - description?: StringValueNode; -}; - -export type PersistedDirectivesData = { +export type FederatedDirectivesData = { deprecatedReason: string; directivesByName: Map>; isDeprecated: boolean; @@ -213,7 +192,7 @@ export type ScalarDefinitionData = { kind: Kind.SCALAR_TYPE_DEFINITION; name: TypeName; node: MutableScalarNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; subgraphNames: Set; description?: StringValueNode; }; @@ -234,7 +213,7 @@ export type UnionDefinitionData = { name: TypeName; memberByMemberTypeName: Map; node: MutableUnionNode; - persistedDirectivesData: PersistedDirectivesData; + federatedDirectivesData: FederatedDirectivesData; subgraphNames: Set; description?: StringValueNode; }; @@ -252,6 +231,8 @@ export type ChildData = EnumValueData | FieldData | InputValueData; export type CompositeOutputData = InterfaceDefinitionData | ObjectDefinitionData; export type DefinitionData = + | DirectiveArgumentData + | DirectiveDefinitionData | EnumDefinitionData | EnumValueData | FieldData @@ -259,11 +240,10 @@ export type DefinitionData = | InputValueData | InterfaceDefinitionData | ObjectDefinitionData - | PersistedDirectiveDefinitionData | ScalarDefinitionData | UnionDefinitionData; -export type NodeData = ParentDefinitionData | ChildData; +export type NodeData = ChildData | ParentDefinitionData | DirectiveArgumentData; export type EntityData = { // If propagated in documentNodeByKeyFieldSet, at least one subgraph defines a resolvable key with this field set. @@ -328,3 +308,11 @@ export type EntityInterfaceFederationData = { subgraphDataByTypeName: Map; typeName: TypeName; }; + +export type MutableParentDefinitionNode = + | MutableEnumNode + | MutableInputObjectNode + | MutableInterfaceNode + | MutableObjectNode + | MutableScalarNode + | MutableUnionNode; diff --git a/composition/src/schema-building/utils.ts b/composition/src/schema-building/utils.ts index 82ed3be440..47440b9059 100644 --- a/composition/src/schema-building/utils.ts +++ b/composition/src/schema-building/utils.ts @@ -3,8 +3,6 @@ import { type ConstDirectiveNode, type ConstValueNode, DEFAULT_DEPRECATION_REASON, - type DefinitionNode, - type DirectiveDefinitionNode, type EnumValueDefinitionNode, type EnumValueNode, type FieldDefinitionNode, @@ -17,6 +15,7 @@ import { print, type StringValueNode, type TypeNode, + visit, } from 'graphql'; import { type AuthorizationData, @@ -24,26 +23,28 @@ import { type CompositeOutputData, type ConditionalFieldData, type DefinitionData, + type EnumDefinitionData, + type EnumValueData, ExtensionType, type ExternalFieldData, + type FederatedDirectivesData, type FieldData, type InputObjectDefinitionData, - type InputValueData, type InterfaceDefinitionData, type NodeData, type ObjectDefinitionData, type ParentDefinitionData, - type PersistedDirectiveDefinitionData, - type PersistedDirectivesData, type SchemaData, -} from './types'; -import { type MutableDefinitionNode, type MutableFieldNode, type MutableInputValueNode } from './ast'; -import { type ObjectTypeNode, setToNameNodeArray, stringToNameNode } from '../ast/utils'; +} from './types/types'; +import { type MutableFieldNode, type MutableInputValueNode } from './ast'; import { - incompatibleInputValueDefaultValuesError, - invalidRepeatedFederatedDirectiveErrorMessage, - invalidRequiredInputValueError, -} from '../errors/errors'; + type InterfaceTypeNode, + type ObjectTypeNode, + type ParentTypeNode, + setToNameNodeArray, + stringToNameNode, +} from '../ast/utils'; +import { incompatibleInputValueDefaultValuesError, invalidRequiredInputValueError } from '../errors/errors'; import { type SubscriptionFilterValue } from '../router-configuration/types'; import { ARGUMENT, @@ -58,6 +59,7 @@ import { INPUT_FIELD, INPUT_NODE_KINDS, INT_SCALAR, + INTERFACE_NODE_KINDS, MUTATION, OUTPUT_NODE_KINDS, PERSISTED_CLIENT_DIRECTIVES, @@ -80,8 +82,33 @@ import { import { type InputNodeKind, type InvalidRequiredInputValueData, type OutputNodeKind } from '../utils/types'; import { getDescriptionFromString } from '../v1/federation/utils'; import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../types/types'; - -export function newPersistedDirectivesData(): PersistedDirectivesData { +import { + type CompareAndValidateInputDefaultValuesParams, + type DirectiveDefinitionNodeFromDataParams, + type GetRouterFederatedDirectiveNodesParams, + type GetValidArgumentNodesParams, + type IsTypeValidImplementationParams, + type RouterSchemaFieldNodeFromDataParams, + type RouterSchemaInputValueNodeFromDataParams, + type RouterSchemaNodeFromDataParams, + type SanitizeDefaultValueParams, +} from './types/params'; +import { + type GetFederatedDirectiveNodesResult, + type InputValueNodesResult, + type RouterSchemaFieldNodeFromDataResult, + type RouterSchemaInputValueNodeFromDataResult, + type RouterSchemaNodeFromDataResult, +} from './types/results'; +import { validateDirectives } from '../validation/validation'; +import { type ExecutionMultiResult, type ExecutionSingleFailureResult } from '../types/results'; +import { type DirectiveArgumentData } from '../directive-definition-data/types/types'; +import { type Warning } from '../warnings/types'; +import { invalidRepeatedComposedDirectiveWarning } from '../v1/warnings/warnings'; +import { FEDERATED_DIRECTIVE_DATAS } from '../v1/normalization/utils'; +import { ROUTER_FEDERATED_DIRECTIVE_NAMES } from '../v1/constants/strings'; + +export function newFederatedDirectivesData(): FederatedDirectivesData { return { deprecatedReason: '', directivesByName: new Map>(), @@ -164,47 +191,41 @@ export function areDefaultValuesCompatible(typeNode: TypeNode, incomingDefaultVa } } -export function compareAndValidateInputValueDefaultValues( - existingData: InputValueData, - incomingData: InputValueData, - errors: Error[], -) { +export function compareAndValidateInputDefaultValues({ + existingData, + incomingData, +}: CompareAndValidateInputDefaultValuesParams): ExecutionSingleFailureResult { if (!existingData.defaultValue) { // TODO warning if default value in incoming - return; + return { + success: true, + }; } if (!incomingData.defaultValue) { // TODO warning existingData.includeDefaultValue = false; - return; + return { + success: true, + }; } const existingDefaultValueString = print(existingData.defaultValue); const incomingDefaultValueString = print(incomingData.defaultValue); - if (existingDefaultValueString !== incomingDefaultValueString) { - errors.push( - incompatibleInputValueDefaultValuesError( - `${existingData.isArgument ? ARGUMENT : INPUT_FIELD} "${existingData.name}"`, - existingData.originalCoords, - [...incomingData.subgraphNames], - existingDefaultValueString, - incomingDefaultValueString, - ), - ); - return; + if (existingDefaultValueString == incomingDefaultValueString) { + return { + success: true, + }; } -} -export function setMutualExecutableLocations( - persistedDirectiveDefinitionData: PersistedDirectiveDefinitionData, - incomingExecutableLocations: Set, -) { - const mutualExecutableLocations = new Set(); - for (const incomingExecutableLocation of incomingExecutableLocations) { - if (persistedDirectiveDefinitionData.executableLocations.has(incomingExecutableLocation)) { - mutualExecutableLocations.add(incomingExecutableLocation); - } - } - persistedDirectiveDefinitionData.executableLocations = mutualExecutableLocations; + return { + error: incompatibleInputValueDefaultValuesError( + `${existingData.kind === Kind.ARGUMENT ? ARGUMENT : INPUT_FIELD} "${existingData.name}"`, + existingData.originalCoords, + [...incomingData.subgraphNames], + existingDefaultValueString, + incomingDefaultValueString, + ), + success: false, + }; } export function isTypeNameRootType(typeName: string, operationByTypeName: Map) { @@ -321,7 +342,7 @@ export function setParentDataExtensionType(existingData: ParentDefinitionData, i } export function upsertDeprecatedDirective( - persistedDirectivesData: PersistedDirectivesData, + federatedDirectivesData: FederatedDirectivesData, incomingDirectiveNode: ConstDirectiveNode, ) { if (!incomingDirectiveNode.arguments?.length) { @@ -329,19 +350,19 @@ export function upsertDeprecatedDirective( } // The argument was already validated in the normalization factory, so it can be safely cast const incomingReasonString = (incomingDirectiveNode.arguments[0].value as StringValueNode).value; - if (persistedDirectivesData.deprecatedReason.length < incomingReasonString.length) { - persistedDirectivesData.deprecatedReason = incomingReasonString; + if (federatedDirectivesData.deprecatedReason.length < incomingReasonString.length) { + federatedDirectivesData.deprecatedReason = incomingReasonString; } } export function upsertTagDirectives( - persistedDirectivesData: PersistedDirectivesData, + federatedDirectivesData: FederatedDirectivesData, incomingDirectiveNodes: ConstDirectiveNode[], ) { for (const incomingDirectiveNode of incomingDirectiveNodes) { // The argument was already validated in the normalization factory, so it can be safely cast const incomingNameString = (incomingDirectiveNode.arguments![0].value as StringValueNode).value; - persistedDirectivesData.tagDirectiveByName.set(incomingNameString, incomingDirectiveNode); + federatedDirectivesData.tagDirectiveByName.set(incomingNameString, incomingDirectiveNode); } } @@ -350,10 +371,10 @@ export function propagateAuthDirectives(parentData: ParentDefinitionData, authDa return; } if (authData.requiresAuthentication) { - parentData.persistedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]); + parentData.federatedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]); } if (authData.requiredScopes.length > 0) { - parentData.persistedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [ + parentData.federatedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [ generateRequiresScopesDirective(authData.requiredScopes), ]); } @@ -368,10 +389,10 @@ export function propagateFieldAuthDirectives(fieldData: FieldData, authData?: Au return; } if (fieldAuthData.originalData.requiresAuthentication) { - fieldData.persistedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]); + fieldData.federatedDirectivesData.directivesByName.set(AUTHENTICATED, [generateSimpleDirective(AUTHENTICATED)]); } if (fieldAuthData.originalData.requiredScopes.length > 0) { - fieldData.persistedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [ + fieldData.federatedDirectivesData.directivesByName.set(REQUIRES_SCOPES, [ generateRequiresScopesDirective(fieldAuthData.originalData.requiredScopes), ]); } @@ -394,57 +415,126 @@ export function generateDeprecatedDirective(reason: string): ConstDirectiveNode }; } -function getValidFlattenedPersistedDirectiveNodeArray( - directivesByName: Map>, - persistedDirectiveDefinitionByName: Map, - directiveCoords: string, - errors: Error[], -): ConstDirectiveNode[] { - const persistedDirectiveNodes: Array = []; - for (const [directiveName, directiveNodes] of directivesByName) { - const persistedDirectiveDefinition = persistedDirectiveDefinitionByName.get(directiveName); - if (!persistedDirectiveDefinition) { +export function getNodeCoords(data: NodeData): string { + switch (data.kind) { + case Kind.ARGUMENT: + // Intentional fallthrough + case Kind.FIELD_DEFINITION: + // Intentional fallthrough + case Kind.INPUT_VALUE_DEFINITION: + // Intentional fallthrough + case Kind.ENUM_VALUE_DEFINITION: { + return data.federatedCoords; + } + default: { + return data.name; + } + } +} + +export function extractUniqueDirectiveNodes(directiveNodes: Array): Array { + const nodes: Array = []; + const printedNodes = new Set(); + for (const directiveNode of directiveNodes) { + const directive = print(directiveNode); + if (printedNodes.has(directive)) { + continue; + } + printedNodes.add(directive); + nodes.push(directiveNode); + } + return nodes; +} + +export function getRouterSchemaDirectiveNodes({ + data, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: GetRouterFederatedDirectiveNodesParams): GetFederatedDirectiveNodesResult { + const nodes = [...data.federatedDirectivesData.tagDirectiveByName.values()]; + if (data.federatedDirectivesData.isDeprecated) { + nodes.push(generateDeprecatedDirective(data.federatedDirectivesData.deprecatedReason)); + } + const coords = getNodeCoords(data); + const errors: Array = []; + const warnings: Array = []; + for (const [directiveName, directiveNodes] of data.federatedDirectivesData.directivesByName) { + if (directiveName === SEMANTIC_NON_NULL && isFieldData(data)) { + nodes.push( + generateSemanticNonNullDirective(getFirstEntry(data.nullLevelsBySubgraphName) ?? new Set([0])), + ); + continue; + } + const directiveData = federatedDirectiveDataByName.get(directiveName); + if (!directiveData) { continue; } + + // Executable directives are propagated but not their in-schema usages + if (!directiveData.isComposed && !ROUTER_FEDERATED_DIRECTIVE_NAMES.has(directiveName)) { + continue; + } + /* The Apollo behaviour is that composed directive must be referenced within at least one composing subgraph else + * no usages are propagated into the federated graph. + * It's likely this behaviour is a bug, but it's mirrored here for consistency. + */ + if (directiveData.isComposed && !directiveData.isReferenced) { + continue; + } + if (directiveNodes.length < 2) { - persistedDirectiveNodes.push(...directiveNodes); + nodes.push(...directiveNodes); continue; } - if (!persistedDirectiveDefinition.repeatable) { - errors.push(invalidRepeatedFederatedDirectiveErrorMessage(directiveName, directiveCoords)); + + const uniqueDirectiveNodes = extractUniqueDirectiveNodes(directiveNodes); + const validationResult = validateDirectives({ + data, + directiveCoords: coords, + directiveDefinitionData: directiveData, + directiveNodes: uniqueDirectiveNodes, + parentDefinitionDataByTypeName, + }); + if (!validationResult.success) { + errors.push(...validationResult.errors); continue; } - persistedDirectiveNodes.push(...directiveNodes); + + if (uniqueDirectiveNodes.length > 1 && directiveData.isComposed && !directiveData.isRepeatable) { + warnings.push( + invalidRepeatedComposedDirectiveWarning({ + directiveCoords: coords, + directiveName, + printedDirective: print(uniqueDirectiveNodes[0]), + }), + ); + nodes.push(uniqueDirectiveNodes[0]); + continue; + } + + nodes.push(...uniqueDirectiveNodes); } - return persistedDirectiveNodes; -} -function getRouterPersistedDirectiveNodes( - nodeData: T, - persistedDirectiveDefinitionByName: Map, - errors: Error[], -): ConstDirectiveNode[] { - const persistedDirectiveNodes = [...nodeData.persistedDirectivesData.tagDirectiveByName.values()]; - if (nodeData.persistedDirectivesData.isDeprecated) { - persistedDirectiveNodes.push(generateDeprecatedDirective(nodeData.persistedDirectivesData.deprecatedReason)); - } - persistedDirectiveNodes.push( - ...getValidFlattenedPersistedDirectiveNodeArray( - nodeData.persistedDirectivesData.directivesByName, - persistedDirectiveDefinitionByName, - nodeData.name, + if (errors.length > 0) { + return { errors, - ), - ); - return persistedDirectiveNodes; + success: false, + }; + } + + return { + nodes, + success: true, + warnings, + }; } -export function getClientPersistedDirectiveNodes(nodeData: T): ConstDirectiveNode[] { +export function getClientFederatedDirectiveNodes(nodeData: T): ConstDirectiveNode[] { const persistedDirectiveNodes: Array = []; - if (nodeData.persistedDirectivesData.isDeprecated) { - persistedDirectiveNodes.push(generateDeprecatedDirective(nodeData.persistedDirectivesData.deprecatedReason)); + if (nodeData.federatedDirectivesData.isDeprecated) { + persistedDirectiveNodes.push(generateDeprecatedDirective(nodeData.federatedDirectivesData.deprecatedReason)); } - for (const [directiveName, directiveNodes] of nodeData.persistedDirectivesData.directivesByName) { + for (const [directiveName, directiveNodes] of nodeData.federatedDirectivesData.directivesByName) { if (directiveName === SEMANTIC_NON_NULL && isFieldData(nodeData)) { persistedDirectiveNodes.push( generateSemanticNonNullDirective(getFirstEntry(nodeData.nullLevelsBySubgraphName) ?? new Set([0])), @@ -464,7 +554,7 @@ export function getClientPersistedDirectiveNodes(nodeData: T } export function getClientSchemaFieldNodeByFieldData(fieldData: FieldData): MutableFieldNode { - const directives = getClientPersistedDirectiveNodes(fieldData); + const directives = getClientFederatedDirectiveNodes(fieldData); const argumentNodes: MutableInputValueNode[] = []; for (const inputValueData of fieldData.argumentDataByName.values()) { if (isNodeDataInaccessible(inputValueData)) { @@ -472,7 +562,7 @@ export function getClientSchemaFieldNodeByFieldData(fieldData: FieldData): Mutab } argumentNodes.push({ ...inputValueData.node, - directives: getClientPersistedDirectiveNodes(inputValueData), + directives: getClientFederatedDirectiveNodes(inputValueData), }); } return { @@ -482,35 +572,102 @@ export function getClientSchemaFieldNodeByFieldData(fieldData: FieldData): Mutab }; } -export function getNodeWithPersistedDirectivesByInputValueData( - inputValueData: InputValueData, - persistedDirectiveDefinitionByDirectiveName: Map, - errors: Error[], -): MutableInputValueNode { - inputValueData.node.name = stringToNameNode(inputValueData.name); - inputValueData.node.type = inputValueData.type; - inputValueData.node.description = inputValueData.description; - inputValueData.node.directives = getRouterPersistedDirectiveNodes( - inputValueData, - persistedDirectiveDefinitionByDirectiveName, - errors, - ); - if (inputValueData.includeDefaultValue) { - inputValueData.node.defaultValue = inputValueData.defaultValue; - } - return inputValueData.node; -} - -function addValidatedArgumentNodes( - argumentNodes: MutableInputValueNode[], - hostData: PersistedDirectiveDefinitionData, - persistedDirectiveDefinitionByDirectiveName: Map, - errors: Error[], - argumentNamesForFieldConfiguration?: Set, -): boolean { - const invalidRequiredArgumentErrors: InvalidRequiredInputValueData[] = []; - for (const [argumentName, argumentData] of hostData.argumentDataByName) { - const missingSubgraphs = getEntriesNotInHashSet(hostData.subgraphNames, argumentData.subgraphNames); +export function routerSchemaFieldNodeFromData({ + argumentNodes, + data, + description, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: RouterSchemaFieldNodeFromDataParams): RouterSchemaFieldNodeFromDataResult { + data.node.arguments = argumentNodes; + data.node.description = description; + data.node.name = stringToNameNode(data.name); + data.node.type = data.type; + const directivesResult = getRouterSchemaDirectiveNodes({ + federatedDirectiveDataByName, + data: data, + parentDefinitionDataByTypeName, + }); + if (!directivesResult.success) { + return directivesResult; + } + + data.node.directives = directivesResult.nodes; + + return { + node: data.node, + success: true, + warnings: directivesResult.warnings, + }; +} + +export function routerSchemaInputValueNodeFromData({ + data, + description, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: RouterSchemaInputValueNodeFromDataParams): RouterSchemaInputValueNodeFromDataResult { + data.node.description = description; + data.node.name = stringToNameNode(data.name); + data.node.type = data.type; + if (data.includeDefaultValue) { + data.node.defaultValue = data.defaultValue; + } + const directivesResult = getRouterSchemaDirectiveNodes({ + data, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, + }); + if (!directivesResult.success) { + return directivesResult; + } + + data.node.directives = directivesResult.nodes; + + return { + node: data.node, + success: true, + warnings: directivesResult.warnings, + }; +} + +export function routerSchemaNodeFromData({ + data, + description, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: RouterSchemaNodeFromDataParams): RouterSchemaNodeFromDataResult { + data.node.description = description; + data.node.name = stringToNameNode(data.name); + const directivesResult = getRouterSchemaDirectiveNodes({ + federatedDirectiveDataByName, + data: data, + parentDefinitionDataByTypeName, + }); + if (!directivesResult.success) { + return directivesResult; + } + + data.node.directives = directivesResult.nodes; + + return { + node: data.node, + success: true, + warnings: directivesResult.warnings, + }; +} + +function getValidFederatedDirectiveArgumentNodes({ + data, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: GetValidArgumentNodesParams): InputValueNodesResult { + const errors: Array = []; + const warnings: Array = []; + const invalidRequiredArgumentErrors: Array = []; + const nodes: Array = []; + for (const [argumentName, argumentData] of data.argumentDataByName) { + const missingSubgraphs = getEntriesNotInHashSet(data.subgraphNames, argumentData.subgraphNames); if (missingSubgraphs.length > 0) { // Required arguments must be defined in all subgraphs that define the field if (argumentData.requiredSubgraphNames.size > 0) { @@ -522,42 +679,68 @@ function addValidatedArgumentNodes( } /* If the argument is always optional, but it's not defined in all subgraphs that define the field, the argument should not be included in the federated graph */ + data.optionalArgumentNames.delete(argumentName); continue; } - argumentNodes.push( - getNodeWithPersistedDirectivesByInputValueData(argumentData, persistedDirectiveDefinitionByDirectiveName, errors), - ); - if (argumentNamesForFieldConfiguration) { - argumentNamesForFieldConfiguration.add(argumentName); + + const argNodeResult = routerSchemaInputValueNodeFromData({ + data: argumentData, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, + }); + if (!argNodeResult.success) { + errors.push(...argNodeResult.errors); + continue; } + + nodes.push(argNodeResult.node); + warnings.push(...argNodeResult.warnings); } + if (invalidRequiredArgumentErrors.length > 0) { - errors.push( - invalidRequiredInputValueError(DIRECTIVE_DEFINITION, `@${hostData.name}`, invalidRequiredArgumentErrors), - ); - return false; + errors.push(invalidRequiredInputValueError(DIRECTIVE_DEFINITION, `@${data.name}`, invalidRequiredArgumentErrors)); } - return true; + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + nodes, + success: true, + warnings, + }; } -export function addValidPersistedDirectiveDefinitionNodeByData( - definitions: (MutableDefinitionNode | DefinitionNode)[], - data: PersistedDirectiveDefinitionData, - persistedDirectiveDefinitionByDirectiveName: Map, - errors: Error[], -) { - const argumentNodes: MutableInputValueNode[] = []; - if (!addValidatedArgumentNodes(argumentNodes, data, persistedDirectiveDefinitionByDirectiveName, errors)) { - return; +export function propagateDirectiveDefinitionNodeFromData({ + data, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, +}: DirectiveDefinitionNodeFromDataParams): ExecutionMultiResult { + const argumentNodesResult = getValidFederatedDirectiveArgumentNodes({ + data, + federatedDirectiveDataByName, + parentDefinitionDataByTypeName, + }); + if (!argumentNodesResult.success) { + return argumentNodesResult; } - definitions.push({ - arguments: argumentNodes, + + data.node = { + arguments: argumentNodesResult.nodes, kind: Kind.DIRECTIVE_DEFINITION, - locations: setToNameNodeArray(data.executableLocations), + locations: setToNameNodeArray(data.locations), name: stringToNameNode(data.name), - repeatable: data.repeatable, + repeatable: data.isRepeatable, description: data.description, - }); + }; + + return { + success: true, + }; } type InvalidFieldNames = { @@ -620,19 +803,30 @@ export enum MergeMethod { CONSISTENT, } -export function isTypeValidImplementation( - originalType: TypeNode, - implementationType: TypeNode, - concreteTypeNamesByAbstractTypeName: Map>, -): boolean { +export function isTypeValidImplementation({ + concreteTypeNamesByAbstractTypeName, + implementationType, + interfaceImplementationTypeNamesByInterfaceTypeName, + originalType, +}: IsTypeValidImplementationParams): boolean { if (originalType.kind === Kind.NON_NULL_TYPE) { if (implementationType.kind !== Kind.NON_NULL_TYPE) { return false; } - return isTypeValidImplementation(originalType.type, implementationType.type, concreteTypeNamesByAbstractTypeName); + return isTypeValidImplementation({ + concreteTypeNamesByAbstractTypeName, + implementationType: implementationType.type, + interfaceImplementationTypeNamesByInterfaceTypeName, + originalType: originalType.type, + }); } if (implementationType.kind === Kind.NON_NULL_TYPE) { - return isTypeValidImplementation(originalType, implementationType.type, concreteTypeNamesByAbstractTypeName); + return isTypeValidImplementation({ + concreteTypeNamesByAbstractTypeName, + implementationType: implementationType.type, + interfaceImplementationTypeNamesByInterfaceTypeName, + originalType, + }); } switch (originalType.kind) { case Kind.NAMED_TYPE: @@ -642,27 +836,26 @@ export function isTypeValidImplementation( if (originalTypeName === implementationTypeName) { return true; } + const abstractTypes = interfaceImplementationTypeNamesByInterfaceTypeName.get(originalTypeName); const concreteTypes = concreteTypeNamesByAbstractTypeName.get(originalTypeName); - if (!concreteTypes) { - return false; - } - return concreteTypes.has(implementationTypeName); + return !!(concreteTypes?.has(implementationTypeName) || abstractTypes?.has(implementationTypeName)); } return false; default: if (implementationType.kind === Kind.LIST_TYPE) { - return isTypeValidImplementation( - originalType.type, - implementationType.type, + return isTypeValidImplementation({ concreteTypeNamesByAbstractTypeName, - ); + implementationType: implementationType.type, + interfaceImplementationTypeNamesByInterfaceTypeName, + originalType: originalType.type, + }); } return false; } } export function isNodeDataInaccessible(data: NodeData): boolean { - return data.persistedDirectivesData.directivesByName.has(INACCESSIBLE) || data.directivesByName.has(INACCESSIBLE); + return data.federatedDirectivesData.directivesByName.has(INACCESSIBLE) || data.directivesByName.has(INACCESSIBLE); } export function isLeafKind(kind: Kind): boolean { @@ -745,7 +938,7 @@ export function newExternalFieldData(isDefinedExternal: boolean): ExternalFieldD }; } -export function getInitialFederatedDescription(data: NodeData): StringValueNode | undefined { +export function getInitialFederatedDescription(data: NodeData | DirectiveArgumentData): StringValueNode | undefined { const { value, done } = data.configureDescriptionDataBySubgraphName.values().next(); if (done) { return data.description; @@ -775,3 +968,36 @@ export function isInputNodeKind(kind: Kind): kind is InputNodeKind { export function isOutputNodeKind(kind: Kind): kind is OutputNodeKind { return OUTPUT_NODE_KINDS.has(kind); } + +export function isInterfaceNode(node: ParentTypeNode): node is InterfaceTypeNode { + return INTERFACE_NODE_KINDS.has(node.kind); +} + +export function isEnumData(data: ParentDefinitionData): data is EnumDefinitionData { + return data.kind === Kind.ENUM_TYPE_DEFINITION; +} + +export function sanitizeDefaultValue({ data, namedTypeData, node }: SanitizeDefaultValueParams) { + if (!data.defaultValue) { + return; + } + + if (!isEnumData(namedTypeData)) { + return; + } + + data.defaultValue = visit(data.defaultValue, { + StringValue: { + enter(node) { + return { + kind: Kind.ENUM, + value: node.value, + }; + }, + }, + }); + + if (node) { + node.defaultValue = data.defaultValue; + } +} diff --git a/composition/src/subgraph/types.ts b/composition/src/subgraph/types.ts index 768916ab41..ee2b001c5f 100644 --- a/composition/src/subgraph/types.ts +++ b/composition/src/subgraph/types.ts @@ -11,9 +11,15 @@ import { type ConditionalFieldData, type EntityInterfaceSubgraphData, type ParentDefinitionData, - type PersistedDirectiveDefinitionData, -} from '../schema-building/types'; -import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../types/types'; +} from '../schema-building/types/types'; +import { + type AbstractTypeName, + type DirectiveName, + type FieldName, + type SubgraphName, + type TypeName, +} from '../types/types'; +import { type DirectiveDefinitionData } from '../directive-definition-data/types/types'; // Properties are sorted alphabetically, optionals are last. @@ -34,20 +40,19 @@ export type SubgraphConfig = { }; export type InternalSubgraph = { - conditionalFieldDataByCoordinates: Map; + conditionalFieldDataByCoords: Map; configurationDataByTypeName: Map; definitions: DocumentNode; directiveDefinitionByName: Map; - entityInterfaces: Map; + entityInterfaceSubgraphDataByTypeName: Map; + federatedDirectiveDataByName: Map; isVersionTwo: boolean; keyFieldNamesByParentTypeName: Map>; name: SubgraphName; operationTypes: Map; overriddenFieldNamesByParentTypeName: Map>; parentDefinitionDataByTypeName: Map; - persistedDirectiveDefinitionDataByDirectiveName: Map; schema: GraphQLSchema; - url: string; costs?: Costs; schemaNode?: SchemaDefinitionNode | SchemaExtensionNode; }; diff --git a/composition/src/subgraph/types/params.ts b/composition/src/subgraph/types/params.ts new file mode 100644 index 0000000000..b270dce3f2 --- /dev/null +++ b/composition/src/subgraph/types/params.ts @@ -0,0 +1,7 @@ +import { type NormalizationSuccess } from '../../normalization/types'; +import { type SubgraphName } from '../../types/types'; + +export type InternalSubgraphFromNormalizationParams = { + normalization: NormalizationSuccess; + subgraphName: SubgraphName; +}; diff --git a/composition/src/subgraph/utils.ts b/composition/src/subgraph/utils.ts new file mode 100644 index 0000000000..81835ae559 --- /dev/null +++ b/composition/src/subgraph/utils.ts @@ -0,0 +1,26 @@ +import { type InternalSubgraph } from './types'; +import type { FieldName, TypeName } from '../types/types'; +import { type InternalSubgraphFromNormalizationParams } from './types/params'; + +export function internalSubgraphFromNormalization({ + normalization, + subgraphName, +}: InternalSubgraphFromNormalizationParams): InternalSubgraph { + return { + conditionalFieldDataByCoords: normalization.conditionalFieldDataByCoordinates, + configurationDataByTypeName: normalization.configurationDataByTypeName, + costs: normalization.costs, + definitions: normalization.subgraphAST, + directiveDefinitionByName: normalization.directiveDefinitionByName, + entityInterfaceSubgraphDataByTypeName: normalization.entityInterfaces, + federatedDirectiveDataByName: normalization.federatedDirectiveDataByName, + isVersionTwo: normalization.isVersionTwo, + keyFieldNamesByParentTypeName: normalization.keyFieldNamesByParentTypeName, + name: subgraphName, + operationTypes: normalization.operationTypes, + overriddenFieldNamesByParentTypeName: new Map>(), + parentDefinitionDataByTypeName: normalization.parentDefinitionDataByTypeName, + schema: normalization.schema, + schemaNode: normalization.schemaNode, + }; +} diff --git a/composition/src/types/results.ts b/composition/src/types/results.ts new file mode 100644 index 0000000000..4accd80bdc --- /dev/null +++ b/composition/src/types/results.ts @@ -0,0 +1,19 @@ +export interface ExecutionFailure { + success: false; +} + +export interface ExecutionMultiFailure extends ExecutionFailure { + errors: Array; +} + +export interface ExecutionSingleFailure extends ExecutionFailure { + error: Error; +} + +export interface ExecutionSuccess { + success: true; +} + +export type ExecutionMultiResult = ExecutionMultiFailure | ExecutionSuccess; + +export type ExecutionSingleFailureResult = ExecutionSingleFailure | ExecutionSuccess; diff --git a/composition/src/types/types.ts b/composition/src/types/types.ts index df5c879836..21c3a291cb 100644 --- a/composition/src/types/types.ts +++ b/composition/src/types/types.ts @@ -1,16 +1,24 @@ +export type AbstractTypeName = TypeName; + export type ArgumentName = string; export type ContractName = string; +export type Directive = `@${DirectiveName}`; + // {DirectiveName}.{ArgumentName} export type DirectiveArgumentCoords = string; +export type DirectiveLocation = string; + export type DirectiveName = string; export type FieldName = string; export type FieldCoords = string; +export type InterfaceTypeName = string; + export type SubgraphName = string; export type TypeName = string; diff --git a/composition/src/utils/params.ts b/composition/src/utils/params.ts index 08d3138e98..1b67392afa 100644 --- a/composition/src/utils/params.ts +++ b/composition/src/utils/params.ts @@ -12,3 +12,8 @@ export type AddMapEntriesParams = { source: Map; target: Map; }; + +export type MergeSetValueMapParams = { + source: Map>; + target: Map>; +}; diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 04adfbe939..92dacd6029 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -1,5 +1,5 @@ import { Kind } from 'graphql'; -import { type DirectiveName } from '../types/types'; +import { type DirectiveName, type FieldName } from '../types/types'; export const AS = 'as'; export const ASSUMED_SIZE = 'assumedSize'; @@ -87,6 +87,7 @@ export const LIST_SIZE = 'listSize'; export const LINK_IMPORT = 'link__Import'; export const LINK_PURPOSE = 'link__Purpose'; export const LIST = 'list'; +export const LITERAL_AT = '@'; export const LITERAL_SPACE = ' '; export const LITERAL_NEW_LINE = '\n'; export const LITERAL_PERIOD = '.'; @@ -178,10 +179,10 @@ export const EXECUTABLE_DIRECTIVE_LOCATIONS = new Set([ ]); export const ROOT_TYPE_NAMES = new Set([MUTATION, QUERY, SUBSCRIPTION]); -export const AUTHORIZATION_DIRECTIVES = new Set([AUTHENTICATED, REQUIRES_SCOPES]); -export const PERSISTED_CLIENT_DIRECTIVES = new Set([DEPRECATED, ONE_OF, SEMANTIC_NON_NULL]); -export const INHERITABLE_DIRECTIVE_NAMES = new Set([EXTERNAL, REQUIRE_FETCH_REASONS, SHAREABLE]); -export const IGNORED_FIELDS = new Set([ENTITIES_FIELD, SERVICE_FIELD]); +export const AUTHORIZATION_DIRECTIVES = new Set([AUTHENTICATED, REQUIRES_SCOPES]); +export const PERSISTED_CLIENT_DIRECTIVES = new Set([DEPRECATED, ONE_OF, SEMANTIC_NON_NULL]); +export const INHERITABLE_DIRECTIVE_NAMES = new Set([EXTERNAL, REQUIRE_FETCH_REASONS, SHAREABLE]); +export const IGNORED_FIELDS = new Set([ENTITIES_FIELD, SERVICE_FIELD]); export const INPUT_NODE_KINDS = new Set([ Kind.ENUM_TYPE_DEFINITION, @@ -197,4 +198,6 @@ export const OUTPUT_NODE_KINDS = new Set([ Kind.UNION_TYPE_DEFINITION, ]); -export const NON_REPEATABLE_PERSISTED_DIRECTIVES = new Set([INACCESSIBLE, ONE_OF, SEMANTIC_NON_NULL]); +export const INTERFACE_NODE_KINDS = new Set([Kind.INTERFACE_TYPE_DEFINITION, Kind.INTERFACE_TYPE_EXTENSION]); + +export const NON_REPEATABLE_FEDERATED_DIRECTIVES = new Set([INACCESSIBLE, ONE_OF, SEMANTIC_NON_NULL]); diff --git a/composition/src/utils/types.ts b/composition/src/utils/types.ts index c2cbc90ecb..4d0ca2f855 100644 --- a/composition/src/utils/types.ts +++ b/composition/src/utils/types.ts @@ -1,5 +1,5 @@ import { type Kind } from 'graphql'; -import { type SubgraphName } from '../types/types'; +import { type ArgumentName, type SubgraphName } from '../types/types'; export type RootTypeName = 'Mutation' | 'Query' | 'Subscription'; @@ -15,7 +15,7 @@ export type InvalidFieldImplementation = { invalidImplementedArguments: InvalidArgumentImplementation[]; isInaccessible: boolean; originalResponseType: string; - unimplementedArguments: Set; + unimplementedArguments: Set; }; export type ImplementationErrors = { diff --git a/composition/src/utils/utils.ts b/composition/src/utils/utils.ts index e6d2380f6b..3880654e11 100644 --- a/composition/src/utils/utils.ts +++ b/composition/src/utils/utils.ts @@ -21,7 +21,12 @@ import { } from './string-constants'; import { invalidKeyFatalError } from '../errors/errors'; import { stringToNameNode } from '../ast/utils'; -import { type AddMapEntriesParams, type AddOptionalToSetParams, type AddToSetParams } from './params'; +import { + type AddMapEntriesParams, + type AddOptionalToSetParams, + type AddToSetParams, + type MergeSetValueMapParams, +} from './params'; export function getOrThrowError(map: Map, key: K, mapName: string): V { const value = map.get(key); @@ -265,3 +270,17 @@ export function getFirstEntry(collection: Set | Map): V | undefin } return value; } + +export function mergeSetValueMap({ source, target }: MergeSetValueMapParams): void { + for (const [key, sourceSet] of source) { + const targetSet = target.get(key); + if (!targetSet) { + target.set(key, new Set(sourceSet)); + continue; + } + addIterableToSet({ + source: sourceSet, + target: targetSet, + }); + } +} diff --git a/composition/src/v1/constants/directive-definitions.ts b/composition/src/v1/constants/directive-definitions.ts index 56429b38e6..e29992cafa 100644 --- a/composition/src/v1/constants/directive-definitions.ts +++ b/composition/src/v1/constants/directive-definitions.ts @@ -1,6 +1,3 @@ -/* directive @deprecated(reason: String = "No longer supported") on ARGUMENT_DEFINITION | ENUM_VALUE | - FIELD_DEFINITION | INPUT_FIELD_DEFINITION -*/ import { DEFAULT_DEPRECATION_REASON, type DirectiveDefinitionNode, Kind } from 'graphql'; import { stringArrayToNameNodeArray, stringToNamedTypeNode, stringToNameNode } from '../../ast/utils'; import { @@ -232,6 +229,9 @@ export const COST_DEFINITION: DirectiveDefinitionNode = { repeatable: false, }; +/* directive @deprecated(reason: String = "No longer supported") on ARGUMENT_DEFINITION | ENUM_VALUE | + FIELD_DEFINITION | INPUT_FIELD_DEFINITION +*/ export const DEPRECATED_DEFINITION: DirectiveDefinitionNode = { arguments: [ { diff --git a/composition/src/v1/constants/strings.ts b/composition/src/v1/constants/strings.ts index 379b4d669f..1905a5d9ef 100644 --- a/composition/src/v1/constants/strings.ts +++ b/composition/src/v1/constants/strings.ts @@ -1,6 +1,7 @@ import { AND_UPPER, ARGUMENT_DEFINITION_UPPER, + AUTHENTICATED, BOOLEAN_SCALAR, CONNECT_FIELD_RESOLVER, CONSUMER_INACTIVE_THRESHOLD, @@ -21,6 +22,7 @@ import { FLOAT_SCALAR, ID_SCALAR, IN_UPPER, + INACCESSIBLE, INPUT_FIELD_DEFINITION_UPPER, INPUT_OBJECT_UPPER, INT_SCALAR, @@ -45,6 +47,7 @@ import { SUBSCRIPTION_FILTER, SUBSCRIPTION_FILTER_CONDITION, SUBSCRIPTION_FILTER_VALUE, + TAG, UNION_UPPER, } from '../../utils/string-constants'; import { type DefinitionNode, Kind } from 'graphql'; @@ -141,8 +144,20 @@ export const IGNORED_FEDERATED_TYPE_NAMES: ReadonlySet = new Set = new Set([ +export const ROUTER_FEDERATED_DIRECTIVE_NAMES: ReadonlySet = new Set([ + AUTHENTICATED, DEPRECATED, + INACCESSIBLE, ONE_OF, + REQUIRES_SCOPES, SEMANTIC_NON_NULL, + TAG, ]); + +export const CLIENT_FEDERATED_DIRECTIVE_NAMES: ReadonlySet = new Set([ + DEPRECATED, + ONE_OF, + SEMANTIC_NON_NULL, +]); + +export const IMPORT_VERSION_REGEX = /^v\d+\.\d+$/; diff --git a/composition/src/v1/federation/federation-factory.ts b/composition/src/v1/federation/federation-factory.ts index 6ddb524dc7..8667b9fc59 100644 --- a/composition/src/v1/federation/federation-factory.ts +++ b/composition/src/v1/federation/federation-factory.ts @@ -6,6 +6,7 @@ import { type DirectiveDefinitionNode, type DocumentNode, type GraphQLSchema, + isAbstractType, Kind, type ListTypeNode, type NamedTypeNode, @@ -15,7 +16,6 @@ import { } from 'graphql'; import { getMutableTypeNode, - getTypeNodeNamedTypeName, type MutableDefinitionNode, type MutableEnumValueNode, type MutableFieldNode, @@ -23,7 +23,7 @@ import { type MutableIntermediateTypeNode, type MutableTypeNode, } from '../../schema-building/ast'; -import { stringToNamedTypeNode, stringToNameNode } from '../../ast/utils'; +import { stringToNamedTypeNode, stringToNameNode, isKindAbstract } from '../../ast/utils'; import { allChildDefinitionsAreInaccessibleError, allExternalFieldInstancesError, @@ -42,7 +42,6 @@ import { invalidInterfaceImplementationError, invalidInterfaceObjectImplementationDefinitionsError, invalidReferencesOfInaccessibleTypeError, - invalidRepeatedFederatedDirectiveErrorMessage, invalidRequiredInputValueError, invalidSubscriptionFieldConditionFieldPathErrorMessage, invalidSubscriptionFieldConditionFieldPathFieldErrorMessage, @@ -57,15 +56,19 @@ import { orScopesLimitError, semanticNonNullInconsistentLevelsError, subscriptionFieldConditionEmptyValuesArrayErrorMessage, - subscriptionFieldConditionInvalidInputFieldErrorMessage, + subscriptionFieldConditionInvalidInputFieldError, subscriptionFieldConditionInvalidValuesArrayErrorMessage, subscriptionFilterArrayConditionInvalidItemTypeErrorMessage, - subscriptionFilterArrayConditionInvalidLengthErrorMessage, - subscriptionFilterConditionDepthExceededErrorMessage, - subscriptionFilterConditionInvalidInputFieldErrorMessage, - subscriptionFilterConditionInvalidInputFieldNumberErrorMessage, - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage, - subscriptionFilterNamedTypeErrorMessage, + subscriptionFilterArrayConditionInvalidLengthError, + subscriptionFilterConditionDepthExceededError, + subscriptionFilterConditionInvalidInputFieldError, + subscriptionFilterConditionInvalidInputFieldNumberError, + subscriptionFilterConditionInvalidInputFieldTypeError, + subscriptionFilterInterfaceImplementationInvalidError, + subscriptionFilterNamedTypeError, + subscriptionFilterNoAccessibleConcreteTypesError, + subscriptionFilterUnionMemberInvalidError, + subscriptionFilterUnsupportedNamedTypeKindError, undefinedEntityInterfaceImplementationsError, undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage, undefinedTypeError, @@ -74,6 +77,7 @@ import { unknownFieldSubgraphNameError, unknownNamedTypeError, } from '../../errors/errors'; +import { type ExecutionMultiResult } from '../../types/results'; import { type ChildTagData, getDescriptionFromString, @@ -86,14 +90,13 @@ import { validateImplicitFieldSets, } from './utils'; import { - CLIENT_PERSISTED_DIRECTIVE_NAMES, + CLIENT_FEDERATED_DIRECTIVE_NAMES, DEPENDENCIES_BY_DIRECTIVE_NAME, IGNORED_FEDERATED_TYPE_NAMES, SUBSCRIPTION_FILTER_INPUT_NAMES, SUBSCRIPTION_FILTER_LIST_INPUT_NAMES, } from '../constants/strings'; import { - getNodeCoords, isNodeLeaf, isObjectDefinitionData, mapToArrayOfValues, @@ -114,16 +117,17 @@ import { type SubscriptionFilterValue, } from '../../router-configuration/types'; import { BASE_SCALARS, DIRECTIVE_DEFINITION_BY_NAME, MAX_OR_SCOPES } from '../constants/constants'; -import { batchNormalize } from '../normalization/normalization-factory'; -import { isNodeQuery } from '../normalization/utils'; +import { FEDERATED_DIRECTIVE_DATAS, isNodeQuery } from '../normalization/utils'; import { type AuthorizationData, type ChildData, type CompositeOutputData, type EntityData, type EntityInterfaceFederationData, + type EnumDefinitionData, type EnumValueData, ExtensionType, + type FederatedDirectivesData, type FieldData, type InputObjectDefinitionData, type InputValueData, @@ -131,22 +135,17 @@ import { type NodeData, type ObjectDefinitionData, type ParentDefinitionData, - type PersistedDirectiveDefinitionData, - type PersistedDirectivesData, type ScalarDefinitionData, type UnionDefinitionData, -} from '../../schema-building/types'; +} from '../../schema-building/types/types'; import { - addValidPersistedDirectiveDefinitionNodeByData, areKindsEqual, - compareAndValidateInputValueDefaultValues, - generateDeprecatedDirective, - getClientPersistedDirectiveNodes, + compareAndValidateInputDefaultValues, + getClientFederatedDirectiveNodes, getClientSchemaFieldNodeByFieldData, getDefinitionDataCoords, getInitialFederatedDescription, getSubscriptionFilterValue, - isFieldData, isLeafKind, isNodeDataInaccessible, isParentDataCompositeOutputType, @@ -154,12 +153,15 @@ import { isTypeRequired, isTypeValidImplementation, MergeMethod, + newFederatedDirectivesData, newInvalidFieldNames, - newPersistedDirectivesData, propagateAuthDirectives, + propagateDirectiveDefinitionNodeFromData, propagateFieldAuthDirectives, + routerSchemaFieldNodeFromData, + routerSchemaInputValueNodeFromData, + routerSchemaNodeFromData, setLongestDescription, - setMutualExecutableLocations, setParentDataExtensionType, upsertDeprecatedDirective, upsertTagDirectives, @@ -183,10 +185,10 @@ import { type FederationResult, type FederationResultWithContracts, type MutualParentDefinitionData, -} from '../../federation/types'; +} from '../../federation/types/types'; +import { type SubscriptionFilterTargetResult } from '../../federation/types/results'; import { AND_UPPER, - AUTHENTICATED, AUTHORIZATION_DIRECTIVES, CONDITION, DEPRECATED, @@ -199,20 +201,19 @@ import { LEFT_PARENTHESIS, LIST, LITERAL_PERIOD, - NON_REPEATABLE_PERSISTED_DIRECTIVES, + NON_REPEATABLE_FEDERATED_DIRECTIVES, NOT_UPPER, OBJECT, ONE_OF, OR_UPPER, PARENT_DEFINITION_DATA, QUERY, - REQUIRES_SCOPES, - SEMANTIC_NON_NULL, STRING, SUBSCRIPTION_FILTER, TAG, UNION, VALUES, + LITERAL_NEW_LINE, } from '../../utils/string-constants'; import { MAX_SUBSCRIPTION_FILTER_DEPTH, MAXIMUM_TYPE_NESTING } from '../../utils/integer-constants'; import { @@ -221,7 +222,6 @@ import { addNewObjectValueMapEntries, copyArrayValueMap, copyObjectValueMap, - generateSemanticNonNullDirective, generateSimpleDirective, getEntriesNotInHashSet, getFirstEntry, @@ -237,32 +237,32 @@ import type { InvalidRequiredInputValueData, } from '../../utils/types'; import { + type ArgumentName, type ContractName, + type DirectiveLocation, type DirectiveName, type FieldCoords, type FieldName, + type InterfaceTypeName, type SubgraphName, type TypeName, } from '../../types/types'; import { singleFederatedInputFieldOneOfWarning } from '../warnings/warnings'; -import type { - ExtractPersistedDirectivesParams, - FederateSubgraphsContractV1Params, - FederateSubgraphsWithContractsV1Params, - FederationFactoryParams, - FederationParams, - ValidateOneOfDirectiveParams, -} from './params'; import { - AUTHENTICATED_DEFINITION, - DEPRECATED_DEFINITION, - INACCESSIBLE_DEFINITION, - ONE_OF_DEFINITION, - REQUIRES_SCOPES_DEFINITION, - SEMANTIC_NON_NULL_DEFINITION, - TAG_DEFINITION, -} from '../constants/directive-definitions'; + type ExtractFederatedDirectivesParams, + type FederateSubgraphsContractV1Params, + type FederateSubgraphsWithContractsV1Params, + type FederationFactoryParams, + type FederationParams, + type MergeSubscriptionFilterTargetResultParams, + type UpsertDirectiveArgumentDataParams, + type ValidateSubscriptionFilterAndGenerateConfigurationParams, + type ValidateOneOfDirectiveParams, +} from './types/params'; +import { INACCESSIBLE_DEFINITION } from '../constants/directive-definitions'; import type { CompositionOptions } from '../../types/params'; +import { BatchNormalizer } from '../normalization/batch-normalization/batch-normalizer'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; export class FederationFactory { authorizationDataByParentTypeName: Map; @@ -271,14 +271,17 @@ export class FederationFactory { clientDefinitions: Array = []; currentSubgraphName = ''; concreteTypeNamesByAbstractTypeName: Map>; - subgraphNamesByNamedTypeNameByFieldCoords = new Map>>(); + subgraphNamesByNamedTypeNameByFieldCoords = new Map>>(); entityDataByTypeName: Map; entityInterfaceFederationDataByTypeName: Map; + executableDirectiveDatasByName: Map>; errors: Array = []; + federatedDirectiveDataByName: Map; fieldConfigurationByFieldCoords = new Map(); fieldCoordsByNamedTypeName: Map>; inaccessibleCoords = new Set(); inaccessibleRequiredInputValueErrorByCoords = new Map(); + interfaceImplementationTypeNamesByInterfaceTypeName: Map>; internalGraph: Graph; internalSubgraphBySubgraphName: Map; invalidORScopesCoords = new Set(); @@ -289,17 +292,7 @@ export class FederationFactory { options: CompositionOptions; parentDefinitionDataByTypeName = new Map(); parentTagDataByTypeName = new Map(); - persistedDirectiveDefinitionByDirectiveName = new Map([ - [AUTHENTICATED, AUTHENTICATED_DEFINITION], - [DEPRECATED, DEPRECATED_DEFINITION], - [INACCESSIBLE, INACCESSIBLE_DEFINITION], - [ONE_OF, ONE_OF_DEFINITION], - [REQUIRES_SCOPES, REQUIRES_SCOPES_DEFINITION], - [SEMANTIC_NON_NULL, SEMANTIC_NON_NULL_DEFINITION], - [TAG, TAG_DEFINITION], - ]); - potentialPersistedDirectiveDefinitionDataByDirectiveName = new Map(); - referencedPersistedDirectiveNames = new Set(); + referencedFederatedDirectiveNames = new Set(); routerDefinitions: Array = []; subscriptionFilterDataByFieldPath = new Map(); tagNamesByCoords = new Map>(); @@ -310,7 +303,10 @@ export class FederationFactory { concreteTypeNamesByAbstractTypeName, entityDataByTypeName, entityInterfaceFederationDataByTypeName, + executableDirectiveDatasByName, + federatedDirectiveDataByName, fieldCoordsByNamedTypeName, + interfaceImplementationTypeNamesByInterfaceTypeName, internalGraph, internalSubgraphBySubgraphName, options, @@ -319,22 +315,29 @@ export class FederationFactory { this.authorizationDataByParentTypeName = authorizationDataByParentTypeName; this.options = options ?? {}; this.concreteTypeNamesByAbstractTypeName = concreteTypeNamesByAbstractTypeName; + this.executableDirectiveDatasByName = executableDirectiveDatasByName; this.entityDataByTypeName = entityDataByTypeName; this.entityInterfaceFederationDataByTypeName = entityInterfaceFederationDataByTypeName; + this.federatedDirectiveDataByName = federatedDirectiveDataByName; + for (const data of FEDERATED_DIRECTIVE_DATAS) { + this.federatedDirectiveDataByName.set(data.name, data); + } this.fieldCoordsByNamedTypeName = fieldCoordsByNamedTypeName; + this.interfaceImplementationTypeNamesByInterfaceTypeName = interfaceImplementationTypeNamesByInterfaceTypeName; this.internalGraph = internalGraph; this.internalSubgraphBySubgraphName = internalSubgraphBySubgraphName; this.warnings = warnings; } - extractPersistedDirectives({ data, directivesByName }: ExtractPersistedDirectivesParams): PersistedDirectivesData { + extractFederatedDirectives({ data, directivesByName }: ExtractFederatedDirectivesParams): FederatedDirectivesData { for (const [directiveName, directiveNodes] of directivesByName) { - const definition = this.persistedDirectiveDefinitionByDirectiveName.get(directiveName); - // @authenticated and @requiresScopes are handled differently - if (!definition) { + const federatedData = this.federatedDirectiveDataByName.get(directiveName); + if (!federatedData) { continue; } - this.referencedPersistedDirectiveNames.add(directiveName); + + this.referencedFederatedDirectiveNames.add(directiveName); + // @authenticated and @requiresScopes are handled differently if (AUTHORIZATION_DIRECTIVES.has(directiveName) || directiveNodes.length < 1) { continue; } @@ -355,7 +358,7 @@ export class FederationFactory { break; } // Only add one instance of certain directives. - if (NON_REPEATABLE_PERSISTED_DIRECTIVES.has(directiveName)) { + if (NON_REPEATABLE_FEDERATED_DIRECTIVES.has(directiveName)) { break; } existingDirectives.push(...directiveNodes); @@ -402,15 +405,17 @@ export class FederationFactory { invalidImplementedArguments: [], isInaccessible: false, originalResponseType: printTypeNode(interfaceField.node.type), - unimplementedArguments: new Set(), + unimplementedArguments: new Set(), }; // The implemented field type must be equally or more restrictive than the original interface field type if ( - !isTypeValidImplementation( - interfaceField.node.type, - fieldData.node.type, - this.concreteTypeNamesByAbstractTypeName, - ) + !isTypeValidImplementation({ + concreteTypeNamesByAbstractTypeName: this.concreteTypeNamesByAbstractTypeName, + implementationType: fieldData.node.type, + interfaceImplementationTypeNamesByInterfaceTypeName: + this.interfaceImplementationTypeNamesByInterfaceTypeName, + originalType: interfaceField.node.type, + }) ) { hasErrors = true; hasNestedErrors = true; @@ -506,7 +511,7 @@ export class FederationFactory { const graphNode = this.internalGraph.nodeByNodeName.get(`${this.currentSubgraphName}.${entityData.typeName}`); // Any errors in the field sets would be caught when evaluating the explicit entities, so they are ignored here validateImplicitFieldSets({ - conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates, + conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoords, currentSubgraphName: this.currentSubgraphName, entityData, implicitKeys, @@ -523,7 +528,7 @@ export class FederationFactory { continue; } validateImplicitFieldSets({ - conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates, + conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoords, currentSubgraphName: this.currentSubgraphName, entityData: interfaceObjectEntityData, implicitKeys, @@ -573,7 +578,7 @@ export class FederationFactory { const implicitKeys: RequiredFieldConfiguration[] = []; // Any errors in the field sets would be caught when evaluating the explicit entities, so they are ignored here validateImplicitFieldSets({ - conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoordinates, + conditionalFieldDataByCoords: internalSubgraph.conditionalFieldDataByCoords, currentSubgraphName: internalSubgraph.name, entityData, implicitKeys, @@ -659,8 +664,8 @@ export class FederationFactory { ) { const existingData = enumValueDataByName.get(incomingData.name); const targetData = existingData || this.copyEnumValueData(incomingData); - this.extractPersistedDirectives({ - data: targetData.persistedDirectivesData, + this.extractFederatedDirectives({ + data: targetData.federatedDirectivesData, directivesByName: incomingData.directivesByName, }); const isValueInaccessible = isNodeDataInaccessible(incomingData); @@ -684,25 +689,78 @@ export class FederationFactory { }); } + upsertDirectiveArgumentData({ argumentDataByName, incomingData }: UpsertDirectiveArgumentDataParams): void { + const existingData = argumentDataByName.get(incomingData.name); + const targetData = existingData || this.copyDirectiveArgumentData(incomingData); + this.extractFederatedDirectives({ + data: targetData.federatedDirectivesData, + directivesByName: incomingData.directivesByName, + }); + if (!existingData) { + this.namedInputValueTypeNames.add(targetData.namedTypeName); + argumentDataByName.set(targetData.name, targetData); + return; + } + if (!incomingData.defaultValue) { + existingData.includeDefaultValue = false; + } + addNewObjectValueMapEntries( + incomingData.configureDescriptionDataBySubgraphName, + targetData.configureDescriptionDataBySubgraphName, + ); + setLongestDescription(targetData, incomingData); + addIterableToSet({ + source: incomingData.subgraphNames, + target: targetData.subgraphNames, + }); + addIterableToSet({ + source: incomingData.requiredSubgraphNames, + target: targetData.requiredSubgraphNames, + }); + // TODO refactor type merging + const mergeResult = getMostRestrictiveMergedTypeNode( + targetData.type, + incomingData.type, + incomingData.federatedCoords, + this.errors, + ); + if (mergeResult.success) { + targetData.type = mergeResult.typeNode; + } else { + this.errors.push( + incompatibleMergedTypesError({ + actualType: mergeResult.actualType, + isArgument: true, + coords: incomingData.federatedCoords, + expectedType: mergeResult.expectedType, + }), + ); + } + const validationResult = compareAndValidateInputDefaultValues({ existingData, incomingData }); + if (!validationResult.success) { + this.errors.push(validationResult.error); + } + } + // To facilitate the splitting of tag paths, field arguments do not use the renamedPath property for tagNamesByPath upsertInputValueData( inputValueDataByValueName: Map, incomingData: InputValueData, parentCoords: string, isParentInaccessible: boolean, - ) { + ): void { const existingData = inputValueDataByValueName.get(incomingData.name); const targetData = existingData || this.copyInputValueData(incomingData); - this.extractPersistedDirectives({ - data: targetData.persistedDirectivesData, + this.extractFederatedDirectives({ + data: targetData.federatedDirectivesData, directivesByName: incomingData.directivesByName, }); this.recordTagNamesByCoords(targetData, `${parentCoords}.${targetData.name}`); - this.namedInputValueTypeNames.add(targetData.namedTypeName); getValueOrDefault(this.coordsByNamedTypeName, targetData.namedTypeName, () => new Set()).add( targetData.federatedCoords, ); if (!existingData) { + this.namedInputValueTypeNames.add(targetData.namedTypeName); inputValueDataByValueName.set(targetData.name, targetData); return; } @@ -739,7 +797,10 @@ export class FederationFactory { }), ); } - compareAndValidateInputValueDefaultValues(targetData, incomingData, this.errors); + const validationResult = compareAndValidateInputDefaultValues({ existingData, incomingData }); + if (!validationResult.success) { + this.errors.push(validationResult.error); + } } handleInputValueInaccessibility(isParentInaccessible: boolean, inputValueData: InputValueData, parentCoords: string) { @@ -883,8 +944,8 @@ export class FederationFactory { ); this.namedOutputTypeNames.add(incomingData.namedTypeName); this.handleSubscriptionFilterDirective(incomingData, targetData); - this.extractPersistedDirectives({ - data: targetData.persistedDirectivesData, + this.extractFederatedDirectives({ + data: targetData.federatedDirectivesData, directivesByName: incomingData.directivesByName, }); const isFieldInaccessible = isParentInaccessible || isNodeDataInaccessible(targetData); @@ -981,11 +1042,11 @@ export class FederationFactory { recordTagNamesByCoords(data: NodeData, coords?: string) { const path = coords || data.name; - if (data.persistedDirectivesData.tagDirectiveByName.size < 1) { + if (data.federatedDirectivesData.tagDirectiveByName.size < 1) { return; } const tagNames = getValueOrDefault(this.tagNamesByCoords, path, () => new Set()); - for (const tagName of data.persistedDirectivesData.tagDirectiveByName.keys()) { + for (const tagName of data.federatedDirectivesData.tagDirectiveByName.keys()) { tagNames.add(tagName); } } @@ -996,14 +1057,43 @@ export class FederationFactory { directivesByName: copyArrayValueMap(sourceData.directivesByName), extensionType: sourceData.extensionType, name: sourceData.name, - persistedDirectivesData: this.extractPersistedDirectives({ - data: newPersistedDirectivesData(), + federatedDirectivesData: this.extractFederatedDirectives({ + data: newFederatedDirectivesData(), directivesByName: sourceData.directivesByName, }), description: getInitialFederatedDescription(sourceData), }; } + copyDirectiveArgumentData(sourceData: DirectiveArgumentData): DirectiveArgumentData { + return { + configureDescriptionDataBySubgraphName: copyObjectValueMap(sourceData.configureDescriptionDataBySubgraphName), + directivesByName: copyArrayValueMap(sourceData.directivesByName), + defaultValue: sourceData.defaultValue, + description: getInitialFederatedDescription(sourceData), + federatedCoords: sourceData.federatedCoords, + federatedDirectivesData: this.extractFederatedDirectives({ + data: newFederatedDirectivesData(), + directivesByName: sourceData.directivesByName, + }), + includeDefaultValue: sourceData.includeDefaultValue, + kind: sourceData.kind, + name: sourceData.name, + namedTypeKind: sourceData.namedTypeKind, + namedTypeName: sourceData.namedTypeName, + node: { + directives: [], + kind: Kind.INPUT_VALUE_DEFINITION, + name: stringToNameNode(sourceData.name), + type: sourceData.type, + }, + originalCoords: sourceData.originalCoords, + requiredSubgraphNames: new Set(sourceData.requiredSubgraphNames), + subgraphNames: new Set(sourceData.subgraphNames), + type: sourceData.type, + }; + } + copyEnumValueData(sourceData: EnumValueData): EnumValueData { return { appearances: sourceData.appearances, @@ -1018,8 +1108,8 @@ export class FederationFactory { name: stringToNameNode(sourceData.name), }, parentTypeName: sourceData.parentTypeName, - persistedDirectivesData: this.extractPersistedDirectives({ - data: newPersistedDirectivesData(), + federatedDirectivesData: this.extractFederatedDirectives({ + data: newFederatedDirectivesData(), directivesByName: sourceData.directivesByName, }), subgraphNames: new Set(sourceData.subgraphNames), @@ -1047,8 +1137,8 @@ export class FederationFactory { }, originalCoords: sourceData.originalCoords, originalParentTypeName: sourceData.originalParentTypeName, - persistedDirectivesData: this.extractPersistedDirectives({ - data: newPersistedDirectivesData(), + federatedDirectivesData: this.extractFederatedDirectives({ + data: newFederatedDirectivesData(), directivesByName: sourceData.directivesByName, }), renamedParentTypeName: sourceData.renamedParentTypeName, @@ -1107,8 +1197,8 @@ export class FederationFactory { }, nullLevelsBySubgraphName: sourceData.nullLevelsBySubgraphName, originalParentTypeName: sourceData.originalParentTypeName, - persistedDirectivesData: this.extractPersistedDirectives({ - data: newPersistedDirectivesData(), + federatedDirectivesData: this.extractFederatedDirectives({ + data: newFederatedDirectivesData(), directivesByName: sourceData.directivesByName, }), renamedParentTypeName: sourceData.renamedParentTypeName, @@ -1263,8 +1353,8 @@ export class FederationFactory { } return targetData; } - this.extractPersistedDirectives({ - data: existingData.persistedDirectivesData, + this.extractFederatedDirectives({ + data: existingData.federatedDirectivesData, directivesByName: incomingData.directivesByName, }); return existingData; @@ -1420,52 +1510,6 @@ export class FederationFactory { } } - upsertPersistedDirectiveDefinitionData(incomingData: PersistedDirectiveDefinitionData, subgraphNumber: number) { - const name = incomingData.name; - const existingData = this.potentialPersistedDirectiveDefinitionDataByDirectiveName.get(name); - if (!existingData) { - // The executable directive must be defined in all subgraphs to be persisted. - if (subgraphNumber > 1) { - return; - } - const argumentDataByArgumentName = new Map(); - for (const inputValueData of incomingData.argumentDataByName.values()) { - this.namedInputValueTypeNames.add(inputValueData.namedTypeName); - this.upsertInputValueData(argumentDataByArgumentName, inputValueData, `@${incomingData.name}`, false); - } - this.potentialPersistedDirectiveDefinitionDataByDirectiveName.set(name, { - argumentDataByName: argumentDataByArgumentName, - executableLocations: new Set(incomingData.executableLocations), - name, - repeatable: incomingData.repeatable, - subgraphNames: new Set(incomingData.subgraphNames), - description: incomingData.description, - }); - return; - } - // If the executable directive has not been defined in at least one graph, the definition should not be persisted - if (existingData.subgraphNames.size + 1 !== subgraphNumber) { - this.potentialPersistedDirectiveDefinitionDataByDirectiveName.delete(name); - return; - } - setMutualExecutableLocations(existingData, incomingData.executableLocations); - // If there are no mutually defined executable locations, the definition should not be persisted - if (existingData.executableLocations.size < 1) { - this.potentialPersistedDirectiveDefinitionDataByDirectiveName.delete(name); - return; - } - for (const inputValueData of incomingData.argumentDataByName.values()) { - this.namedInputValueTypeNames.add(getTypeNodeNamedTypeName(inputValueData.type)); - this.upsertInputValueData(existingData.argumentDataByName, inputValueData, `@${existingData.name}`, false); - } - setLongestDescription(existingData, incomingData); - existingData.repeatable &&= incomingData.repeatable; - addIterableToSet({ - source: incomingData.subgraphNames, - target: existingData.subgraphNames, - }); - } - shouldUpdateFederatedFieldAbstractNamedType(abstractTypeName: string, objectTypeNames: Set): boolean { if (!abstractTypeName) { return false; @@ -1616,39 +1660,73 @@ export class FederationFactory { this.updateTypeNodeNamedType(fieldData.type, abstractTypeName); } } + upsertExecutableDirectiveDatas() { + for (const [directiveName, definitionDatas] of this.executableDirectiveDatasByName) { + for (const data of definitionDatas) { + const existingData = this.federatedDirectiveDataByName.get(directiveName); + if (!existingData) { + const argumentDataByName = new Map(); + for (const argumentData of data.argumentDataByName.values()) { + this.upsertDirectiveArgumentData({ + argumentDataByName, + incomingData: argumentData, + }); + } + // Shared set between locations and executable locations because type-system locations are removed. + const locations = new Set(data.executableLocations); + this.federatedDirectiveDataByName.set(directiveName, { + argumentDataByName, + isComposed: false, + isRepeatable: data.isRepeatable, + isReferenced: data.isReferenced, + executableLocations: locations, + locations, + majorVersion: -1, + minorVersion: -1, + name: directiveName, + description: data.description, + node: data.node, + optionalArgumentNames: new Set(data.optionalArgumentNames), + requiredArgumentNames: new Set(data.requiredArgumentNames), + subgraphNames: new Set(data.subgraphNames), + }); + continue; + } + for (const argumentData of data.argumentDataByName.values()) { + this.upsertDirectiveArgumentData({ + argumentDataByName: existingData.argumentDataByName, + incomingData: argumentData, + }); + } + for (const executableLocation of existingData.executableLocations) { + if (!data.executableLocations.has(executableLocation)) { + existingData.executableLocations.delete(executableLocation); + } + } + if (existingData.executableLocations.size < 1) { + this.federatedDirectiveDataByName.delete(directiveName); + break; + } + setLongestDescription(existingData, data); + addIterableToSet({ source: data.subgraphNames, target: existingData.subgraphNames }); + existingData.isRepeatable &&= data.isRepeatable; + } + } + } /* federateInternalSubgraphData is responsible for merging each subgraph TypeScript representation of a GraphQL type * into a single representation. * This method is always necessary, regardless of whether federating a source graph or contract graph. * */ federateInternalSubgraphData() { - let subgraphNumber = 0; - let shouldSkipPersistedExecutableDirectives = false; + this.upsertExecutableDirectiveDatas(); for (const internalSubgraph of this.internalSubgraphBySubgraphName.values()) { - subgraphNumber += 1; this.currentSubgraphName = internalSubgraph.name; this.isVersionTwo ||= internalSubgraph.isVersionTwo; renameRootTypes(this, internalSubgraph); for (const parentDefinitionData of internalSubgraph.parentDefinitionDataByTypeName.values()) { this.upsertParentDefinitionData(parentDefinitionData, internalSubgraph.name); } - if (shouldSkipPersistedExecutableDirectives) { - continue; - } - /* If a subgraph defines no executable directives, it is not possible for any definition to be in all subgraphs. - Consequently, it is no longer necessary to check for any persisted executable directives. */ - if (!internalSubgraph.persistedDirectiveDefinitionDataByDirectiveName.size) { - shouldSkipPersistedExecutableDirectives = true; - continue; - } - for (const persistedDirectiveDefinitionData of internalSubgraph.persistedDirectiveDefinitionDataByDirectiveName.values()) { - this.upsertPersistedDirectiveDefinitionData(persistedDirectiveDefinitionData, subgraphNumber); - } - /* Invalid directive keys are deleted; if there are no entries left, it is no longer necessary to evaluate more - executable directives. */ - if (this.potentialPersistedDirectiveDefinitionDataByDirectiveName.size < 1) { - shouldSkipPersistedExecutableDirectives = true; - } } this.handleDisparateFieldNamedTypes(); } @@ -1828,47 +1906,11 @@ export class FederationFactory { }; } - getValidFlattenedPersistedDirectiveNodeArray(data: NodeData): Array { - const coords = getNodeCoords(data); - const persistedDirectiveNodes: Array = []; - for (const [directiveName, directiveNodes] of data.persistedDirectivesData.directivesByName) { - if (directiveName === SEMANTIC_NON_NULL && isFieldData(data)) { - persistedDirectiveNodes.push( - generateSemanticNonNullDirective(getFirstEntry(data.nullLevelsBySubgraphName) ?? new Set([0])), - ); - continue; - } - const persistedDirectiveDefinition = this.persistedDirectiveDefinitionByDirectiveName.get(directiveName); - if (!persistedDirectiveDefinition) { - continue; - } - if (directiveNodes.length < 2) { - persistedDirectiveNodes.push(...directiveNodes); - continue; - } - if (!persistedDirectiveDefinition.repeatable) { - this.errors.push(invalidRepeatedFederatedDirectiveErrorMessage(directiveName, coords)); - continue; - } - persistedDirectiveNodes.push(...directiveNodes); - } - return persistedDirectiveNodes; - } - - getRouterPersistedDirectiveNodes(nodeData: T): ConstDirectiveNode[] { - const persistedDirectiveNodes = [...nodeData.persistedDirectivesData.tagDirectiveByName.values()]; - if (nodeData.persistedDirectivesData.isDeprecated) { - persistedDirectiveNodes.push(generateDeprecatedDirective(nodeData.persistedDirectivesData.deprecatedReason)); - } - persistedDirectiveNodes.push(...this.getValidFlattenedPersistedDirectiveNodeArray(nodeData)); - return persistedDirectiveNodes; - } - getFederatedGraphNodeDescription(data: NodeData): StringValueNode | undefined { if (data.configureDescriptionDataBySubgraphName.size < 1) { return data.description; } - const subgraphNames: Array = []; + const subgraphNames: Array = []; let descriptionToPropagate = ''; for (const [subgraphName, { propagate, description }] of data.configureDescriptionDataBySubgraphName) { if (!propagate) { @@ -1887,33 +1929,26 @@ export class FederationFactory { this.errors.push(configureDescriptionPropagationError(getDefinitionDataCoords(data, true), subgraphNames)); } - getNodeForRouterSchemaByData(data: T): T['node'] { - data.node.name = stringToNameNode(data.name); - data.node.description = this.getFederatedGraphNodeDescription(data); - data.node.directives = this.getRouterPersistedDirectiveNodes(data); - return data.node; - } - - getNodeWithPersistedDirectivesByInputValueData(inputValueData: InputValueData): MutableInputValueNode { - inputValueData.node.name = stringToNameNode(inputValueData.name); - inputValueData.node.type = inputValueData.type; - inputValueData.node.description = this.getFederatedGraphNodeDescription(inputValueData); - inputValueData.node.directives = this.getRouterPersistedDirectiveNodes(inputValueData); - if (inputValueData.includeDefaultValue) { - inputValueData.node.defaultValue = inputValueData.defaultValue; - } - return inputValueData.node; - } - getValidFieldArgumentNodes(fieldData: FieldData): MutableInputValueNode[] { const argumentNodes: Array = []; const argumentNames: Array = []; const invalidRequiredArguments: InvalidRequiredInputValueData[] = []; - const fieldPath = `${fieldData.renamedParentTypeName}.${fieldData.name}`; + const fieldCoords = `${fieldData.renamedParentTypeName}.${fieldData.name}`; for (const [argumentName, inputValueData] of fieldData.argumentDataByName) { if (fieldData.subgraphNames.size === inputValueData.subgraphNames.size) { argumentNames.push(argumentName); - argumentNodes.push(this.getNodeWithPersistedDirectivesByInputValueData(inputValueData)); + const argumentNodeResult = routerSchemaInputValueNodeFromData({ + data: inputValueData, + description: this.getFederatedGraphNodeDescription(inputValueData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (argumentNodeResult.success) { + argumentNodes.push(argumentNodeResult.node); + this.warnings.push(...argumentNodeResult.warnings); + } else { + this.errors.push(...argumentNodeResult.errors); + } } else if (isTypeRequired(inputValueData.type)) { invalidRequiredArguments.push({ inputValueName: argumentName, @@ -1923,10 +1958,10 @@ export class FederationFactory { } } if (invalidRequiredArguments.length > 0) { - this.errors.push(invalidRequiredInputValueError(FIELD, fieldPath, invalidRequiredArguments)); + this.errors.push(invalidRequiredInputValueError(FIELD, fieldCoords, invalidRequiredArguments)); } else if (argumentNames.length > 0) { // fieldConfiguration might already exist through subscriptionFilter - getValueOrDefault(this.fieldConfigurationByFieldCoords, fieldPath, () => ({ + getValueOrDefault(this.fieldConfigurationByFieldCoords, fieldCoords, () => ({ argumentNames, fieldName: fieldData.name, typeName: fieldData.renamedParentTypeName, @@ -1935,18 +1970,6 @@ export class FederationFactory { return argumentNodes; } - getNodeWithPersistedDirectivesByFieldData( - fieldData: FieldData, - argumentNodes: Array, - ): MutableFieldNode { - fieldData.node.arguments = argumentNodes; - fieldData.node.name = stringToNameNode(fieldData.name); - fieldData.node.type = fieldData.type; - fieldData.node.description = this.getFederatedGraphNodeDescription(fieldData); - fieldData.node.directives = this.getRouterPersistedDirectiveNodes(fieldData); - return fieldData.node; - } - validateSemanticNonNull(data: FieldData) { let comparison: Set | undefined; for (const levels of data.nullLevelsBySubgraphName.values()) { @@ -2007,32 +2030,41 @@ export class FederationFactory { const mergeMethod = this.getEnumValueMergeMethod(parentTypeName); propagateAuthDirectives(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName)); for (const enumValueData of parentDefinitionData.enumValueDataByName.values()) { - const enumValueNode = this.getNodeForRouterSchemaByData(enumValueData); const isValueInaccessible = isNodeDataInaccessible(enumValueData); const clientEnumValueNode: MutableEnumValueNode = { ...enumValueData.node, - directives: getClientPersistedDirectiveNodes(enumValueData), + directives: getClientFederatedDirectiveNodes(enumValueData), }; + const enumValueNodeResult = routerSchemaNodeFromData({ + data: enumValueData, + description: this.getFederatedGraphNodeDescription(enumValueData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (!enumValueNodeResult.success) { + this.errors.push(...enumValueNodeResult.errors); + continue; + } switch (mergeMethod) { case MergeMethod.CONSISTENT: if (!isValueInaccessible && parentDefinitionData.appearances > enumValueData.appearances) { this.errors.push(incompatibleSharedEnumError(parentTypeName)); } - enumValueNodes.push(enumValueNode); + enumValueNodes.push(enumValueNodeResult.node); if (!isValueInaccessible) { clientEnumValueNodes.push(clientEnumValueNode); } break; case MergeMethod.INTERSECTION: if (parentDefinitionData.appearances === enumValueData.appearances) { - enumValueNodes.push(enumValueNode); + enumValueNodes.push(enumValueNodeResult.node); if (!isValueInaccessible) { clientEnumValueNodes.push(clientEnumValueNode); } } break; default: - enumValueNodes.push(enumValueNode); + enumValueNodes.push(enumValueNodeResult.node); if (!isValueInaccessible) { clientEnumValueNodes.push(clientEnumValueNode); } @@ -2040,7 +2072,17 @@ export class FederationFactory { } } parentDefinitionData.node.values = enumValueNodes; - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData)); + const nodeResult = routerSchemaNodeFromData({ + data: parentDefinitionData, + description: this.getFederatedGraphNodeDescription(parentDefinitionData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (nodeResult.success) { + this.routerDefinitions.push(nodeResult.node); + } else { + this.errors.push(...nodeResult.errors); + } if (isNodeDataInaccessible(parentDefinitionData)) { this.validateReferencesOfInaccessibleType(parentDefinitionData); this.internalGraph.setNodeInaccessible(parentDefinitionData.name); @@ -2058,7 +2100,7 @@ export class FederationFactory { } this.clientDefinitions.push({ ...parentDefinitionData.node, - directives: getClientPersistedDirectiveNodes(parentDefinitionData), + directives: getClientFederatedDirectiveNodes(parentDefinitionData), values: clientEnumValueNodes, }); break; @@ -2076,13 +2118,24 @@ export class FederationFactory { requiredFieldNames.add(inputValueName); } if (parentDefinitionData.subgraphNames.size === inputValueData.subgraphNames.size) { - inputValueNodes.push(this.getNodeWithPersistedDirectivesByInputValueData(inputValueData)); + const inputValueNodeResult = routerSchemaInputValueNodeFromData({ + data: inputValueData, + description: this.getFederatedGraphNodeDescription(inputValueData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (inputValueNodeResult.success) { + inputValueNodes.push(inputValueNodeResult.node); + this.warnings.push(...inputValueNodeResult.warnings); + } else { + this.errors.push(...inputValueNodeResult.errors); + } if (isNodeDataInaccessible(inputValueData)) { continue; } clientInputValueNodes.push({ ...inputValueData.node, - directives: getClientPersistedDirectiveNodes(inputValueData), + directives: getClientFederatedDirectiveNodes(inputValueData), }); } else if (isTypeRequired(inputValueData.type)) { invalidRequiredInputs.push({ @@ -2111,7 +2164,17 @@ export class FederationFactory { break; } parentDefinitionData.node.fields = inputValueNodes; - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData)); + const inputObjectNodeResult = routerSchemaNodeFromData({ + data: parentDefinitionData, + description: this.getFederatedGraphNodeDescription(parentDefinitionData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (inputObjectNodeResult.success) { + this.routerDefinitions.push(inputObjectNodeResult.node); + } else { + this.errors.push(...inputObjectNodeResult.errors); + } if (isNodeDataInaccessible(parentDefinitionData)) { this.validateReferencesOfInaccessibleType(parentDefinitionData); break; @@ -2128,7 +2191,7 @@ export class FederationFactory { } this.clientDefinitions.push({ ...parentDefinitionData.node, - directives: getClientPersistedDirectiveNodes(parentDefinitionData), + directives: getClientFederatedDirectiveNodes(parentDefinitionData), fields: clientInputValueNodes, }); break; @@ -2138,7 +2201,7 @@ export class FederationFactory { case Kind.OBJECT_TYPE_DEFINITION: { const fieldNodes: Array = []; const clientSchemaFieldNodes: Array = []; - const graphFieldDataByFieldName = new Map(); + const graphFieldDataByFieldName = new Map(); const invalidFieldNames = newInvalidFieldNames(); const isObject = parentDefinitionData.kind === Kind.OBJECT_TYPE_DEFINITION; const authData = this.authorizationDataByParentTypeName.get(parentTypeName); @@ -2150,7 +2213,19 @@ export class FederationFactory { validateExternalAndShareable(fieldData, invalidFieldNames); } this.validateSemanticNonNull(fieldData); - fieldNodes.push(this.getNodeWithPersistedDirectivesByFieldData(fieldData, argumentNodes)); + const fieldNodeResult = routerSchemaFieldNodeFromData({ + argumentNodes, + data: fieldData, + description: this.getFederatedGraphNodeDescription(fieldData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (!fieldNodeResult.success) { + this.errors.push(...fieldNodeResult.errors); + } else { + fieldNodes.push(fieldNodeResult.node); + this.warnings.push(...fieldNodeResult.warnings); + } if (isNodeDataInaccessible(fieldData)) { continue; } @@ -2174,7 +2249,17 @@ export class FederationFactory { interfaceImplementations.push({ data: parentDefinitionData, clientSchemaFieldNodes }); break; } - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData)); + const nodeResult = routerSchemaNodeFromData({ + data: parentDefinitionData, + description: this.getFederatedGraphNodeDescription(parentDefinitionData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (nodeResult.success) { + this.routerDefinitions.push(nodeResult.node); + } else { + this.errors.push(...nodeResult.errors); + } const isQuery = isNodeQuery(parentTypeName); if (isNodeDataInaccessible(parentDefinitionData)) { if (isQuery) { @@ -2198,7 +2283,7 @@ export class FederationFactory { } this.clientDefinitions.push({ ...parentDefinitionData.node, - directives: getClientPersistedDirectiveNodes(parentDefinitionData), + directives: getClientFederatedDirectiveNodes(parentDefinitionData), fields: clientSchemaFieldNodes, }); break; @@ -2208,7 +2293,17 @@ export class FederationFactory { break; } propagateAuthDirectives(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName)); - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData)); + const nodeResult = routerSchemaNodeFromData({ + data: parentDefinitionData, + description: this.getFederatedGraphNodeDescription(parentDefinitionData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (nodeResult.success) { + this.routerDefinitions.push(nodeResult.node); + } else { + this.errors.push(...nodeResult.errors); + } if (isNodeDataInaccessible(parentDefinitionData)) { this.validateReferencesOfInaccessibleType(parentDefinitionData); this.internalGraph.setNodeInaccessible(parentDefinitionData.name); @@ -2216,13 +2311,23 @@ export class FederationFactory { } this.clientDefinitions.push({ ...parentDefinitionData.node, - directives: getClientPersistedDirectiveNodes(parentDefinitionData), + directives: getClientFederatedDirectiveNodes(parentDefinitionData), }); break; } case Kind.UNION_TYPE_DEFINITION: { parentDefinitionData.node.types = mapToArrayOfValues(parentDefinitionData.memberByMemberTypeName); - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData)); + const nodeResult = routerSchemaNodeFromData({ + data: parentDefinitionData, + description: this.getFederatedGraphNodeDescription(parentDefinitionData), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (nodeResult.success) { + this.routerDefinitions.push(nodeResult.node); + } else { + this.errors.push(...nodeResult.errors); + } if (isNodeDataInaccessible(parentDefinitionData)) { this.validateReferencesOfInaccessibleType(parentDefinitionData); this.internalGraph.setNodeInaccessible(parentDefinitionData.name); @@ -2235,7 +2340,7 @@ export class FederationFactory { } this.clientDefinitions.push({ ...parentDefinitionData.node, - directives: getClientPersistedDirectiveNodes(parentDefinitionData), + directives: getClientFederatedDirectiveNodes(parentDefinitionData), types: clientMembers, }); break; @@ -2305,7 +2410,17 @@ export class FederationFactory { ) { for (const { data, clientSchemaFieldNodes } of interfaceImplementations) { data.node.interfaces = this.getValidImplementedInterfaces(data); - this.routerDefinitions.push(this.getNodeForRouterSchemaByData(data)); + const nodeResult = routerSchemaNodeFromData({ + data, + description: this.getFederatedGraphNodeDescription(data), + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (nodeResult.success) { + this.routerDefinitions.push(nodeResult.node); + } else { + this.errors.push(...nodeResult.errors); + } if (isNodeDataInaccessible(data)) { this.validateReferencesOfInaccessibleType(data); this.internalGraph.setNodeInaccessible(data.name); @@ -2323,7 +2438,7 @@ export class FederationFactory { * */ this.clientDefinitions.push({ ...data.node, - directives: getClientPersistedDirectiveNodes(data), + directives: getClientFederatedDirectiveNodes(data), fields: clientSchemaFieldNodes, interfaces: clientInterfaces, }); @@ -2333,14 +2448,14 @@ export class FederationFactory { #addDirectiveDefinitionsAndDepsToRouterAndClientSchemas() { const clientDependencies = new Set(); const routerDependencies = new Set(); - for (const directiveName of this.referencedPersistedDirectiveNames) { + for (const directiveName of this.referencedFederatedDirectiveNames) { const definition = DIRECTIVE_DEFINITION_BY_NAME.get(directiveName); if (!definition) { continue; } const dependencies = DEPENDENCIES_BY_DIRECTIVE_NAME.get(directiveName) ?? []; this.directiveDefinitionByName.set(directiveName, definition); - if (CLIENT_PERSISTED_DIRECTIVE_NAMES.has(directiveName)) { + if (CLIENT_FEDERATED_DIRECTIVE_NAMES.has(directiveName)) { this.clientDefinitions.push(definition); addIterableToSet({ source: dependencies, @@ -2511,12 +2626,10 @@ export class FederationFactory { depth: number, inputPath: string, directiveSubgraphName: string, - errorMessages: string[], - ): boolean { + ): ExecutionMultiResult { if (depth > MAX_SUBSCRIPTION_FILTER_DEPTH || this.isMaxDepth) { - errorMessages.push(subscriptionFilterConditionDepthExceededErrorMessage(inputPath)); this.isMaxDepth = true; - return false; + return { success: false, errors: [subscriptionFilterConditionDepthExceededError(inputPath)] }; } let hasErrors = false; const validFieldNames = new Set([FIELD_PATH, VALUES]); @@ -2610,19 +2723,20 @@ export class FederationFactory { } } if (!hasErrors) { - return true; + return { success: true }; } - errorMessages.push( - subscriptionFieldConditionInvalidInputFieldErrorMessage( - inputPath, - [...validFieldNames], - [...duplicatedFieldNames], - [...invalidFieldNames], - fieldErrorMessages, - ), - ); - - return false; + return { + success: false, + errors: [ + subscriptionFieldConditionInvalidInputFieldError( + inputPath, + [...validFieldNames], + [...duplicatedFieldNames], + [...invalidFieldNames], + fieldErrorMessages, + ), + ], + }; } validateSubscriptionFilterCondition( @@ -2632,25 +2746,25 @@ export class FederationFactory { depth: number, inputPath: string, directiveSubgraphName: string, - errorMessages: string[], - ): boolean { + ): ExecutionMultiResult { if (depth > MAX_SUBSCRIPTION_FILTER_DEPTH || this.isMaxDepth) { - errorMessages.push(subscriptionFilterConditionDepthExceededErrorMessage(inputPath)); this.isMaxDepth = true; - return false; + return { success: false, errors: [subscriptionFilterConditionDepthExceededError(inputPath)] }; } depth += 1; if (objectValueNode.fields.length !== 1) { - errorMessages.push( - subscriptionFilterConditionInvalidInputFieldNumberErrorMessage(inputPath, objectValueNode.fields.length), - ); - return false; + return { + success: false, + errors: [subscriptionFilterConditionInvalidInputFieldNumberError(inputPath, objectValueNode.fields.length)], + }; } const objectFieldNode = objectValueNode.fields[0]; const fieldName = objectFieldNode.name.value; if (!SUBSCRIPTION_FILTER_INPUT_NAMES.has(fieldName)) { - errorMessages.push(subscriptionFilterConditionInvalidInputFieldErrorMessage(inputPath, fieldName)); - return false; + return { + success: false, + errors: [subscriptionFilterConditionInvalidInputFieldError(inputPath, fieldName)], + }; } const inputFieldPath = inputPath + `.${fieldName}`; switch (objectFieldNode.value.kind) { @@ -2665,7 +2779,6 @@ export class FederationFactory { depth, inputPath + `.IN`, directiveSubgraphName, - errorMessages, ); } case NOT_UPPER: { @@ -2677,15 +2790,14 @@ export class FederationFactory { depth, inputPath + `.NOT`, directiveSubgraphName, - errorMessages, ); } default: // The field is guaranteed to be an AND or an OR - errorMessages.push( - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage(inputFieldPath, LIST, OBJECT), - ); - return false; + return { + success: false, + errors: [subscriptionFilterConditionInvalidInputFieldTypeError(inputFieldPath, LIST, OBJECT)], + }; } } case Kind.LIST: { @@ -2701,17 +2813,20 @@ export class FederationFactory { } default: // The field is guaranteed to be an IN or a NOT - errorMessages.push( - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage(inputFieldPath, OBJECT, LIST), - ); - return false; + return { + success: false, + errors: [subscriptionFilterConditionInvalidInputFieldTypeError(inputFieldPath, OBJECT, LIST)], + }; } const listLength = objectFieldNode.value.values.length; if (listLength < 1 || listLength > 5) { - errorMessages.push(subscriptionFilterArrayConditionInvalidLengthErrorMessage(inputFieldPath, listLength)); - return false; + return { + success: false, + errors: [subscriptionFilterArrayConditionInvalidLengthError(inputFieldPath, listLength)], + }; } let isValid = true; + const aggregatedErrors: Array = []; const invalidIndices: number[] = []; for (let i = 0; i < objectFieldNode.value.values.length; i++) { const arrayIndexPath = inputFieldPath + `[${i}]`; @@ -2720,89 +2835,127 @@ export class FederationFactory { invalidIndices.push(i); continue; } + /* Preserve original short-circuit behaviour (`isValid &&= ...`): once any earlier + * item failed, do not recurse into subsequent items so error output stays focused + * on the first failing branch. + */ + if (!isValid) { + continue; + } const listConfiguration: SubscriptionCondition = {}; - isValid &&= this.validateSubscriptionFilterCondition( + const itemResult = this.validateSubscriptionFilterCondition( listValueNode, listConfiguration, objectData, depth, arrayIndexPath, directiveSubgraphName, - errorMessages, ); - if (isValid) { - listConfigurations.push(listConfiguration); + if (!itemResult.success) { + isValid = false; + aggregatedErrors.push(...itemResult.errors); + continue; } + listConfigurations.push(listConfiguration); } if (invalidIndices.length > 0) { - errorMessages.push( + aggregatedErrors.push( subscriptionFilterArrayConditionInvalidItemTypeErrorMessage(inputFieldPath, invalidIndices), ); - return false; + return { success: false, errors: aggregatedErrors }; } - return isValid; + return isValid ? { success: true } : { success: false, errors: aggregatedErrors }; } default: { const expectedTypeString = SUBSCRIPTION_FILTER_LIST_INPUT_NAMES.has(fieldName) ? LIST : OBJECT; - errorMessages.push( - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage( - inputFieldPath, - expectedTypeString, - kindToNodeType(objectFieldNode.value.kind), - ), - ); - return false; + return { + success: false, + errors: [ + subscriptionFilterConditionInvalidInputFieldTypeError( + inputFieldPath, + expectedTypeString, + kindToNodeType(objectFieldNode.value.kind), + ), + ], + }; } } } - validateSubscriptionFilterAndGenerateConfiguration( + validateSubscriptionFilterForTarget( directiveNode: ConstDirectiveNode, - objectData: ObjectDefinitionData, - fieldPath: string, - fieldName: string, - parentTypeName: string, + target: ObjectDefinitionData, directiveSubgraphName: string, - ) { - // directive validation occurs elsewhere + ): SubscriptionFilterTargetResult { + // directive validation occurs elsewhere; an empty errors array signals "skip silently". if (!directiveNode.arguments || directiveNode.arguments.length !== 1) { - return; + return { success: false, errors: [] }; } const argumentNode = directiveNode.arguments[0]; if (argumentNode.value.kind !== Kind.OBJECT) { - this.errors.push( - invalidSubscriptionFilterDirectiveError(fieldPath, [ - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage( + return { + success: false, + errors: [ + subscriptionFilterConditionInvalidInputFieldTypeError( CONDITION, OBJECT, kindToNodeType(argumentNode.value.kind), ), - ]), - ); - return; + ], + }; } const condition = {} as SubscriptionCondition; - const errorMessages: string[] = []; - if ( - !this.validateSubscriptionFilterCondition( - argumentNode.value, - condition, - objectData, - 0, - CONDITION, - directiveSubgraphName, - errorMessages, - ) - ) { - this.errors.push(invalidSubscriptionFilterDirectiveError(fieldPath, errorMessages)); - this.isMaxDepth = false; + // Reset depth state so each target validation starts fresh. + this.isMaxDepth = false; + const result = this.validateSubscriptionFilterCondition( + argumentNode.value, + condition, + target, + 0, + CONDITION, + directiveSubgraphName, + ); + if (!result.success) { + return result; + } + return { success: true, condition }; + } + + validateSubscriptionFilterAndGenerateConfiguration({ + directiveNode, + objectData, + fieldPath, + fieldName, + parentTypeName, + directiveSubgraphName, + }: ValidateSubscriptionFilterAndGenerateConfigurationParams): void { + const result = this.validateSubscriptionFilterForTarget(directiveNode, objectData, directiveSubgraphName); + if (!result.success) { + if (result.errors.length > 0) { + this.errors.push(invalidSubscriptionFilterDirectiveError(fieldPath, result.errors)); + } return; } getValueOrDefault(this.fieldConfigurationByFieldCoords, fieldPath, () => ({ argumentNames: [], fieldName, typeName: parentTypeName, - })).subscriptionFilterCondition = condition; + })).subscriptionFilterCondition = result.condition; + } + + collectSubscriptionFilterConcreteTargets(abstractTypeName: string): Array { + const concreteNames = this.concreteTypeNamesByAbstractTypeName.get(abstractTypeName); + if (!concreteNames) { + return []; + } + const out: Array = []; + for (const concreteName of concreteNames) { + const data = this.parentDefinitionDataByTypeName.get(concreteName); + if (data && data.kind === Kind.OBJECT_TYPE_DEFINITION && !isNodeDataInaccessible(data)) { + out.push(data); + } + } + return out; } validateSubscriptionFiltersAndGenerateConfiguration() { @@ -2819,7 +2972,7 @@ export class FederationFactory { if (!namedTypeData) { this.errors.push( invalidSubscriptionFilterDirectiveError(fieldPath, [ - subscriptionFilterNamedTypeErrorMessage(data.fieldData.namedTypeName), + subscriptionFilterNamedTypeError(data.fieldData.namedTypeName), ]), ); continue; @@ -2829,19 +2982,98 @@ export class FederationFactory { // @inaccessible error are caught elsewhere continue; } - // TODO handle Unions and Interfaces - if (namedTypeData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + + if (namedTypeData.kind === Kind.OBJECT_TYPE_DEFINITION) { + this.validateSubscriptionFilterAndGenerateConfiguration({ + directiveNode: data.directive, + objectData: namedTypeData, + fieldPath, + fieldName: data.fieldData.name, + parentTypeName: data.fieldData.renamedParentTypeName, + directiveSubgraphName: data.directiveSubgraphName, + }); continue; } - this.validateSubscriptionFilterAndGenerateConfiguration( - data.directive, - namedTypeData, - fieldPath, - data.fieldData.name, - data.fieldData.renamedParentTypeName, - data.directiveSubgraphName, - ); + + if (!isKindAbstract(namedTypeData.kind)) { + /* Other kinds (Enum/Input/Scalar) should be caught at normalization time. + * Emit an explicit composition error so the directive cannot be silently dropped here again. + */ + this.errors.push( + invalidSubscriptionFilterDirectiveError(fieldPath, [ + subscriptionFilterUnsupportedNamedTypeKindError(namedTypeData.name, namedTypeData.kind), + ]), + ); + continue; + } + + const targets = this.collectSubscriptionFilterConcreteTargets(namedTypeData.name); + if (targets.length === 0) { + const kindLabel = kindToNodeType(namedTypeData.kind); + this.errors.push( + invalidSubscriptionFilterDirectiveError(fieldPath, [ + subscriptionFilterNoAccessibleConcreteTypesError(namedTypeData.name, kindLabel), + ]), + ); + continue; + } + + const result = this.mergeSubscriptionFilterTargetResults({ + directiveNode: data.directive, + abstractTypeData: namedTypeData, + targets, + directiveSubgraphName: data.directiveSubgraphName, + }); + if (!result.success) { + this.errors.push(invalidSubscriptionFilterDirectiveError(fieldPath, result.errors)); + continue; + } + + getValueOrDefault(this.fieldConfigurationByFieldCoords, fieldPath, () => ({ + argumentNames: [], + fieldName: data.fieldData.name, + typeName: data.fieldData.renamedParentTypeName, + })).subscriptionFilterCondition = result.condition; + } + } + + mergeSubscriptionFilterTargetResults({ + directiveNode, + abstractTypeData, + targets, + directiveSubgraphName, + }: MergeSubscriptionFilterTargetResultParams): SubscriptionFilterTargetResult { + const aggregatedErrors: Array = []; + let firstCondition: SubscriptionCondition | null = null; + for (const target of targets) { + const result = this.validateSubscriptionFilterForTarget(directiveNode, target, directiveSubgraphName); + if (result.success) { + firstCondition ??= result.condition; + continue; + } + if (result.errors.length === 0) { + // The directive is malformed — that error is reported elsewhere; skip silently. + continue; + } + const wrapped = + abstractTypeData.kind === Kind.UNION_TYPE_DEFINITION + ? subscriptionFilterUnionMemberInvalidError( + abstractTypeData.name, + target.name, + result.errors.map((error) => error.message).join(LITERAL_NEW_LINE), + ) + : subscriptionFilterInterfaceImplementationInvalidError( + abstractTypeData.name, + target.name, + result.errors.map((error) => error.message).join(LITERAL_NEW_LINE), + ); + aggregatedErrors.push(wrapped); + continue; + } + if (firstCondition === null || aggregatedErrors.length > 0) { + return { errors: aggregatedErrors, success: false }; } + return { condition: firstCondition, success: true }; } buildFederationResult(): FederationResult { @@ -2851,15 +3083,8 @@ export class FederationFactory { if (this.invalidORScopesCoords.size > 0) { this.errors.push(orScopesLimitError(MAX_OR_SCOPES, [...this.invalidORScopesCoords])); } - for (const data of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values()) { - addValidPersistedDirectiveDefinitionNodeByData( - this.routerDefinitions, - data, - this.persistedDirectiveDefinitionByDirectiveName, - this.errors, - ); - } - const definitionsWithInterfaces: InterfaceImplementationData[] = []; + this.handleCustomDirectiveDefinitionNodes(); + const definitionsWithInterfaces: Array = []; this.pushParentDefinitionDataToDocumentDefinitions(definitionsWithInterfaces); this.validateInterfaceImplementationsAndPushToDocumentDefinitions(definitionsWithInterfaces); this.validateQueryRootType(); @@ -2959,7 +3184,7 @@ export class FederationFactory { continue; } if (!tagNames.isDisjointFrom(childTagData.tagNames)) { - getValueOrDefault(childData.persistedDirectivesData.directivesByName, INACCESSIBLE, () => [ + getValueOrDefault(childData.federatedDirectivesData.directivesByName, INACCESSIBLE, () => [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(`${parentDefinitionData.name}.${childName}`); @@ -2967,7 +3192,7 @@ export class FederationFactory { } } if (accessibleChildren < 1) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentDefinitionData.name); @@ -2988,7 +3213,7 @@ export class FederationFactory { } const childTagData = childTagDataByChildName.get(childName); if (!childTagData || tagNames.isDisjointFrom(childTagData.tagNames)) { - getValueOrDefault(childData.persistedDirectivesData.directivesByName, INACCESSIBLE, () => [ + getValueOrDefault(childData.federatedDirectivesData.directivesByName, INACCESSIBLE, () => [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(`${parentDefinitionData.name}.${childName}`); @@ -2996,13 +3221,32 @@ export class FederationFactory { } } if (accessibleChildren < 1) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentDefinitionData.name); } } + handleCustomDirectiveDefinitionNodes() { + for (const data of this.federatedDirectiveDataByName.values()) { + if (!data.isComposed && data.executableLocations.size < 1) { + continue; + } + const directiveNodeResult = propagateDirectiveDefinitionNodeFromData({ + data, + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + }); + if (!directiveNodeResult.success) { + this.errors.push(...directiveNodeResult.errors); + continue; + } + + this.routerDefinitions.push(data.node); + } + } + buildFederationContractResult(contractTagOptions: ContractTagOptions): FederationResult { if (!this.isVersionTwo) { /* If all the subgraphs are version one, the @inaccessible directive won't be present. @@ -3020,7 +3264,7 @@ export class FederationFactory { continue; } if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(parentTagData.tagNames)) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentTypeName); @@ -3067,7 +3311,7 @@ export class FederationFactory { continue; } if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(childTagData.tagNames)) { - getValueOrDefault(fieldData.persistedDirectivesData.directivesByName, INACCESSIBLE, () => [ + getValueOrDefault(fieldData.federatedDirectivesData.directivesByName, INACCESSIBLE, () => [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(fieldData.federatedCoords); @@ -3084,7 +3328,7 @@ export class FederationFactory { continue; } if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(argTagNames)) { - getValueOrDefault(inputValueData.persistedDirectivesData.directivesByName, INACCESSIBLE, () => [ + getValueOrDefault(inputValueData.federatedDirectivesData.directivesByName, INACCESSIBLE, () => [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(inputValueData.federatedCoords); @@ -3092,7 +3336,7 @@ export class FederationFactory { } } if (accessibleFields < 1) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentTypeName); @@ -3107,7 +3351,7 @@ export class FederationFactory { } const parentTagData = this.parentTagDataByTypeName.get(parentTypeName); if (!parentTagData) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentTypeName); @@ -3118,7 +3362,7 @@ export class FederationFactory { continue; } if (parentTagData.childTagDataByChildName.size < 1) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentTypeName); @@ -3155,7 +3399,7 @@ export class FederationFactory { } const childTagData = parentTagData.childTagDataByChildName.get(fieldName); if (!childTagData || contractTagOptions.tagNamesToInclude.isDisjointFrom(childTagData.tagNames)) { - getValueOrDefault(fieldData.persistedDirectivesData.directivesByName, INACCESSIBLE, () => [ + getValueOrDefault(fieldData.federatedDirectivesData.directivesByName, INACCESSIBLE, () => [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(fieldData.federatedCoords); @@ -3163,7 +3407,7 @@ export class FederationFactory { } } if (accessibleFields < 1) { - parentDefinitionData.persistedDirectivesData.directivesByName.set(INACCESSIBLE, [ + parentDefinitionData.federatedDirectivesData.directivesByName.set(INACCESSIBLE, [ generateSimpleDirective(INACCESSIBLE), ]); this.inaccessibleCoords.add(parentTypeName); @@ -3174,14 +3418,7 @@ export class FederationFactory { if (this.subscriptionFilterDataByFieldPath.size > 0) { this.validateSubscriptionFiltersAndGenerateConfiguration(); } - for (const data of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values()) { - addValidPersistedDirectiveDefinitionNodeByData( - this.routerDefinitions, - data, - this.persistedDirectiveDefinitionByDirectiveName, - this.errors, - ); - } + this.handleCustomDirectiveDefinitionNodes(); const interfaceImplementations: InterfaceImplementationData[] = []; this.pushParentDefinitionDataToDocumentDefinitions(interfaceImplementations); this.validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations); @@ -3262,14 +3499,14 @@ function initializeFederationFactory({ options, subgraphs }: FederationParams): if (subgraphs.length < 1) { return { errors: [minimumSubgraphRequirementError], success: false, warnings: [] }; } - const result = batchNormalize({ subgraphs, options }); + const result = new BatchNormalizer({ subgraphs, options }).batchNormalize(); if (!result.success) { return { errors: result.errors, success: false, warnings: result.warnings }; } const entityInterfaceFederationDataByTypeName = new Map(); const invalidEntityInterfacesByTypeName = new Map>(); - for (const [subgraphName, internalSubgraph] of result.internalSubgraphBySubgraphName) { - for (const [typeName, entityInterfaceData] of internalSubgraph.entityInterfaces) { + for (const [subgraphName, internalSubgraph] of result.internalSubgraphByName) { + for (const [typeName, entityInterfaceData] of internalSubgraph.entityInterfaceSubgraphDataByTypeName) { const existingData = entityInterfaceFederationDataByTypeName.get(typeName); if (!existingData) { entityInterfaceFederationDataByTypeName.set( @@ -3314,7 +3551,7 @@ function initializeFederationFactory({ options, subgraphs }: FederationParams): target: definedConcreteTypeNames, }); const { parentDefinitionDataByTypeName } = getOrThrowError( - result.internalSubgraphBySubgraphName, + result.internalSubgraphByName, subgraphName, 'internalSubgraphBySubgraphName', ); @@ -3372,8 +3609,11 @@ function initializeFederationFactory({ options, subgraphs }: FederationParams): concreteTypeNamesByAbstractTypeName: result.concreteTypeNamesByAbstractTypeName, entityDataByTypeName: result.entityDataByTypeName, entityInterfaceFederationDataByTypeName, + executableDirectiveDatasByName: result.executableDirectiveDatasByName, + federatedDirectiveDataByName: result.federatedDirectiveDataByName, fieldCoordsByNamedTypeName: result.fieldCoordsByNamedTypeName, - internalSubgraphBySubgraphName: result.internalSubgraphBySubgraphName, + interfaceImplementationTypeNamesByInterfaceTypeName: result.interfaceImplementationTypeNamesByInterfaceTypeName, + internalSubgraphBySubgraphName: result.internalSubgraphByName, internalGraph: result.internalGraph, options, warnings: result.warnings, diff --git a/composition/src/v1/federation/params.ts b/composition/src/v1/federation/params.ts deleted file mode 100644 index e97fda04c8..0000000000 --- a/composition/src/v1/federation/params.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { ContractName, DirectiveName, FieldName, SubgraphName, TypeName } from '../../types/types'; -import type { - AuthorizationData, - EntityData, - EntityInterfaceFederationData, - InputObjectDefinitionData, - PersistedDirectivesData, -} from '../../schema-building/types'; -import type { ConstDirectiveNode, InputValueDefinitionNode } from 'graphql'; -import type { InternalSubgraph, Subgraph } from '../../subgraph/types'; -import type { ContractTagOptions } from '../../federation/types'; -import type { CompositionOptions } from '../../types/params'; -import type { Graph } from '../../resolvability-graph/graph'; -import type { Warning } from '../../warnings/types'; - -export type ValidateOneOfDirectiveParams = { - data: InputObjectDefinitionData; - inputValueNodes: Array; - requiredFieldNames: Set; -}; - -export type ExtractPersistedDirectivesParams = { - data: PersistedDirectivesData; - directivesByName: Map>; -}; - -export type FederationParams = { - subgraphs: Array; - options?: CompositionOptions; -}; - -export type FederateSubgraphsWithContractsV1Params = { - subgraphs: Array; - tagOptionsByContractName: Map; - options?: CompositionOptions; -}; - -export type FederateSubgraphsContractV1Params = { - subgraphs: Array; - contractTagOptions: ContractTagOptions; - options?: CompositionOptions; -}; - -export type FederationFactoryParams = { - authorizationDataByParentTypeName: Map; - concreteTypeNamesByAbstractTypeName: Map>; - entityDataByTypeName: Map; - entityInterfaceFederationDataByTypeName: Map; - fieldCoordsByNamedTypeName: Map>; - internalGraph: Graph; - internalSubgraphBySubgraphName: Map; - warnings: Array; - options?: CompositionOptions; -}; diff --git a/composition/src/v1/federation/types/params.ts b/composition/src/v1/federation/types/params.ts new file mode 100644 index 0000000000..2119c27c84 --- /dev/null +++ b/composition/src/v1/federation/types/params.ts @@ -0,0 +1,92 @@ +import type { + ArgumentName, + ContractName, + DirectiveName, + FieldName, + InterfaceTypeName, + SubgraphName, + TypeName, +} from '../../../types/types'; +import { + type AuthorizationData, + type EntityData, + type EntityInterfaceFederationData, + type InputObjectDefinitionData, + type FederatedDirectivesData, + type ObjectDefinitionData, + type ParentDefinitionData, +} from '../../../schema-building/types/types'; +import type { ConstDirectiveNode, InputValueDefinitionNode } from 'graphql'; +import type { InternalSubgraph, Subgraph } from '../../../subgraph/types'; +import type { ContractTagOptions } from '../../../federation/types/types'; +import type { CompositionOptions } from '../../../types/params'; +import type { Graph } from '../../../resolvability-graph/graph'; +import type { Warning } from '../../../warnings/types'; +import { + type DirectiveArgumentData, + type DirectiveDefinitionData, +} from '../../../directive-definition-data/types/types'; + +export type ValidateOneOfDirectiveParams = { + data: InputObjectDefinitionData; + inputValueNodes: Array; + requiredFieldNames: Set; +}; + +export type ExtractFederatedDirectivesParams = { + data: FederatedDirectivesData; + directivesByName: Map>; +}; + +export type FederationParams = { + subgraphs: Array; + options?: CompositionOptions; +}; + +export type FederateSubgraphsWithContractsV1Params = { + subgraphs: Array; + tagOptionsByContractName: Map; + options?: CompositionOptions; +}; + +export type FederateSubgraphsContractV1Params = { + subgraphs: Array; + contractTagOptions: ContractTagOptions; + options?: CompositionOptions; +}; + +export type FederationFactoryParams = { + authorizationDataByParentTypeName: Map; + concreteTypeNamesByAbstractTypeName: Map>; + entityDataByTypeName: Map; + entityInterfaceFederationDataByTypeName: Map; + executableDirectiveDatasByName: Map>; + federatedDirectiveDataByName: Map; + fieldCoordsByNamedTypeName: Map>; + interfaceImplementationTypeNamesByInterfaceTypeName: Map>; + internalGraph: Graph; + internalSubgraphBySubgraphName: Map; + warnings: Array; + options?: CompositionOptions; +}; + +export type UpsertDirectiveArgumentDataParams = { + argumentDataByName: Map; + incomingData: DirectiveArgumentData; +}; + +export type MergeSubscriptionFilterTargetResultParams = { + directiveNode: ConstDirectiveNode; + abstractTypeData: ParentDefinitionData; + targets: Array; + directiveSubgraphName: SubgraphName; +}; + +export type ValidateSubscriptionFilterAndGenerateConfigurationParams = { + directiveNode: ConstDirectiveNode; + objectData: ObjectDefinitionData; + fieldPath: string; + fieldName: FieldName; + parentTypeName: TypeName; + directiveSubgraphName: SubgraphName; +}; diff --git a/composition/src/v1/federation/utils.ts b/composition/src/v1/federation/utils.ts index cd2a9a8166..ac9305ad24 100644 --- a/composition/src/v1/federation/utils.ts +++ b/composition/src/v1/federation/utils.ts @@ -9,15 +9,15 @@ import { type InterfaceDefinitionData, type ObjectDefinitionData, type ParentDefinitionData, -} from '../../schema-building/types'; +} from '../../schema-building/types/types'; import { getTypeNodeNamedTypeName, type MutableFieldNode } from '../../schema-building/ast'; import { BASE_SCALARS } from '../constants/constants'; import { isKindAbstract } from '../../ast/utils'; import { type GraphNode } from '../../resolvability-graph/graph-nodes'; import { type InternalSubgraph } from '../../subgraph/types'; -import { type ContractTagOptions } from '../../federation/types'; +import { type ContractTagOptions } from '../../federation/types/types'; import { getOrThrowError, getValueOrDefault } from '../../utils/utils'; -import { type KeyFieldSetData } from '../normalization/types'; +import { type KeyFieldSetData } from '../normalization/types/types'; import { type TypeName } from '../../types/types'; import { TYPENAME } from '../../utils/string-constants'; diff --git a/composition/src/v1/federation/walkers.ts b/composition/src/v1/federation/walkers.ts index 0cda3acdd1..393603b426 100644 --- a/composition/src/v1/federation/walkers.ts +++ b/composition/src/v1/federation/walkers.ts @@ -3,7 +3,7 @@ import { type CompositeOutputData, type InterfaceDefinitionData, type ObjectDefinitionData, -} from '../../schema-building/types'; +} from '../../schema-building/types/types'; import { visit } from 'graphql'; import { operationTypeNodeToDefaultType } from '../../ast/utils'; import { renameNamedTypeName } from '../schema-building/type-merging'; diff --git a/composition/src/v1/normalization/batch-normalization/batch-normalizer.ts b/composition/src/v1/normalization/batch-normalization/batch-normalizer.ts new file mode 100644 index 0000000000..33bc91080a --- /dev/null +++ b/composition/src/v1/normalization/batch-normalization/batch-normalizer.ts @@ -0,0 +1,323 @@ +import type { + AbstractTypeName, + DirectiveName, + FieldName, + InterfaceTypeName, + SubgraphName, + TypeName, +} from '../../../types/types'; +import { type AuthorizationData, type EntityData } from '../../../schema-building/types/types'; +import type { InternalSubgraph, Subgraph } from '../../../subgraph/types'; +import type { Warning } from '../../../warnings/types'; +import type { BatchNormalizeParams } from '../types/params'; +import { type CompositionOptions } from '../../../types/params'; +import type { BatchNormalizationResult } from '../../../normalization/types'; +import { Graph } from '../../../resolvability-graph/graph'; +import { + duplicateOverriddenFieldErrorMessage, + duplicateOverriddenFieldsError, + duplicateSubgraphNamesError, + nonEqualComposeDirectiveMajorVersionError, + nonEqualCoreFeatureComposeDirectiveError, + noSubgraphNameError, + orScopesLimitError, + subgraphValidationError, + unknownSubgraphNameError, +} from '../../../errors/errors'; +import { subtractSet, upsertAuthorizationData, upsertEntityData } from '../../utils/utils'; +import { addIterableToSet, getOrThrowError, getValueOrDefault, mergeSetValueMap } from '../../../utils/utils'; +import { upsertFederatedDirectiveData } from '../utils'; +import { invalidOverrideTargetSubgraphNameWarning } from '../../warnings/warnings'; +import { MAX_OR_SCOPES } from '../../constants/constants'; +import { normalizeSubgraph } from '../normalization-factory'; +import { type LinkImportData } from '../types/types'; +import { type HandleOverridesParams } from './types/params'; +import { internalSubgraphFromNormalization } from '../../../subgraph/utils'; +import { type DirectiveDefinitionData } from '../../../directive-definition-data/types/types'; + +export class BatchNormalizer { + authorizationDataByParentTypeName = new Map(); + concreteTypeNamesByAbstractTypeName = new Map>(); + entityDataByTypeName = new Map(); + errors: Array = []; + executableDirectiveDatasByName = new Map>(); + federatedDirectiveDataByName = new Map(); + importDataByDirectiveName = new Map(); + interfaceImplementationTypeNamesByInterfaceTypeName = new Map>(); + internalSubgraphBySubgraphName = new Map(); + overriddenFieldNamesByParentTypeNameByTargetSubgraphName = new Map>>(); + overrideSourceSubgraphNamesByFieldCoords = new Map>(); + duplicateOverriddenFieldCoords = new Set(); + subgraphNames = new Set(); + invalidORScopesCoords = new Set(); + fieldCoordsByNamedTypeName = new Map>(); + subgraphs: Array; + warnings: Array = []; + validationErrors: Array = []; + options?: CompositionOptions; + + constructor({ options, subgraphs }: BatchNormalizeParams) { + this.options = options; + this.subgraphs = subgraphs; + const duplicateSubgraphNames = new Set(); + for (const { name } of subgraphs) { + if (!name) { + this.errors.push(noSubgraphNameError); + break; + } + + if (this.subgraphNames.has(name)) { + duplicateSubgraphNames.add(name); + } else { + this.subgraphNames.add(name); + } + } + + if (duplicateSubgraphNames.size > 0) { + this.errors.push(duplicateSubgraphNamesError([...duplicateSubgraphNames])); + } + } + + handleLinkImports(importDataByDirectiveName: Map): void { + for (const [directiveName, importData] of importDataByDirectiveName) { + const existingData = this.importDataByDirectiveName.get(directiveName); + if (!existingData) { + this.importDataByDirectiveName.set(directiveName, importData); + continue; + } + + if (existingData.coreUrl !== importData.coreUrl) { + // TODO handle duplicates + this.errors.push(nonEqualCoreFeatureComposeDirectiveError(directiveName)); + continue; + } + + if (existingData.majorVersion !== importData.majorVersion) { + this.errors.push(nonEqualComposeDirectiveMajorVersionError(directiveName)); + } + + if (existingData.minorVersion < importData.minorVersion) { + existingData.minorVersion = importData.minorVersion; + existingData.node = importData.node; + } + } + } + + handleEntityData(entityDataByTypeName: Map, subgraphName: SubgraphName): void { + for (const [typeName, entityData] of entityDataByTypeName) { + const keyFieldSetDataByFieldSet = entityData.keyFieldSetDatasBySubgraphName.get(subgraphName); + if (!keyFieldSetDataByFieldSet) { + continue; + } + upsertEntityData({ + entityDataByTypeName: this.entityDataByTypeName, + keyFieldSetDataByFieldSet, + typeName, + subgraphName, + }); + } + } + + handleOverrides({ + originalTypeNameByRenamedTypeName, + overriddenFieldNamesByParentTypeNameByTargetSubgraphName, + subgraphName, + }: HandleOverridesParams) { + for (const [ + targetSubgraphName, + overriddenFieldNamesByTypeName, + ] of overriddenFieldNamesByParentTypeNameByTargetSubgraphName) { + const isTargetValid = this.subgraphNames.has(targetSubgraphName); + for (const [parentTypeName, fieldNames] of overriddenFieldNamesByTypeName) { + /* It's possible for a renamed root type to have a field overridden, so make sure any errors at this stage are + propagated with the original typename. */ + const originalParentTypeName = originalTypeNameByRenamedTypeName.get(parentTypeName) ?? parentTypeName; + if (!isTargetValid) { + this.warnings.push( + invalidOverrideTargetSubgraphNameWarning( + targetSubgraphName, + originalParentTypeName, + [...fieldNames], + subgraphName, + ), + ); + } else { + const existingOverriddenFieldNamesByParentTypeName = getValueOrDefault( + this.overriddenFieldNamesByParentTypeNameByTargetSubgraphName, + targetSubgraphName, + () => new Map>(), + ); + const existingFieldNames = getValueOrDefault( + existingOverriddenFieldNamesByParentTypeName, + parentTypeName, + () => new Set(fieldNames), + ); + addIterableToSet({ + source: fieldNames, + target: existingFieldNames, + }); + } + for (const fieldName of fieldNames) { + const fieldCoords = `${originalParentTypeName}.${fieldName}`; + const sourceSubgraphs = this.overrideSourceSubgraphNamesByFieldCoords.get(fieldCoords); + if (!sourceSubgraphs) { + this.overrideSourceSubgraphNamesByFieldCoords.set(fieldCoords, [subgraphName]); + continue; + } + + sourceSubgraphs.push(subgraphName); + this.duplicateOverriddenFieldCoords.add(fieldCoords); + } + } + } + } + + handleOverrideConfigurationData(): void { + for (const [targetSubgraphName, overriddenFieldNamesByParentTypeName] of this + .overriddenFieldNamesByParentTypeNameByTargetSubgraphName) { + const internalSubgraph = this.internalSubgraphBySubgraphName.get(targetSubgraphName); + if (!internalSubgraph) { + this.errors.push(unknownSubgraphNameError(targetSubgraphName)); + continue; + } + + internalSubgraph.overriddenFieldNamesByParentTypeName = overriddenFieldNamesByParentTypeName; + for (const [parentTypeName, fieldNames] of overriddenFieldNamesByParentTypeName) { + const configurationData = internalSubgraph.configurationDataByTypeName.get(parentTypeName); + if (!configurationData) { + continue; + } + + subtractSet(fieldNames, configurationData.fieldNames); + if (configurationData.fieldNames.size < 1) { + internalSubgraph.configurationDataByTypeName.delete(parentTypeName); + } + } + } + } + + batchNormalize(): BatchNormalizationResult { + // Federation is aborted due to subgraph naming errors + if (this.errors.length > 0) { + return { + errors: this.errors, + success: false, + warnings: this.warnings, + }; + } + + const internalGraph = new Graph(); + for (const subgraph of this.subgraphs) { + const subgraphName = subgraph.name; + const normalizationResult = normalizeSubgraph({ + document: subgraph.definitions, + internalGraph, + options: this.options, + subgraphName, + }); + if (normalizationResult.warnings.length > 0) { + this.warnings.push(...normalizationResult.warnings); + } + if (!normalizationResult.success) { + this.validationErrors.push(subgraphValidationError(subgraphName, normalizationResult.errors)); + continue; + } + + this.handleLinkImports(normalizationResult.importDataByDirectiveName); + + for (const authorizationData of normalizationResult.authorizationDataByParentTypeName.values()) { + upsertAuthorizationData(this.authorizationDataByParentTypeName, authorizationData, this.invalidORScopesCoords); + } + for (const [namedTypeName, fieldCoords] of normalizationResult.fieldCoordsByNamedTypeName) { + addIterableToSet({ + source: fieldCoords, + target: getValueOrDefault(this.fieldCoordsByNamedTypeName, namedTypeName, () => new Set()), + }); + } + mergeSetValueMap({ + source: normalizationResult.concreteTypeNamesByAbstractTypeName, + target: this.concreteTypeNamesByAbstractTypeName, + }); + mergeSetValueMap({ + source: normalizationResult.interfaceImplementationTypeNamesByInterfaceTypeName, + target: this.interfaceImplementationTypeNamesByInterfaceTypeName, + }); + this.handleEntityData(normalizationResult.entityDataByTypeName, subgraphName); + upsertFederatedDirectiveData({ + executableDirectiveDatasByName: this.executableDirectiveDatasByName, + existingDataByName: this.federatedDirectiveDataByName, + incomingDataByName: normalizationResult.federatedDirectiveDataByName, + }); + this.internalSubgraphBySubgraphName.set( + subgraphName, + internalSubgraphFromNormalization({ normalization: normalizationResult, subgraphName }), + ); + this.handleOverrides({ + originalTypeNameByRenamedTypeName: normalizationResult.originalTypeNameByRenamedTypeName, + overriddenFieldNamesByParentTypeNameByTargetSubgraphName: + normalizationResult.overriddenFieldNamesByParentTypeNameByTargetSubgraphName, + subgraphName, + }); + } + if (this.invalidORScopesCoords.size > 0) { + this.errors.push(orScopesLimitError(MAX_OR_SCOPES, [...this.invalidORScopesCoords])); + } + if (this.duplicateOverriddenFieldCoords.size > 0) { + const duplicateOverriddenFieldErrorMessages: string[] = []; + for (const fieldCoords of this.duplicateOverriddenFieldCoords) { + const sourceSubgraphNames = getOrThrowError( + this.overrideSourceSubgraphNamesByFieldCoords, + fieldCoords, + 'overrideSourceSubgraphNamesByFieldCoords', + ); + duplicateOverriddenFieldErrorMessages.push( + duplicateOverriddenFieldErrorMessage(fieldCoords, sourceSubgraphNames), + ); + } + this.errors.push(duplicateOverriddenFieldsError(duplicateOverriddenFieldErrorMessages)); + } + + for (const [directiveName, executableDirectiveDatas] of this.executableDirectiveDatasByName) { + if ( + this.federatedDirectiveDataByName.has(directiveName) || + executableDirectiveDatas.length !== this.subgraphNames.size + ) { + this.executableDirectiveDatasByName.delete(directiveName); + } + } + + this.errors.push(...this.validationErrors); + + if (this.errors.length > 0) { + return { + errors: this.errors, + success: false, + warnings: this.warnings, + }; + } + + this.handleOverrideConfigurationData(); + + if (this.errors.length > 0) { + return { + errors: this.errors, + success: false, + warnings: this.warnings, + }; + } + + return { + authorizationDataByParentTypeName: this.authorizationDataByParentTypeName, + concreteTypeNamesByAbstractTypeName: this.concreteTypeNamesByAbstractTypeName, + entityDataByTypeName: this.entityDataByTypeName, + executableDirectiveDatasByName: this.executableDirectiveDatasByName, + federatedDirectiveDataByName: this.federatedDirectiveDataByName, + fieldCoordsByNamedTypeName: this.fieldCoordsByNamedTypeName, + interfaceImplementationTypeNamesByInterfaceTypeName: this.interfaceImplementationTypeNamesByInterfaceTypeName, + internalSubgraphByName: this.internalSubgraphBySubgraphName, + internalGraph, + success: true, + warnings: this.warnings, + }; + } +} diff --git a/composition/src/v1/normalization/batch-normalization/types/params.ts b/composition/src/v1/normalization/batch-normalization/types/params.ts new file mode 100644 index 0000000000..af1af5d292 --- /dev/null +++ b/composition/src/v1/normalization/batch-normalization/types/params.ts @@ -0,0 +1,7 @@ +import { type FieldName, type SubgraphName, type TypeName } from '../../../../types/types'; + +export type HandleOverridesParams = { + originalTypeNameByRenamedTypeName: Map; + overriddenFieldNamesByParentTypeNameByTargetSubgraphName: Map>>; + subgraphName: SubgraphName; +}; diff --git a/composition/src/v1/normalization/directive-definition-data.ts b/composition/src/v1/normalization/directive-definition-data.ts deleted file mode 100644 index 65be30353f..0000000000 --- a/composition/src/v1/normalization/directive-definition-data.ts +++ /dev/null @@ -1,918 +0,0 @@ -import { type ArgumentData, type DirectiveDefinitionData } from '../../schema-building/types'; -import { stringToNamedTypeNode } from '../../ast/utils'; -import { DEFAULT_DEPRECATION_REASON, Kind } from 'graphql'; -import { - ARGUMENT_DEFINITION_UPPER, - AS, - ASSUMED_SIZE, - AUTHENTICATED, - BOOLEAN_SCALAR, - CHANNEL, - CHANNELS, - COMPOSE_DIRECTIVE, - CONDITION, - CONFIGURE_CHILD_DESCRIPTIONS, - CONFIGURE_DESCRIPTION, - CONNECT_FIELD_RESOLVER, - CONTEXT, - COST, - DEFAULT_EDFS_PROVIDER_ID, - DEPRECATED, - DESCRIPTION_OVERRIDE, - EDFS_KAFKA_PUBLISH, - EDFS_KAFKA_SUBSCRIBE, - EDFS_NATS_PUBLISH, - EDFS_NATS_REQUEST, - EDFS_NATS_STREAM_CONFIGURATION, - EDFS_NATS_SUBSCRIBE, - EDFS_REDIS_PUBLISH, - EDFS_REDIS_SUBSCRIBE, - ENUM_UPPER, - ENUM_VALUE_UPPER, - EXTENDS, - EXTERNAL, - FIELD_DEFINITION_UPPER, - FIELDS, - FOR, - FROM, - IMPORT, - INACCESSIBLE, - INPUT_FIELD_DEFINITION_UPPER, - INPUT_OBJECT_UPPER, - INT_SCALAR, - INTERFACE_OBJECT, - INTERFACE_UPPER, - KEY, - LEVELS, - LINK, - LINK_IMPORT, - LINK_PURPOSE, - LIST_SIZE, - NAME, - OBJECT_UPPER, - ONE_OF, - OVERRIDE, - PROPAGATE, - PROVIDER_ID, - PROVIDES, - REASON, - REQUIRE_FETCH_REASONS, - REQUIRE_ONE_SLICING_ARGUMENT, - REQUIRES, - REQUIRES_SCOPES, - RESOLVABLE, - SCALAR_UPPER, - SCHEMA_UPPER, - SCOPE_SCALAR, - SCOPES, - SEMANTIC_NON_NULL, - SHAREABLE, - SIZED_FIELDS, - SLICING_ARGUMENTS, - SPECIFIED_BY, - STREAM_CONFIGURATION, - STRING_SCALAR, - SUBJECT, - SUBJECTS, - SUBSCRIPTION_FILTER, - SUBSCRIPTION_FILTER_CONDITION, - TAG, - TOPIC, - TOPICS, - UNION_UPPER, - URL_LOWER, - WEIGHT, -} from '../../utils/string-constants'; -import { - AUTHENTICATED_DEFINITION, - COMPOSE_DIRECTIVE_DEFINITION, - CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION, - CONFIGURE_DESCRIPTION_DEFINITION, - CONNECT_FIELD_RESOLVER_DEFINITION, - COST_DEFINITION, - DEPRECATED_DEFINITION, - EDFS_KAFKA_PUBLISH_DEFINITION, - EDFS_KAFKA_SUBSCRIBE_DEFINITION, - EDFS_NATS_PUBLISH_DEFINITION, - EDFS_NATS_REQUEST_DEFINITION, - EDFS_NATS_SUBSCRIBE_DEFINITION, - EDFS_REDIS_PUBLISH_DEFINITION, - EDFS_REDIS_SUBSCRIBE_DEFINITION, - EXTENDS_DEFINITION, - EXTERNAL_DEFINITION, - INACCESSIBLE_DEFINITION, - INTERFACE_OBJECT_DEFINITION, - KEY_DEFINITION, - LINK_DEFINITION, - LIST_SIZE_DEFINITION, - ONE_OF_DEFINITION, - OVERRIDE_DEFINITION, - PROVIDES_DEFINITION, - REQUIRE_FETCH_REASONS_DEFINITION, - REQUIRES_DEFINITION, - REQUIRES_SCOPES_DEFINITION, - SEMANTIC_NON_NULL_DEFINITION, - SHAREABLE_DEFINITION, - SPECIFIED_BY_DEFINITION, - SUBSCRIPTION_FILTER_DEFINITION, - TAG_DEFINITION, -} from '../constants/directive-definitions'; -import { REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_STRING_TYPE_NODE } from '../constants/type-nodes'; - -// Note that arguments with default values are classed as optional and should be placed into `optionalArgumentNames`. - -export const AUTHENTICATED_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([]), - isRepeatable: false, - locations: new Set([ENUM_UPPER, FIELD_DEFINITION_UPPER, INTERFACE_UPPER, OBJECT_UPPER, SCALAR_UPPER]), - name: AUTHENTICATED, - node: AUTHENTICATED_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const COMPOSE_DIRECTIVE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - NAME, - { - name: NAME, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - ]), - isRepeatable: true, - locations: new Set([SCHEMA_UPPER]), - name: COMPOSE_DIRECTIVE, - node: COMPOSE_DIRECTIVE_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([NAME]), -}; - -export const CONFIGURE_DESCRIPTION_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - PROPAGATE, - { - name: PROPAGATE, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(BOOLEAN_SCALAR), - }, - defaultValue: { - kind: Kind.BOOLEAN, - value: true, - }, - }, - ], - [ - DESCRIPTION_OVERRIDE, - { - name: DESCRIPTION_OVERRIDE, - typeNode: stringToNamedTypeNode(STRING_SCALAR), - }, - ], - ]), - isRepeatable: false, - locations: new Set([ - ARGUMENT_DEFINITION_UPPER, - ENUM_UPPER, - ENUM_VALUE_UPPER, - FIELD_DEFINITION_UPPER, - INTERFACE_UPPER, - INPUT_OBJECT_UPPER, - INPUT_FIELD_DEFINITION_UPPER, - OBJECT_UPPER, - SCALAR_UPPER, - SCHEMA_UPPER, - UNION_UPPER, - ]), - name: CONFIGURE_DESCRIPTION, - node: CONFIGURE_DESCRIPTION_DEFINITION, - optionalArgumentNames: new Set([PROPAGATE, DESCRIPTION_OVERRIDE]), - requiredArgumentNames: new Set(), -}; - -export const CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - PROPAGATE, - { - name: PROPAGATE, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(BOOLEAN_SCALAR), - }, - defaultValue: { - kind: Kind.BOOLEAN, - value: true, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([ENUM_UPPER, INPUT_OBJECT_UPPER, INTERFACE_UPPER, OBJECT_UPPER]), - name: CONFIGURE_CHILD_DESCRIPTIONS, - node: CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION, - optionalArgumentNames: new Set([PROPAGATE]), - requiredArgumentNames: new Set(), -}; - -export const CONNECT_FIELD_RESOLVER_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - CONTEXT, - { - name: CONTEXT, - typeNode: REQUIRED_FIELDSET_TYPE_NODE, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: CONNECT_FIELD_RESOLVER, - node: CONNECT_FIELD_RESOLVER_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([CONTEXT]), -}; - -export const COST_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - WEIGHT, - { - name: WEIGHT, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(INT_SCALAR), - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([ - ARGUMENT_DEFINITION_UPPER, - ENUM_UPPER, - FIELD_DEFINITION_UPPER, - INPUT_FIELD_DEFINITION_UPPER, - OBJECT_UPPER, - SCALAR_UPPER, - ]), - name: COST, - node: COST_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([WEIGHT]), -}; - -export const DEPRECATED_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - REASON, - { - name: REASON, - typeNode: stringToNamedTypeNode(STRING_SCALAR), - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_DEPRECATION_REASON, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([ - ARGUMENT_DEFINITION_UPPER, - ENUM_VALUE_UPPER, - FIELD_DEFINITION_UPPER, - INPUT_FIELD_DEFINITION_UPPER, - ]), - name: DEPRECATED, - node: DEPRECATED_DEFINITION, - optionalArgumentNames: new Set([REASON]), - requiredArgumentNames: new Set(), -}; - -export const EXTENDS_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: false, - locations: new Set([INTERFACE_UPPER, OBJECT_UPPER]), - name: EXTENDS, - node: EXTENDS_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const EXTERNAL_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER, OBJECT_UPPER]), - name: EXTERNAL, - node: EXTERNAL_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const INACCESSIBLE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: false, - locations: new Set([ - ARGUMENT_DEFINITION_UPPER, - ENUM_UPPER, - ENUM_VALUE_UPPER, - FIELD_DEFINITION_UPPER, - INPUT_FIELD_DEFINITION_UPPER, - INPUT_OBJECT_UPPER, - INTERFACE_UPPER, - OBJECT_UPPER, - SCALAR_UPPER, - UNION_UPPER, - ]), - name: INACCESSIBLE, - node: INACCESSIBLE_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const INTERFACE_OBJECT_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: false, - locations: new Set([OBJECT_UPPER]), - name: INTERFACE_OBJECT, - node: INTERFACE_OBJECT_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const KAFKA_PUBLISH_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - TOPIC, - { - name: TOPIC, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_KAFKA_PUBLISH, - node: EDFS_KAFKA_PUBLISH_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([TOPIC]), -}; - -export const KAFKA_SUBSCRIBE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - TOPICS, - { - name: TOPICS, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: REQUIRED_STRING_TYPE_NODE, - }, - }, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_KAFKA_SUBSCRIBE, - node: EDFS_KAFKA_SUBSCRIBE_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([TOPICS]), -}; - -export const NATS_PUBLISH_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - SUBJECT, - { - name: SUBJECT, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_NATS_PUBLISH, - node: EDFS_NATS_PUBLISH_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([SUBJECT]), -}; - -export const NATS_REQUEST_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - SUBJECT, - { - name: SUBJECT, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_NATS_REQUEST, - node: EDFS_NATS_REQUEST_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([SUBJECT]), -}; - -export const NATS_SUBSCRIBE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - SUBJECTS, - { - name: SUBJECTS, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: REQUIRED_STRING_TYPE_NODE, - }, - }, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - [ - STREAM_CONFIGURATION, - { - name: STREAM_CONFIGURATION, - typeNode: stringToNamedTypeNode(EDFS_NATS_STREAM_CONFIGURATION), - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_NATS_SUBSCRIBE, - node: EDFS_NATS_SUBSCRIBE_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID, STREAM_CONFIGURATION]), - requiredArgumentNames: new Set([SUBJECTS]), -}; - -export const ONE_OF_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([]), - isRepeatable: false, - locations: new Set([INPUT_OBJECT_UPPER]), - name: ONE_OF, - node: ONE_OF_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const OVERRIDE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - FROM, - { - name: FROM, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: OVERRIDE, - node: OVERRIDE_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([FROM]), -}; - -export const KEY_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - FIELDS, - { - name: FIELDS, - typeNode: REQUIRED_FIELDSET_TYPE_NODE, - }, - ], - [ - RESOLVABLE, - { - name: RESOLVABLE, - typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { - kind: Kind.BOOLEAN, - value: true, - }, - }, - ], - ]), - isRepeatable: true, - locations: new Set([INTERFACE_UPPER, OBJECT_UPPER]), - name: KEY, - node: KEY_DEFINITION, - optionalArgumentNames: new Set([RESOLVABLE]), - requiredArgumentNames: new Set([FIELDS]), -}; - -export const LINK_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - URL_LOWER, - { - name: URL_LOWER, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - [ - AS, - { - name: AS, - typeNode: stringToNamedTypeNode(STRING_SCALAR), - }, - ], - [ - FOR, - { - name: FOR, - typeNode: stringToNamedTypeNode(LINK_PURPOSE), - }, - ], - [ - IMPORT, - { - name: IMPORT, - typeNode: { - kind: Kind.LIST_TYPE, - type: stringToNamedTypeNode(LINK_IMPORT), - }, - }, - ], - ]), - isRepeatable: true, - locations: new Set([SCHEMA_UPPER]), - name: LINK, - node: LINK_DEFINITION, - optionalArgumentNames: new Set([AS, FOR, IMPORT]), - requiredArgumentNames: new Set([URL_LOWER]), -}; - -export const LIST_SIZE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - ASSUMED_SIZE, - { - name: ASSUMED_SIZE, - typeNode: stringToNamedTypeNode(INT_SCALAR), - }, - ], - [ - SLICING_ARGUMENTS, - { - name: SLICING_ARGUMENTS, - typeNode: { - kind: Kind.LIST_TYPE, - type: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(STRING_SCALAR), - }, - }, - }, - ], - [ - SIZED_FIELDS, - { - name: SIZED_FIELDS, - typeNode: { - kind: Kind.LIST_TYPE, - type: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(STRING_SCALAR), - }, - }, - }, - ], - [ - REQUIRE_ONE_SLICING_ARGUMENT, - { - name: REQUIRE_ONE_SLICING_ARGUMENT, - typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { - kind: Kind.BOOLEAN, - value: true, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: LIST_SIZE, - node: LIST_SIZE_DEFINITION, - optionalArgumentNames: new Set([ASSUMED_SIZE, SLICING_ARGUMENTS, SIZED_FIELDS, REQUIRE_ONE_SLICING_ARGUMENT]), - requiredArgumentNames: new Set(), -}; - -export const PROVIDES_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - FIELDS, - { - name: FIELDS, - typeNode: REQUIRED_FIELDSET_TYPE_NODE, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: PROVIDES, - node: PROVIDES_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([FIELDS]), -}; - -export const REQUIRES_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - FIELDS, - { - name: FIELDS, - typeNode: REQUIRED_FIELDSET_TYPE_NODE, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: REQUIRES, - node: REQUIRES_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([FIELDS]), -}; - -export const REDIS_PUBLISH_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - CHANNEL, - { - name: CHANNEL, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_REDIS_PUBLISH, - node: EDFS_REDIS_PUBLISH_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([CHANNEL]), -}; - -export const REDIS_SUBSCRIBE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - CHANNELS, - { - name: CHANNELS, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: REQUIRED_STRING_TYPE_NODE, - }, - }, - }, - ], - [ - PROVIDER_ID, - { - name: PROVIDER_ID, - typeNode: REQUIRED_STRING_TYPE_NODE, - defaultValue: { - kind: Kind.STRING, - value: DEFAULT_EDFS_PROVIDER_ID, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: EDFS_REDIS_SUBSCRIBE, - node: EDFS_REDIS_SUBSCRIBE_DEFINITION, - optionalArgumentNames: new Set([PROVIDER_ID]), - requiredArgumentNames: new Set([CHANNELS]), -}; - -export const REQUIRE_FETCH_REASONS_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: true, - locations: new Set([FIELD_DEFINITION_UPPER, INTERFACE_UPPER, OBJECT_UPPER]), - name: REQUIRE_FETCH_REASONS, - node: REQUIRE_FETCH_REASONS_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const REQUIRES_SCOPES_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - SCOPES, - { - name: SCOPES, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(SCOPE_SCALAR), - }, - }, - }, - }, - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([ENUM_UPPER, FIELD_DEFINITION_UPPER, INTERFACE_UPPER, OBJECT_UPPER, SCALAR_UPPER]), - name: REQUIRES_SCOPES, - node: REQUIRES_SCOPES_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([SCOPES]), -}; - -export const SEMANTIC_NON_NULL_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - LEVELS, - { - name: LEVELS, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: { - kind: Kind.LIST_TYPE, - type: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(INT_SCALAR), - }, - }, - }, - defaultValue: { - kind: Kind.LIST, - values: [ - { - kind: Kind.INT, - value: '0', - }, - ], - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: SEMANTIC_NON_NULL, - node: SEMANTIC_NON_NULL_DEFINITION, - optionalArgumentNames: new Set([LEVELS]), - requiredArgumentNames: new Set(), -}; - -export const SPECIFIED_BY_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - URL_LOWER, - { - name: URL_LOWER, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - ]), - isRepeatable: false, - locations: new Set([SCALAR_UPPER]), - name: SPECIFIED_BY, - node: SPECIFIED_BY_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([URL_LOWER]), -}; - -export const SHAREABLE_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map(), - isRepeatable: true, - locations: new Set([FIELD_DEFINITION_UPPER, OBJECT_UPPER]), - name: SHAREABLE, - node: SHAREABLE_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set(), -}; - -export const SUBSCRIPTION_FILTER_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - CONDITION, - { - name: CONDITION, - typeNode: { - kind: Kind.NON_NULL_TYPE, - type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION), - }, - }, - ], - ]), - isRepeatable: false, - locations: new Set([FIELD_DEFINITION_UPPER]), - name: SUBSCRIPTION_FILTER, - node: SUBSCRIPTION_FILTER_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([CONDITION]), -}; - -export const TAG_DEFINITION_DATA: DirectiveDefinitionData = { - argumentTypeNodeByName: new Map([ - [ - NAME, - { - name: NAME, - typeNode: REQUIRED_STRING_TYPE_NODE, - }, - ], - ]), - isRepeatable: true, - locations: new Set([ - ARGUMENT_DEFINITION_UPPER, - ENUM_UPPER, - ENUM_VALUE_UPPER, - FIELD_DEFINITION_UPPER, - INPUT_FIELD_DEFINITION_UPPER, - INPUT_OBJECT_UPPER, - INTERFACE_UPPER, - OBJECT_UPPER, - SCALAR_UPPER, - UNION_UPPER, - ]), - name: TAG, - node: TAG_DEFINITION, - optionalArgumentNames: new Set(), - requiredArgumentNames: new Set([NAME]), -}; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index f4cca59232..c23b405ef6 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -9,18 +9,13 @@ import { type FieldDefinitionNode, type InputValueDefinitionNode, type InterfaceTypeDefinitionNode, - type InterfaceTypeExtensionNode, type IntValueNode, Kind, type ListValueNode, type NamedTypeNode, - type ObjectTypeDefinitionNode, - type ObjectTypeExtensionNode, type OperationTypeDefinitionNode, OperationTypeNode, print, - type SchemaDefinitionNode, - type SchemaExtensionNode, type StringValueNode, type TypeDefinitionNode, type TypeExtensionNode, @@ -30,7 +25,6 @@ import { } from 'graphql'; import { type EnumTypeNode, - extractExecutableDirectiveLocations, formatDescription, type InputObjectTypeNode, type InterfaceTypeNode, @@ -46,6 +40,7 @@ import { type UnionTypeNode, } from '../../ast/utils'; import { + extractLinkArgs, getConditionalFieldSetDirectiveName, getInitialFieldCoordsPath, getNormalizedFieldSet, @@ -70,9 +65,6 @@ import { mapToArrayOfValues, newAuthorizationData, newFieldAuthorizationData, - subtractSet, - upsertAuthorizationData, - upsertEntityData, } from '../utils/utils'; import { configureDescriptionNoDescriptionError, @@ -81,11 +73,8 @@ import { duplicateDirectiveArgumentDefinitionsErrorMessage, duplicateDirectiveDefinitionArgumentErrorMessage, duplicateDirectiveDefinitionError, - duplicateDirectiveDefinitionLocationErrorMessage, duplicateFieldInFieldSetErrorMessage, duplicateImplementedInterfaceError, - duplicateOverriddenFieldErrorMessage, - duplicateOverriddenFieldsError, duplicateTypeDefinitionError, duplicateUnionMemberDefinitionError, equivalentSourceAndTargetOverrideErrorMessage, @@ -96,8 +85,8 @@ import { incompatibleTypeWithProvidesErrorMessage, inlineFragmentWithoutTypeConditionErrorMessage, invalidArgumentValueErrorMessage, + invalidComposeDirectiveNameError, invalidDirectiveDefinitionError, - invalidDirectiveDefinitionLocationErrorMessage, invalidDirectiveError, invalidDirectiveLocationErrorMessage, invalidEdfsPublishResultObjectErrorMessage, @@ -128,8 +117,6 @@ import { invalidSelectionOnUnionErrorMessage, invalidSelectionSetDefinitionErrorMessage, invalidSelectionSetErrorMessage, - invalidSubgraphNameErrorMessage, - invalidSubgraphNamesError, invalidSubscriptionFilterLocationError, invalidUnionMemberTypeError, listSizeAssumedSizeSlicingArgDefaultErrorMessage, @@ -140,13 +127,17 @@ import { listSizeSizedFieldNotListErrorMessage, listSizeSizedFieldsInvalidReturnTypeErrorMessage, listSizeSizedFieldsOnListsErrorMessage, + listSizeSlicingArgumentMalformedPathErrorMessage, listSizeSlicingArgumentNotIntErrorMessage, + listSizeSlicingArgumentSegmentNotFoundErrorMessage, + listSizeSlicingArgumentSegmentNotInputObjectErrorMessage, multipleNamedTypeDefinitionError, noBaseScalarDefinitionError, noDefinedEnumValuesError, noDefinedUnionMembersError, noFieldDefinitionsError, noInputValueDefinitionsError, + noLeadingAtComposeDirectiveNameError, nonEntityObjectExtensionsEventDrivenErrorMessage, nonExternalConditionalFieldError, nonExternalKeyFieldNamesEventDrivenErrorMessage, @@ -161,8 +152,6 @@ import { semanticNonNullLevelsNaNIndexErrorMessage, semanticNonNullLevelsNonNullErrorMessage, subgraphInvalidSyntaxError, - subgraphValidationError, - subgraphValidationFailureError, typeNameAlreadyProvidedErrorMessage, undefinedCompositeOutputTypeError, undefinedDirectiveError, @@ -171,6 +160,8 @@ import { undefinedTypeError, unexpectedDirectiveArgumentErrorMessage, unexpectedKindFatalError, + unimportedComposeDirectiveNameError, + unknownComposeDirectiveNameError, unknownInlineFragmentTypeConditionErrorMessage, unknownNamedTypeErrorMessage, unknownTypeInFieldSetErrorMessage, @@ -181,7 +172,6 @@ import { DEPENDENCIES_BY_DIRECTIVE_NAME, EVENT_DIRECTIVE_NAMES, STREAM_CONFIGURATION_FIELD_NAMES, - TYPE_SYSTEM_DIRECTIVE_LOCATIONS, } from '../constants/strings'; import { buildASTSchema } from '../../buildASTSchema/buildASTSchema'; import { @@ -194,21 +184,19 @@ import { type RequiredFieldConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; -import { recordSubgraphName } from '../subgraph/subgraph'; import { + composedOneOfDirectiveWarning, consumerInactiveThresholdInvalidValueWarning, externalEntityExtensionKeyFieldWarning, externalInterfaceFieldsWarning, fieldAlreadyProvidedWarning, invalidExternalFieldWarning, - invalidOverrideTargetSubgraphNameWarning, nonExternalConditionalFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, } from '../warnings/warnings'; import { upsertDirectiveSchemaAndEntityDefinitions, upsertParentsAndChildren } from './walkers'; import { - type ArgumentData, type AuthorizationData, type CompositeOutputData, type ConditionalFieldData, @@ -226,11 +214,10 @@ import { type NodeData, type ObjectDefinitionData, type ParentDefinitionData, - type PersistedDirectiveDefinitionData, type ScalarDefinitionData, type SchemaData, type UnionDefinitionData, -} from '../../schema-building/types'; +} from '../../schema-building/types/types'; import { areDefaultValuesCompatible, childMapToValueArray, @@ -238,6 +225,7 @@ import { isFieldData, isInputNodeKind, isInputObjectDefinitionData, + isInterfaceNode, isNodeExternalOrShareable, isOutputNodeKind, isParentDataCompositeOutputType, @@ -246,10 +234,12 @@ import { isTypeValidImplementation, newConditionalFieldData, newExternalFieldData, - newPersistedDirectivesData, + newFederatedDirectivesData, + sanitizeDefaultValue, } from '../../schema-building/utils'; import { type CompositeOutputNode, + extractDirectiveLocations, getMutableEnumNode, getMutableFieldNode, getMutableInputObjectNode, @@ -259,23 +249,22 @@ import { getMutableScalarNode, getMutableTypeNode, getMutableUnionNode, - getNamedTypeNode, getTypeNodeNamedTypeName, + type MutableInputValueNode, type MutableTypeNode, } from '../../schema-building/ast'; -import { type InvalidRootTypeFieldEventsDirectiveData } from '../../errors/types'; +import { type InvalidRootTypeFieldEventsDirectiveData } from '../../errors/types/types'; import { Graph } from '../../resolvability-graph/graph'; import { DEFAULT_CONSUMER_INACTIVE_THRESHOLD } from '../constants/integers'; -import { type InternalSubgraph } from '../../subgraph/types'; import { type Warning } from '../../warnings/types'; -import { type BatchNormalizationResult, type NormalizationResult } from '../../normalization/types'; +import { type NormalizationResult } from '../../normalization/types'; import { ARGUMENT, ASSUMED_SIZE, AUTHENTICATED, - BOOLEAN_SCALAR, CHANNEL, CHANNELS, + COMPOSE_DIRECTIVE, CONFIGURE_DESCRIPTION, CONSUMER_INACTIVE_THRESHOLD, CONSUMER_NAME, @@ -293,14 +282,10 @@ import { EDFS_REDIS_SUBSCRIBE, ENTITIES_FIELD, EXECUTABLE_DIRECTIVE_LOCATIONS, - EXECUTION, EXTENDS, EXTERNAL, - FIELD_SET_SCALAR, FIELDS, - FLOAT_SCALAR, HYPHEN_JOIN, - ID_SCALAR, INACCESSIBLE, INHERITABLE_DIRECTIVE_NAMES, INPUT_FIELD, @@ -308,9 +293,9 @@ import { INTERFACE_OBJECT, KEY, LEVELS, - LINK_IMPORT, - LINK_PURPOSE, LIST_SIZE, + LITERAL_AT, + LITERAL_PERIOD, MUTATION, NON_NULLABLE_BOOLEAN, NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT, @@ -334,9 +319,7 @@ import { RESOLVABLE, ROOT_TYPE_NAMES, SCHEMA, - SCOPE_SCALAR, SCOPES, - SECURITY, SEMANTIC_NON_NULL, SERVICE_FIELD, SHAREABLE, @@ -349,9 +332,7 @@ import { SUBJECTS, SUBSCRIBE, SUBSCRIPTION, - SUBSCRIPTION_FIELD_CONDITION, SUBSCRIPTION_FILTER, - SUBSCRIPTION_FILTER_CONDITION, SUCCESS, TOPIC, TOPICS, @@ -372,33 +353,51 @@ import { } from '../../utils/utils'; import { type AddInputValueDataByNodeParams, + type ComposeDirectiveNode, type ConditionalFieldSetValidationResult, - type ExtractArgumentDataResult, + type ExtractDirectiveArgumentDataResult, type FieldSetData, type FieldSetParentResult, type HandleCostDirectiveParams, type HandleListSizeDirectiveParams, + type RecordDirectiveWeightOnFieldParams, type HandleOverrideDirectiveParams, type HandleRequiresScopesDirectiveParams, type HandleSemanticNonNullDirectiveParams, type KeyFieldSetData, + type LinkImportData, type UpsertInputObjectResult, type ValidateDirectiveParams, -} from './types'; +} from './types/types'; import { newConfigurationData, newFieldSetConditionData } from '../../router-configuration/utils'; import { type ImplementationErrors, type InvalidFieldImplementation } from '../../utils/types'; -import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../../types/types'; import { - type BatchNormalizeParams, + type AbstractTypeName, + type ArgumentName, + type DirectiveName, + type FieldName, + type InterfaceTypeName, + type SubgraphName, + type TypeName, +} from '../../types/types'; +import { type HandleFieldInheritableDirectivesParams, type HandleNonExternalConditionalFieldParams, type NormalizationFactoryParams, type NormalizeSubgraphFromStringParams, type NormalizeSubgraphParams, type ValidateOneOfDirectiveParams, -} from './params'; +} from './types/params'; import { EDFS_NATS_STREAM_CONFIGURATION_DEFINITION } from '../constants/non-directive-definitions'; import type { CompositionOptions } from '../../types/params'; +import { type SchemaNodeResult } from './types/results'; +import { isArgumentValueValid } from '../../validation/validation'; +import { + type AddDirectiveArgumentDataByNodeParams, + type ExtractDirectiveArgumentDataParams, +} from '../../directive-definition-data/types/params'; +import { newDirectiveArgumentData, newDirectiveDefinitionData } from '../../directive-definition-data/utils'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; export function normalizeSubgraphFromString({ noLocation, @@ -429,8 +428,8 @@ export function normalizeSubgraph({ export class NormalizationFactory { argumentName = ''; - authorizationDataByParentTypeName = new Map(); - concreteTypeNamesByAbstractTypeName = new Map>(); + authorizationDataByParentTypeName = new Map(); + concreteTypeNamesByAbstractTypeName = new Map>(); conditionalFieldDataByCoords = new Map(); configurationDataByTypeName = new Map(); costs: Costs = { @@ -440,16 +439,19 @@ export class NormalizationFactory { directiveArgumentWeights: new Map(), }; customDirectiveDefinitionByName = new Map(); - definedDirectiveNames = new Set(); + definedDirectiveNames = new Set(); directiveDefinitionByName = new Map(); directiveDefinitionDataByName = initializeDirectiveDefinitionDatas(); doesParentRequireFetchReasons = false; edfsDirectiveReferences = new Set(); errors = new Array(); - entityDataByTypeName = new Map(); - entityInterfaceDataByTypeName = new Map(); + entityDataByTypeName = new Map(); + entityInterfaceDataByTypeName = new Map(); eventsConfigurations = new Map(); - fieldSetDataByTypeName = new Map(); + federatedDirectiveDataByName = new Map(); + fieldSetDataByTypeName = new Map(); + importDataByDirectiveName = new Map(); + interfaceImplementationTypeNamesByInterfaceTypeName = new Map>(); internalGraph: Graph; invalidConfigureDescriptionNodeDatas: Array = []; invalidORScopesCoords = new Set(); @@ -462,19 +464,19 @@ export class NormalizationFactory { lastParentNodeKind: Kind = Kind.NULL; lastChildNodeKind: Kind = Kind.NULL; options: CompositionOptions; - parentTypeNamesWithAuthDirectives = new Set(); + parentTypeNamesWithAuthDirectives = new Set(); keyFieldSetsByEntityTypeNameByFieldCoords = new Map>>(); keyFieldNamesByParentTypeName = new Map>(); fieldCoordsByNamedTypeName = new Map>(); operationTypeNodeByTypeName = new Map(); originalParentTypeName = ''; - originalTypeNameByRenamedTypeName = new Map(); - overridesByTargetSubgraphName = new Map>>(); - parentDefinitionDataByTypeName = new Map(); - schemaData: SchemaData; - referencedDirectiveNames = new Set(); - referencedTypeNames = new Set(); + originalTypeNameByRenamedTypeName = new Map(); + overriddenFieldNamesByTypeNameByTargetSubgraphName = new Map>>(); + parentDefinitionDataByTypeName = new Map(); + referencedDirectiveNames = new Set(); + referencedTypeNames = new Set(); renamedParentTypeName = ''; + schemaData: SchemaData; subgraphName: SubgraphName; unvalidatedExternalFieldCoords = new Set(); usesEdfsNatsStreamConfiguration: boolean = false; @@ -507,6 +509,7 @@ export class NormalizationFactory { } if (isInputNodeKind(namedTypeData.kind)) { argumentData.namedTypeKind = namedTypeData.kind; + sanitizeDefaultValue({ data: argumentData, namedTypeData, node: argumentData.node }); continue; } this.errors.push( @@ -523,90 +526,6 @@ export class NormalizationFactory { return ROOT_TYPE_NAMES.has(typeName) || this.operationTypeNodeByTypeName.has(typeName); } - isArgumentValueValid(typeNode: TypeNode, argumentValue: ConstValueNode): boolean { - if (argumentValue.kind === Kind.NULL) { - return typeNode.kind !== Kind.NON_NULL_TYPE; - } - switch (typeNode.kind) { - case Kind.LIST_TYPE: { - if (argumentValue.kind !== Kind.LIST) { - // This handles List coercion - return this.isArgumentValueValid(getNamedTypeNode(typeNode.type), argumentValue); - } - for (const value of argumentValue.values) { - if (!this.isArgumentValueValid(typeNode.type, value)) { - return false; - } - } - return true; - } - case Kind.NAMED_TYPE: { - switch (typeNode.name.value) { - case BOOLEAN_SCALAR: { - return argumentValue.kind === Kind.BOOLEAN; - } - case FLOAT_SCALAR: { - return argumentValue.kind === Kind.FLOAT || argumentValue.kind === Kind.INT; - } - case ID_SCALAR: { - return argumentValue.kind === Kind.STRING || argumentValue.kind === Kind.INT; - } - case INT_SCALAR: { - return argumentValue.kind === Kind.INT; - } - case FIELD_SET_SCALAR: - // intentional fallthrough - case SCOPE_SCALAR: - // intentional fallthrough - case STRING_SCALAR: { - return argumentValue.kind === Kind.STRING; - } - case LINK_IMPORT: { - return true; - } - case LINK_PURPOSE: { - if (argumentValue.kind !== Kind.ENUM) { - return false; - } - return argumentValue.value === SECURITY || argumentValue.value === EXECUTION; - } - case SUBSCRIPTION_FIELD_CONDITION: - // intentional fallthrough - case SUBSCRIPTION_FILTER_CONDITION: - return argumentValue.kind === Kind.OBJECT; - default: { - const parentData = this.parentDefinitionDataByTypeName.get(typeNode.name.value); - if (!parentData) { - return false; - } - if (parentData.kind === Kind.SCALAR_TYPE_DEFINITION) { - // For now, allow custom scalars to be any value kind. - return true; - } - if (parentData.kind === Kind.ENUM_TYPE_DEFINITION) { - if (argumentValue.kind !== Kind.ENUM) { - return false; - } - const enumValue = parentData.enumValueDataByName.get(argumentValue.value); - if (!enumValue) { - return false; - } - return !enumValue.directivesByName.has(INACCESSIBLE); - } - if (parentData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION) { - return false; - } - // TODO deep comparison - return argumentValue.kind === Kind.OBJECT; - } - } - } - default: { - return this.isArgumentValueValid(typeNode.type, argumentValue); - } - } - } - handleFieldInheritableDirectives({ directivesByName, fieldName, @@ -653,8 +572,8 @@ export class NormalizationFactory { const isObjectKind = isObjectNodeKind(node.kind); for (const directiveNode of node.directives) { const directiveName = directiveNode.name.value; - // Don't create pointless repetitions of @shareable if (directiveName === SHAREABLE) { + // @shareable need only be propagated once getValueOrDefault(directivesByName, directiveName, () => [directiveNode]); } else { getValueOrDefault(directivesByName, directiveName, () => []).push(directiveNode); @@ -697,7 +616,10 @@ export class NormalizationFactory { if (isAuthenticated) { this.handleAuthenticatedDirective(data, parentTypeName); } - if (isSemanticNonNull && isField) { + if (!isField) { + return errorMessages; + } + if (isSemanticNonNull) { // The default argument for levels is [0], so a non-null wrapper is invalid. if (isTypeRequired(data.type)) { errorMessages.push( @@ -710,16 +632,19 @@ export class NormalizationFactory { data.nullLevelsBySubgraphName.set(this.subgraphName, new Set([0])); } } - if (isListSize && isField && !isTypeNodeListType(data.type)) { + if (isListSize && !isTypeNodeListType(data.type)) { errorMessages.push( listSizeFieldMustReturnListOrUseSizedFieldsErrorMessage(directiveCoords, printTypeNode(data.type)), ); } + if (!isCost && !isListSize) { + this.recordDirectiveWeightOnField({ data: data as FieldData, definitionData, directiveName, directiveNode }); + } return errorMessages; } - const definedArgumentNames = new Set(); - const duplicateArgumentNames = new Set(); - const unexpectedArgumentNames = new Set(); + const definedArgumentNames = new Set(); + const duplicateArgumentNames = new Set(); + const unexpectedArgumentNames = new Set(); const requiredScopes: Array> = []; for (const argumentNode of directiveNode.arguments) { const argumentName = argumentNode.name.value; @@ -728,18 +653,24 @@ export class NormalizationFactory { continue; } definedArgumentNames.add(argumentName); - const argumentData = definitionData.argumentTypeNodeByName.get(argumentName); + const argumentData = definitionData.argumentDataByName.get(argumentName); if (!argumentData) { unexpectedArgumentNames.add(argumentName); continue; } - if (!this.isArgumentValueValid(argumentData.typeNode, argumentNode.value)) { + if ( + !isArgumentValueValid({ + argumentValue: argumentNode.value, + parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, + typeNode: argumentData.type, + }) + ) { errorMessages.push( invalidArgumentValueErrorMessage( print(argumentNode.value), `@${directiveName}`, argumentName, - printTypeNode(argumentData.typeNode), + printTypeNode(argumentData.type), ), ); continue; @@ -777,8 +708,12 @@ export class NormalizationFactory { } if (isCost) { this.handleCostDirective({ data, directiveCoords, directiveNode, errorMessages }); - } else if (isListSize && isField) { - this.handleListSizeDirective({ data, directiveCoords, directiveNode, errorMessages }); + } else if (isField) { + if (isListSize) { + this.handleListSizeDirective({ data, directiveCoords, directiveNode, errorMessages }); + } else { + this.recordDirectiveWeightOnField({ data: data as FieldData, definitionData, directiveName, directiveNode }); + } } if (duplicateArgumentNames.size > 0) { errorMessages.push(duplicateDirectiveArgumentDefinitionsErrorMessage([...duplicateArgumentNames])); @@ -811,8 +746,58 @@ export class NormalizationFactory { return errorMessages; } + handleComposeDirective(node: ComposeDirectiveNode): void { + const argNode = node.arguments[0]; + if (!argNode) { + return; + } + + const rawValue = argNode.value.value; + if (!rawValue.startsWith(LITERAL_AT)) { + this.errors.push(noLeadingAtComposeDirectiveNameError(rawValue)); + return; + } + + const directiveName = rawValue.substring(1); + if (DIRECTIVE_DEFINITION_BY_NAME.has(directiveName)) { + if (directiveName === ONE_OF) { + this.warnings.push(composedOneOfDirectiveWarning(this.subgraphName)); + } else { + this.errors.push(invalidComposeDirectiveNameError(rawValue)); + return; + } + } + + const definitionData = this.directiveDefinitionDataByName.get(directiveName); + if (!definitionData) { + this.errors.push(unknownComposeDirectiveNameError(rawValue)); + return; + } + + const importData = this.importDataByDirectiveName.get(rawValue); + if (!importData) { + this.errors.push(unimportedComposeDirectiveNameError(rawValue)); + return; + } + + definitionData.majorVersion = importData.majorVersion; + definitionData.minorVersion = importData.minorVersion; + definitionData.isComposed = true; + + this.federatedDirectiveDataByName.set(directiveName, definitionData); + } + + handleExecutableDirectives() { + for (const [directiveName, definitionData] of this.directiveDefinitionDataByName) { + if (definitionData.isComposed || definitionData.executableLocations.size < 1) { + continue; + } + this.federatedDirectiveDataByName.set(directiveName, definitionData); + } + } + validateDirectives(data: NodeData | SchemaData, directiveCoords: string) { - const undefinedDirectiveNames = new Set(); + const undefinedDirectiveNames = new Set(); for (const [directiveName, directiveNodes] of data.directivesByName) { const definitionData = this.directiveDefinitionDataByName.get(directiveName); if (!definitionData) { @@ -822,6 +807,9 @@ export class NormalizationFactory { } continue; } + if (definitionData.isComposed) { + definitionData.isReferenced = true; + } const definitionErrorMessages: Array = []; const directiveLocation = nodeKindToDirectiveLocation(data.kind); if (!definitionData.locations.has(directiveLocation)) { @@ -839,10 +827,30 @@ export class NormalizationFactory { } } const requiredArgumentNames = [...definitionData.requiredArgumentNames]; + for (const argumentNode of definitionData.node.arguments ?? []) { + if (!argumentNode.defaultValue) { + continue; + } + + const argumentData = definitionData.argumentDataByName.get(argumentNode.name.value); + if (!argumentData) { + continue; + } + + const namedTypeData = this.parentDefinitionDataByTypeName.get(getTypeNodeNamedTypeName(argumentData.type)); + // Undefined types are handled elsewhere + if (!namedTypeData) { + continue; + } + + sanitizeDefaultValue({ data: argumentData, namedTypeData, node: argumentNode as MutableInputValueNode }); + } + for (let i = 0; i < directiveNodes.length; i++) { + const directiveNode = directiveNodes[i]; const errorMessages = this.validateDirective({ data, - directiveNode: directiveNodes[i], + directiveNode, definitionData, directiveCoords, errorMessages: i < 1 ? definitionErrorMessages : [], @@ -949,14 +957,14 @@ export class NormalizationFactory { for (const argument of directiveNode.arguments) { switch (argument.name.value) { case PROPAGATE: { - if (argument.value.kind != Kind.BOOLEAN) { + if (argument.value.kind !== Kind.BOOLEAN) { return; } configureDescriptionData.propagate = argument.value.value; break; } case DESCRIPTION_OVERRIDE: { - if (argument.value.kind != Kind.STRING) { + if (argument.value.kind !== Kind.STRING) { return; } configureDescriptionData.description = argument.value.value; @@ -985,12 +993,13 @@ export class NormalizationFactory { } extractImplementedInterfaceTypeNames( - node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode | ObjectTypeDefinitionNode | ObjectTypeExtensionNode, - implementedInterfaceTypeNames: Set, - ): Set { + node: InterfaceTypeNode | ObjectTypeNode, + implementedInterfaceTypeNames: Set, + ): Set { if (!node.interfaces) { return implementedInterfaceTypeNames; } + const isInterface = isInterfaceNode(node); const parentTypeName = node.name.value; for (const implementedInterface of node.interfaces) { const interfaceTypeName = implementedInterface.name.value; @@ -1000,6 +1009,13 @@ export class NormalizationFactory { ); continue; } + if (isInterface) { + getValueOrDefault( + this.interfaceImplementationTypeNamesByInterfaceTypeName, + interfaceTypeName, + () => new Set(), + ).add(parentTypeName); + } implementedInterfaceTypeNames.add(interfaceTypeName); } return implementedInterfaceTypeNames; @@ -1015,9 +1031,9 @@ export class NormalizationFactory { data.subgraphNames.add(this.subgraphName); } - addConcreteTypeNamesForImplementedInterfaces(interfaceTypeNames: Set, concreteTypeName: string) { + addConcreteTypeNamesForImplementedInterfaces(interfaceTypeNames: Set, concreteTypeName: TypeName) { for (const interfaceName of interfaceTypeNames) { - getValueOrDefault(this.concreteTypeNamesByAbstractTypeName, interfaceName, () => new Set()).add( + getValueOrDefault(this.concreteTypeNamesByAbstractTypeName, interfaceName, () => new Set()).add( concreteTypeName, ); this.internalGraph.addEdge( @@ -1060,88 +1076,33 @@ export class NormalizationFactory { return argumentDataByName; } - addPersistedDirectiveDefinitionDataByNode( - persistedDirectiveDefinitionDataByDirectiveName: Map, - node: DirectiveDefinitionNode, - executableLocations: Set, - ) { - const name = node.name.value; - const directiveName = `@${name}`; - const argumentDataByName = new Map(); - for (const argumentNode of node.arguments || []) { - this.addInputValueDataByNode({ - inputValueDataByName: argumentDataByName, - isArgument: true, - node: argumentNode, - originalParentTypeName: directiveName, - }); - } - persistedDirectiveDefinitionDataByDirectiveName.set(name, { - argumentDataByName: argumentDataByName, - executableLocations, - name, - repeatable: node.repeatable, - subgraphNames: new Set([this.subgraphName]), - description: formatDescription(node.description), - }); - } - - extractDirectiveLocations(node: DirectiveDefinitionNode, errorMessages: Array): Set { - const locations = new Set(); - const handledLocations = new Set(); - for (const locationNode of node.locations) { - const locationName = locationNode.value; - if (handledLocations.has(locationName)) { - continue; - } - if (!EXECUTABLE_DIRECTIVE_LOCATIONS.has(locationName) && !TYPE_SYSTEM_DIRECTIVE_LOCATIONS.has(locationName)) { - errorMessages.push(invalidDirectiveDefinitionLocationErrorMessage(locationName)); - handledLocations.add(locationName); - continue; - } - if (locations.has(locationName)) { - errorMessages.push(duplicateDirectiveDefinitionLocationErrorMessage(locationName)); - handledLocations.add(locationName); - continue; - } - locations.add(locationName); - } - return locations; - } - - extractArgumentData( - argumentNodes: ReadonlyArray | Array | undefined, - errorMessages: Array, - ): ExtractArgumentDataResult { - const argumentTypeNodeByName = new Map(); - const optionalArgumentNames = new Set(); - const requiredArgumentNames = new Set(); + extractDirectiveArgumentData({ + argumentNodes, + directiveName, + errorMessages, + }: ExtractDirectiveArgumentDataParams): ExtractDirectiveArgumentDataResult { + const argumentDataByName = new Map(); + const optionalArgumentNames = new Set(); + const requiredArgumentNames = new Set(); const output = { - argumentTypeNodeByName, + argumentDataByName, optionalArgumentNames, requiredArgumentNames, }; if (!argumentNodes) { return output; } - const duplicateArgumentNames = new Set(); - for (const argumentNode of argumentNodes) { - const name = argumentNode.name.value; - if (argumentTypeNodeByName.has(name)) { + const duplicateArgumentNames = new Set(); + for (const node of argumentNodes) { + const name = node.name.value; + if (argumentDataByName.has(name)) { duplicateArgumentNames.add(name); continue; } - if (argumentNode.defaultValue) { - optionalArgumentNames.add(name); - } - if (isTypeRequired(argumentNode.type) && !argumentNode.defaultValue) { - requiredArgumentNames.add(name); - } - argumentTypeNodeByName.set(name, { + argumentDataByName.set( name, - typeNode: argumentNode.type, - defaultValue: argumentNode.defaultValue, - }); + this.addDirectiveArgumentDataByNode({ directiveName, node, optionalArgumentNames, requiredArgumentNames }), + ); } if (duplicateArgumentNames.size > 0) { errorMessages.push(duplicateDirectiveDefinitionArgumentErrorMessage([...duplicateArgumentNames])); @@ -1183,6 +1144,47 @@ export class NormalizationFactory { } } + addDirectiveArgumentDataByNode({ + directiveName, + node, + optionalArgumentNames, + requiredArgumentNames, + }: AddDirectiveArgumentDataByNodeParams): DirectiveArgumentData { + const name = node.name.value; + const parentName = `@${directiveName}`; + if (node.defaultValue && !areDefaultValuesCompatible(node.type, node.defaultValue)) { + this.errors.push( + incompatibleInputValueDefaultValueTypeError( + `argument "${name}"`, + parentName, + printTypeNode(node.type), + print(node.defaultValue), + ), + ); + } + const isRequired = isTypeRequired(node.type); + if (node.defaultValue) { + optionalArgumentNames.add(name); + } else if (isRequired) { + requiredArgumentNames.add(name); + } + const namedTypeName = getTypeNodeNamedTypeName(node.type); + const argumentData = newDirectiveArgumentData({ + name, + directive: `@${directiveName}`, + directivesByName: this.extractDirectives(node, new Map()), + defaultValue: node.defaultValue, + description: formatDescription(node.description), + namedTypeKind: BASE_SCALARS.has(namedTypeName) ? Kind.SCALAR_TYPE_DEFINITION : Kind.NULL, + node: getMutableInputValueNode(node, parentName, this.errors), + requiredSubgraphNames: new Set(isRequired ? [this.subgraphName] : []), + subgraphNames: new Set([this.subgraphName]), + typeNode: getMutableTypeNode(node.type, parentName, this.errors), + }); + this.extractConfigureDescriptionsData(argumentData); + return argumentData; + } + // returns true if the directive is custom; otherwise, false addDirectiveDefinitionDataByNode(node: DirectiveDefinitionNode): boolean { const name = node.name.value; @@ -1206,20 +1208,33 @@ export class NormalizationFactory { return false; } this.directiveDefinitionByName.set(name, node); + // @TODO const errorMessages: Array = []; - const { argumentTypeNodeByName, optionalArgumentNames, requiredArgumentNames } = this.extractArgumentData( - node.arguments, + const { argumentDataByName, optionalArgumentNames, requiredArgumentNames } = this.extractDirectiveArgumentData({ + argumentNodes: node.arguments, + directiveName: name, errorMessages, - ); - this.directiveDefinitionDataByName.set(name, { - argumentTypeNodeByName: argumentTypeNodeByName, - isRepeatable: node.repeatable, - locations: this.extractDirectiveLocations(node, errorMessages), - name, - node, - optionalArgumentNames, - requiredArgumentNames, }); + const { errors, locations } = extractDirectiveLocations(node); + + // @TODO + if (errors.length > 0) { + this.errors.push(...errors); + } + this.directiveDefinitionDataByName.set( + name, + newDirectiveDefinitionData({ + argumentDataByName: argumentDataByName, + description: node.description, + isRepeatable: node.repeatable, + locations, + name, + node, + optionalArgumentNames, + requiredArgumentNames, + subgraphNames: new Set([this.subgraphName]), + }), + ); if (errorMessages.length > 0) { this.errors.push(invalidDirectiveDefinitionError(name, errorMessages)); } @@ -1227,11 +1242,11 @@ export class NormalizationFactory { } addFieldDataByNode( - fieldDataByFieldName: Map, + fieldDataByName: Map, node: FieldDefinitionNode, - argumentDataByArgumentName: Map, - directivesByName: Map, - inheritedDirectiveNames: Set = new Set(), + argumentDataByName: Map, + directivesByName: Map, + inheritedDirectiveNames = new Set(), ): FieldData { const name = node.name.value; const parentTypeName = this.renamedParentTypeName || this.originalParentTypeName; @@ -1239,9 +1254,9 @@ export class NormalizationFactory { const { isExternal, isShareable } = isNodeExternalOrShareable(node, !this.isSubgraphVersionTwo, directivesByName); const namedTypeName = getTypeNodeNamedTypeName(node.type); const fieldData: FieldData = { - argumentDataByName: argumentDataByArgumentName, + argumentDataByName: argumentDataByName, configureDescriptionDataBySubgraphName: new Map(), - externalFieldDataBySubgraphName: new Map([ + externalFieldDataBySubgraphName: new Map([ [this.subgraphName, newExternalFieldData(isExternal)], ]), federatedCoords: `${parentTypeName}.${name}`, @@ -1255,7 +1270,7 @@ export class NormalizationFactory { node: getMutableFieldNode(node, fieldCoords, this.errors), nullLevelsBySubgraphName: new Map>(), originalParentTypeName: this.originalParentTypeName, - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), renamedParentTypeName: parentTypeName, subgraphNames: new Set([this.subgraphName]), type: getMutableTypeNode(node.type, fieldCoords, this.errors), @@ -1266,7 +1281,7 @@ export class NormalizationFactory { this.referencedTypeNames.add(fieldData.namedTypeName); } this.extractConfigureDescriptionsData(fieldData); - fieldDataByFieldName.set(name, fieldData); + fieldDataByName.set(name, fieldData); return fieldData; } @@ -1312,7 +1327,7 @@ export class NormalizationFactory { node: getMutableInputValueNode(node, originalParentTypeName, this.errors), originalCoords, originalParentTypeName: originalParentTypeName, - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), renamedParentTypeName: federatedParentTypeName, requiredSubgraphNames: new Set(isTypeRequired(node.type) ? [this.subgraphName] : []), subgraphNames: new Set([this.subgraphName]), @@ -1329,7 +1344,7 @@ export class NormalizationFactory { const parentData = this.parentDefinitionDataByTypeName.get(typeName); const directivesByName = this.extractDirectives( node, - parentData?.directivesByName || new Map(), + parentData?.directivesByName || new Map(), ); const extensionType = this.getNodeExtensionType(isRealExtension, directivesByName); const entityInterfaceData = this.entityInterfaceDataByTypeName.get(typeName); @@ -1357,13 +1372,13 @@ export class NormalizationFactory { directivesByName: directivesByName, extensionType, fieldDataByName: new Map(), - implementedInterfaceTypeNames: this.extractImplementedInterfaceTypeNames(node, new Set()), + implementedInterfaceTypeNames: this.extractImplementedInterfaceTypeNames(node, new Set()), isEntity: directivesByName.has(KEY), isInaccessible: directivesByName.has(INACCESSIBLE), kind: Kind.INTERFACE_TYPE_DEFINITION, name: typeName, node: getMutableInterfaceNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), requireFetchReasonsFieldNames: new Set(), subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), @@ -1425,15 +1440,15 @@ export class NormalizationFactory { } return; } - const implementedInterfaceTypeNames = this.extractImplementedInterfaceTypeNames(node, new Set()); + const implementedInterfaceTypeNames = this.extractImplementedInterfaceTypeNames(node, new Set()); if (!directivesByName.has(INTERFACE_OBJECT)) { this.addConcreteTypeNamesForImplementedInterfaces(implementedInterfaceTypeNames, typeName); } const newParentData: ObjectDefinitionData = { - configureDescriptionDataBySubgraphName: new Map(), + configureDescriptionDataBySubgraphName: new Map(), directivesByName: directivesByName, extensionType, - fieldDataByName: new Map(), + fieldDataByName: new Map(), implementedInterfaceTypeNames, isEntity: directivesByName.has(KEY), isInaccessible: directivesByName.has(INACCESSIBLE), @@ -1441,7 +1456,7 @@ export class NormalizationFactory { kind: Kind.OBJECT_TYPE_DEFINITION, name: typeName, node: getMutableObjectNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), requireFetchReasonsFieldNames: new Set(), renamedTypeName: this.getRenamedRootTypeName(typeName), subgraphNames: new Set([this.subgraphName]), @@ -1457,7 +1472,7 @@ export class NormalizationFactory { const parentData = this.parentDefinitionDataByTypeName.get(typeName); const directivesByName = this.extractDirectives( node, - parentData?.directivesByName || new Map(), + parentData?.directivesByName || new Map>(), ); const extensionType = this.getNodeExtensionType(isRealExtension, directivesByName); if (parentData) { @@ -1480,7 +1495,7 @@ export class NormalizationFactory { } const newParentData: EnumDefinitionData = { appearances: 1, - configureDescriptionDataBySubgraphName: new Map(), + configureDescriptionDataBySubgraphName: new Map(), directivesByName: directivesByName, extensionType, enumValueDataByName: new Map(), @@ -1488,7 +1503,7 @@ export class NormalizationFactory { kind: Kind.ENUM_TYPE_DEFINITION, name: typeName, node: getMutableEnumNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), }; @@ -1501,11 +1516,12 @@ export class NormalizationFactory { const parentData = this.parentDefinitionDataByTypeName.get(typeName); const directivesByName = this.extractDirectives( node, - parentData?.directivesByName || new Map(), + parentData?.directivesByName || new Map>(), ); const extensionType = this.getNodeExtensionType(isRealExtension, directivesByName); if (parentData) { if (parentData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION) { + // TODO this.errors.push( multipleNamedTypeDefinitionError( typeName, @@ -1536,7 +1552,7 @@ export class NormalizationFactory { kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, name: typeName, node: getMutableInputObjectNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), }; @@ -1581,7 +1597,7 @@ export class NormalizationFactory { kind: Kind.SCALAR_TYPE_DEFINITION, name: typeName, node: getMutableScalarNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), }; @@ -1656,7 +1672,7 @@ export class NormalizationFactory { memberByMemberTypeName: this.extractUnionMembers(node, new Map()), name: typeName, node: getMutableUnionNode(node.name), - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), }; @@ -2250,11 +2266,13 @@ export class NormalizationFactory { }; // The implemented field type must be equally or more restrictive than the original interface field type if ( - !isTypeValidImplementation( - interfaceField.node.type, - fieldData.node.type, - this.concreteTypeNamesByAbstractTypeName, - ) + !isTypeValidImplementation({ + concreteTypeNamesByAbstractTypeName: this.concreteTypeNamesByAbstractTypeName, + implementationType: fieldData.node.type, + interfaceImplementationTypeNamesByInterfaceTypeName: + this.interfaceImplementationTypeNamesByInterfaceTypeName, + originalType: interfaceField.node.type, + }) ) { hasErrors = true; hasNestedErrors = true; @@ -2340,7 +2358,7 @@ export class NormalizationFactory { return; } const overrideDataForSubgraph = getValueOrDefault( - this.overridesByTargetSubgraphName, + this.overriddenFieldNamesByTypeNameByTargetSubgraphName, targetSubgraphName, () => new Map>(), ); @@ -2408,6 +2426,20 @@ export class NormalizationFactory { data.nullLevelsBySubgraphName.set(this.subgraphName, levels); } + getOrCreateFieldWeight(typeName: TypeName, fieldName: FieldName): FieldWeightConfiguration { + const fieldCoords = `${typeName}.${fieldName}`; + return getValueOrDefault( + this.costs.fieldWeights, + fieldCoords, + (): FieldWeightConfiguration => ({ + typeName, + fieldName, + argumentWeights: new Map(), + directiveArgumentWeights: new Map(), + }), + ); + } + handleCostDirective({ data, directiveCoords, directiveNode, errorMessages }: HandleCostDirectiveParams) { const weightArg = directiveNode.arguments?.find((arg) => arg.name.value === WEIGHT); if (!weightArg || weightArg.value.kind !== Kind.INT) { @@ -2431,16 +2463,7 @@ export class NormalizationFactory { errorMessages.push(costOnInterfaceFieldErrorMessage(directiveCoords)); break; } - const fieldCoords = `${typeName}.${data.name}`; - const fieldWeight = getValueOrDefault( - this.costs.fieldWeights, - fieldCoords, - (): FieldWeightConfiguration => ({ - typeName, - fieldName: data.name, - argumentWeights: new Map(), - }), - ); + const fieldWeight = this.getOrCreateFieldWeight(typeName, data.name); fieldWeight.weight = weightValue; break; } @@ -2458,29 +2481,11 @@ export class NormalizationFactory { errorMessages.push(costOnInterfaceFieldErrorMessage(directiveCoords)); break; } - const parentFieldCoords = `${typeName}.${ivData.fieldName}`; - const fieldWeight = getValueOrDefault( - this.costs.fieldWeights, - parentFieldCoords, - (): FieldWeightConfiguration => ({ - typeName, - fieldName: ivData.fieldName!, - argumentWeights: new Map(), - }), - ); + const fieldWeight = this.getOrCreateFieldWeight(typeName, ivData.fieldName!); fieldWeight.argumentWeights.set(ivData.name, weightValue); } else { const typeName = ivData.renamedParentTypeName || ivData.originalParentTypeName; - const fieldCoords = `${typeName}.${ivData.name}`; - const fieldWeight = getValueOrDefault( - this.costs.fieldWeights, - fieldCoords, - (): FieldWeightConfiguration => ({ - typeName, - fieldName: ivData.name, - argumentWeights: new Map(), - }), - ); + const fieldWeight = this.getOrCreateFieldWeight(typeName, ivData.name); fieldWeight.weight = weightValue; } break; @@ -2488,6 +2493,56 @@ export class NormalizationFactory { } } + recordDirectiveWeightOnField({ + data, + definitionData, + directiveName, + directiveNode, + }: RecordDirectiveWeightOnFieldParams) { + // This method walks every argument defined on the directive and records a directive weight + // on the field only when all these conditions hold: + // 1. The argument of the directive has a cost weight assigned + // 2. The argument is non-null + // 3. The parent type is not an interface type. + const typeName = data.renamedParentTypeName || data.originalParentTypeName; + const parentTypeData = this.parentDefinitionDataByTypeName.get(typeName); + // Directive argument weights should only be recorded for concrete type fields. + if (!parentTypeData || parentTypeData.kind === Kind.INTERFACE_TYPE_DEFINITION) { + return; + } + + // Determine which arguments are non-null on this directive usage. + // Record the DirectiveArgument coords if its argument has an explicit non-null value or + // if it has a default value and was not explicitly set to null. + const suppliedArgNodeByName = new Map(); + for (const arg of directiveNode.arguments ?? []) { + suppliedArgNodeByName.set(arg.name.value, arg.value); + } + + for (const [argName, argData] of definitionData.argumentDataByName) { + const coords = `${directiveName}.${argName}`; + const argWeight = this.costs.directiveArgumentWeights.get(coords); + // Bail if the argName argument does not have cost attached to it. + if (argWeight === undefined) { + continue; + } + // Check if this argument is non-null at the usage site: + const argNode = suppliedArgNodeByName.get(argName); + if (argNode) { + if (argNode.kind === Kind.NULL) { + continue; + } + } else if (!argData.defaultValue || argData.defaultValue.kind === Kind.NULL) { + continue; + } + const fieldWeight = this.getOrCreateFieldWeight(typeName, data.name); + // Accumulate across directive usages so that repeatable directives on the same + // field are charged once per usage. + const existingWeight = fieldWeight.directiveArgumentWeights.get(coords) ?? 0; + fieldWeight.directiveArgumentWeights.set(coords, existingWeight + argWeight); + } + } + handleListSizeDirective({ data, directiveCoords, directiveNode, errorMessages }: HandleListSizeDirectiveParams) { const args = directiveNode.arguments; if (!args) { @@ -2503,6 +2558,12 @@ export class NormalizationFactory { sizedFields: [], requireOneSlicingArgument: true, // per IBM cost spec }; + /** + * For each accepted slicing argument, capture the full resolved chain: + * (argument + each intermediate input field + leaf). + * Later we check the assumedSize against the default value of every element of the chain. + */ + const slicingArgChainByPath = new Map(); for (const argumentNode of args) { const argumentName = argumentNode.name.value; @@ -2532,22 +2593,86 @@ export class NormalizationFactory { continue; } - const slicingArgName = (valueNode as StringValueNode).value; - const argData = data.argumentDataByName.get(slicingArgName); + // slicingArgPath could be just an argument "inputA" or a dot-path "inputA.page.first". + const slicingArgPath = (valueNode as StringValueNode).value; + const segments = slicingArgPath.split(LITERAL_PERIOD); + + // Reject empty segments (e.g. "", "a.", ".b", "a..b"). + if (segments.length === 0 || segments.some((s) => s.length === 0)) { + errorMessages.push(listSizeSlicingArgumentMalformedPathErrorMessage(directiveCoords, slicingArgPath)); + continue; + } + + // First segment should be valid argument name: + const firstSegment = segments[0]; + const argData = data.argumentDataByName.get(firstSegment); if (!argData) { - errorMessages.push(listSizeInvalidSlicingArgumentErrorMessage(directiveCoords, slicingArgName)); + errorMessages.push(listSizeInvalidSlicingArgumentErrorMessage(directiveCoords, slicingArgPath)); continue; } - const unwrappedType = argData.type.kind === Kind.NON_NULL_TYPE ? argData.type.type : argData.type; - if (unwrappedType.kind === Kind.LIST_TYPE || argData.namedTypeName !== INT_SCALAR) { + /** + * Walk the rest of the path in the slicingArgument. + * `current` tracks the input value reached so far: + * the argument itself for a flat path, or the nested input field for each step of a + * dot-path. After the loop it is the leaf, which must be Int/Int!. + */ + let current: InputValueData = argData; + const chain: Array = [argData]; + let isPathInvalid = false; + + for (let i = 1; i < segments.length; i++) { + // Non-leaf step: `current` must unwrap to an Input Object. Lists are rejected here. + const unwrapped = current.type.kind === Kind.NON_NULL_TYPE ? current.type.type : current.type; + const parentTypeData = this.parentDefinitionDataByTypeName.get(current.namedTypeName); + if ( + unwrapped.kind === Kind.LIST_TYPE || + !parentTypeData || + parentTypeData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION + ) { + errorMessages.push( + listSizeSlicingArgumentSegmentNotInputObjectErrorMessage( + directiveCoords, + slicingArgPath, + current.name, + printTypeNode(current.type), + ), + ); + isPathInvalid = true; + break; + } + const inputValue = parentTypeData.inputValueDataByName.get(segments[i]); + if (!inputValue) { + errorMessages.push( + listSizeSlicingArgumentSegmentNotFoundErrorMessage( + directiveCoords, + slicingArgPath, + segments[i], + current.namedTypeName, + ), + ); + isPathInvalid = true; + break; + } + current = inputValue; + chain.push(inputValue); + } + + if (isPathInvalid) { + continue; + } + + // Leaf check: the final value must be Int or Int! + const unwrappedType = current.type.kind === Kind.NON_NULL_TYPE ? current.type.type : current.type; + if (unwrappedType.kind === Kind.LIST_TYPE || current.namedTypeName !== INT_SCALAR) { errorMessages.push( - listSizeSlicingArgumentNotIntErrorMessage(directiveCoords, slicingArgName, printTypeNode(argData.type)), + listSizeSlicingArgumentNotIntErrorMessage(directiveCoords, slicingArgPath, printTypeNode(current.type)), ); continue; } - listSizeConfig.slicingArguments.push(slicingArgName); + listSizeConfig.slicingArguments.push(slicingArgPath); + slicingArgChainByPath.set(slicingArgPath, chain); } break; } @@ -2613,10 +2738,44 @@ export class NormalizationFactory { if (listSizeConfig.requireOneSlicingArgument) { errorMessages.push(listSizeAssumedSizeWithRequiredSlicingArgumentErrorMessage(directiveCoords)); } else { - for (const slicingArgName of listSizeConfig.slicingArguments) { - const argData = data.argumentDataByName.get(slicingArgName); - if (argData?.defaultValue) { - errorMessages.push(listSizeAssumedSizeSlicingArgDefaultErrorMessage(directiveCoords, slicingArgName)); + /** + * When assumedSize is set together with slicingArguments, the slicing argument must not have + * a default leaf value in any element of the slicingArgument's chain. + * That will be checked for all slicing Arguments. + * For example, if the query is defined like this: + * search(a: SearchInput): [Book] + * @listSize(assumedSize: 50, slicingArguments: ["a.b.c"], requireOneSlicingArgument: false) + * any of those defaults are forbidden: + * input SearchInput { b: PaginationInput = { c: 10 } } + * input PaginationInput { c: Int = 10 } + * Notably, this query definition is also forbidden with the @listSize above: + * search(a: SearchInput = { b: { c: 10 } }): [Book] + * A default along the chain only matters if it actually supplies a value for the leaf: + * walk the remaining tail through the default's AST and reject only when the walk resolves. + * E.g. `a: SearchInput = { b: {} }` is allowed, and the leaf stays undefined. + */ + for (const slicingArgPath of listSizeConfig.slicingArguments) { + const chain = slicingArgChainByPath.get(slicingArgPath); + if (!chain) { + continue; + } + const segments = slicingArgPath.split(LITERAL_PERIOD); + // Outer loop: which default are we starting from? + for (let i = 0; i < chain.length; i++) { + let value: ConstValueNode | undefined = chain[i].defaultValue; + // Inner loop: try to find a defined leaf in the chain: + for (let j = i + 1; j < segments.length; j++) { + if (!value || value.kind !== Kind.OBJECT) { + value = undefined; + break; + } + const field = value.fields.find((f) => f.name.value === segments[j]); + value = field?.value; + } + if (value !== undefined) { + errorMessages.push(listSizeAssumedSizeSlicingArgDefaultErrorMessage(directiveCoords, slicingArgPath)); + break; + } } } } @@ -2829,7 +2988,7 @@ export class NormalizationFactory { } switch (fieldName) { case CONSUMER_NAME: - if (field.value.kind != Kind.STRING || field.value.value.length < 1) { + if (field.value.kind !== Kind.STRING || field.value.value.length < 1) { invalidRequiredFieldNames.add(fieldName); isValid = false; continue; @@ -2837,7 +2996,7 @@ export class NormalizationFactory { consumerName = field.value.value; break; case STREAM_NAME: - if (field.value.kind != Kind.STRING || field.value.value.length < 1) { + if (field.value.kind !== Kind.STRING || field.value.value.length < 1) { invalidRequiredFieldNames.add(fieldName); isValid = false; continue; @@ -2845,7 +3004,7 @@ export class NormalizationFactory { streamName = field.value.value; break; case CONSUMER_INACTIVE_THRESHOLD: - if (field.value.kind != Kind.INT) { + if (field.value.kind !== Kind.INT) { errorMessages.push( invalidArgumentValueErrorMessage( print(field.value), @@ -3251,7 +3410,7 @@ export class NormalizationFactory { if (data.kind !== Kind.OBJECT_TYPE_DEFINITION) { return false; } - if (data.fieldDataByName.size != 1) { + if (data.fieldDataByName.size !== 1) { return false; } for (const [fieldName, fieldData] of data.fieldDataByName) { @@ -3272,7 +3431,7 @@ export class NormalizationFactory { if (!isInputObjectDefinitionData(streamConfigurationInputData)) { return false; } - if (streamConfigurationInputData.inputValueDataByName.size != 3) { + if (streamConfigurationInputData.inputValueDataByName.size !== 3) { return false; } for (const [inputValueName, inputValueData] of streamConfigurationInputData.inputValueDataByName) { @@ -3568,7 +3727,7 @@ export class NormalizationFactory { return scalarDefinitionData.node; } - getSchemaNodeByData(schemaData: SchemaData): SchemaDefinitionNode | SchemaExtensionNode | undefined { + schemaNodeFromData(schemaData: SchemaData): SchemaNodeResult { const operationTypes: Array = []; for (const [ operation, @@ -3589,23 +3748,50 @@ export class NormalizationFactory { }); } + const linkResult = extractLinkArgs(schemaData.directivesByName); + if (!linkResult.success) { + return linkResult; + } + + this.importDataByDirectiveName = linkResult.importDataByDirectiveName; + + const composeDirectives = schemaData.directivesByName.get(COMPOSE_DIRECTIVE); + for (const composeDirective of composeDirectives ?? []) { + this.handleComposeDirective(composeDirective as ComposeDirectiveNode); + } + + // If the directive is not part of @composeDirective, it is effectively ignored by federation. + for (const directiveName of this.importDataByDirectiveName.keys()) { + if (!this.federatedDirectiveDataByName.has(directiveName.substring(1))) { + this.importDataByDirectiveName.delete(directiveName); + } + } + if (operationTypes.length > 0) { - const node: SchemaDefinitionNode = { - ...(schemaData.description ? { description: schemaData.description } : {}), - directives: this.getValidFlattenedDirectiveArray(schemaData.directivesByName, schemaData.name), - kind: Kind.SCHEMA_DEFINITION, - operationTypes: operationTypes, + return { + node: { + ...(schemaData.description ? { description: schemaData.description } : {}), + directives: this.getValidFlattenedDirectiveArray(schemaData.directivesByName, schemaData.name), + kind: Kind.SCHEMA_DEFINITION, + operationTypes: operationTypes, + }, + success: true, }; - return node; } if (schemaData.directivesByName.size < 1) { - return; + return { + node: undefined, + success: true, + }; } return { - directives: this.getValidFlattenedDirectiveArray(schemaData.directivesByName, schemaData.name), - kind: Kind.SCHEMA_EXTENSION, + node: { + directives: this.getValidFlattenedDirectiveArray(schemaData.directivesByName, schemaData.name), + kind: Kind.SCHEMA_EXTENSION, + }, + success: true, }; } @@ -3869,14 +4055,22 @@ export class NormalizationFactory { const definitions: Array = []; this.#addDirectiveDefinitionsToDocument(definitions); this.validateDirectives(this.schemaData, SCHEMA); - const schemaNode = this.getSchemaNodeByData(this.schemaData); + const schemaNodeResult = this.schemaNodeFromData(this.schemaData); + if (!schemaNodeResult.success) { + this.errors.push(...schemaNodeResult.errors); + return { + errors: this.errors, + success: false, + warnings: this.warnings, + }; + } /* Schema extension orphans are not supported on old routers. * Consequently, it is a breaking change that requires a new composition version, and that composition version * would only be compatible with newer routers that support schema extension orphans. * For now, only a valid schema definition node is pushed. */ - if (schemaNode?.kind === Kind.SCHEMA_DEFINITION) { - definitions.push(schemaNode); + if (schemaNodeResult.node?.kind === Kind.SCHEMA_DEFINITION) { + definitions.push(schemaNodeResult.node); } for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { this.validateDirectives(parentData, parentTypeName); @@ -3921,9 +4115,10 @@ export class NormalizationFactory { } const namedTypeData = this.parentDefinitionDataByTypeName.get(valueData.namedTypeName); if (!namedTypeData) { - // undefined types are handled elsewhere + // Undefined types are handled elsewhere continue; } + sanitizeDefaultValue({ data: valueData, namedTypeData, node: valueData.node }); if (!isInputNodeKind(namedTypeData.kind)) { this.errors.push( invalidNamedTypeError({ @@ -4109,22 +4304,7 @@ export class NormalizationFactory { this.warnings.push(unimplementedInterfaceOutputTypeWarning(this.subgraphName, referencedTypeName)); } } - const persistedDirectiveDefinitionDataByDirectiveName = new Map(); - for (const directiveDefinitionNode of this.directiveDefinitionByName.values()) { - // TODO @composeDirective directives would also be handled here - const executableLocations = extractExecutableDirectiveLocations( - directiveDefinitionNode.locations, - new Set(), - ); - if (executableLocations.size < 1) { - continue; - } - this.addPersistedDirectiveDefinitionDataByNode( - persistedDirectiveDefinitionDataByDirectiveName, - directiveDefinitionNode, - executableLocations, - ); - } + this.handleExecutableDirectives(); if (this.isSubgraphEventDrivenGraph) { this.validateEventDrivenSubgraph(); } @@ -4144,242 +4324,34 @@ export class NormalizationFactory { }; return { authorizationDataByParentTypeName: this.authorizationDataByParentTypeName, - // configurationDataMap is map of ConfigurationData per type name. - // It is an Intermediate configuration object that will be converted to an engine configuration in the router concreteTypeNamesByAbstractTypeName: this.concreteTypeNamesByAbstractTypeName, conditionalFieldDataByCoordinates: this.conditionalFieldDataByCoords, + /* `configurationDataByTypeName` is an intermediate object that is converted + * to an engine configuration in the router + */ configurationDataByTypeName: this.configurationDataByTypeName, costs: this.costs, directiveDefinitionByName: this.directiveDefinitionByName, entityDataByTypeName: this.entityDataByTypeName, entityInterfaces: this.entityInterfaceDataByTypeName, + federatedDirectiveDataByName: this.federatedDirectiveDataByName, fieldCoordsByNamedTypeName: this.fieldCoordsByNamedTypeName, + importDataByDirectiveName: this.importDataByDirectiveName, + interfaceImplementationTypeNamesByInterfaceTypeName: this.interfaceImplementationTypeNamesByInterfaceTypeName, isEventDrivenGraph: this.isSubgraphEventDrivenGraph, isVersionTwo: this.isSubgraphVersionTwo, keyFieldNamesByParentTypeName: this.keyFieldNamesByParentTypeName, keyFieldSetsByEntityTypeNameByKeyFieldCoords: this.keyFieldSetsByEntityTypeNameByFieldCoords, operationTypes: this.operationTypeNodeByTypeName, originalTypeNameByRenamedTypeName: this.originalTypeNameByRenamedTypeName, - overridesByTargetSubgraphName: this.overridesByTargetSubgraphName, + overriddenFieldNamesByParentTypeNameByTargetSubgraphName: this.overriddenFieldNamesByTypeNameByTargetSubgraphName, parentDefinitionDataByTypeName: this.parentDefinitionDataByTypeName, - persistedDirectiveDefinitionDataByDirectiveName, - schemaNode, + schema: buildASTSchema(newAST, { addInvalidExtensionOrphans: true, assumeValid: true, assumeValidSDL: true }), + schemaNode: schemaNodeResult.node, subgraphAST: newAST, subgraphString: print(newAST), - schema: buildASTSchema(newAST, { addInvalidExtensionOrphans: true, assumeValid: true, assumeValidSDL: true }), success: true, warnings: this.warnings, }; } } - -export function batchNormalize({ options, subgraphs }: BatchNormalizeParams): BatchNormalizationResult { - const authorizationDataByParentTypeName = new Map(); - const concreteTypeNamesByAbstractTypeName = new Map>(); - const entityDataByTypeName = new Map(); - const internalSubgraphBySubgraphName = new Map(); - const allOverridesByTargetSubgraphName = new Map>>(); - const overrideSourceSubgraphNamesByFieldPath = new Map>(); - const duplicateOverriddenFieldPaths = new Set(); - const parentDefinitionDataMapsBySubgraphName = new Map>(); - const subgraphNames = new Set(); - const nonUniqueSubgraphNames = new Set(); - const invalidNameErrorMessages: Array = []; - const invalidORScopesCoords = new Set(); - const fieldCoordsByNamedTypeName = new Map>(); - const warnings: Array = []; - const validationErrors: Array = []; - // Record the subgraph names first, so that subgraph references can be validated - for (const subgraph of subgraphs) { - if (subgraph.name) { - recordSubgraphName(subgraph.name, subgraphNames, nonUniqueSubgraphNames); - } - } - const internalGraph = new Graph(); - for (let i = 0; i < subgraphs.length; i++) { - const subgraph = subgraphs[i]; - const subgraphName = subgraph.name || `subgraph-${i}-${Date.now()}`; - if (!subgraph.name) { - invalidNameErrorMessages.push(invalidSubgraphNameErrorMessage(i, subgraphName)); - } - const normalizationResult = normalizeSubgraph({ - document: subgraph.definitions, - internalGraph, - options, - subgraphName, - }); - if (normalizationResult.warnings.length > 0) { - warnings.push(...normalizationResult.warnings); - } - if (!normalizationResult.success) { - validationErrors.push(subgraphValidationError(subgraphName, normalizationResult.errors)); - continue; - } - if (!normalizationResult) { - validationErrors.push(subgraphValidationError(subgraphName, [subgraphValidationFailureError])); - continue; - } - - parentDefinitionDataMapsBySubgraphName.set(subgraphName, normalizationResult.parentDefinitionDataByTypeName); - - for (const authorizationData of normalizationResult.authorizationDataByParentTypeName.values()) { - upsertAuthorizationData(authorizationDataByParentTypeName, authorizationData, invalidORScopesCoords); - } - for (const [namedTypeName, fieldCoords] of normalizationResult.fieldCoordsByNamedTypeName) { - addIterableToSet({ - source: fieldCoords, - target: getValueOrDefault(fieldCoordsByNamedTypeName, namedTypeName, () => new Set()), - }); - } - for (const [ - abstractTypeName, - incomingConcreteTypeNames, - ] of normalizationResult.concreteTypeNamesByAbstractTypeName) { - const existingConcreteTypeNames = concreteTypeNamesByAbstractTypeName.get(abstractTypeName); - if (!existingConcreteTypeNames) { - concreteTypeNamesByAbstractTypeName.set(abstractTypeName, new Set(incomingConcreteTypeNames)); - continue; - } - addIterableToSet({ - source: incomingConcreteTypeNames, - target: existingConcreteTypeNames, - }); - } - for (const [typeName, entityData] of normalizationResult.entityDataByTypeName) { - const keyFieldSetDataByFieldSet = entityData.keyFieldSetDatasBySubgraphName.get(subgraphName); - if (!keyFieldSetDataByFieldSet) { - continue; - } - upsertEntityData({ - entityDataByTypeName, - keyFieldSetDataByFieldSet, - typeName, - subgraphName, - }); - } - if (subgraph.name) { - internalSubgraphBySubgraphName.set(subgraphName, { - conditionalFieldDataByCoordinates: normalizationResult.conditionalFieldDataByCoordinates, - configurationDataByTypeName: normalizationResult.configurationDataByTypeName, - costs: normalizationResult.costs, - definitions: normalizationResult.subgraphAST, - directiveDefinitionByName: normalizationResult.directiveDefinitionByName, - entityInterfaces: normalizationResult.entityInterfaces, - isVersionTwo: normalizationResult.isVersionTwo, - keyFieldNamesByParentTypeName: normalizationResult.keyFieldNamesByParentTypeName, - name: subgraphName, - operationTypes: normalizationResult.operationTypes, - overriddenFieldNamesByParentTypeName: new Map>(), - parentDefinitionDataByTypeName: normalizationResult.parentDefinitionDataByTypeName, - persistedDirectiveDefinitionDataByDirectiveName: - normalizationResult.persistedDirectiveDefinitionDataByDirectiveName, - schema: normalizationResult.schema, - schemaNode: normalizationResult.schemaNode, - url: subgraph.url, - }); - } - if (normalizationResult.overridesByTargetSubgraphName.size < 1) { - continue; - } - for (const [targetSubgraphName, overridesData] of normalizationResult.overridesByTargetSubgraphName) { - const isTargetValid = subgraphNames.has(targetSubgraphName); - for (const [parentTypeName, fieldNames] of overridesData) { - /* It's possible for a renamed root type to have a field overridden, so make sure any errors at this stage are - propagated with the original typename. */ - const originalParentTypeName = - normalizationResult.originalTypeNameByRenamedTypeName.get(parentTypeName) || parentTypeName; - if (!isTargetValid) { - warnings.push( - invalidOverrideTargetSubgraphNameWarning( - targetSubgraphName, - originalParentTypeName, - [...fieldNames], - subgraph.name, - ), - ); - } else { - const overridesData = getValueOrDefault( - allOverridesByTargetSubgraphName, - targetSubgraphName, - () => new Map>(), - ); - const existingFieldNames = getValueOrDefault( - overridesData, - parentTypeName, - () => new Set(fieldNames), - ); - addIterableToSet({ - source: fieldNames, - target: existingFieldNames, - }); - } - for (const fieldName of fieldNames) { - const fieldCoords = `${originalParentTypeName}.${fieldName}`; - const sourceSubgraphs = overrideSourceSubgraphNamesByFieldPath.get(fieldCoords); - if (!sourceSubgraphs) { - overrideSourceSubgraphNamesByFieldPath.set(fieldCoords, [subgraphName]); - continue; - } - sourceSubgraphs.push(subgraphName); - duplicateOverriddenFieldPaths.add(fieldCoords); - } - } - } - } - const allErrors: Array = []; - if (invalidORScopesCoords.size > 0) { - allErrors.push(orScopesLimitError(MAX_OR_SCOPES, [...invalidORScopesCoords])); - } - if (invalidNameErrorMessages.length > 0 || nonUniqueSubgraphNames.size > 0) { - allErrors.push(invalidSubgraphNamesError([...nonUniqueSubgraphNames], invalidNameErrorMessages)); - } - if (duplicateOverriddenFieldPaths.size > 0) { - const duplicateOverriddenFieldErrorMessages: string[] = []; - for (const fieldPath of duplicateOverriddenFieldPaths) { - const sourceSubgraphNames = getOrThrowError( - overrideSourceSubgraphNamesByFieldPath, - fieldPath, - 'overrideSourceSubgraphNamesByFieldPath', - ); - duplicateOverriddenFieldErrorMessages.push(duplicateOverriddenFieldErrorMessage(fieldPath, sourceSubgraphNames)); - } - allErrors.push(duplicateOverriddenFieldsError(duplicateOverriddenFieldErrorMessages)); - } - allErrors.push(...validationErrors); - if (allErrors.length > 0) { - return { - errors: allErrors, - success: false, - warnings, - }; - } - for (const [targetSubgraphName, overridesData] of allOverridesByTargetSubgraphName) { - const internalSubgraph = getOrThrowError( - internalSubgraphBySubgraphName, - targetSubgraphName, - 'internalSubgraphBySubgraphName', - ); - internalSubgraph.overriddenFieldNamesByParentTypeName = overridesData; - for (const [parentTypeName, fieldNames] of overridesData) { - const configurationData = internalSubgraph.configurationDataByTypeName.get(parentTypeName); - if (!configurationData) { - continue; - } - subtractSet(fieldNames, configurationData.fieldNames); - if (configurationData.fieldNames.size < 1) { - internalSubgraph.configurationDataByTypeName.delete(parentTypeName); - } - } - } - - return { - authorizationDataByParentTypeName, - concreteTypeNamesByAbstractTypeName, - entityDataByTypeName, - fieldCoordsByNamedTypeName, - internalSubgraphBySubgraphName: internalSubgraphBySubgraphName, - internalGraph, - success: true, - warnings, - }; -} diff --git a/composition/src/v1/normalization/params.ts b/composition/src/v1/normalization/types/params.ts similarity index 69% rename from composition/src/v1/normalization/params.ts rename to composition/src/v1/normalization/types/params.ts index 075a8e6d02..6d22240970 100644 --- a/composition/src/v1/normalization/params.ts +++ b/composition/src/v1/normalization/types/params.ts @@ -1,9 +1,9 @@ -import type { DirectiveName, FieldName, SubgraphName } from '../../types/types'; -import type { CompositeOutputData, InputObjectDefinitionData } from '../../schema-building/types'; -import type { ConstDirectiveNode, DocumentNode } from 'graphql'; -import type { Subgraph } from '../../subgraph/types'; -import type { CompositionOptions } from '../../types/params'; -import type { Graph } from '../../resolvability-graph/graph'; +import { type DirectiveName, type FieldName, type SubgraphName } from '../../../types/types'; +import { type CompositeOutputData, type InputObjectDefinitionData } from '../../../schema-building/types/types'; +import { type ConstDirectiveNode, type DocumentNode } from 'graphql'; +import type { Subgraph } from '../../../subgraph/types'; +import type { CompositionOptions } from '../../../types/params'; +import type { Graph } from '../../../resolvability-graph/graph'; export type ValidateOneOfDirectiveParams = { data: InputObjectDefinitionData; diff --git a/composition/src/v1/normalization/types/results.ts b/composition/src/v1/normalization/types/results.ts new file mode 100644 index 0000000000..7f92921b37 --- /dev/null +++ b/composition/src/v1/normalization/types/results.ts @@ -0,0 +1,36 @@ +import { type DirectiveName } from '../../../types/types'; +import { type ExecutionMultiFailure, type ExecutionSingleFailure, type ExecutionSuccess } from '../../../types/results'; +import { type SchemaDefinitionNode, type SchemaExtensionNode } from 'graphql'; +import { type LinkImportData } from './types'; + +export interface ExtractLinkArgsSuccess extends ExecutionSuccess { + importDataByDirectiveName: Map; +} + +export type ExtractLinkArgsResult = ExecutionMultiFailure | ExtractLinkArgsSuccess; + +export interface ExtractImportUrlVersionSuccess extends ExecutionSuccess { + coreUrl: string; + majorVersion: number; + minorVersion: number; +} + +export type ExtractImportUrlSegmentsResult = ExecutionSingleFailure | ExtractImportUrlVersionSuccess; + +export interface SchemaNodeSuccess extends ExecutionSuccess { + node?: SchemaDefinitionNode | SchemaExtensionNode; +} + +export type SchemaNodeResult = ExecutionMultiFailure | SchemaNodeSuccess; + +export interface ExtractLinkImportsSuccess extends ExecutionSuccess { + imports: Array; +} + +export type ExtractLinkImportsResult = ExecutionMultiFailure | ExtractLinkImportsSuccess; + +export interface ExtractLinkImportObjectSuccess extends ExecutionSuccess { + import: LinkImportData; +} + +export type ExtractLinkImportObjectResult = ExecutionMultiFailure | ExtractLinkImportObjectSuccess; diff --git a/composition/src/v1/normalization/types.ts b/composition/src/v1/normalization/types/types.ts similarity index 51% rename from composition/src/v1/normalization/types.ts rename to composition/src/v1/normalization/types/types.ts index 560098475f..a40b958767 100644 --- a/composition/src/v1/normalization/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -1,16 +1,35 @@ import { - type ArgumentData, type CompositeOutputData, - type DirectiveDefinitionData, type FieldData, type InputObjectDefinitionData, type InputValueData, type NodeData, type SchemaData, -} from '../../schema-building/types'; -import { type ConstDirectiveNode, type DocumentNode, type InputValueDefinitionNode, type ValueNode } from 'graphql'; -import { type RequiredFieldConfiguration } from '../../router-configuration/types'; -import { type DirectiveArgumentCoords, type SubgraphName } from '../../types/types'; +} from '../../../schema-building/types/types'; +import { + type ConstDirectiveNode, + type DocumentNode, + type InputValueDefinitionNode, + type Kind, + type Location, + type NameNode, + type StringValueNode, + type ValueNode, +} from 'graphql'; +import { type RequiredFieldConfiguration } from '../../../router-configuration/types'; +import { + type ArgumentName, + type DirectiveArgumentCoords, + type DirectiveName, + type FieldName, + type SubgraphName, + type TypeName, +} from '../../../types/types'; +import { type ExecutionFailure, type ExecutionSuccess } from '../../../types/results'; +import { + type DirectiveArgumentData, + type DirectiveDefinitionData, +} from '../../../directive-definition-data/types/types'; export type KeyFieldSetData = { documentNode: DocumentNode; @@ -34,10 +53,10 @@ export type FieldSetParentResult = { fieldSetParentData?: CompositeOutputData; }; -export type ExtractArgumentDataResult = { - argumentTypeNodeByName: Map; - optionalArgumentNames: Set; - requiredArgumentNames: Set; +export type ExtractDirectiveArgumentDataResult = { + argumentDataByName: Map; + optionalArgumentNames: Set; + requiredArgumentNames: Set; }; export type ValidateDirectiveParams = { @@ -46,7 +65,7 @@ export type ValidateDirectiveParams = { directiveCoords: string; directiveNode: ConstDirectiveNode; errorMessages: Array; - requiredArgumentNames: Array; + requiredArgumentNames: Array; }; export type HandleOverrideDirectiveParams = { @@ -82,22 +101,47 @@ export type HandleListSizeDirectiveParams = { errorMessages: Array; }; +export type RecordDirectiveWeightOnFieldParams = { + data: FieldData; + definitionData: DirectiveDefinitionData; + directiveName: DirectiveName; + directiveNode: ConstDirectiveNode; +}; + export type AddInputValueDataByNodeParams = { - inputValueDataByName: Map; + inputValueDataByName: Map; isArgument: boolean; node: InputValueDefinitionNode; - originalParentTypeName: string; - fieldName?: string; - renamedParentTypeName?: string; + originalParentTypeName: TypeName; + fieldName?: FieldName; + renamedParentTypeName?: TypeName; }; -export type ExecutionFailure = { - success: false; +export interface UpsertInputObjectSuccess extends ExecutionSuccess { + data: InputObjectDefinitionData; +} + +export type UpsertInputObjectResult = ExecutionFailure | UpsertInputObjectSuccess; + +export type ComposeDirectiveNode = { + readonly arguments: ReadonlyArray; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode; + readonly loc?: Location; }; -export type UpsertInputObjectSuccess = { - data: InputObjectDefinitionData; - success: true; +export type ComposeDirectiveArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode; + readonly value: StringValueNode; + readonly loc?: Location; }; -export type UpsertInputObjectResult = ExecutionFailure | UpsertInputObjectSuccess; +export type LinkImportData = { + name: DirectiveName; + coreUrl: string; + majorVersion: number; + minorVersion: number; + node?: ConstDirectiveNode; + rename?: DirectiveName; +}; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 10b4504e61..62b77eeac3 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -1,4 +1,15 @@ -import { BREAK, type ConstDirectiveNode, type DocumentNode, Kind, OperationTypeNode, print, visit } from 'graphql'; +import { + BREAK, + type ConstArgumentNode, + type ConstDirectiveNode, + type ConstObjectValueNode, + type ConstValueNode, + type DocumentNode, + Kind, + OperationTypeNode, + print, + visit, +} from 'graphql'; import { isKindAbstract, lexicographicallySortDocumentNode } from '../../ast/utils'; import { type NormalizationFactory } from './normalization-factory'; import { @@ -8,21 +19,29 @@ import { inlineFragmentInFieldSetErrorMessage, invalidDirectiveError, invalidEventSubjectsArgumentErrorMessage, + invalidFieldLinkDirectiveImportObjectError, + invalidLinkDirectiveImportObjectError, + invalidLinkDirectiveUrlError, invalidSelectionSetDefinitionErrorMessage, invalidSelectionSetErrorMessage, + invalidSubValueLinkDirectiveImportError, + invalidVersionLinkDirectiveUrlError, + noFeatureNameLinkDirectiveUrlError, + noLinkDirectiveUrlError, + noNameFieldLinkDirectiveImportObjectError, + nonIterableLinkDirectiveImportError, + noPathLinkDirectiveUrlError, + noVersionLinkDirectiveUrlError, undefinedEventSubjectsArgumentErrorMessage, undefinedFieldInFieldSetErrorMessage, unexpectedArgumentErrorMessage, + unknownFieldLinkDirectiveImportObjectError, unknownTypeInFieldSetErrorMessage, unparsableFieldSetSelectionErrorMessage, } from '../../errors/errors'; import { BASE_SCALARS, EDFS_ARGS_REGEXP } from '../constants/constants'; import { type RequiredFieldConfiguration } from '../../router-configuration/types'; -import { - type CompositeOutputData, - type DirectiveDefinitionData, - type InputValueData, -} from '../../schema-building/types'; +import { type CompositeOutputData, type InputValueData } from '../../schema-building/types/types'; import { getTypeNodeNamedTypeName } from '../../schema-building/ast'; import { AUTHENTICATED_DEFINITION_DATA, @@ -52,13 +71,14 @@ import { REQUIRE_FETCH_REASONS_DEFINITION_DATA, REQUIRES_DEFINITION_DATA, REQUIRES_SCOPES_DEFINITION_DATA, - SEMANTIC_NON_NULL_DATA, + SEMANTIC_NON_NULL_DEFINITION_DATA, SHAREABLE_DEFINITION_DATA, SPECIFIED_BY_DEFINITION_DATA, SUBSCRIPTION_FILTER_DEFINITION_DATA, TAG_DEFINITION_DATA, -} from './directive-definition-data'; +} from '../../directive-definition-data/directive-definition-data'; import { + AS, AUTHENTICATED, COMPOSE_DIRECTIVE, CONFIGURE_CHILD_DESCRIPTIONS, @@ -76,12 +96,15 @@ import { EXTENDS, EXTERNAL, FIELDS, + IMPORT, INACCESSIBLE, INTERFACE_OBJECT, KEY, LINK, LIST_SIZE, + LITERAL_AT, LITERAL_PERIOD, + NAME, ONE_OF, OVERRIDE, PROVIDES, @@ -96,9 +119,21 @@ import { SUBSCRIPTION_FILTER, TAG, TYPENAME, + URL_LOWER, } from '../../utils/string-constants'; import { getValueOrDefault, kindToNodeType, numberToOrdinal } from '../../utils/utils'; -import { type FieldSetData, type KeyFieldSetData } from './types'; +import { type FieldSetData, type KeyFieldSetData, type LinkImportData } from './types/types'; +import { type DirectiveName } from '../../types/types'; +import { + type ExtractImportUrlSegmentsResult, + type ExtractLinkArgsResult, + type ExtractLinkImportObjectResult, + type ExtractLinkImportsResult, +} from './types/results'; +import { IMPORT_VERSION_REGEX } from '../constants/strings'; +import { type UpsertFederatedDirectiveDataParams } from '../../directive-definition-data/types/params'; +import { type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; +import { copyDirectiveDefinitionData } from '../../directive-definition-data/utils'; export function newFieldSetData(): FieldSetData { return { @@ -459,10 +494,344 @@ export function initializeDirectiveDefinitionDatas(): Map = [ + AUTHENTICATED_DEFINITION_DATA, + DEPRECATED_DEFINITION_DATA, + INACCESSIBLE_DEFINITION_DATA, + ONE_OF_DEFINITION_DATA, + REQUIRES_SCOPES_DEFINITION_DATA, + SEMANTIC_NON_NULL_DEFINITION_DATA, + TAG_DEFINITION_DATA, +]; + +export function upsertFederatedDirectiveData({ + executableDirectiveDatasByName, + existingDataByName, + incomingDataByName, +}: UpsertFederatedDirectiveDataParams): void { + for (const [directiveName, directiveData] of incomingDataByName) { + const existingData = existingDataByName.get(directiveName); + const copiedData = copyDirectiveDefinitionData(directiveData); + if (!existingData) { + if (!directiveData.isComposed) { + getValueOrDefault(executableDirectiveDatasByName, directiveName, () => []).push(copiedData); + continue; + } + existingDataByName.set(directiveName, copiedData); + executableDirectiveDatasByName.delete(directiveName); + continue; + } + + // If a directive is not composed in a subgraph, it is effectively ignored. + if (!directiveData.isComposed) { + continue; + } + + /* If at least one subgraph includes the directive name in a `@composeDirective` directive, the definition of + * the custom directive should be propagated in the federated graph. + * The directive itself must be referenced in at least once in one of those subgraphs to propagate also the usages + * of the custom directive to the federated graph (in addition to the definition). + * + * Moreover, only the highest version of the directive is propagated; this means a directive definition description + * could be set in one one subgraph and removed in another subgraph with a imported higher version. + */ + if (existingData.minorVersion < directiveData.minorVersion) { + existingDataByName.set(directiveName, copyDirectiveDefinitionData(directiveData)); + } + } +} + +// This function aims to mirror Apollo functionality +function extractLinkUrlSegments(argNode: ConstArgumentNode): ExtractImportUrlSegmentsResult { + if (argNode.value.kind !== Kind.STRING) { + return { + error: invalidLinkDirectiveUrlError(''), + success: false, + }; + } + + const urlString = argNode.value.value; + const url = URL.parse(urlString); + + if (!url) { + return { + error: invalidLinkDirectiveUrlError(urlString), + success: false, + }; + } + + const segments = url.pathname.split('/'); + const versionString = segments.at(-1); + if (segments.length < 3 && !versionString) { + return { + error: noPathLinkDirectiveUrlError(urlString), + success: false, + }; + } + + if (!versionString) { + return { + error: noVersionLinkDirectiveUrlError(urlString), + success: false, + }; + } + + if (!IMPORT_VERSION_REGEX.test(versionString)) { + return { + error: invalidVersionLinkDirectiveUrlError({ url: urlString, versionString }), + success: false, + }; + } + + if (segments.length < 3) { + return { + error: noFeatureNameLinkDirectiveUrlError(urlString), + success: false, + }; + } + + try { + const versionSegments = versionString.substring(1).split(LITERAL_PERIOD); + if (versionSegments.length !== 2) { + return { + error: invalidVersionLinkDirectiveUrlError({ url: urlString, versionString }), + success: false, + }; + } + const majorVersion = parseInt(versionSegments[0]); + const minorVersion = parseInt(versionSegments[1]); + + const featureName = segments.at(-2); + if (!featureName) { + return { + error: noFeatureNameLinkDirectiveUrlError(urlString), + success: false, + }; + } + + return { + coreUrl: urlString.substring(0, urlString.length - versionString.length), + success: true, + majorVersion, + minorVersion, + }; + } catch { + // Should never happen + return { + error: invalidVersionLinkDirectiveUrlError({ url: urlString, versionString: versionString }), + success: false, + }; + } +} + +function extractLinkImportObject(value: ConstObjectValueNode): ExtractLinkImportObjectResult { + const data: LinkImportData = { + name: '', + coreUrl: '', + majorVersion: -1, + minorVersion: -1, + }; + const errors: Array = []; + const valueString = print(value); + for (const field of value.fields) { + const fieldName = field.name.value; + switch (fieldName) { + case AS: { + if (field.value.kind !== Kind.STRING) { + errors.push(invalidFieldLinkDirectiveImportObjectError({ fieldName, value: valueString })); + break; + } + data.rename = field.value.value; + break; + } + case NAME: { + if (field.value.kind !== Kind.STRING) { + errors.push(invalidFieldLinkDirectiveImportObjectError({ fieldName, value: valueString })); + break; + } + data.name = field.value.value; + break; + } + default: { + errors.push(unknownFieldLinkDirectiveImportObjectError({ fieldName, value: valueString })); + break; + } + } + } + + if (!data.name) { + errors.push(noNameFieldLinkDirectiveImportObjectError(valueString)); + } else if (data.rename) { + const nameIsDirective = data.name.startsWith(LITERAL_AT); + const renamedIsDirective = data.rename.startsWith(LITERAL_AT); + if (nameIsDirective !== renamedIsDirective) { + errors.push( + invalidLinkDirectiveImportObjectError({ + name: data.name, + rename: data.rename, + }), + ); + } + } + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + import: data, + success: true, + }; +} + +function extractLinkImports(values: ReadonlyArray): ExtractLinkImportsResult { + const imports: Array = []; + const errors: Array = []; + for (let i = 0; i < values.length; i++) { + const value = values[i]; + switch (value.kind) { + case Kind.STRING: { + imports.push({ + name: value.value, + coreUrl: '', + majorVersion: -1, + minorVersion: -1, + }); + break; + } + case Kind.OBJECT: { + const objectResult = extractLinkImportObject(value); + if (!objectResult.success) { + errors.push(...objectResult.errors); + break; + } + imports.push(objectResult.import); + break; + } + default: { + errors.push(invalidSubValueLinkDirectiveImportError(i)); + break; + } + } + } + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + imports, + success: true, + }; +} + +export function extractLinkArgs( + directivesByName: Map>, +): ExtractLinkArgsResult { + const errors: Array = []; + const importDataByDirectiveName = new Map(); + const linkDirectives = directivesByName.get(LINK); + if (!linkDirectives) { + return { + success: true, + importDataByDirectiveName, + }; + } + + for (const directive of linkDirectives) { + if (!directive.arguments) { + continue; + } + + let imports: Array = []; + let majorVersion = -1; + let minorVersion = -1; + let coreUrl = ''; + for (const arg of directive.arguments) { + const argName = arg.name.value; + switch (argName) { + case URL_LOWER: { + const urlResult = extractLinkUrlSegments(arg); + if (!urlResult.success) { + return { + errors: [urlResult.error], + success: false, + }; + } + coreUrl = urlResult.coreUrl; + majorVersion = urlResult.majorVersion; + minorVersion = urlResult.minorVersion; + break; + } + case IMPORT: { + switch (arg.value.kind) { + case Kind.STRING: { + imports.push({ + name: arg.value.value, + coreUrl: '', + majorVersion: -1, + minorVersion: -1, + }); + break; + } + case Kind.LIST: { + const importsResult = extractLinkImports(arg.value.values); + if (!importsResult.success) { + return importsResult; + } + imports = importsResult.imports; + break; + } + default: { + return { + errors: [nonIterableLinkDirectiveImportError(arg.value.kind)], + success: false, + }; + } + } + break; + } + } + } + // Should be caught in earlier validation + if (!coreUrl) { + return { + errors: [noLinkDirectiveUrlError], + success: false, + }; + } + + for (const value of imports) { + value.coreUrl = coreUrl; + value.majorVersion = majorVersion; + value.minorVersion = minorVersion; + importDataByDirectiveName.set(value.rename ?? value.name, value); + } + } + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + importDataByDirectiveName, + success: true, + }; +} diff --git a/composition/src/v1/normalization/walkers.ts b/composition/src/v1/normalization/walkers.ts index da658bf78c..2286e4f2b1 100644 --- a/composition/src/v1/normalization/walkers.ts +++ b/composition/src/v1/normalization/walkers.ts @@ -17,14 +17,15 @@ import { getRenamedRootTypeName, isParentDataCompositeOutputType, isTypeNameRootType, - newPersistedDirectivesData, + newFederatedDirectivesData, } from '../../schema-building/utils'; -import { type ConfigureDescriptionData, type InputValueData } from '../../schema-building/types'; +import { type ConfigureDescriptionData, type InputValueData } from '../../schema-building/types/types'; import { getMutableEnumValueNode, getTypeNodeNamedTypeName } from '../../schema-building/ast'; import { type GraphNode, type RootNode } from '../../resolvability-graph/graph-nodes'; import { requiresDefinedOnNonEntityFieldWarning } from '../warnings/warnings'; import { ANY_SCALAR, + COMPOSE_DIRECTIVE, ENTITY_UNION, IGNORED_FIELDS, PARENT_DEFINITION_DATA, @@ -34,7 +35,7 @@ import { } from '../../utils/string-constants'; import { type RootTypeName } from '../../utils/types'; import { getOrThrowError, getValueOrDefault, kindToNodeType } from '../../utils/utils'; -import { type KeyFieldSetData } from './types'; +import { type KeyFieldSetData } from './types/types'; import { type FieldName, type TypeName } from '../../types/types'; /* Walker to collect schema definition, directive definitions, and entities. @@ -48,6 +49,7 @@ export function upsertDirectiveSchemaAndEntityDefinitions(nf: NormalizationFacto nf.referencedDirectiveNames.add(name); if (EVENT_DIRECTIVE_NAMES.has(name)) { nf.edfsDirectiveReferences.add(name); + return false; } if (V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(name)) { nf.isSubgraphVersionTwo = true; @@ -274,7 +276,7 @@ export function upsertParentsAndChildren(nf: NormalizationFactory, document: Doc name, node: getMutableEnumValueNode(node), parentTypeName: nf.originalParentTypeName, - persistedDirectivesData: newPersistedDirectivesData(), + federatedDirectivesData: newFederatedDirectivesData(), subgraphNames: new Set([nf.subgraphName]), description: formatDescription(node.description), }); diff --git a/composition/src/v1/schema-building/type-merging.ts b/composition/src/v1/schema-building/type-merging.ts index 701ec7dbf9..f73fb6aaf4 100644 --- a/composition/src/v1/schema-building/type-merging.ts +++ b/composition/src/v1/schema-building/type-merging.ts @@ -2,7 +2,7 @@ import { Kind, type ListTypeNode, type NamedTypeNode, type NonNullTypeNode, type import { maximumTypeNestingExceededError } from '../../errors/errors'; import { getMutableTypeNode, type MutableIntermediateTypeNode } from '../../schema-building/ast'; import { stringToNameNode } from '../../ast/utils'; -import { type FieldData } from '../../schema-building/types'; +import { type FieldData } from '../../schema-building/types/types'; import { MAXIMUM_TYPE_NESTING } from '../../utils/integer-constants'; export enum DivergentType { diff --git a/composition/src/v1/utils/utils.ts b/composition/src/v1/utils/utils.ts index 92d90b45f0..454b856c4b 100644 --- a/composition/src/v1/utils/utils.ts +++ b/composition/src/v1/utils/utils.ts @@ -11,7 +11,7 @@ import type { ObjectDefinitionData, ParentDefinitionData, SimpleFieldData, -} from '../../schema-building/types'; +} from '../../schema-building/types/types'; import { BOOLEAN_SCALAR, ENUM, @@ -29,7 +29,7 @@ import { UNION, } from '../../utils/string-constants'; import { addIterableToSet, addSets } from '../../utils/utils'; -import type { KeyFieldSetData } from '../normalization/types'; +import type { KeyFieldSetData } from '../normalization/types/types'; import { MAX_OR_SCOPES } from '../constants/constants'; import 'core-js/modules/esnext.set.is-subset-of.v2'; import 'core-js/modules/esnext.set.is-superset-of.v2'; @@ -459,20 +459,3 @@ export function isObjectDefinitionData(data?: ParentDefinitionData): data is Obj } return data.kind === Kind.OBJECT_TYPE_DEFINITION; } - -export function getNodeCoords(data: NodeData): string { - switch (data.kind) { - case Kind.ARGUMENT: - // Intentional fallthrough - case Kind.FIELD_DEFINITION: - // Intentional fallthrough - case Kind.INPUT_VALUE_DEFINITION: - // Intentional fallthrough - case Kind.ENUM_VALUE_DEFINITION: { - return data.federatedCoords; - } - default: { - return data.name; - } - } -} diff --git a/composition/src/v1/warnings/params.ts b/composition/src/v1/warnings/params.ts index d9383dfd0f..5e5b5ece75 100644 --- a/composition/src/v1/warnings/params.ts +++ b/composition/src/v1/warnings/params.ts @@ -1,4 +1,4 @@ -import { type FieldName, type SubgraphName, type TypeName } from '../../types/types'; +import { type DirectiveName, type FieldName, type SubgraphName, type TypeName } from '../../types/types'; export type SingleSubgraphInputFieldOneOfWarningParams = { fieldName: FieldName; @@ -10,3 +10,9 @@ export type SingleFederatedInputFieldOneOfWarningParams = { fieldName: FieldName; typeName: TypeName; }; + +export type InvalidRepeatedComposedDirectiveWarningParams = { + directiveCoords: string; + directiveName: DirectiveName; + printedDirective: string; +}; diff --git a/composition/src/v1/warnings/warnings.ts b/composition/src/v1/warnings/warnings.ts index 9e8ee44cdc..4089288f94 100644 --- a/composition/src/v1/warnings/warnings.ts +++ b/composition/src/v1/warnings/warnings.ts @@ -1,9 +1,11 @@ import { Warning } from '../../warnings/types'; import { QUOTATION_JOIN } from '../../utils/string-constants'; import { + type InvalidRepeatedComposedDirectiveWarningParams, type SingleFederatedInputFieldOneOfWarningParams, type SingleSubgraphInputFieldOneOfWarningParams, } from './params'; +import { type SubgraphName } from '../../types/types'; export function invalidOverrideTargetSubgraphNameWarning( targetSubgraphName: string, @@ -205,3 +207,32 @@ export function singleFederatedInputFieldOneOfWarning({ }, }); } + +export function composedOneOfDirectiveWarning(subgraphName: SubgraphName): Warning { + return new Warning({ + message: + `A "@composeDirective" directive defines the "name" argument value "@oneOf".` + + ` The "@oneOf" directive is now considered built-in and will be automatically included in the federated.` + + ` schema. Consider removing the inclusion of "@oneOf" within any "@composeDirective" directives.`, + subgraph: { + name: subgraphName, + }, + }); +} + +export function invalidRepeatedComposedDirectiveWarning({ + directiveCoords, + directiveName, + printedDirective, +}: InvalidRepeatedComposedDirectiveWarningParams): Warning { + return new Warning({ + message: + `The definition for the composed directive "@${directiveName}" is not defined as repeatable.` + + ` However, the directive "@${directiveName}" is declared on "${directiveCoords}" multiple times with` + + ` incompatible arguments. The federated graph will only propagate "${printedDirective}".` + + ` Consider updating the directive definition for "${directiveName}" to be repeatable.`, + subgraph: { + name: '', + }, + }); +} diff --git a/composition/src/validation/types/params.ts b/composition/src/validation/types/params.ts new file mode 100644 index 0000000000..a7f8d22767 --- /dev/null +++ b/composition/src/validation/types/params.ts @@ -0,0 +1,25 @@ +import { type NodeData, type ParentDefinitionData, type SchemaData } from '../../schema-building/types/types'; +import type { ArgumentName, DirectiveName, TypeName } from '../../types/types'; +import type { ConstDirectiveNode, ConstValueNode, TypeNode } from 'graphql'; +import { type DirectiveArgumentData, type DirectiveDefinitionData } from '../../directive-definition-data/types/types'; + +export type IsArgumentValueValidParams = { + argumentValue: ConstValueNode; + parentDefinitionDataByTypeName: Map; + typeNode: TypeNode; +}; + +export type ValidateCustomDirectiveParams = { + argumentDataByName: Map; + directiveNode: ConstDirectiveNode; + parentDefinitionDataByTypeName: Map; + requiredArgumentNames: Array; +}; + +export type ValidateDirectivesParams = { + data: NodeData | SchemaData; + directiveCoords: string; + directiveDefinitionData: DirectiveDefinitionData; + directiveNodes: Array; + parentDefinitionDataByTypeName: Map; +}; diff --git a/composition/src/validation/validation.ts b/composition/src/validation/validation.ts new file mode 100644 index 0000000000..704d92002d --- /dev/null +++ b/composition/src/validation/validation.ts @@ -0,0 +1,280 @@ +import { + duplicateArgumentDefinitionError, + invalidArgumentValueError, + invalidCustomDirectiveError, + invalidDirectiveLocationError, + invalidRepeatedDirectiveError, + undefinedRequiredArgumentsError, + unexpectedArgumentProvisionError, +} from '../errors/errors'; +import { nodeKindToDirectiveLocation } from '../ast/utils'; +import { getNamedTypeNode, getTypeNodeNamedTypeName, type MutableInputValueNode } from '../schema-building/ast'; +import { sanitizeDefaultValue } from '../schema-building/utils'; +import { + type IsArgumentValueValidParams, + type ValidateCustomDirectiveParams, + type ValidateDirectivesParams, +} from './types/params'; +import { Kind, print } from 'graphql'; +import { + BOOLEAN_SCALAR, + EXECUTION, + FIELD_SET_SCALAR, + FLOAT_SCALAR, + ID_SCALAR, + INACCESSIBLE, + INT_SCALAR, + LINK_IMPORT, + LINK_PURPOSE, + SCOPE_SCALAR, + SECURITY, + STRING_SCALAR, + SUBSCRIPTION_FIELD_CONDITION, + SUBSCRIPTION_FILTER_CONDITION, +} from '../utils/string-constants'; +import { printTypeNode } from '@graphql-tools/merge'; +import { type ArgumentName } from '../types/types'; +import { getEntriesNotInHashSet, numberToOrdinal } from '../utils/utils'; +import { type ExecutionMultiResult } from '../types/results'; + +export function isArgumentValueValid({ + argumentValue, + parentDefinitionDataByTypeName, + typeNode, +}: IsArgumentValueValidParams): boolean { + if (argumentValue.kind === Kind.NULL) { + return typeNode.kind !== Kind.NON_NULL_TYPE; + } + switch (typeNode.kind) { + case Kind.LIST_TYPE: { + if (argumentValue.kind !== Kind.LIST) { + // This handles List coercion + return isArgumentValueValid({ + argumentValue, + parentDefinitionDataByTypeName, + typeNode: getNamedTypeNode(typeNode.type), + }); + } + for (const value of argumentValue.values) { + if (!isArgumentValueValid({ argumentValue: value, parentDefinitionDataByTypeName, typeNode: typeNode.type })) { + return false; + } + } + return true; + } + case Kind.NAMED_TYPE: { + switch (typeNode.name.value) { + case BOOLEAN_SCALAR: { + return argumentValue.kind === Kind.BOOLEAN; + } + case FLOAT_SCALAR: { + return argumentValue.kind === Kind.FLOAT || argumentValue.kind === Kind.INT; + } + case ID_SCALAR: { + return argumentValue.kind === Kind.STRING || argumentValue.kind === Kind.INT; + } + case INT_SCALAR: { + return argumentValue.kind === Kind.INT; + } + case FIELD_SET_SCALAR: + // intentional fallthrough + case SCOPE_SCALAR: + // intentional fallthrough + case STRING_SCALAR: { + return argumentValue.kind === Kind.STRING; + } + case LINK_IMPORT: { + return true; + } + case LINK_PURPOSE: { + if (argumentValue.kind !== Kind.ENUM) { + return false; + } + return argumentValue.value === SECURITY || argumentValue.value === EXECUTION; + } + case SUBSCRIPTION_FIELD_CONDITION: + // intentional fallthrough + case SUBSCRIPTION_FILTER_CONDITION: + return argumentValue.kind === Kind.OBJECT; + default: { + const parentData = parentDefinitionDataByTypeName.get(typeNode.name.value); + if (!parentData) { + return false; + } + if (parentData.kind === Kind.SCALAR_TYPE_DEFINITION) { + // For now, allow custom scalars to be any value kind. + return true; + } + if (parentData.kind === Kind.ENUM_TYPE_DEFINITION) { + if (argumentValue.kind !== Kind.ENUM && argumentValue.kind !== Kind.STRING) { + return false; + } + const enumValue = parentData.enumValueDataByName.get(argumentValue.value); + if (!enumValue) { + return false; + } + return !enumValue.directivesByName.has(INACCESSIBLE); + } + if (parentData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION) { + return false; + } + // TODO deep comparison + return argumentValue.kind === Kind.OBJECT; + } + } + } + default: { + return isArgumentValueValid({ argumentValue, parentDefinitionDataByTypeName, typeNode: typeNode.type }); + } + } +} + +export function validateCustomDirective({ + argumentDataByName, + directiveNode, + parentDefinitionDataByTypeName, + requiredArgumentNames, +}: ValidateCustomDirectiveParams): ExecutionMultiResult { + if (!directiveNode.arguments || directiveNode.arguments.length < 1) { + if (requiredArgumentNames.length < 1) { + return { + success: true, + }; + } + + return { + errors: [undefinedRequiredArgumentsError(requiredArgumentNames)], + success: false, + }; + } + + const errors: Array = []; + const definedArgumentNames = new Set(); + const duplicateArgumentNames = new Set(); + const unexpectedArgumentNames = new Set(); + for (const argumentNode of directiveNode.arguments) { + const argumentName = argumentNode.name.value; + if (definedArgumentNames.has(argumentName)) { + duplicateArgumentNames.add(argumentName); + continue; + } + definedArgumentNames.add(argumentName); + const argumentData = argumentDataByName.get(argumentName); + if (!argumentData) { + unexpectedArgumentNames.add(argumentName); + continue; + } + if ( + !isArgumentValueValid({ + argumentValue: argumentNode.value, + parentDefinitionDataByTypeName, + typeNode: argumentData.type, + }) + ) { + errors.push( + invalidArgumentValueError({ + argumentName, + expectedTypeString: printTypeNode(argumentData.type), + value: print(argumentNode.value), + }), + ); + } + } + + if (duplicateArgumentNames.size > 0) { + errors.push(duplicateArgumentDefinitionError([...duplicateArgumentNames])); + } + if (unexpectedArgumentNames.size > 0) { + errors.push(unexpectedArgumentProvisionError([...unexpectedArgumentNames])); + } + const undefinedArgumentNames = getEntriesNotInHashSet(requiredArgumentNames, definedArgumentNames); + if (undefinedArgumentNames.length > 0) { + errors.push(undefinedRequiredArgumentsError(undefinedArgumentNames)); + } + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + success: true, + }; +} + +export function validateDirectives({ + data, + directiveCoords, + directiveDefinitionData: { + argumentDataByName, + isComposed, + isRepeatable, + locations, + name, + node, + requiredArgumentNames, + }, + directiveNodes, + parentDefinitionDataByTypeName, +}: ValidateDirectivesParams): ExecutionMultiResult { + const errors: Array = []; + const directiveLocation = nodeKindToDirectiveLocation(data.kind); + if (!locations.has(directiveLocation)) { + errors.push(invalidDirectiveLocationError({ directiveCoords, directiveName: name, location: directiveLocation })); + } + if (directiveNodes.length > 1 && !isRepeatable && !isComposed) { + errors.push(invalidRepeatedDirectiveError({ directiveCoords, directiveName: name })); + } + const requiredArgumentNamesArray = [...requiredArgumentNames]; + for (const argumentNode of node.arguments ?? []) { + if (!argumentNode.defaultValue) { + continue; + } + + const argumentData = argumentDataByName.get(argumentNode.name.value); + if (!argumentData) { + continue; + } + + const namedTypeData = parentDefinitionDataByTypeName.get(getTypeNodeNamedTypeName(argumentData.type)); + // Undefined types are handled elsewhere + if (!namedTypeData) { + continue; + } + + sanitizeDefaultValue({ data: argumentData, namedTypeData, node: argumentNode as MutableInputValueNode }); + } + + for (let i = 0; i < directiveNodes.length; i++) { + const directiveNode = directiveNodes[i]; + const validationResult = validateCustomDirective({ + argumentDataByName, + directiveNode, + parentDefinitionDataByTypeName, + requiredArgumentNames: requiredArgumentNamesArray, + }); + if (!validationResult.success) { + errors.push( + invalidCustomDirectiveError({ + directiveCoords, + directiveName: name, + errors: validationResult.errors, + ordinal: numberToOrdinal(i + 1), + }), + ); + } + } + + if (errors.length > 0) { + return { + errors, + success: false, + }; + } + + return { + success: true, + }; +} diff --git a/composition/tests/v1/directives/compose-directive.test.ts b/composition/tests/v1/directives/compose-directive.test.ts new file mode 100644 index 0000000000..aa61472b84 --- /dev/null +++ b/composition/tests/v1/directives/compose-directive.test.ts @@ -0,0 +1,1037 @@ +import { describe, expect, test } from 'vitest'; +import { + createSubgraph, + federateSubgraphsFailure, + federateSubgraphsSuccess, + normalizeString, + normalizeSubgraphFailure, + normalizeSubgraphSuccess, + schemaToSortedNormalizedString, +} from '../../utils/utils'; +import { + invalidCustomDirectiveError, + invalidLinkDirectiveImportObjectError, + invalidLinkDirectiveUrlError, + invalidRepeatedComposedDirectiveWarning, + invalidSubValueLinkDirectiveImportError, + invalidVersionLinkDirectiveUrlError, + noFeatureNameLinkDirectiveUrlError, + noLeadingAtComposeDirectiveNameError, + noNameFieldLinkDirectiveImportObjectError, + nonEqualComposeDirectiveMajorVersionError, + nonEqualCoreFeatureComposeDirectiveError, + noPathLinkDirectiveUrlError, + noVersionLinkDirectiveUrlError, + ROUTER_COMPATIBILITY_VERSION_ONE, + undefinedRequiredArgumentsError, + unimportedComposeDirectiveNameError, + unknownFieldLinkDirectiveImportObjectError, +} from '../../../src'; +import { SCHEMA_QUERY_DEFINITION } from '../utils/utils'; + +describe('@composeDirective tests', () => { + describe('Normalization tests', () => { + test('that a valid custom directive can be provided successfully', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { schema } = normalizeSubgraphSuccess(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toBe( + normalizeString(` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + directive @composeDirective(name: String!) repeatable on SCHEMA + + directive @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA + + type Query { + a: ID @a + } + + scalar link__Import + + enum link__Purpose { + EXECUTION + SECURITY + } + `), + ); + }); + + test('that an error is returned if a feature URL does not defines an invalid URL', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "test") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([invalidLinkDirectiveUrlError('test')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL does not define a path component #1', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noPathLinkDirectiveUrlError('https://a')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL does not define a path component #2', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noPathLinkDirectiveUrlError('https://a/')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL does not define a feature name component #1', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a//v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noFeatureNameLinkDirectiveUrlError('https://a//v1.0')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL does not define a feature name component #2', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noFeatureNameLinkDirectiveUrlError('https://a/v1.0')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL does not define version string', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noVersionLinkDirectiveUrlError('https://a/a/')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL ends with an invalid version #1', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([invalidVersionLinkDirectiveUrlError({ url: 'https://a/a', versionString: 'a' })]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL ends with an invalid version #2', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + invalidVersionLinkDirectiveUrlError({ url: 'https://a/a/v1', versionString: 'v1' }), + ]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a feature URL ends with an invalid version #3', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + invalidVersionLinkDirectiveUrlError({ url: 'https://a/a/v1.0.0', versionString: 'v1.0.0' }), + ]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a directive is imported with an invalid import object', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: [{ a: "a" }], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(2); + expect(errors).toStrictEqual([ + unknownFieldLinkDirectiveImportObjectError({ fieldName: 'a', value: '{a: "a"}' }), + noNameFieldLinkDirectiveImportObjectError('{a: "a"}'), + ]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a directive is renamed to a non-directive', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: [{ name: "@a", as: "b" }], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([invalidLinkDirectiveImportObjectError({ name: '@a', rename: 'b' })]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a non-directive is renamed to a directive', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: [{ name: "a", as: "@b" }], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([invalidLinkDirectiveImportObjectError({ name: 'a', rename: '@b' })]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if an import sub-value is not a string nor object', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a", { name: "@b", as: "@z" }, 1, true, "@c"], url: "https://a/a/v1.0.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(2); + expect(errors).toStrictEqual([ + invalidSubValueLinkDirectiveImportError(2), + invalidSubValueLinkDirectiveImportError(3), + ]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a non-directive is composed', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noLeadingAtComposeDirectiveNameError('a')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a directive is composed without an import', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { errors, warnings } = normalizeSubgraphFailure(aaaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([unimportedComposeDirectiveNameError('@a')]); + expect(warnings).toHaveLength(0); + }); + }); + + describe('Federation tests', () => { + test('that a custom directive is propagated in the federated graph successfully (schema)', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { federatedGraphClientSchema, federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphClientSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + + type Query { + a: ID + } + `, + ), + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that a custom directive is propagated in the federated graph successfully (extend schema)', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess([aaaaa], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a on FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that a custom directive is propagated in the federated graph successfully (extend schema #2)', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Object { + a: ID @a + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + type Query { + a: ID + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a on FIELD_DEFINITION + + type Object { + a: ID @a + } + + type Query { + a: ID + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that equivalent directives defined on the same coordinates are not repeated', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + """ + a + """ + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a(a: String!) on FIELD_DEFINITION + + type Query { + a: ID @a(a: "a") + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that different core features can import the same named directive if only one is composed #1', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + """ + a + """ + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + schema + @link(import: ["@a"], url: "https://a/b/v1.0") { + query: Query + } + + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + """a""" + directive @a(a: String!) on FIELD_DEFINITION + + type Query { + a: ID @a(a: "a") + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that different core features can import the same named directive if only one is composed #2', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + """ + a + """ + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + schema + @link(import: ["@a"], url: "https://a/b/v1.0") { + query: Query + } + + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "b") + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + """a""" + directive @a(a: String!) on FIELD_DEFINITION + + type Query { + a: ID @a(a: "a") + } + `, + ), + ); + expect(warnings).toHaveLength(1); + expect(warnings).toStrictEqual([ + invalidRepeatedComposedDirectiveWarning({ + directiveCoords: 'Query.a', + directiveName: 'a', + printedDirective: '@a(a: "a")', + }), + ]); + }); + + test('that different core features can import the same named directive if only one is composed #3', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") { + query: Query + } + + """ + a + """ + directive @a(a: String!) repeatable on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "a") + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + schema + @link(import: ["@a"], url: "https://a/b/v1.0") { + query: Query + } + + directive @a(a: String!) on FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: "b") + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + """a""" + directive @a(a: String!) repeatable on FIELD_DEFINITION + + type Query { + a: ID @a(a: "a") @a(a: "b") + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a directive is composed with different core features', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + extend schema + @link(import: ["@a"], url: "https://a/b/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a + } + `, + ); + const { errors, warnings } = federateSubgraphsFailure([aaaaa, aaaab], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([nonEqualCoreFeatureComposeDirectiveError('@a')]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a composed directive does not conform to the highest minor version definition', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.1") + @composeDirective(name: "@a") + + directive @a(a: ID!) on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a(a: "a") + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a + } + `, + ); + const { errors, warnings } = federateSubgraphsFailure([aaaaa, aaaab], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + invalidCustomDirectiveError({ + directiveCoords: 'Query.a', + directiveName: 'a', + errors: [undefinedRequiredArgumentsError(['a'])], + ordinal: '2nd', + }), + ]); + expect(warnings).toHaveLength(0); + }); + + test('that an error is returned if a composed directive defines different major versions across subgraphs', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v2.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD_DEFINITION + + type Query @shareable{ + a: ID @a + } + `, + ); + const { errors, warnings } = federateSubgraphsFailure([aaaaa, aaaab], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([nonEqualComposeDirectiveMajorVersionError('@a')]); + expect(warnings).toHaveLength(0); + }); + + test('that @composeDirective does not treat an executable location differently', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v2.0") + @composeDirective(name: "@a") + + directive @a on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID @a + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + directive @a on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID @a + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a on FIELD | FIELD_DEFINITION + + type Query { + a: ID @a + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that @composeDirective propagates the definition but no usages of a directive if there are no references to the directive within the composing subgraphs', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.0") + @composeDirective(name: "@a") + + directive @a on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + directive @a on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID @a + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a on FIELD | FIELD_DEFINITION + + type Query { + a: ID + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that @composeDirective propagates the highest version of the directive only', () => { + const aaaaa = createSubgraph( + 'aaaaa', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.10") + @composeDirective(name: "@a") + + directive @a(a: Int!) repeatable on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: 1) + } + `, + ); + const aaaab = createSubgraph( + 'aaaab', + ` + extend schema + @link(import: ["@a"], url: "https://a/a/v1.9") + @composeDirective(name: "@a") + + directive @a(a: Int) on FIELD | FIELD_DEFINITION + + type Query @shareable { + a: ID @a(a: 2) + } + `, + ); + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [aaaaa, aaaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a(a: Int!) repeatable on FIELD | FIELD_DEFINITION + + type Query { + a: ID @a(a: 1) @a(a: 2) + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + }); +}); diff --git a/composition/tests/v1/directives/cost.test.ts b/composition/tests/v1/directives/cost.test.ts index 3e993d2825..76a4527fd2 100644 --- a/composition/tests/v1/directives/cost.test.ts +++ b/composition/tests/v1/directives/cost.test.ts @@ -2,6 +2,8 @@ import { describe, expect, test } from 'vitest'; import { COST, costOnInterfaceFieldErrorMessage, + type FieldName, + type FieldWeightConfiguration, FIRST_ORDINAL, invalidArgumentValueErrorMessage, invalidDirectiveError, @@ -9,6 +11,7 @@ import { parse, ROUTER_COMPATIBILITY_VERSION_ONE, type Subgraph, + type TypeName, undefinedRequiredArgumentsErrorMessage, } from '../../../src'; import { COST_DIRECTIVE, SCHEMA_QUERY_DEFINITION } from '../utils/utils'; @@ -20,6 +23,20 @@ import { schemaToSortedNormalizedString, } from '../../utils/utils'; +function fieldWeight( + typeName: TypeName, + fieldName: FieldName, + overrides: Record = {}, +): FieldWeightConfiguration { + return { + typeName, + fieldName, + argumentWeights: new Map(), + directiveArgumentWeights: new Map(), + ...overrides, + }; +} + const NORMALIZATION_SCHEMA_QUERY = ` schema { query: Query @@ -367,18 +384,8 @@ describe('@cost directive tests', () => { const costsA = subgraphConfigBySubgraphName.get('subgraph-cost-shared-a')?.costs; const costsB = subgraphConfigBySubgraphName.get('subgraph-cost-shared-b')?.costs; - expect(costsA?.fieldWeights.get('User.name')).toEqual({ - typeName: 'User', - fieldName: 'name', - argumentWeights: new Map(), - weight: 10, - }); - expect(costsB?.fieldWeights.get('User.name')).toEqual({ - typeName: 'User', - fieldName: 'name', - argumentWeights: new Map(), - weight: 20, - }); + expect(costsA?.fieldWeights.get('User.name')).toEqual(fieldWeight('User', 'name', { weight: 10 })); + expect(costsB?.fieldWeights.get('User.name')).toEqual(fieldWeight('User', 'name', { weight: 20 })); }); test('that fields unique to each subgraph only appear in their respective cost configs', () => { @@ -491,12 +498,7 @@ describe('@cost directive tests', () => { subgraphWithCostOnImplementingTypeField, ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(costs.fieldWeights.get('User.id')).toEqual({ - typeName: 'User', - fieldName: 'id', - argumentWeights: new Map(), - weight: 5, - }); + expect(costs.fieldWeights.get('User.id')).toEqual(fieldWeight('User', 'id', { weight: 5 })); }); }); @@ -517,6 +519,104 @@ describe('@cost directive tests', () => { expect(costs.directiveArgumentWeights.get('myDirective.arg2')).toBe(7); }); + test('that a field with a cost-weighted directive records directiveArgumentWeights', () => { + const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnDirectiveArgument, ROUTER_COMPATIBILITY_VERSION_ONE); + // Query.field has @myDirective(arg1: "hello"), and arg1 has @cost(weight: 5) + expect(costs.fieldWeights.get('Query.field')).toEqual( + fieldWeight('Query', 'field', { directiveArgumentWeights: new Map([['myDirective.arg1', 5]]) }), + ); + }); + + test('that a field with a multi-arg cost-weighted directive stores per-argument weights', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithCostOnMultipleDirectiveArguments, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + // Query.field has @myDirective(arg1: "hello", arg2: 42), arg1 costs 3, arg2 costs 7 + expect(costs.fieldWeights.get('Query.field')).toEqual( + fieldWeight('Query', 'field', { + directiveArgumentWeights: new Map([ + ['myDirective.arg1', 3], + ['myDirective.arg2', 7], + ]), + }), + ); + }); + + test('that a field with a directive whose argument is null does not record directiveArgumentWeights', () => { + const { costs } = normalizeSubgraphSuccess( + { + name: 'subgraph-null-directive-arg', + url: '', + definitions: parse(` + directive @myDirective(arg1: String @cost(weight: 5)) on FIELD_DEFINITION + type Query { + field: String! @myDirective(arg1: null) + } + `), + }, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.fieldWeights.get('Query.field')).toBeUndefined(); + }); + + test('that a directive argument with a default value records directiveArgumentWeights even without explicit value', () => { + const { costs } = normalizeSubgraphSuccess( + { + name: 'subgraph-default-directive-arg', + url: '', + definitions: parse(` + directive @myDirective(arg1: Int = 1 @cost(weight: 5)) on FIELD_DEFINITION + type Query { + field: String! @myDirective + } + `), + }, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.fieldWeights.get('Query.field')).toEqual( + fieldWeight('Query', 'field', { directiveArgumentWeights: new Map([['myDirective.arg1', 5]]) }), + ); + }); + + test('that a repeatable directive applied multiple times on a field sums directiveArgumentWeights', () => { + const { costs } = normalizeSubgraphSuccess( + { + name: 'subgraph-repeatable-directive', + url: '', + definitions: parse(` + directive @myDirective(arg1: Int @cost(weight: 5)) repeatable on FIELD_DEFINITION + type Query { + field: String! @myDirective(arg1: 1) @myDirective(arg1: 2) @myDirective(arg1: 3) + } + `), + }, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.fieldWeights.get('Query.field')).toEqual( + fieldWeight('Query', 'field', { directiveArgumentWeights: new Map([['myDirective.arg1', 15]]) }), + ); + }); + + test('that a repeatable directive skips usages where the priced argument is null when summing', () => { + const { costs } = normalizeSubgraphSuccess( + { + name: 'subgraph-repeatable-directive-with-null', + url: '', + definitions: parse(` + directive @myDirective(arg1: Int @cost(weight: 5)) repeatable on FIELD_DEFINITION + type Query { + field: String! @myDirective(arg1: 1) @myDirective(arg1: null) @myDirective(arg1: 3) + } + `), + }, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.fieldWeights.get('Query.field')).toEqual( + fieldWeight('Query', 'field', { directiveArgumentWeights: new Map([['myDirective.arg1', 10]]) }), + ); + }); + test('that costs without directive argument weights has empty directiveArgumentWeights', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnField, ROUTER_COMPATIBILITY_VERSION_ONE); expect(costs.directiveArgumentWeights.size).toBe(0); @@ -551,31 +651,21 @@ describe('@cost directive tests', () => { describe('costs internal structure tests', () => { test('that @cost on a field populates fieldWeights correctly', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnField, ROUTER_COMPATIBILITY_VERSION_ONE); - expect(costs.fieldWeights.get('Query.expensiveField')).toEqual({ - typeName: 'Query', - fieldName: 'expensiveField', - argumentWeights: new Map(), - weight: 10, - }); + expect(costs.fieldWeights.get('Query.expensiveField')).toEqual( + fieldWeight('Query', 'expensiveField', { weight: 10 }), + ); }); test('that @cost on a field argument populates fieldWeights.argumentWeights', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnArgument, ROUTER_COMPATIBILITY_VERSION_ONE); - expect(costs.fieldWeights.get('Query.search')).toEqual({ - typeName: 'Query', - fieldName: 'search', - argumentWeights: new Map([['query', 5]]), - }); + expect(costs.fieldWeights.get('Query.search')).toEqual( + fieldWeight('Query', 'search', { argumentWeights: new Map([['query', 5]]) }), + ); }); test('that @cost on an input field populates fieldWeights correctly', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnInputField, ROUTER_COMPATIBILITY_VERSION_ONE); - expect(costs.fieldWeights.get('SearchInput.query')).toEqual({ - typeName: 'SearchInput', - fieldName: 'query', - argumentWeights: new Map(), - weight: 5, - }); + expect(costs.fieldWeights.get('SearchInput.query')).toEqual(fieldWeight('SearchInput', 'query', { weight: 5 })); }); test('that @cost on an object type populates typeWeights', () => { @@ -610,12 +700,9 @@ describe('@cost directive tests', () => { test('that @cost on both a field and its argument populates a single FieldWeightConfiguration', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnFieldAndArgument, ROUTER_COMPATIBILITY_VERSION_ONE); - expect(costs.fieldWeights.get('Query.search')).toEqual({ - typeName: 'Query', - fieldName: 'search', - weight: 10, - argumentWeights: new Map([['query', 3]]), - }); + expect(costs.fieldWeights.get('Query.search')).toEqual( + fieldWeight('Query', 'search', { weight: 10, argumentWeights: new Map([['query', 3]]) }), + ); }); test('that a subgraph without cost directives has empty costs', () => { @@ -630,12 +717,7 @@ describe('@cost directive tests', () => { describe('extension type tests', () => { test('that @cost on a field in an extend type populates fieldWeights', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithCostOnExtensionField, ROUTER_COMPATIBILITY_VERSION_ONE); - expect(costs.fieldWeights.get('User.name')).toEqual({ - typeName: 'User', - fieldName: 'name', - argumentWeights: new Map(), - weight: 5, - }); + expect(costs.fieldWeights.get('User.name')).toEqual(fieldWeight('User', 'name', { weight: 5 })); }); test('that @cost on an extend type populates typeWeights', () => { diff --git a/composition/tests/v1/directives/listSize.test.ts b/composition/tests/v1/directives/listSize.test.ts index b886df7c53..4377472a5f 100644 --- a/composition/tests/v1/directives/listSize.test.ts +++ b/composition/tests/v1/directives/listSize.test.ts @@ -12,7 +12,10 @@ import { listSizeSizedFieldNotListErrorMessage, listSizeSizedFieldsInvalidReturnTypeErrorMessage, listSizeSizedFieldsOnListsErrorMessage, + listSizeSlicingArgumentMalformedPathErrorMessage, listSizeSlicingArgumentNotIntErrorMessage, + listSizeSlicingArgumentSegmentNotFoundErrorMessage, + listSizeSlicingArgumentSegmentNotInputObjectErrorMessage, parse, ROUTER_COMPATIBILITY_VERSION_ONE, type Subgraph, @@ -417,6 +420,34 @@ describe('@listSize directive tests', () => { }); }); + test('that @listSize with one defaulted slicingArguments populates listSizes correctly', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithSlicingArgumentsOneDefaulted, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.listSizes.get('Query.users')).toEqual({ + typeName: 'Query', + fieldName: 'users', + requireOneSlicingArgument: true, + sizedFields: [], + slicingArguments: ['first', 'last'], + }); + }); + + test('that @listSize with two defaulted slicingArguments populates listSizes correctly', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithSlicingArgumentsBothDefaulted, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(costs.listSizes.get('Query.users')).toEqual({ + typeName: 'Query', + fieldName: 'users', + requireOneSlicingArgument: true, + sizedFields: [], + slicingArguments: ['first', 'last'], + }); + }); + test('that @listSize with sizedFields populates listSizes correctly', () => { const { costs } = normalizeSubgraphSuccess(subgraphWithSizedFields, ROUTER_COMPATIBILITY_VERSION_ONE); expect(costs.listSizes.get('Query.usersConnection')).toEqual({ @@ -648,6 +679,319 @@ describe('@listSize directive tests', () => { ); }); }); + + describe('nested-path slicingArguments tests', () => { + test('that @listSize with a single-level nested path is correctly normalized', () => { + const { costs } = normalizeSubgraphSuccess(subgraphWithNestedSlicingArg, ROUTER_COMPATIBILITY_VERSION_ONE); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.slicingArguments).toEqual(['input.first']); + }); + + test('that @listSize with a two-level nested path is correctly normalized', () => { + const { costs } = normalizeSubgraphSuccess(subgraphWithDeepNestedSlicingArg, ROUTER_COMPATIBILITY_VERSION_ONE); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.slicingArguments).toEqual(['input.pagination.first']); + }); + + test('that @listSize with a mix of flat and nested slicingArguments is correctly normalized', () => { + const { costs } = normalizeSubgraphSuccess(subgraphWithMixedSlicingArgs, ROUTER_COMPATIBILITY_VERSION_ONE); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.requireOneSlicingArgument).toBe(false); + expect(ls!.slicingArguments).toEqual(['limit', 'input.pagination.first']); + }); + + test('that @listSize with a non-null Int leaf in a nested path is accepted', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgNonNullLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.slicingArguments).toEqual(['input.first']); + }); + + test('that @listSize with a non-null Int leaf default in a nested path is accepted', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgLeafDefault, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.slicingArguments).toEqual(['input.first']); + }); + + test('that a non-null input-object intermediate is traversed correctly', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgNonNullIntermediate, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.slicingArguments).toEqual(['input.pagination.first']); + }); + + test('that an unknown intermediate segment produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgUnknownIntermediate, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentSegmentNotFoundErrorMessage( + 'Query.search', + 'input.bogus.first', + 'bogus', + 'SearchInput', + ), + ]), + ); + }); + + test('that an unknown leaf segment produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgUnknownLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentSegmentNotFoundErrorMessage( + 'Query.search', + 'input.pagination.bogus', + 'bogus', + 'PaginationInput', + ), + ]), + ); + }); + + test('that traversing through a non-input-object intermediate produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgScalarIntermediate, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentSegmentNotInputObjectErrorMessage( + 'Query.search', + 'input.query.first', + 'query', + 'String', + ), + ]), + ); + }); + + test('that traversing through a list-typed intermediate produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgListIntermediate, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentSegmentNotInputObjectErrorMessage( + 'Query.search', + 'input.paginations.first', + 'paginations', + '[PaginationInput!]', + ), + ]), + ); + }); + + test('that a nested path whose leaf is not Int produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgNonIntLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentNotIntErrorMessage('Query.search', 'input.pagination.cursor', 'String'), + ]), + ); + }); + + test('that a nested path whose leaf is a list produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgListLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentNotIntErrorMessage('Query.search', 'input.first', '[Int]'), + ]), + ); + }); + + test('that a malformed path with starting empty segments produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgMalformedPathStart, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentMalformedPathErrorMessage('Query.search', '.input.first'), + ]), + ); + }); + + test('that a malformed path with middle empty segments produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgMalformedPathMiddle, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentMalformedPathErrorMessage('Query.search', 'input..first'), + ]), + ); + }); + + test('that a malformed path with ending empty segments produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgMalformedPathEnd, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentMalformedPathErrorMessage('Query.search', 'input.first.'), + ]), + ); + }); + + test('that a path whose first segment is not a defined argument produces an error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgUnknownArgument, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeInvalidSlicingArgumentErrorMessage('Query.search', 'bogus.pagination.first'), + ]), + ); + }); + + test('that a flat path pointing at an input-object argument produces a not-Int error', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithFlatSlicingArgInputObject, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeSlicingArgumentNotIntErrorMessage('Query.search', 'input', 'PaginationInput!'), + ]), + ); + }); + + test('that an intermediate-field default value is rejected when assumedSize is also set', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgIntermediateDefaultPlusAssumedSize, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeAssumedSizeSlicingArgDefaultErrorMessage('Query.search', 'input.pagination.first'), + ]), + ); + }); + + test('that an argument default value covering a nested leaf is rejected when assumedSize is also set', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgArgumentDefaultPlusAssumedSize, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeAssumedSizeSlicingArgDefaultErrorMessage('Query.search', 'input.first'), + ]), + ); + }); + + test('that a nested-leaf default value is rejected when assumedSize is also set', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgLeafDefaultPlusAssumedSize, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeAssumedSizeSlicingArgDefaultErrorMessage('Query.search', 'input.first'), + ]), + ); + }); + + test('that an argument default with empty intermediate object that does not supply the leaf is allowed', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgIntermediateEmptyDefault, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.assumedSize).toBe(50); + expect(ls!.slicingArguments).toEqual(['input.pagination.first']); + }); + + test('that an argument default with null intermediate that does not supply the leaf is allowed', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgIntermediateNullDefault, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.assumedSize).toBe(50); + expect(ls!.slicingArguments).toEqual(['input.pagination.first']); + }); + + test('that an intermediate-field null default that does not supply the leaf is allowed', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgIntermediateFieldNullDefault, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.assumedSize).toBe(50); + expect(ls!.slicingArguments).toEqual(['input.pagination.first']); + }); + + test('that an argument default that does not contain the leaf key is allowed', () => { + const { costs } = normalizeSubgraphSuccess( + subgraphWithNestedSlicingArgArgumentDefaultMissingLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const ls = costs.listSizes.get('Query.search'); + expect(ls).toBeDefined(); + expect(ls!.assumedSize).toBe(50); + expect(ls!.slicingArguments).toEqual(['input.first']); + }); + + test('that an argument default with explicit null leaf is rejected (explicitly defined)', () => { + const { errors } = normalizeSubgraphFailure( + subgraphWithNestedSlicingArgArgumentDefaultExplicitNullLeaf, + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(LIST_SIZE, 'Query.search', FIRST_ORDINAL, [ + listSizeAssumedSizeSlicingArgDefaultErrorMessage('Query.search', 'input.pagination.first'), + ]), + ); + }); + }); }); const subgraphWithAssumedSize: Subgraph = { @@ -657,7 +1001,6 @@ const subgraphWithAssumedSize: Subgraph = { type Query { users: [User!]! @listSize(assumedSize: 100) } - type User { id: ID! } @@ -671,7 +1014,32 @@ const subgraphWithSlicingArguments: Subgraph = { type Query { users(first: Int, last: Int): [User!]! @listSize(slicingArguments: ["first", "last"]) } + type User { + id: ID! + } + `), +}; + +const subgraphWithSlicingArgumentsOneDefaulted: Subgraph = { + name: 'subgraph-listsize-slicing', + url: '', + definitions: parse(` + type Query { + users(first: Int = 20, last: Int): [User!]! @listSize(slicingArguments: ["first", "last"]) + } + type User { + id: ID! + } + `), +}; +const subgraphWithSlicingArgumentsBothDefaulted: Subgraph = { + name: 'subgraph-listsize-slicing', + url: '', + definitions: parse(` + type Query { + users(first: Int = 20, last: Int = 30): [User!]! @listSize(slicingArguments: ["first", "last"]) + } type User { id: ID! } @@ -685,16 +1053,13 @@ const subgraphWithSizedFields: Subgraph = { type Query { usersConnection(first: Int): Connection! @listSize(slicingArguments: ["first"], sizedFields: ["edges", "nodes"]) } - type Connection { edges: [Edge!]! nodes: [User!]! } - type Edge { node: User! } - type User { id: ID! } @@ -1059,3 +1424,348 @@ const subgraphWithAllArgumentsValid: Subgraph = { } `), }; + +// --- nested-path slicingArguments fixtures --- + +const subgraphWithNestedSlicingArg: Subgraph = { + name: 'subgraph-listsize-nested-slicing', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input.first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithDeepNestedSlicingArg: Subgraph = { + name: 'subgraph-listsize-deep-nested-slicing', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput, query: String } + input PaginationInput { first: Int, after: String } + type Book { id: ID! } + `), +}; + +const subgraphWithMixedSlicingArgs: Subgraph = { + name: 'subgraph-listsize-mixed-slicing', + url: '', + definitions: parse(` + type Query { + search(limit: Int, input: SearchInput!): [Book] + @listSize(slicingArguments: ["limit", "input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgNonNullLeaf: Subgraph = { + name: 'subgraph-listsize-nested-nonnull-leaf', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input.first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int! } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgNonNullIntermediate: Subgraph = { + name: 'subgraph-listsize-nested-nonnull-intermediate', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput! } + input PaginationInput { first: Int! } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgUnknownIntermediate: Subgraph = { + name: 'subgraph-listsize-nested-unknown-intermediate', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.bogus.first"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgUnknownLeaf: Subgraph = { + name: 'subgraph-listsize-nested-unknown-leaf', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.pagination.bogus"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgScalarIntermediate: Subgraph = { + name: 'subgraph-listsize-nested-scalar-intermediate', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.query.first"], requireOneSlicingArgument: true) + } + input SearchInput { query: String } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgListIntermediate: Subgraph = { + name: 'subgraph-listsize-nested-list-intermediate', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.paginations.first"], requireOneSlicingArgument: true) + } + input SearchInput { paginations: [PaginationInput!] } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgNonIntLeaf: Subgraph = { + name: 'subgraph-listsize-nested-nonint-leaf', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["input.pagination.cursor"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { cursor: String } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgListLeaf: Subgraph = { + name: 'subgraph-listsize-nested-list-leaf', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input.first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: [Int] } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgMalformedPathStart: Subgraph = { + name: 'subgraph-listsize-nested-malformed-path', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: [".input.first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgMalformedPathMiddle: Subgraph = { + name: 'subgraph-listsize-nested-malformed-path', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input..first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgMalformedPathEnd: Subgraph = { + name: 'subgraph-listsize-nested-malformed-path', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input.first."], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgUnknownArgument: Subgraph = { + name: 'subgraph-listsize-nested-unknown-arg', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(slicingArguments: ["bogus.pagination.first"], requireOneSlicingArgument: true) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithFlatSlicingArgInputObject: Subgraph = { + name: 'subgraph-listsize-flat-slicing-input-object', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgIntermediateDefaultPlusAssumedSize: Subgraph = { + name: 'subgraph-listsize-nested-intermediate-default-assumed', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput = { first: 10 } } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgArgumentDefaultPlusAssumedSize: Subgraph = { + name: 'subgraph-listsize-nested-argument-default-assumed', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput = { first: 10 }): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.first"], requireOneSlicingArgument: false) + } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgLeafDefaultPlusAssumedSize: Subgraph = { + name: 'subgraph-listsize-nested-leaf-default-assumed', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.first"], requireOneSlicingArgument: false) + } + input PaginationInput { first: Int = 10 } + type Book { id: ID! } + `), +}; + +const subgraphWithNestedSlicingArgLeafDefault: Subgraph = { + name: 'subgraph-listsize-nested-leaf-default-assumed', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput!): [Book] + @listSize(slicingArguments: ["input.first"], requireOneSlicingArgument: true) + } + input PaginationInput { first: Int = 10 } + type Book { id: ID! } + `), +}; + +// Argument default has the intermediate key but its value is an empty object, leaf is not supplied. +const subgraphWithNestedSlicingArgIntermediateEmptyDefault: Subgraph = { + name: 'subgraph-listsize-nested-intermediate-empty-default', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput = { pagination: {} }): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +// Argument default has the intermediate key set to null; walk cannot continue, leaf is not supplied. +const subgraphWithNestedSlicingArgIntermediateNullDefault: Subgraph = { + name: 'subgraph-listsize-nested-intermediate-null-default', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput = { pagination: null }): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +// Intermediate input field defaults to null; walk through that node cannot supply the leaf. +const subgraphWithNestedSlicingArgIntermediateFieldNullDefault: Subgraph = { + name: 'subgraph-listsize-nested-intermediate-field-null-default', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput!): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput = null } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; + +// Argument default exists but does not contain the leaf key. +const subgraphWithNestedSlicingArgArgumentDefaultMissingLeaf: Subgraph = { + name: 'subgraph-listsize-nested-argument-default-missing-leaf', + url: '', + definitions: parse(` + type Query { + search(input: PaginationInput = { other: 7 }): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.first"], requireOneSlicingArgument: false) + } + input PaginationInput { first: Int, other: Int } + type Book { id: ID! } + `), +}; + +// Argument default explicitly sets the leaf to null; the leaf IS defined (just to null), so it is rejected. +const subgraphWithNestedSlicingArgArgumentDefaultExplicitNullLeaf: Subgraph = { + name: 'subgraph-listsize-nested-argument-default-explicit-null-leaf', + url: '', + definitions: parse(` + type Query { + search(input: SearchInput = { pagination: { first: null } }): [Book] + @listSize(assumedSize: 50, slicingArguments: ["input.pagination.first"], requireOneSlicingArgument: false) + } + input SearchInput { pagination: PaginationInput } + input PaginationInput { first: Int } + type Book { id: ID! } + `), +}; diff --git a/composition/tests/v1/directives/override.test.ts b/composition/tests/v1/directives/override.test.ts index bdf175d8af..5d3447204c 100644 --- a/composition/tests/v1/directives/override.test.ts +++ b/composition/tests/v1/directives/override.test.ts @@ -21,7 +21,6 @@ import { type TypeName, } from '../../../src'; import { SCHEMA_QUERY_DEFINITION } from '../utils/utils'; -import { batchNormalize } from '../../../src/v1/normalization/normalization-factory'; import { federateSubgraphsFailure, federateSubgraphsSuccess, @@ -29,6 +28,7 @@ import { normalizeSubgraphFailure, schemaToSortedNormalizedString, } from '../../utils/utils'; +import { BatchNormalizer } from '../../../src'; describe('@override directive tests', () => { describe('normalization tests', () => { @@ -43,13 +43,15 @@ describe('@override directive tests', () => { }); test('that @override produces the correct engine configuration', () => { - const result = batchNormalize({ subgraphs: [subgraphA, subgraphE, subgraphF] }) as BatchNormalizationSuccess; + const result = new BatchNormalizer({ + subgraphs: [subgraphA, subgraphE, subgraphF], + }).batchNormalize() as BatchNormalizationSuccess; expect(result.success).toBe(true); - const a = result.internalSubgraphBySubgraphName.get('subgraph-a'); + const a = result.internalSubgraphByName.get('subgraph-a'); expect(a).toBeDefined(); - const e = result.internalSubgraphBySubgraphName.get('subgraph-e'); + const e = result.internalSubgraphByName.get('subgraph-e'); expect(e).toBeDefined(); - const g = result.internalSubgraphBySubgraphName.get('subgraph-f'); + const g = result.internalSubgraphByName.get('subgraph-f'); expect(g).toBeDefined(); expect(a!.configurationDataByTypeName).toStrictEqual( new Map([ diff --git a/composition/tests/v1/directives/subscription-filter.test.ts b/composition/tests/v1/directives/subscription-filter.test.ts index 6c6084f879..e67b0e6cfd 100644 --- a/composition/tests/v1/directives/subscription-filter.test.ts +++ b/composition/tests/v1/directives/subscription-filter.test.ts @@ -24,12 +24,15 @@ import { SUBSCRIPTION, SUBSCRIPTION_FILTER, subscriptionFieldConditionEmptyValuesArrayErrorMessage, - subscriptionFieldConditionInvalidInputFieldErrorMessage, + subscriptionFieldConditionInvalidInputFieldError, subscriptionFieldConditionInvalidValuesArrayErrorMessage, - subscriptionFilterArrayConditionInvalidLengthErrorMessage, - subscriptionFilterConditionDepthExceededErrorMessage, - subscriptionFilterConditionInvalidInputFieldErrorMessage, - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage, + subscriptionFilterArrayConditionInvalidLengthError, + subscriptionFilterConditionDepthExceededError, + subscriptionFilterConditionInvalidInputFieldError, + subscriptionFilterConditionInvalidInputFieldTypeError, + subscriptionFilterInterfaceImplementationInvalidError, + subscriptionFilterUnionMemberInvalidError, + undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage, } from '../../../src'; import { federateSubgraphsFailure, @@ -65,7 +68,7 @@ describe('@openfed__subscriptionFilter tests', () => { schema { subscription: Subscription } - + directive @edfs__kafkaSubscribe(providerId: String! = "default", topics: [String!]!) on FIELD_DEFINITION directive @external on FIELD_DEFINITION | OBJECT directive @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT @@ -74,7 +77,7 @@ describe('@openfed__subscriptionFilter tests', () => { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: {IN: {fieldPath: "id", values: ["1"]}}) } @@ -95,7 +98,7 @@ describe('@openfed__subscriptionFilter tests', () => { schema { subscription: Subscription } - + directive @edfs__kafkaSubscribe(providerId: String! = "default", topics: [String!]!) on FIELD_DEFINITION directive @external on FIELD_DEFINITION | OBJECT directive @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT @@ -104,7 +107,7 @@ describe('@openfed__subscriptionFilter tests', () => { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: {IN: {fieldPath: "id", values: [1]}}) } @@ -205,7 +208,7 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(1); expect(result.errors[0]).toStrictEqual( invalidSubscriptionFilterDirectiveError(`Subscription.field`, [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.AND[0].NOT.OR[0].IN', [], [], @@ -247,7 +250,7 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(2); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', ['fieldPath', 'values'], [], @@ -256,7 +259,7 @@ describe('@openfed__subscriptionFilter tests', () => { ), ]), invalidSubscriptionFilterDirectiveError('Subscription.two', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage('condition.IN', [], ['fieldPath', 'values'], [], []), + subscriptionFieldConditionInvalidInputFieldError('condition.IN', [], ['fieldPath', 'values'], [], []), ]), ]); }); @@ -266,7 +269,7 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(4); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -275,7 +278,7 @@ describe('@openfed__subscriptionFilter tests', () => { ), ]), invalidSubscriptionFilterDirectiveError('Subscription.two', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -284,7 +287,7 @@ describe('@openfed__subscriptionFilter tests', () => { ), ]), invalidSubscriptionFilterDirectiveError('Subscription.three', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -293,7 +296,7 @@ describe('@openfed__subscriptionFilter tests', () => { ), ]), invalidSubscriptionFilterDirectiveError('Subscription.four', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -360,19 +363,19 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(5); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFilterConditionInvalidInputFieldErrorMessage('condition', 'OUT'), + subscriptionFilterConditionInvalidInputFieldError('condition', 'OUT'), ]), invalidSubscriptionFilterDirectiveError('Subscription.two', [ - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage('condition.AND', LIST, OBJECT), + subscriptionFilterConditionInvalidInputFieldTypeError('condition.AND', LIST, OBJECT), ]), invalidSubscriptionFilterDirectiveError('Subscription.three', [ - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage('condition.OR', LIST, OBJECT), + subscriptionFilterConditionInvalidInputFieldTypeError('condition.OR', LIST, OBJECT), ]), invalidSubscriptionFilterDirectiveError('Subscription.four', [ - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage('condition.IN', OBJECT, LIST), + subscriptionFilterConditionInvalidInputFieldTypeError('condition.IN', OBJECT, LIST), ]), invalidSubscriptionFilterDirectiveError('Subscription.five', [ - subscriptionFilterConditionInvalidInputFieldTypeErrorMessage('condition.NOT', OBJECT, LIST), + subscriptionFilterConditionInvalidInputFieldTypeError('condition.NOT', OBJECT, LIST), ]), ]); }); @@ -382,7 +385,7 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(1); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -406,7 +409,7 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(1); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFieldConditionInvalidInputFieldErrorMessage( + subscriptionFieldConditionInvalidInputFieldError( 'condition.IN', [], [], @@ -429,16 +432,16 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(4); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFilterArrayConditionInvalidLengthErrorMessage('condition.AND', 6), + subscriptionFilterArrayConditionInvalidLengthError('condition.AND', 6), ]), invalidSubscriptionFilterDirectiveError('Subscription.two', [ - subscriptionFilterArrayConditionInvalidLengthErrorMessage('condition.AND', 0), + subscriptionFilterArrayConditionInvalidLengthError('condition.AND', 0), ]), invalidSubscriptionFilterDirectiveError('Subscription.three', [ - subscriptionFilterArrayConditionInvalidLengthErrorMessage('condition.OR', 6), + subscriptionFilterArrayConditionInvalidLengthError('condition.OR', 6), ]), invalidSubscriptionFilterDirectiveError('Subscription.four', [ - subscriptionFilterArrayConditionInvalidLengthErrorMessage('condition.OR', 0), + subscriptionFilterArrayConditionInvalidLengthError('condition.OR', 0), ]), ]); }); @@ -448,11 +451,144 @@ describe('@openfed__subscriptionFilter tests', () => { expect(result.errors).toHaveLength(1); expect(result.errors).toStrictEqual([ invalidSubscriptionFilterDirectiveError('Subscription.one', [ - subscriptionFilterConditionDepthExceededErrorMessage('condition.NOT.NOT.NOT.NOT.NOT.IN'), + subscriptionFilterConditionDepthExceededError('condition.NOT.NOT.NOT.NOT.NOT.IN'), ]), ]); }); + test('that a subscription filter is emitted when the return type is a union', () => { + const result = federateSubgraphsSuccess( + [subgraphUnionResolver, subgraphUnionEDG], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(result.success).toBe(true); + const subscriptionFields = result.fieldConfigurations.filter( + (fc) => fc.typeName === SUBSCRIPTION && fc.fieldName === 'onEntityEvent', + ); + expect(subscriptionFields).toHaveLength(1); + expect(subscriptionFields[0]).toStrictEqual({ + argumentNames: ['entityCode'], + fieldName: 'onEntityEvent', + typeName: SUBSCRIPTION, + subscriptionFilterCondition: { + in: { + fieldPath: ['entityCode'], + values: ['{{ args.entityCode }}'], + }, + }, + }); + }); + + test('that a subscription filter is emitted when the return type is an interface', () => { + const result = federateSubgraphsSuccess( + [subgraphInterfaceResolver, subgraphInterfaceEDG], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(result.success).toBe(true); + const subscriptionFields = result.fieldConfigurations.filter( + (fc) => fc.typeName === SUBSCRIPTION && fc.fieldName === 'onEntityEvent', + ); + expect(subscriptionFields).toHaveLength(1); + expect(subscriptionFields[0]).toStrictEqual({ + argumentNames: ['entityCode'], + fieldName: 'onEntityEvent', + typeName: SUBSCRIPTION, + subscriptionFilterCondition: { + in: { + fieldPath: ['entityCode'], + values: ['{{ args.entityCode }}'], + }, + }, + }); + }); + + test('that composition fails when a union member is missing the filter fieldPath', () => { + const result = federateSubgraphsFailure( + [subgraphUnionResolverPartial, subgraphUnionMemberMissingField], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(result.success).toBe(false); + expect(result.errors).toHaveLength(1); + expect(result.errors![0]).toStrictEqual( + invalidSubscriptionFilterDirectiveError(`Subscription.onEntityEvent`, [ + subscriptionFilterUnionMemberInvalidError( + 'EntityEvent', + 'EntityDeleted', + subscriptionFieldConditionInvalidInputFieldError( + 'condition.IN', + [], + [], + [], + [ + undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage( + 'condition.IN.fieldPath', + 'entityCode', + 'entityCode', + 'entityCode', + 'EntityDeleted', + ), + ], + ).message, + ), + ]), + ); + }); + + test('that composition fails when an interface implementer is missing the filter fieldPath', () => { + const result = federateSubgraphsFailure( + [subgraphInterfaceResolverPartial, subgraphInterfaceImplementerMissingField], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(result.success).toBe(false); + expect(result.errors).toHaveLength(1); + expect(result.errors![0]).toStrictEqual( + invalidSubscriptionFilterDirectiveError(`Subscription.onEntityEvent`, [ + subscriptionFilterInterfaceImplementationInvalidError( + 'EntityEvent', + 'EntityDeleted', + subscriptionFieldConditionInvalidInputFieldError( + 'condition.IN', + [], + [], + [], + [ + undefinedSubscriptionFieldConditionFieldPathFieldErrorMessage( + 'condition.IN.fieldPath', + 'entityCode', + 'entityCode', + 'entityCode', + 'EntityDeleted', + ), + ], + ).message, + ), + ]), + ); + }); + + test('that composition succeeds when an @inaccessible union member is missing the filter fieldPath', () => { + const result = federateSubgraphsSuccess( + [subgraphUnionResolverPartial, subgraphUnionInaccessibleMemberMissingField], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(result.success).toBe(true); + const subscriptionFields = result.fieldConfigurations.filter( + (fc) => fc.typeName === SUBSCRIPTION && fc.fieldName === 'onEntityEvent', + ); + expect(subscriptionFields).toHaveLength(1); + expect(subscriptionFields[0]).toStrictEqual({ + argumentNames: ['entityCode'], + fieldName: 'onEntityEvent', + typeName: SUBSCRIPTION, + subscriptionFilterCondition: { + in: { + fieldPath: ['entityCode'], + values: ['{{ args.entityCode }}'], + }, + }, + }); + }); + test('that an entity can be defined as an extension in an EDG', () => { const { federatedGraphSchema } = federateSubgraphsSuccess( [subgraphQ, subgraphR], @@ -464,16 +600,16 @@ describe('@openfed__subscriptionFilter tests', () => { query: Query subscription: Subscription } - + type Entity { id: ID! name: String! } - + type Query { entity: Entity! } - + type Subscription { field: Entity! } @@ -491,11 +627,11 @@ const subgraphA: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Object { field: String! @openfed__subscriptionFilter(condition: { IN: { fieldPath: "" } }) } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) } @@ -514,7 +650,7 @@ const subgraphB: Subgraph = { OC SA } - + type Entity @key(fields: "id") @key(fields: "id object { name, age } product { sku, continent }") { age: Int! id: ID! @@ -522,23 +658,23 @@ const subgraphB: Subgraph = { object: Object! product: Product! } - + type NestedObject { name: String! } - + type Object { id: ID! name: String! age: Int! field: NestedObject! } - + type Product { continent: Continent! sku: String! } - + type Query { entities: [Entity!]! } @@ -552,7 +688,7 @@ const subgraphC: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: ["1"] } }) } @@ -571,34 +707,34 @@ const subgraphD: Subgraph = { OC SA } - + type Entity @key(fields: "id object { name, age } product { sku, continent }", resolvable: false) { id: ID! @external object: Object! @external product: Product! @external } - + type Object @external { name: String! age: Int! } - + type Product @external { continent: Continent! sku: String! } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( condition: { AND: [ - { NOT: + { NOT: { OR: [ { IN: { fieldPath: "object.name", values: ["Jens", "Stefan"] } }, { IN: { fieldPath: "object.age", values: ["11", "22"] } }, ] }, }, { AND: [ - { NOT: + { NOT: { IN: { fieldPath: "product.sku", values: ["aaa"] } }, }, { IN: { fieldPath: "product.continent" values: ["NA"] } }, @@ -616,7 +752,7 @@ const subgraphE: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: 1) } @@ -630,18 +766,18 @@ const subgraphF: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( condition: { AND: [ - { NOT: + { NOT: { OR: [ { IN: { fieldPath: "object.field.name", values: ["Jens", "Stefan"] } }, { IN: { fieldPath: "object.age", values: ["11", "22"] } }, ] }, }, { AND: [ - { NOT: + { NOT: { IN: { fieldPath: "product.sku", values: ["aaa"] } }, }, { IN: { fieldPath: "product.continent" values: ["NA"] } }, @@ -659,23 +795,23 @@ const subgraphG: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: [1] } }) } - + input openfed__SubscriptionFieldCondition { fieldPath: String! values: [openfed__SubscriptionFilterValue]! } - + input openfed__SubscriptionFilterCondition { AND: [openfed__SubscriptionFilterCondition!] IN: openfed__SubscriptionFieldCondition NOT: openfed__SubscriptionFilterCondition OR: [openfed__SubscriptionFilterCondition!] } - + scalar openfed__SubscriptionFilterValue `), }; @@ -687,7 +823,7 @@ const subgraphH: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { field: "id", value: [1], } }) two: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: [1], fieldPath: "id", values: [1] } }) @@ -702,7 +838,7 @@ const subgraphI: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: { hello: "world" } } }) two: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: [{ hello: "world" }] } }) @@ -719,7 +855,7 @@ const subgraphJ: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: "string" } }) two: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: 1 } }) @@ -736,7 +872,7 @@ const subgraphK: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: "string" } }) @@ -752,7 +888,7 @@ const subgraphL: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { OUT: { fieldPath: "id", values: "string" } }) @@ -776,11 +912,11 @@ const subgraphM: Subgraph = { id: ID! @external object: Object! @external } - + type Object { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "object", values: [1], } }) } @@ -795,11 +931,11 @@ const subgraphN: Subgraph = { id: ID! @external object: Object! @external } - + type Object { id: ID! @external @inaccessible } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "object.id", values: [1], } }) } @@ -813,10 +949,10 @@ const subgraphO: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( - condition: { + condition: { AND: [ { fieldPath: "id", values: [1], }, { fieldPath: "id", values: [2], }, @@ -824,17 +960,17 @@ const subgraphO: Subgraph = { { fieldPath: "id", values: [4], }, { fieldPath: "id", values: [5], }, { fieldPath: "id", values: [6], }, - ] + ] } ) two: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( - condition: { + condition: { AND: [ - ] + ] } ) three: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( - condition: { + condition: { OR: [ { fieldPath: "id", values: [1], }, { fieldPath: "id", values: [2], }, @@ -842,13 +978,13 @@ const subgraphO: Subgraph = { { fieldPath: "id", values: [4], }, { fieldPath: "id", values: [5], }, { fieldPath: "id", values: [6], }, - ] + ] } ) four: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( - condition: { + condition: { OR: [ - ] + ] } ) } @@ -862,10 +998,10 @@ const subgraphP: Subgraph = { type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { one: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter( - condition: { + condition: { NOT: { NOT: { NOT: { @@ -892,7 +1028,7 @@ const subgraphQ: Subgraph = { extend type Entity @key(fields: "id", resolvable: false) { id: ID! @external } - + type Subscription { field: Entity! @edfs__kafkaSubscribe(topics: ["employeeUpdated"]) @openfed__subscriptionFilter(condition: { IN: { fieldPath: "id", values: [1] } }) } @@ -920,10 +1056,222 @@ const subgraphR: Subgraph = { type Query{ entity: Entity! } - + type Entity @key(fields: "id") { - id: ID! - name: String! + id: ID! + name: String! + } + `), +}; + +// Fixtures for union and interface return types + +const subgraphUnionResolver: Subgraph = { + name: 'subgraph-union-resolver', + url: '', + definitions: parse(` + type Query { + task(id: ID!): EntityUpdated + } + + type EntityUpdated @key(fields: "id entityCode") { + id: ID! + entityCode: String! + title: String! + } + + type EntityDeleted @key(fields: "id entityCode") { + id: ID! + entityCode: String! + } + `), +}; + +const subgraphUnionEDG: Subgraph = { + name: 'subgraph-union-edg', + url: '', + definitions: parse(` + type EntityUpdated @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type EntityDeleted @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + union EntityEvent = EntityUpdated | EntityDeleted + + type Subscription { + onEntityEvent(entityCode: String!): EntityEvent! + @edfs__kafkaSubscribe(topics: ["entityEvent"]) + @openfed__subscriptionFilter(condition: { IN: { fieldPath: "entityCode", values: ["{{ args.entityCode }}"] } }) + } + `), +}; + +const subgraphInterfaceResolver: Subgraph = { + name: 'subgraph-interface-resolver', + url: '', + definitions: parse(` + type Query { + entityById(id: ID!): EntityUpdated + } + + interface EntityEvent { + id: ID! + entityCode: String! + } + + type EntityUpdated implements EntityEvent @key(fields: "id entityCode") { + id: ID! + entityCode: String! + title: String! + } + + type EntityDeleted implements EntityEvent @key(fields: "id entityCode") { + id: ID! + entityCode: String! + } + `), +}; + +const subgraphInterfaceEDG: Subgraph = { + name: 'subgraph-interface-edg', + url: '', + definitions: parse(` + interface EntityEvent { + id: ID! + entityCode: String! + } + + type EntityUpdated implements EntityEvent @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type EntityDeleted implements EntityEvent @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type Subscription { + onEntityEvent(entityCode: String!): EntityEvent! + @edfs__kafkaSubscribe(topics: ["entityEvent"]) + @openfed__subscriptionFilter(condition: { IN: { fieldPath: "entityCode", values: ["{{ args.entityCode }}"] } }) + } + `), +}; + +// Partial resolver — EntityDeleted has only `id`, so entityCode is genuinely absent. +const subgraphUnionResolverPartial: Subgraph = { + name: 'subgraph-union-resolver-partial', + url: '', + definitions: parse(` + type Query { + entity(id: ID!): EntityUpdated + } + + type EntityUpdated @key(fields: "id entityCode") { + id: ID! + entityCode: String! + title: String! + } + + type EntityDeleted @key(fields: "id") { + id: ID! + } + `), +}; + +const subgraphUnionMemberMissingField: Subgraph = { + name: 'subgraph-union-member-missing-field', + url: '', + definitions: parse(` + type EntityUpdated @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type EntityDeleted @key(fields: "id", resolvable: false) { + id: ID! @external + } + + union EntityEvent = EntityUpdated | EntityDeleted + + type Subscription { + onEntityEvent(entityCode: String!): EntityEvent! + @edfs__kafkaSubscribe(topics: ["entityEvent"]) + @openfed__subscriptionFilter(condition: { IN: { fieldPath: "entityCode", values: ["{{ args.entityCode }}"] } }) + } + `), +}; + +const subgraphUnionInaccessibleMemberMissingField: Subgraph = { + name: 'subgraph-union-inaccessible-member-missing-field', + url: '', + definitions: parse(` + type EntityUpdated @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type EntityDeleted @inaccessible @key(fields: "id", resolvable: false) { + id: ID! @external + } + + union EntityEvent = EntityUpdated | EntityDeleted + + type Subscription { + onEntityEvent(entityCode: String!): EntityEvent! + @edfs__kafkaSubscribe(topics: ["entityEvent"]) + @openfed__subscriptionFilter(condition: { IN: { fieldPath: "entityCode", values: ["{{ args.entityCode }}"] } }) + } + `), +}; + +const subgraphInterfaceResolverPartial: Subgraph = { + name: 'subgraph-interface-resolver-partial', + url: '', + definitions: parse(` + type Query { + entityById(id: ID!): EntityUpdated + } + + type EntityUpdated @key(fields: "id entityCode") { + id: ID! + entityCode: String! + title: String! + } + + type EntityDeleted @key(fields: "id") { + id: ID! + } + `), +}; + +const subgraphInterfaceImplementerMissingField: Subgraph = { + name: 'subgraph-interface-implementer-missing-field', + url: '', + definitions: parse(` + interface EntityEvent { + id: ID! + } + + type EntityUpdated implements EntityEvent @key(fields: "id entityCode", resolvable: false) { + id: ID! @external + entityCode: String! @external + } + + type EntityDeleted implements EntityEvent @key(fields: "id", resolvable: false) { + id: ID! @external + } + + type Subscription { + onEntityEvent(entityCode: String!): EntityEvent! + @edfs__kafkaSubscribe(topics: ["entityEvent"]) + @openfed__subscriptionFilter(condition: { IN: { fieldPath: "entityCode", values: ["{{ args.entityCode }}"] } }) } `), }; diff --git a/composition/tests/v1/error-length.test.ts b/composition/tests/v1/error-length.test.ts new file mode 100644 index 0000000000..2b7e01763b --- /dev/null +++ b/composition/tests/v1/error-length.test.ts @@ -0,0 +1,467 @@ +import { describe, expect, test } from 'vitest'; +import { + generateResolvabilityErrorReasons, + generateSelectionSetSegments, + type GraphFieldData, + newRootFieldData, + parse, + QUERY, + renderSelectionSet, + ROUTER_COMPATIBILITY_VERSION_ONE, + type Subgraph, + type UnresolvableFieldData, + unresolvablePathError, +} from '../../src'; +import { federateSubgraphsFailure } from '../utils/utils'; + +describe('Field resolvability error tests', () => { + const fieldPath = 'query.rootField.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.w.x.y.z.aa.bb.cc.dd.ee'; + test('that the error message for deeply nested unresolvable fields is truncated', () => { + const rootFieldData = newRootFieldData(QUERY, 'rootField', new Set(['subgraph-a'])); + const unresolvableFieldData: UnresolvableFieldData = { + externalSubgraphNames: new Set(), + fieldName: 'name', + selectionSet: renderSelectionSet(generateSelectionSetSegments(fieldPath), { + isLeaf: true, + name: 'name', + } as GraphFieldData), + subgraphNames: new Set(['subgraph-b']), + typeName: 'EE', + }; + const { errors } = federateSubgraphsFailure([subgraphA, subgraphB], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors[0].message.split('\n').length).toBe(31); + expect(errors[0]).toStrictEqual( + unresolvablePathError( + unresolvableFieldData, + generateResolvabilityErrorReasons({ rootFieldData, unresolvableFieldData }), + ), + ); + }); + + test('that a custom selection limit is respected successfully', () => { + const { outputStart, outputEnd, pathNodes } = generateSelectionSetSegments(fieldPath, 1); + const render = renderSelectionSet({ outputStart, outputEnd, pathNodes }, { + isLeaf: true, + name: 'id', + } as GraphFieldData); + + expect(pathNodes.length).toBe(3); + expect(render).toBe(` query { + rootField { + ... # and 30 truncated selections + ee { + id <-- + } + } + } +`); + }); + + test('that a custom selection limit is not truncated when it matches the number of selections', () => { + const fieldPath = 'query.rootField.a.b.c.d.e.f.g.h.i'; + const { outputStart, outputEnd, pathNodes } = generateSelectionSetSegments(fieldPath, 5); + const render = renderSelectionSet({ outputStart, outputEnd, pathNodes }, { + isLeaf: true, + name: 'id', + } as GraphFieldData); + + expect(pathNodes.length).toBe(11); + expect(render).toBe(` query { + rootField { + a { + b { + c { + d { + e { + f { + g { + h { + i { + id <-- + } + } + } + } + } + } + } + } + } + } + } +`); + }); + + test('that all selections are rendered when limit is negative', () => { + const { outputStart, outputEnd, pathNodes } = generateSelectionSetSegments(fieldPath, -1); + const render = renderSelectionSet({ outputStart, outputEnd, pathNodes }, { + isLeaf: true, + name: 'id', + } as GraphFieldData); + + expect(pathNodes.length).toBe(32); + expect(render).toBe(` query { + rootField { + a { + b { + c { + d { + e { + f { + g { + h { + i { + j { + k { + l { + m { + n { + o { + p { + q { + r { + s { + t { + u { + w { + x { + y { + z { + aa { + bb { + cc { + dd { + ee { + id <-- + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +`); + }); + + test('that all selections are rendered when limit is zero', () => { + const { outputStart, outputEnd, pathNodes } = generateSelectionSetSegments(fieldPath, 0); + const render = renderSelectionSet({ outputStart, outputEnd, pathNodes }, { + isLeaf: true, + name: 'id', + } as GraphFieldData); + + expect(pathNodes.length).toBe(32); + expect(render).toBe(` query { + rootField { + a { + b { + c { + d { + e { + f { + g { + h { + i { + j { + k { + l { + m { + n { + o { + p { + q { + r { + s { + t { + u { + w { + x { + y { + z { + aa { + bb { + cc { + dd { + ee { + id <-- + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +`); + }); + + test('that when the limit is greater than the number of selection, no truncation occurs', () => { + const { outputStart, outputEnd, pathNodes } = generateSelectionSetSegments(fieldPath, 50); + const render = renderSelectionSet({ outputStart, outputEnd, pathNodes }, { + isLeaf: true, + name: 'id', + } as GraphFieldData); + + expect(pathNodes.length).toBe(32); + expect(render).toBe(` query { + rootField { + a { + b { + c { + d { + e { + f { + g { + h { + i { + j { + k { + l { + m { + n { + o { + p { + q { + r { + s { + t { + u { + w { + x { + y { + z { + aa { + bb { + cc { + dd { + ee { + id <-- + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +`); + }); +}); + +const subgraphA: Subgraph = { + name: 'subgraph-a', + url: '', + definitions: parse(` + type Query { + rootField: AQuery + } + + type AQuery { + a: A + } + + type A { + b: B + } + + type B { + c: C + } + + type C { + d: D + } + + type D { + e: E + } + + type E { + f: F + } + + type F { + g: G + } + + type G { + h: H + } + + type H { + i: I + } + + type I { + j: J + } + + type J { + k: K + } + + type K { + l: L + } + + type L { + m: M + } + + type M { + n: N + } + + type N { + o: O + } + + type O { + p: P + } + + type P { + q: Q + } + + type Q { + r: R + } + + type R { + s: S + } + + type S { + t: T + } + + type T { + u: U + } + + type U { + w: W + } + + type W { + x: X + } + + type X { + y: Y + } + + type Y { + z: Z + } + + type Z { + aa: AA + } + + type AA { + bb: BB + } + + type BB { + cc: CC + } + + type CC { + dd: DD + } + + type DD { + ee: EE + } + + type EE { + age: Int + } + `), +}; + +const subgraphB: Subgraph = { + name: 'subgraph-b', + url: '', + definitions: parse(` + type EE { + name: String + } + `), +}; diff --git a/composition/tests/v1/events.test.ts b/composition/tests/v1/events.test.ts index 745a99890b..d350a15ccc 100644 --- a/composition/tests/v1/events.test.ts +++ b/composition/tests/v1/events.test.ts @@ -18,7 +18,6 @@ import { invalidKeyFieldSetsEventDrivenErrorMessage, invalidNatsStreamConfigurationDefinitionErrorMessage, invalidNatsStreamInputFieldsErrorMessage, - type InvalidRootTypeFieldEventsDirectiveData, invalidRootTypeFieldEventsDirectivesErrorMessage, invalidRootTypeFieldResponseTypesEventDrivenErrorMessage, noBaseDefinitionForExtensionError, @@ -60,6 +59,7 @@ import { normalizeSubgraphSuccess, schemaToSortedNormalizedString, } from '../utils/utils'; +import { type InvalidRootTypeFieldEventsDirectiveData } from '../../src/errors/types/types'; describe('events Configuration tests', () => { describe('Normalization tests', () => { diff --git a/composition/tests/v1/federation-factory.test.ts b/composition/tests/v1/federation-factory.test.ts index 8c61d68f64..d48044fa50 100644 --- a/composition/tests/v1/federation-factory.test.ts +++ b/composition/tests/v1/federation-factory.test.ts @@ -1,11 +1,12 @@ import { + duplicateSubgraphNamesError, incompatibleParentTypeMergeError, INPUT_OBJECT, type InputObjectDefinitionData, - invalidSubgraphNamesError, KEY, noBaseDefinitionForExtensionError, noQueryRootTypeError, + noSubgraphNameError, OBJECT, type ObjectDefinitionData, parse, @@ -45,53 +46,32 @@ const __dirname = path.dirname(__filename); describe('FederationFactory tests', () => { test('that trying to federate with non-unique subgraph names returns an error', () => { - const result = federateSubgraphsFailure([pandas, pandas, users, users], ROUTER_COMPATIBILITY_VERSION_ONE); - expect(result.errors).toHaveLength(1); - expect(result.errors[0]).toStrictEqual(invalidSubgraphNamesError([pandas.name, users.name], [])); + const { errors } = federateSubgraphsFailure([pandas, pandas, users, users], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([duplicateSubgraphNamesError([pandas.name, users.name])]); }); test('that trying to federate with empty subgraph names returns an error', () => { - const result = federateSubgraphsFailure([emptySubgraph, emptySubgraph], ROUTER_COMPATIBILITY_VERSION_ONE); - expect(result.errors).toHaveLength(1); - const errorMessage = result.errors![0].message; - expect(errorMessage).contains( - `Subgraphs to be federated must each have a unique, non-empty name.\n` + - ` The 1st subgraph in the array did not define a name.`, - ); - expect(errorMessage).contains( - ` The 2nd subgraph in the array did not define a name.` + - ` Consequently, any further errors will temporarily identify this subgraph as "`, - ); + const { errors } = federateSubgraphsFailure([emptySubgraph, emptySubgraph], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([noSubgraphNameError]); }); test('that trying to federate with both non-unique and empty subgraph names returns an error', () => { - const result = federateSubgraphsFailure( + const { errors } = federateSubgraphsFailure( [users, users, pandas, pandas, emptySubgraph, emptySubgraph, emptySubgraph], ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(result.errors).toHaveLength(1); - const errorMessage = result.errors![0].message; - expect(errorMessage).contains( - `Subgraphs to be federated must each have a unique, non-empty name.\n` + - ` The following subgraph names are not unique:\n "users", "pandas"\n` + - ` The 5th subgraph in the array did not define a name.` + - ` Consequently, any further errors will temporarily identify this subgraph as "`, - ); - expect(errorMessage).contains( - ` The 6th subgraph in the array did not define a name.` + - ` Consequently, any further errors will temporarily identify this subgraph as "`, - ); - expect(errorMessage).contains( - ` The 7th subgraph in the array did not define a name.` + - ` Consequently, any further errors will temporarily identify this subgraph as "`, - ); + expect(errors).toHaveLength(2); + expect(errors).toStrictEqual([noSubgraphNameError, duplicateSubgraphNamesError([users.name, pandas.name])]); }); test('that the demo subgraphs federate to generate the correct federated graph', () => { - const { federatedGraphSchema } = federateSubgraphsSuccess( + const { federatedGraphAST, federatedGraphSchema } = federateSubgraphsSuccess( [demoEmployees, demoFamily, demoHobbies, demoProducts], ROUTER_COMPATIBILITY_VERSION_ONE, ); + expect(federatedGraphAST.definitions).toHaveLength(58); expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( normalizeString( SCHEMA_ALL_ROOTS_DEFINITION + @@ -819,7 +799,7 @@ describe('FederationFactory tests', () => { ); }); - test('that valid executable directives are merged and persisted in the federated graph', () => { + test('that valid executable directives are merged and persisted in the federated graph #1', () => { const result = federateSubgraphsSuccess([subgraphK, subgraphL], ROUTER_COMPATIBILITY_VERSION_ONE); expect(schemaToSortedNormalizedString(result.federatedGraphSchema)).toBe( normalizeString( @@ -835,6 +815,22 @@ describe('FederationFactory tests', () => { ); }); + test('that valid executable directives are merged and persisted in the federated graph #2', () => { + const result = federateSubgraphsSuccess([aaaaa, aaaab], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(result.federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @executableDirective on FIELD + + type Query { + a: ID + } + `, + ), + ); + }); + test('that all nested entity keys are considered to be shareable', () => { const { federatedGraphSchema } = federateSubgraphsSuccess([subgraphM, subgraphN], ROUTER_COMPATIBILITY_VERSION_ONE); expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( @@ -1752,3 +1748,23 @@ const subgraphX: Subgraph = { } `), }; + +const aaaaa: Subgraph = { + name: 'aaaaa', + url: '', + definitions: parse(` + directive @executableDirective on FIELD | FIELD_DEFINITION + + type Query { + a: ID @executableDirective + } + `), +}; + +const aaaab: Subgraph = { + name: 'aaaab', + url: '', + definitions: parse(` + directive @executableDirective on FIELD | FIELD_DEFINITION + `), +}; diff --git a/composition/tests/v1/resolvability.test.ts b/composition/tests/v1/resolvability.test.ts index 35d12cb44b..f0fa517629 100644 --- a/composition/tests/v1/resolvability.test.ts +++ b/composition/tests/v1/resolvability.test.ts @@ -19,11 +19,13 @@ import { import { describe, expect, test } from 'vitest'; import { INACCESSIBLE_DIRECTIVE, SCHEMA_QUERY_DEFINITION } from './utils/utils'; import { + createSubgraph, federateSubgraphsFailure, federateSubgraphsSuccess, normalizeString, schemaToSortedNormalizedString, } from '../utils/utils'; +import { type SubgraphName } from '../../src/resolvability-graph/types/types'; describe('Field resolvability tests', () => { test('that shared queries that return a nested type that is only resolvable over multiple subgraphs are valid', () => { @@ -1483,7 +1485,14 @@ describe('Field resolvability tests', () => { test('that an error is returned if a field is inaccessible through a shared root field', () => { const fieldPath = 'query.entities.objectTwo'; const entityAncestors: EntityAncestorCollection = { - fieldSetsByTargetSubgraphName: new Map>([[eaaa.name, new Set(['id'])]]), + fieldSetsByTargetSubgraphName: new Map>([ + [eaaa.name, new Set(['id'])], + [eaac.name, new Set(['name'])], + ]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([ + ['id', [eaaa.name]], + ['name', [eaac.name]], + ]), subgraphNames: [eaaa.name, eaac.name], typeName: 'Entity', }; @@ -1536,32 +1545,37 @@ describe('Field resolvability tests', () => { test('that an error is returned if a field is inaccessible through a shared root field nor an entity #1', () => { const entityAncestors: EntityAncestorCollection = { - fieldSetsByTargetSubgraphName: new Map>([ - [eaaa.name, new Set(['id'])], - [eaae.name, new Set(['name'])], + fieldSetsByTargetSubgraphName: new Map>([ + [eaaa.name, new Set(['id'])], + [eaae.name, new Set(['name'])], + [eaac.name, new Set(['name'])], + ]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([ + ['id', [eaaa.name]], + ['name', [eaae.name, eaac.name]], ]), subgraphNames: [eaac.name, eaae.name], typeName: 'Entity', }; - const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([eaac.name, eaae.name])); + const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([eaac.name, eaae.name])); const unresolvableFieldDataOne: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'age', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entities.object'), { isLeaf: true, name: 'age', } as GraphFieldData), - subgraphNames: new Set([eaaf.name]), + subgraphNames: new Set([eaaf.name]), typeName: OBJECT, }; const unresolvableFieldDataTwo: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'age', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entities.objectTwo'), { isLeaf: true, name: 'age', } as GraphFieldData), - subgraphNames: new Set([eaaf.name]), + subgraphNames: new Set([eaaf.name]), typeName: OBJECT, }; const { errors } = federateSubgraphsFailure([eaac, eaae, eaaf], ROUTER_COMPATIBILITY_VERSION_ONE); @@ -1588,43 +1602,47 @@ describe('Field resolvability tests', () => { test('that an error is returned if a field is inaccessible through a shared root field nor an entity #2', () => { const entityAncestors: EntityAncestorCollection = { - fieldSetsByTargetSubgraphName: new Map>([ - [eaaa.name, new Set(['id'])], - [eaae.name, new Set(['name'])], - [eaag.name, new Set(['age'])], + fieldSetsByTargetSubgraphName: new Map>([ + [eaac.name, new Set(['name'])], + [eaae.name, new Set(['id'])], + [eaag.name, new Set(['age'])], + ]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([ + ['id', [eaae.name]], + ['name', [eaac.name]], ]), - subgraphNames: [eaac.name, eaae.name, eaag.name], + subgraphNames: [eaac.name, eaae.name], typeName: 'Entity', }; - const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([eaac.name, eaae.name])); + const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([eaac.name, eaae.name])); const unresolvableFieldDataOne: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'age', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entities.object'), { isLeaf: true, name: 'age', } as GraphFieldData), - subgraphNames: new Set([eaag.name]), + subgraphNames: new Set([eaag.name]), typeName: OBJECT, }; const unresolvableFieldDataTwo: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'age', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entities.objectTwo'), { isLeaf: true, name: 'age', } as GraphFieldData), - subgraphNames: new Set([eaag.name]), + subgraphNames: new Set([eaag.name]), typeName: OBJECT, }; const unresolvableFieldDataThree: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'age', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entities'), { isLeaf: true, name: 'age', } as GraphFieldData), - subgraphNames: new Set([eaag.name]), + subgraphNames: new Set([eaag.name]), typeName: 'Entity', }; const { errors } = federateSubgraphsFailure([eaac, eaae, eaag], ROUTER_COMPATIBILITY_VERSION_ONE); @@ -1659,15 +1677,15 @@ describe('Field resolvability tests', () => { test('that an error is returned if fields returning the same named type are unresolvable', () => { const fieldPath = 'query.object.nestedObjectTwo'; - const rootFieldData = newRootFieldData(QUERY, 'object', new Set([faaa.name, faab.name])); + const rootFieldData = newRootFieldData(QUERY, 'object', new Set([faaa.name, faab.name])); const unresolvableFieldData: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'id', selectionSet: renderSelectionSet(generateSelectionSetSegments(fieldPath), { isLeaf: true, name: 'id', } as GraphFieldData), - subgraphNames: new Set([faaa.name]), + subgraphNames: new Set([faaa.name]), typeName: 'NestedObject', }; const { errors } = federateSubgraphsFailure([faaa, faab], ROUTER_COMPATIBILITY_VERSION_ONE); @@ -1701,44 +1719,48 @@ describe('Field resolvability tests', () => { test('that errors are returned for unresolvable fields involving a shared root query field and unreachable nested entities', () => { const { errors } = federateSubgraphsFailure([haaa, haab, haac], ROUTER_COMPATIBILITY_VERSION_ONE); const entityAncestors: EntityAncestorCollection = { - fieldSetsByTargetSubgraphName: new Map>([ + fieldSetsByTargetSubgraphName: new Map>([ [haaa.name, new Set(['idB'])], [haab.name, new Set(['idB'])], [haac.name, new Set(['idA'])], ]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([ + ['idA', [haac.name]], + ['idB', [haaa.name, haab.name]], + ]), subgraphNames: [haaa.name, haab.name], typeName: 'EntityA', }; - const rootFieldData = newRootFieldData(QUERY, 'a', new Set([haaa.name, haab.name])); + const rootFieldData = newRootFieldData(QUERY, 'a', new Set([haaa.name, haab.name])); const unresolvableFieldDataOne: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'createdAt', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.a.b.edges.node.c.a'), { isLeaf: true, name: 'createdAt', } as GraphFieldData), - subgraphNames: new Set([haaa.name]), + subgraphNames: new Set([haaa.name]), typeName: 'EntityA', }; const unresolvableFieldDataTwo: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'active', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.a.b.edges.node.c.a'), { isLeaf: true, name: 'active', } as GraphFieldData), - subgraphNames: new Set([haaa.name]), + subgraphNames: new Set([haaa.name]), typeName: 'EntityA', }; const unresolvableFieldDataThree: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'b', selectionSet: renderSelectionSet(generateSelectionSetSegments('query.a.b.edges.node.c.a'), { isLeaf: false, name: 'b', } as GraphFieldData), - subgraphNames: new Set([haab.name]), + subgraphNames: new Set([haab.name]), typeName: 'EntityA', }; expect(errors).toHaveLength(3); @@ -1772,30 +1794,31 @@ describe('Field resolvability tests', () => { test('that an error is returned if a field is unreachable due a true @external entity key field', () => { const entityAncestors: EntityAncestorCollection = { - fieldSetsByTargetSubgraphName: new Map>([[iaab.name, new Set(['id'])]]), + fieldSetsByTargetSubgraphName: new Map>([[iaab.name, new Set(['id'])]]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([['id', [iaaa.name, iaab.name]]]), subgraphNames: [iaaa.name, iaab.name], typeName: 'Entity', }; - const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([iaaa.name])); + const rootFieldData = newRootFieldData(QUERY, 'entities', new Set([iaaa.name])); const fieldPath = 'query.entities'; const unresolvableFieldDataOne: UnresolvableFieldData = { - externalSubgraphNames: new Set([iaaa.name]), + externalSubgraphNames: new Set([iaaa.name]), fieldName: 'id', selectionSet: renderSelectionSet(generateSelectionSetSegments(fieldPath), { isLeaf: true, name: 'id', } as GraphFieldData), - subgraphNames: new Set([iaab.name]), + subgraphNames: new Set([iaab.name]), typeName: 'Entity', }; const unresolvableFieldDataTwo: UnresolvableFieldData = { - externalSubgraphNames: new Set(), + externalSubgraphNames: new Set(), fieldName: 'name', selectionSet: renderSelectionSet(generateSelectionSetSegments(fieldPath), { isLeaf: true, name: 'name', } as GraphFieldData), - subgraphNames: new Set([iaab.name]), + subgraphNames: new Set([iaab.name]), typeName: 'Entity', }; const { errors } = federateSubgraphsFailure([iaaa, iaab], ROUTER_COMPATIBILITY_VERSION_ONE); @@ -1859,6 +1882,43 @@ describe('Field resolvability tests', () => { ), ); }); + + test('that an error is returned for only fully-validated inaccessible selections from a shared root field', () => { + const unresolvableFieldDataOne: UnresolvableFieldData = { + externalSubgraphNames: new Set(), + fieldName: 'name', + selectionSet: renderSelectionSet(generateSelectionSetSegments('query.entityAs.entityC'), { + isLeaf: true, + name: 'name', + } as GraphFieldData), + subgraphNames: new Set([kaaa.name]), + typeName: 'EntityC', + }; + const { errors, warnings } = federateSubgraphsFailure([kaaa, kaab, kaac], ROUTER_COMPATIBILITY_VERSION_ONE); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + unresolvablePathError( + unresolvableFieldDataOne, + generateSharedResolvabilityErrorReasons({ + entityAncestors: { + fieldSetsByTargetSubgraphName: new Map>([ + [kaaa.name, new Set(['id'])], + [kaab.name, new Set(['id'])], + [kaac.name, new Set(['id'])], + ]), + sourceSubgraphNamesBySatisfiedFieldSet: new Map>([ + ['id', [kaaa.name, kaab.name]], + ]), + subgraphNames: [kaaa.name, kaab.name], + typeName: 'EntityA', + }, + rootFieldData: newRootFieldData(QUERY, 'entityAs', new Set([kaaa.name, kaab.name])), + unresolvableFieldData: unresolvableFieldDataOne, + }), + ), + ]); + expect(warnings).toHaveLength(0); + }); }); const subgraphA: Subgraph = { @@ -3667,3 +3727,66 @@ const jaab: Subgraph = { } `), }; + +const kaaa = createSubgraph( + 'kaaa', + ` + type EntityC { + name: String! + } + + type EntityA @key(fields: "id") @shareable { + id: ID! + entityB: [EntityB!]! + entityBWrapper: EntityBWrapper! + } + + type EntityB @key(fields: "id") @shareable { + id: ID! + entityAs: [EntityA!]! + entityA: EntityA! + } + + type EntityBWrapper { + entityB: EntityB! + } + + type Query @shareable { + entityAs: [EntityA!]! + } + `, +); + +const kaab = createSubgraph( + 'kaab', + ` + type EntityC @key(fields: "id") { + id: ID! + } + + type EntityA @key(fields: "id") @shareable { + id: ID! + entityC: EntityC! + } + + type EntityB @key(fields: "id") @shareable { + id: ID! + entityAs: [EntityA!]! + entityA: EntityA! + } + + type Query @shareable { + entityAs: [EntityA!]! + } + `, +); + +const kaac = createSubgraph( + 'kaac', + ` + type EntityA @key(fields: "id") @shareable { + id: ID! + name: String! + } + `, +); diff --git a/composition/tests/v1/router-configuration.test.ts b/composition/tests/v1/router-configuration.test.ts index dbf449df97..c2900bd14d 100644 --- a/composition/tests/v1/router-configuration.test.ts +++ b/composition/tests/v1/router-configuration.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from 'vitest'; import { type BatchNormalizationSuccess, - batchNormalize, + BatchNormalizer, type ConfigurationData, ROUTER_COMPATIBILITY_VERSION_ONE, type Subgraph, @@ -675,9 +675,11 @@ describe('Router Configuration tests', () => { }); test('that the router configuration is correctly generated', () => { - const result = batchNormalize({ subgraphs: [monolith, reviews, users] }) as BatchNormalizationSuccess; + const result = new BatchNormalizer({ + subgraphs: [monolith, reviews, users], + }).batchNormalize() as BatchNormalizationSuccess; expect(result.success).toBe(true); - expect(result.internalSubgraphBySubgraphName.get('monolith')!.configurationDataByTypeName).toStrictEqual( + expect(result.internalSubgraphByName.get('monolith')!.configurationDataByTypeName).toStrictEqual( new Map([ [ 'Query', @@ -689,7 +691,7 @@ describe('Router Configuration tests', () => { ], ]), ); - expect(result.internalSubgraphBySubgraphName.get('reviews')!.configurationDataByTypeName).toStrictEqual( + expect(result.internalSubgraphByName.get('reviews')!.configurationDataByTypeName).toStrictEqual( new Map([ [ 'Query', @@ -717,7 +719,7 @@ describe('Router Configuration tests', () => { ], ]), ); - expect(result.internalSubgraphBySubgraphName.get('users')!.configurationDataByTypeName).toStrictEqual( + expect(result.internalSubgraphByName.get('users')!.configurationDataByTypeName).toStrictEqual( new Map([ [ 'Query', diff --git a/composition/tests/v1/types/enums.test.ts b/composition/tests/v1/types/enums.test.ts index c65067ef9d..6ea0770fb0 100644 --- a/composition/tests/v1/types/enums.test.ts +++ b/composition/tests/v1/types/enums.test.ts @@ -12,6 +12,7 @@ import { import { describe, expect, test } from 'vitest'; import { INACCESSIBLE_DIRECTIVE, SCHEMA_QUERY_DEFINITION, TAG_DIRECTIVE } from '../utils/utils'; import { + createSubgraph, federateSubgraphsFailure, federateSubgraphsSuccess, normalizeString, @@ -234,6 +235,91 @@ describe('Enum tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual(duplicateEnumValueDefinitionError(ENUM, 'A')); }); + + test('that a Directive argument that accepts an Enum can be passed as a String', () => { + const { schema, warnings } = normalizeSubgraphSuccess(subgraphAE, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toStrictEqual( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a(enum: Enum!) on FIELD_DEFINITION + + enum Enum { + A + } + + type Query { + a: ID @a(enum: A) + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that a Directive argument Enum default value can be passed as a String', () => { + const { schema, warnings } = normalizeSubgraphSuccess(subgraphAF, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toStrictEqual( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + directive @a(enum: Enum! = A) on FIELD_DEFINITION + + enum Enum { + A + B + } + + type Query { + a: ID @a(enum: B) + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that a field argument that accepts an Enum can use a String default value', () => { + const { schema, warnings } = normalizeSubgraphSuccess(subgraphAG, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toStrictEqual( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + enum Enum { + A + } + + type Query { + a(a: Enum! = A): ID + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that an Input value that accepts an Enum can use a String default value', () => { + const { schema, warnings } = normalizeSubgraphSuccess(subgraphAH, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toStrictEqual( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + enum Enum { + A + } + + input Input { + a: Enum! = A + } + + type Query { + a(a: Input!): ID + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); }); describe('Federation tests', () => { @@ -890,3 +976,64 @@ const subgraphAD: Subgraph = { } `), }; + +const subgraphAE = createSubgraph( + 'subgraph-ae', + ` + directive @a(enum: Enum!) on FIELD_DEFINITION + + enum Enum { + A + } + + type Query { + a: ID @a(enum: "A") + } + `, +); + +const subgraphAF = createSubgraph( + 'subgraph-af', + ` + directive @a(enum: Enum! = "A") on FIELD_DEFINITION + + enum Enum { + A + B + } + + type Query { + a: ID @a(enum: "B") + } + `, +); + +const subgraphAG = createSubgraph( + 'subgraph-ag', + ` + enum Enum { + A + } + + type Query { + a(a: Enum! = "A"): ID + } + `, +); + +const subgraphAH = createSubgraph( + 'subgraph-ah', + ` + enum Enum { + A + } + + input Input { + a: Enum! = "A" + } + + type Query { + a(a: Input!): ID + } + `, +); diff --git a/composition/tests/v1/types/interfaces.test.ts b/composition/tests/v1/types/interfaces.test.ts index 24a15065a0..34961d954a 100644 --- a/composition/tests/v1/types/interfaces.test.ts +++ b/composition/tests/v1/types/interfaces.test.ts @@ -19,6 +19,7 @@ import { import { describe, expect, test } from 'vitest'; import { INACCESSIBLE_DIRECTIVE, SCHEMA_QUERY_DEFINITION, TAG_DIRECTIVE } from '../utils/utils'; import { + createSubgraph, federateSubgraphsFailure, federateSubgraphsSuccess, normalizeString, @@ -453,6 +454,72 @@ describe('Interface tests', () => { ), ); }); + + test('that a concrete Interface implementation is a valid subtype of an implemented Interface field', () => { + const { schema, warnings } = normalizeSubgraphSuccess(ncaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + interface InterfaceA { + a: ID + } + + interface InterfaceB { + a: InterfaceA + } + + type ObjectA implements InterfaceA { + a: ID + } + + type ObjectB implements InterfaceB { + a: ObjectA + } + + type Query { + a: InterfaceB + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that an abstract Interface implementation is a valid subtype of an implemented Interface field', () => { + const { schema, warnings } = normalizeSubgraphSuccess(ndaaa, ROUTER_COMPATIBILITY_VERSION_ONE); + expect(schemaToSortedNormalizedString(schema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + interface InterfaceA { + a: ID + } + + interface InterfaceB implements InterfaceA { + a: ID + } + + interface InterfaceC { + a: InterfaceA + } + + type ObjectA implements InterfaceA & InterfaceB { + a: ID + } + + type ObjectB implements InterfaceC { + a: InterfaceB + } + + type Query { + a: InterfaceC + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); }); describe('Federation tests', () => { @@ -1061,6 +1128,88 @@ describe('Interface tests', () => { ), ); }); + + test('that a concrete Interface implementation is a valid subtype of an implemented Interface field', () => { + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [faaaa, faaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + type EntityA implements InterfaceA { + a: ID + b: ID + id: ID! + } + + type EntityB implements InterfaceB { + a: EntityA + b: ID + id: ID! + } + + interface InterfaceA { + a: ID + } + + interface InterfaceB { + a: InterfaceA + } + + type Query { + a: InterfaceB + b: EntityB + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); + + test('that an abstract Interface implementation is a valid subtype of an implemented Interface field', () => { + const { federatedGraphSchema, warnings } = federateSubgraphsSuccess( + [fbaaa, fbaab], + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schemaToSortedNormalizedString(federatedGraphSchema)).toBe( + normalizeString( + SCHEMA_QUERY_DEFINITION + + ` + type EntityA implements InterfaceA & InterfaceB { + a: ID + b: ID + id: ID! + } + + type EntityB implements InterfaceC { + a: InterfaceB + b: ID + id: ID! + } + + interface InterfaceA { + a: ID + } + + interface InterfaceB implements InterfaceA { + a: ID + } + + interface InterfaceC { + a: InterfaceA + } + + type Query { + a: InterfaceC + b: EntityB + } + `, + ), + ); + expect(warnings).toHaveLength(0); + }); }); }); @@ -1707,3 +1856,160 @@ const nbaaa: Subgraph = { } `), }; + +const ncaaa = createSubgraph( + 'ncaaa', + ` + interface InterfaceA { + a: ID + } + + interface InterfaceB { + a: InterfaceA + } + + type ObjectA implements InterfaceA { + a: ID + } + + type ObjectB implements InterfaceB { + a: ObjectA + } + + type Query { + a: InterfaceB + } + `, +); + +const ndaaa = createSubgraph( + 'ndaaa', + ` + interface InterfaceA { + a: ID + } + + interface InterfaceB implements InterfaceA { + a: ID + } + + interface InterfaceC { + a: InterfaceA + } + + type ObjectA implements InterfaceA & InterfaceB { + a: ID + } + + type ObjectB implements InterfaceC { + a: InterfaceB + } + + type Query { + a: InterfaceC + } + `, +); + +const faaaa = createSubgraph( + 'faaaa', + ` + type EntityA implements InterfaceA @key(fields: "id") { + a: ID + id: ID! + } + + type EntityB implements InterfaceB @key(fields: "id") { + a: EntityA + id: ID! + } + + interface InterfaceA { + a: ID + } + + interface InterfaceB { + a: InterfaceA + } + + type Query { + a: InterfaceB + } + `, +); + +const faaab = createSubgraph( + 'faaab', + ` + type EntityA @key(fields: "id") { + b: ID + id: ID! + } + + type EntityB @key(fields: "id") { + a: EntityA + b: ID + id: ID! + } + + type Query { + b: EntityB + } + `, +); + +const fbaaa = createSubgraph( + 'fbaaa', + ` + type EntityA implements InterfaceA & InterfaceB @key(fields: "id") { + a: ID + id: ID! + } + + type EntityB implements InterfaceC { + a: InterfaceB + id: ID! + } + + interface InterfaceA { + a: ID + } + + interface InterfaceB implements InterfaceA { + a: ID + } + + interface InterfaceC { + a: InterfaceA + } + + type Query { + a: InterfaceC + } + `, +); + +const fbaab = createSubgraph( + 'fbaab', + ` + type EntityA implements InterfaceB @key(fields: "id") { + a: ID + b: ID + id: ID! + } + + type EntityB @key(fields: "id") { + a: InterfaceB + b: ID + id: ID! + } + + interface InterfaceB { + a: ID + } + + type Query { + b: EntityB + } + `, +); diff --git a/connect-go/.gitattributes b/connect-go/.gitattributes new file mode 100644 index 0000000000..932c46771f --- /dev/null +++ b/connect-go/.gitattributes @@ -0,0 +1,3 @@ +# Generated Go protobuf files +# Generated by: make generate-go +gen/** linguist-generated=true diff --git a/connect-go/gen/proto/wg/cosmo/common/common.pb.go b/connect-go/gen/proto/wg/cosmo/common/common.pb.go index 5d0a09cfd1..ce33c37271 100644 --- a/connect-go/gen/proto/wg/cosmo/common/common.pb.go +++ b/connect-go/gen/proto/wg/cosmo/common/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.11 // protoc (unknown) // source: wg/cosmo/common/common.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -42,6 +43,7 @@ const ( EnumStatusCode_ERR_UPGRADE_PLAN EnumStatusCode = 16 EnumStatusCode_ERR_BAD_REQUEST EnumStatusCode = 17 EnumStatusCode_ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL EnumStatusCode = 18 + EnumStatusCode_WARN_PARTIAL_DATA EnumStatusCode = 19 ) // Enum value maps for EnumStatusCode. @@ -66,6 +68,7 @@ var ( 16: "ERR_UPGRADE_PLAN", 17: "ERR_BAD_REQUEST", 18: "ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL", + 19: "WARN_PARTIAL_DATA", } EnumStatusCode_value = map[string]int32{ "OK": 0, @@ -87,6 +90,7 @@ var ( "ERR_UPGRADE_PLAN": 16, "ERR_BAD_REQUEST": 17, "ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL": 18, + "WARN_PARTIAL_DATA": 19, } ) @@ -220,84 +224,49 @@ func (GraphQLWebsocketSubprotocol) EnumDescriptor() ([]byte, []int) { var File_wg_cosmo_common_common_proto protoreflect.FileDescriptor -var file_wg_cosmo_common_common_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2a, - 0xf4, 0x03, 0x0a, 0x0e, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x52, - 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x52, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, - 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x52, 0x52, 0x5f, 0x41, 0x4c, - 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1f, - 0x0a, 0x1b, 0x45, 0x52, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x55, - 0x42, 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0x04, 0x12, - 0x23, 0x0a, 0x1f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, - 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, - 0x45, 0x44, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x47, - 0x52, 0x41, 0x50, 0x48, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x52, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, - 0x49, 0x44, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x45, - 0x52, 0x52, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x54, 0x49, 0x43, 0x53, 0x5f, 0x44, 0x49, 0x53, - 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, - 0x45, 0x44, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x52, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x4e, - 0x41, 0x49, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1a, 0x0a, - 0x16, 0x45, 0x52, 0x52, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, - 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, - 0x44, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x52, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x5f, 0x52, 0x45, 0x41, 0x43, 0x48, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x52, - 0x52, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x52, 0x52, 0x5f, 0x49, 0x4e, 0x56, - 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x0f, 0x12, 0x14, 0x0a, 0x10, 0x45, - 0x52, 0x52, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, - 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x52, 0x52, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, - 0x55, 0x45, 0x53, 0x54, 0x10, 0x11, 0x12, 0x2e, 0x0a, 0x2a, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x43, - 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x57, 0x49, - 0x54, 0x48, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x10, 0x12, 0x2a, 0x96, 0x01, 0x0a, 0x1b, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x20, 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, - 0x4c, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x57, 0x53, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, - 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x53, - 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x5f, 0x53, - 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x2a, - 0x9b, 0x01, 0x0a, 0x1b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x57, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, - 0x26, 0x0a, 0x22, 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x5f, 0x57, 0x45, 0x42, 0x53, 0x4f, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x47, 0x52, 0x41, 0x50, 0x48, - 0x51, 0x4c, 0x5f, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x55, 0x42, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x57, 0x53, 0x10, 0x01, 0x12, 0x2e, 0x0a, - 0x2a, 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x5f, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x57, 0x53, 0x10, 0x02, 0x42, 0xc3, 0x01, - 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x77, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x57, 0x43, 0x43, 0xaa, 0x02, 0x0f, - 0x57, 0x67, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xca, - 0x02, 0x0f, 0x57, 0x67, 0x5c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0xe2, 0x02, 0x1b, 0x57, 0x67, 0x5c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x5c, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x11, 0x57, 0x67, 0x3a, 0x3a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_wg_cosmo_common_common_proto_rawDesc = "" + + "\n" + + "\x1cwg/cosmo/common/common.proto\x12\x0fwg.cosmo.common*\x8b\x04\n" + + "\x0eEnumStatusCode\x12\x06\n" + + "\x02OK\x10\x00\x12\a\n" + + "\x03ERR\x10\x01\x12\x11\n" + + "\rERR_NOT_FOUND\x10\x02\x12\x16\n" + + "\x12ERR_ALREADY_EXISTS\x10\x03\x12\x1f\n" + + "\x1bERR_INVALID_SUBGRAPH_SCHEMA\x10\x04\x12#\n" + + "\x1fERR_SUBGRAPH_COMPOSITION_FAILED\x10\x05\x12\x1d\n" + + "\x19ERR_SUBGRAPH_CHECK_FAILED\x10\x06\x12\x16\n" + + "\x12ERR_INVALID_LABELS\x10\a\x12\x1a\n" + + "\x16ERR_ANALYTICS_DISABLED\x10\b\x12\x1b\n" + + "\x17ERROR_NOT_AUTHENTICATED\x10\t\x12\x17\n" + + "\x13ERR_OPENAI_DISABLED\x10\n" + + "\x12\x1a\n" + + "\x16ERR_FREE_TRIAL_EXPIRED\x10\v\x12\x18\n" + + "\x14ERROR_NOT_AUTHORIZED\x10\f\x12\x15\n" + + "\x11ERR_LIMIT_REACHED\x10\r\x12\x19\n" + + "\x15ERR_DEPLOYMENT_FAILED\x10\x0e\x12\x14\n" + + "\x10ERR_INVALID_NAME\x10\x0f\x12\x14\n" + + "\x10ERR_UPGRADE_PLAN\x10\x10\x12\x13\n" + + "\x0fERR_BAD_REQUEST\x10\x11\x12.\n" + + "*ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL\x10\x12\x12\x15\n" + + "\x11WARN_PARTIAL_DATA\x10\x13*\x96\x01\n" + + "\x1bGraphQLSubscriptionProtocol\x12$\n" + + " GRAPHQL_SUBSCRIPTION_PROTOCOL_WS\x10\x00\x12%\n" + + "!GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE\x10\x01\x12*\n" + + "&GRAPHQL_SUBSCRIPTION_PROTOCOL_SSE_POST\x10\x02*\x9b\x01\n" + + "\x1bGraphQLWebsocketSubprotocol\x12&\n" + + "\"GRAPHQL_WEBSOCKET_SUBPROTOCOL_AUTO\x10\x00\x12$\n" + + " GRAPHQL_WEBSOCKET_SUBPROTOCOL_WS\x10\x01\x12.\n" + + "*GRAPHQL_WEBSOCKET_SUBPROTOCOL_TRANSPORT_WS\x10\x02B\xc3\x01\n" + + "\x13com.wg.cosmo.commonB\vCommonProtoP\x01ZAgithub.com/wundergraph/cosmo/connect-go/gen/proto/wg/cosmo/common\xa2\x02\x03WCC\xaa\x02\x0fWg.Cosmo.Common\xca\x02\x0fWg\\Cosmo\\Common\xe2\x02\x1bWg\\Cosmo\\Common\\GPBMetadata\xea\x02\x11Wg::Cosmo::Commonb\x06proto3" var ( file_wg_cosmo_common_common_proto_rawDescOnce sync.Once - file_wg_cosmo_common_common_proto_rawDescData = file_wg_cosmo_common_common_proto_rawDesc + file_wg_cosmo_common_common_proto_rawDescData []byte ) func file_wg_cosmo_common_common_proto_rawDescGZIP() []byte { file_wg_cosmo_common_common_proto_rawDescOnce.Do(func() { - file_wg_cosmo_common_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_wg_cosmo_common_common_proto_rawDescData) + file_wg_cosmo_common_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_wg_cosmo_common_common_proto_rawDesc), len(file_wg_cosmo_common_common_proto_rawDesc))) }) return file_wg_cosmo_common_common_proto_rawDescData } @@ -325,7 +294,7 @@ func file_wg_cosmo_common_common_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_wg_cosmo_common_common_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_common_common_proto_rawDesc), len(file_wg_cosmo_common_common_proto_rawDesc)), NumEnums: 3, NumMessages: 0, NumExtensions: 0, @@ -336,7 +305,6 @@ func file_wg_cosmo_common_common_proto_init() { EnumInfos: file_wg_cosmo_common_common_proto_enumTypes, }.Build() File_wg_cosmo_common_common_proto = out.File - file_wg_cosmo_common_common_proto_rawDesc = nil file_wg_cosmo_common_common_proto_goTypes = nil file_wg_cosmo_common_common_proto_depIdxs = nil } diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 9f2b1b0ed6..2df6fa273b 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.11 // protoc (unknown) // source: wg/cosmo/node/v1/node.proto @@ -12,6 +12,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -428,22 +429,19 @@ func (HTTPMethod) EnumDescriptor() ([]byte, []int) { } type Subgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + RoutingUrl string `protobuf:"bytes,3,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - RoutingUrl string `protobuf:"bytes,3,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Subgraph) Reset() { *x = Subgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subgraph) String() string { @@ -454,7 +452,7 @@ func (*Subgraph) ProtoMessage() {} func (x *Subgraph) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -491,20 +489,17 @@ func (x *Subgraph) GetRoutingUrl() string { } type FeatureFlagRouterExecutionConfigs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ConfigByFeatureFlagName map[string]*FeatureFlagRouterExecutionConfig `protobuf:"bytes,1,rep,name=config_by_feature_flag_name,json=configByFeatureFlagName,proto3" json:"config_by_feature_flag_name,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + ConfigByFeatureFlagName map[string]*FeatureFlagRouterExecutionConfig `protobuf:"bytes,1,rep,name=config_by_feature_flag_name,json=configByFeatureFlagName,proto3" json:"config_by_feature_flag_name,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FeatureFlagRouterExecutionConfigs) Reset() { *x = FeatureFlagRouterExecutionConfigs{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureFlagRouterExecutionConfigs) String() string { @@ -515,7 +510,7 @@ func (*FeatureFlagRouterExecutionConfigs) ProtoMessage() {} func (x *FeatureFlagRouterExecutionConfigs) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -538,22 +533,19 @@ func (x *FeatureFlagRouterExecutionConfigs) GetConfigByFeatureFlagName() map[str } type FeatureFlagRouterExecutionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` unknownFields protoimpl.UnknownFields - - EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FeatureFlagRouterExecutionConfig) Reset() { *x = FeatureFlagRouterExecutionConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureFlagRouterExecutionConfig) String() string { @@ -564,7 +556,7 @@ func (*FeatureFlagRouterExecutionConfig) ProtoMessage() {} func (x *FeatureFlagRouterExecutionConfig) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -601,25 +593,22 @@ func (x *FeatureFlagRouterExecutionConfig) GetSubgraphs() []*Subgraph { } type RouterConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` // The map of feature flag router execution configs requires a wrapper to be non-breaking FeatureFlagConfigs *FeatureFlagRouterExecutionConfigs `protobuf:"bytes,4,opt,name=feature_flag_configs,json=featureFlagConfigs,proto3,oneof" json:"feature_flag_configs,omitempty"` CompatibilityVersion string `protobuf:"bytes,5,opt,name=compatibility_version,json=compatibilityVersion,proto3" json:"compatibility_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RouterConfig) Reset() { *x = RouterConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouterConfig) String() string { @@ -630,7 +619,7 @@ func (*RouterConfig) ProtoMessage() {} func (x *RouterConfig) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -681,22 +670,19 @@ func (x *RouterConfig) GetCompatibilityVersion() string { } type Response struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code common.EnumStatusCode `protobuf:"varint,1,opt,name=code,proto3,enum=wg.cosmo.common.EnumStatusCode" json:"code,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Code common.EnumStatusCode `protobuf:"varint,1,opt,name=code,proto3,enum=wg.cosmo.common.EnumStatusCode" json:"code,omitempty"` // details is an optional field which can be used to provide more details about the error. - Details *string `protobuf:"bytes,2,opt,name=details,proto3,oneof" json:"details,omitempty"` + Details *string `protobuf:"bytes,2,opt,name=details,proto3,oneof" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Response) Reset() { *x = Response{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Response) String() string { @@ -707,7 +693,7 @@ func (*Response) ProtoMessage() {} func (x *Response) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -737,21 +723,18 @@ func (x *Response) GetDetails() string { } type ResponseStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ResponseStatus) Reset() { *x = ResponseStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseStatus) String() string { @@ -762,7 +745,7 @@ func (*ResponseStatus) ProtoMessage() {} func (x *ResponseStatus) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -792,21 +775,18 @@ func (x *ResponseStatus) GetMessage() string { } type RegistrationInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AccountLimits *AccountLimits `protobuf:"bytes,1,opt,name=account_limits,json=accountLimits,proto3" json:"account_limits,omitempty"` - GraphPublicKey string `protobuf:"bytes,2,opt,name=graph_public_key,json=graphPublicKey,proto3" json:"graph_public_key,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AccountLimits *AccountLimits `protobuf:"bytes,1,opt,name=account_limits,json=accountLimits,proto3" json:"account_limits,omitempty"` + GraphPublicKey string `protobuf:"bytes,2,opt,name=graph_public_key,json=graphPublicKey,proto3" json:"graph_public_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RegistrationInfo) Reset() { *x = RegistrationInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RegistrationInfo) String() string { @@ -817,7 +797,7 @@ func (*RegistrationInfo) ProtoMessage() {} func (x *RegistrationInfo) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -847,22 +827,19 @@ func (x *RegistrationInfo) GetGraphPublicKey() string { } type AccountLimits struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The maximum sampling rate for traces. Must be between 0 and 1. // 0 means no traces will be sampled and 1 means all traces will be sampled. TraceSamplingRate float32 `protobuf:"fixed32,1,opt,name=trace_sampling_rate,json=traceSamplingRate,proto3" json:"trace_sampling_rate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccountLimits) Reset() { *x = AccountLimits{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AccountLimits) String() string { @@ -873,7 +850,7 @@ func (*AccountLimits) ProtoMessage() {} func (x *AccountLimits) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -896,18 +873,16 @@ func (x *AccountLimits) GetTraceSamplingRate() float32 { } type SelfRegisterRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SelfRegisterRequest) Reset() { *x = SelfRegisterRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SelfRegisterRequest) String() string { @@ -918,7 +893,7 @@ func (*SelfRegisterRequest) ProtoMessage() {} func (x *SelfRegisterRequest) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -934,21 +909,18 @@ func (*SelfRegisterRequest) Descriptor() ([]byte, []int) { } type SelfRegisterResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - RegistrationInfo *RegistrationInfo `protobuf:"bytes,2,opt,name=registrationInfo,proto3,oneof" json:"registrationInfo,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + RegistrationInfo *RegistrationInfo `protobuf:"bytes,2,opt,name=registrationInfo,proto3,oneof" json:"registrationInfo,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SelfRegisterResponse) Reset() { *x = SelfRegisterResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SelfRegisterResponse) String() string { @@ -959,7 +931,7 @@ func (*SelfRegisterResponse) ProtoMessage() {} func (x *SelfRegisterResponse) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -989,26 +961,23 @@ func (x *SelfRegisterResponse) GetRegistrationInfo() *RegistrationInfo { } type EngineConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` DefaultFlushInterval int64 `protobuf:"varint,1,opt,name=defaultFlushInterval,proto3" json:"defaultFlushInterval,omitempty"` DatasourceConfigurations []*DataSourceConfiguration `protobuf:"bytes,2,rep,name=datasource_configurations,json=datasourceConfigurations,proto3" json:"datasource_configurations,omitempty"` FieldConfigurations []*FieldConfiguration `protobuf:"bytes,3,rep,name=field_configurations,json=fieldConfigurations,proto3" json:"field_configurations,omitempty"` GraphqlSchema string `protobuf:"bytes,4,opt,name=graphqlSchema,proto3" json:"graphqlSchema,omitempty"` TypeConfigurations []*TypeConfiguration `protobuf:"bytes,5,rep,name=type_configurations,json=typeConfigurations,proto3" json:"type_configurations,omitempty"` - StringStorage map[string]string `protobuf:"bytes,6,rep,name=string_storage,json=stringStorage,proto3" json:"string_storage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + StringStorage map[string]string `protobuf:"bytes,6,rep,name=string_storage,json=stringStorage,proto3" json:"string_storage,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` GraphqlClientSchema *string `protobuf:"bytes,7,opt,name=graphql_client_schema,json=graphqlClientSchema,proto3,oneof" json:"graphql_client_schema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EngineConfiguration) Reset() { *x = EngineConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EngineConfiguration) String() string { @@ -1019,7 +988,7 @@ func (*EngineConfiguration) ProtoMessage() {} func (x *EngineConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1084,10 +1053,7 @@ func (x *EngineConfiguration) GetGraphqlClientSchema() string { } type DataSourceConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Kind DataSourceKind `protobuf:"varint,1,opt,name=kind,proto3,enum=wg.cosmo.node.v1.DataSourceKind" json:"kind,omitempty"` RootNodes []*TypeField `protobuf:"bytes,2,rep,name=root_nodes,json=rootNodes,proto3" json:"root_nodes,omitempty"` ChildNodes []*TypeField `protobuf:"bytes,3,rep,name=child_nodes,json=childNodes,proto3" json:"child_nodes,omitempty"` @@ -1104,15 +1070,15 @@ type DataSourceConfiguration struct { EntityInterfaces []*EntityInterfaceConfiguration `protobuf:"bytes,14,rep,name=entity_interfaces,json=entityInterfaces,proto3" json:"entity_interfaces,omitempty"` InterfaceObjects []*EntityInterfaceConfiguration `protobuf:"bytes,15,rep,name=interface_objects,json=interfaceObjects,proto3" json:"interface_objects,omitempty"` CostConfiguration *CostConfiguration `protobuf:"bytes,16,opt,name=cost_configuration,json=costConfiguration,proto3" json:"cost_configuration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceConfiguration) Reset() { *x = DataSourceConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataSourceConfiguration) String() string { @@ -1123,7 +1089,7 @@ func (*DataSourceConfiguration) ProtoMessage() {} func (x *DataSourceConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1251,23 +1217,20 @@ func (x *DataSourceConfiguration) GetCostConfiguration() *CostConfiguration { } type CostConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` ListSizes []*FieldListSizeConfiguration `protobuf:"bytes,2,rep,name=list_sizes,json=listSizes,proto3" json:"list_sizes,omitempty"` - TypeWeights map[string]int32 `protobuf:"bytes,3,rep,name=type_weights,json=typeWeights,proto3" json:"type_weights,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - DirectiveArgumentWeights map[string]int32 `protobuf:"bytes,4,rep,name=directive_argument_weights,json=directiveArgumentWeights,proto3" json:"directive_argument_weights,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + TypeWeights map[string]int32 `protobuf:"bytes,3,rep,name=type_weights,json=typeWeights,proto3" json:"type_weights,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + DirectiveArgumentWeights map[string]int32 `protobuf:"bytes,4,rep,name=directive_argument_weights,json=directiveArgumentWeights,proto3" json:"directive_argument_weights,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CostConfiguration) String() string { @@ -1278,7 +1241,7 @@ func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1322,23 +1285,21 @@ func (x *CostConfiguration) GetDirectiveArgumentWeights() map[string]int32 { } type FieldWeightConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - Weight *int32 `protobuf:"varint,3,opt,name=weight,proto3,oneof" json:"weight,omitempty"` - ArgumentWeights map[string]int32 `protobuf:"bytes,4,rep,name=argument_weights,json=argumentWeights,proto3" json:"argument_weights,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + Weight *int32 `protobuf:"varint,3,opt,name=weight,proto3,oneof" json:"weight,omitempty"` + ArgumentWeights map[string]int32 `protobuf:"bytes,4,rep,name=argument_weights,json=argumentWeights,proto3" json:"argument_weights,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + DirectiveArgumentWeights map[string]int32 `protobuf:"bytes,5,rep,name=directive_argument_weights,json=directiveArgumentWeights,proto3" json:"directive_argument_weights,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldWeightConfiguration) String() string { @@ -1349,7 +1310,7 @@ func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1392,26 +1353,30 @@ func (x *FieldWeightConfiguration) GetArgumentWeights() map[string]int32 { return nil } -type FieldListSizeConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FieldWeightConfiguration) GetDirectiveArgumentWeights() map[string]int32 { + if x != nil { + return x.DirectiveArgumentWeights + } + return nil +} - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - AssumedSize *int32 `protobuf:"varint,3,opt,name=assumed_size,json=assumedSize,proto3,oneof" json:"assumed_size,omitempty"` - SlicingArguments []string `protobuf:"bytes,4,rep,name=slicing_arguments,json=slicingArguments,proto3" json:"slicing_arguments,omitempty"` - SizedFields []string `protobuf:"bytes,5,rep,name=sized_fields,json=sizedFields,proto3" json:"sized_fields,omitempty"` - RequireOneSlicingArgument *bool `protobuf:"varint,6,opt,name=require_one_slicing_argument,json=requireOneSlicingArgument,proto3,oneof" json:"require_one_slicing_argument,omitempty"` +type FieldListSizeConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + AssumedSize *int32 `protobuf:"varint,3,opt,name=assumed_size,json=assumedSize,proto3,oneof" json:"assumed_size,omitempty"` + SlicingArguments []string `protobuf:"bytes,4,rep,name=slicing_arguments,json=slicingArguments,proto3" json:"slicing_arguments,omitempty"` + SizedFields []string `protobuf:"bytes,5,rep,name=sized_fields,json=sizedFields,proto3" json:"sized_fields,omitempty"` + RequireOneSlicingArgument *bool `protobuf:"varint,6,opt,name=require_one_slicing_argument,json=requireOneSlicingArgument,proto3,oneof" json:"require_one_slicing_argument,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldListSizeConfiguration) String() string { @@ -1422,7 +1387,7 @@ func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1480,21 +1445,18 @@ func (x *FieldListSizeConfiguration) GetRequireOneSlicingArgument() bool { } type ArgumentConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + SourceType ArgumentSource `protobuf:"varint,2,opt,name=source_type,json=sourceType,proto3,enum=wg.cosmo.node.v1.ArgumentSource" json:"source_type,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - SourceType ArgumentSource `protobuf:"varint,2,opt,name=source_type,json=sourceType,proto3,enum=wg.cosmo.node.v1.ArgumentSource" json:"source_type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ArgumentConfiguration) String() string { @@ -1505,7 +1467,7 @@ func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1535,20 +1497,17 @@ func (x *ArgumentConfiguration) GetSourceType() ArgumentSource { } type Scopes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequiredAndScopes []string `protobuf:"bytes,1,rep,name=required_and_scopes,json=requiredAndScopes,proto3" json:"required_and_scopes,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequiredAndScopes []string `protobuf:"bytes,1,rep,name=required_and_scopes,json=requiredAndScopes,proto3" json:"required_and_scopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Scopes) Reset() { *x = Scopes{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Scopes) String() string { @@ -1559,7 +1518,7 @@ func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1582,22 +1541,19 @@ func (x *Scopes) GetRequiredAndScopes() []string { } type AuthorizationConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequiresAuthentication bool `protobuf:"varint,1,opt,name=requires_authentication,json=requiresAuthentication,proto3" json:"requires_authentication,omitempty"` - RequiredOrScopes []*Scopes `protobuf:"bytes,2,rep,name=required_or_scopes,json=requiredOrScopes,proto3" json:"required_or_scopes,omitempty"` - RequiredOrScopesByOr []*Scopes `protobuf:"bytes,3,rep,name=required_or_scopes_by_or,json=requiredOrScopesByOr,proto3" json:"required_or_scopes_by_or,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RequiresAuthentication bool `protobuf:"varint,1,opt,name=requires_authentication,json=requiresAuthentication,proto3" json:"requires_authentication,omitempty"` + RequiredOrScopes []*Scopes `protobuf:"bytes,2,rep,name=required_or_scopes,json=requiredOrScopes,proto3" json:"required_or_scopes,omitempty"` + RequiredOrScopesByOr []*Scopes `protobuf:"bytes,3,rep,name=required_or_scopes_by_or,json=requiredOrScopesByOr,proto3" json:"required_or_scopes_by_or,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizationConfiguration) String() string { @@ -1608,7 +1564,7 @@ func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1645,24 +1601,21 @@ func (x *AuthorizationConfiguration) GetRequiredOrScopesByOr() []*Scopes { } type FieldConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` ArgumentsConfiguration []*ArgumentConfiguration `protobuf:"bytes,3,rep,name=arguments_configuration,json=argumentsConfiguration,proto3" json:"arguments_configuration,omitempty"` AuthorizationConfiguration *AuthorizationConfiguration `protobuf:"bytes,4,opt,name=authorization_configuration,json=authorizationConfiguration,proto3" json:"authorization_configuration,omitempty"` SubscriptionFilterCondition *SubscriptionFilterCondition `protobuf:"bytes,5,opt,name=subscription_filter_condition,json=subscriptionFilterCondition,proto3,oneof" json:"subscription_filter_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldConfiguration) String() string { @@ -1673,7 +1626,7 @@ func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1724,21 +1677,18 @@ func (x *FieldConfiguration) GetSubscriptionFilterCondition() *SubscriptionFilte } type TypeConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + RenameTo string `protobuf:"bytes,2,opt,name=rename_to,json=renameTo,proto3" json:"rename_to,omitempty"` unknownFields protoimpl.UnknownFields - - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - RenameTo string `protobuf:"bytes,2,opt,name=rename_to,json=renameTo,proto3" json:"rename_to,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypeConfiguration) String() string { @@ -1749,7 +1699,7 @@ func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1779,23 +1729,20 @@ func (x *TypeConfiguration) GetRenameTo() string { } type TypeField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldNames []string `protobuf:"bytes,2,rep,name=field_names,json=fieldNames,proto3" json:"field_names,omitempty"` - ExternalFieldNames []string `protobuf:"bytes,3,rep,name=external_field_names,json=externalFieldNames,proto3" json:"external_field_names,omitempty"` - RequireFetchReasonsFieldNames []string `protobuf:"bytes,4,rep,name=require_fetch_reasons_field_names,json=requireFetchReasonsFieldNames,proto3" json:"require_fetch_reasons_field_names,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldNames []string `protobuf:"bytes,2,rep,name=field_names,json=fieldNames,proto3" json:"field_names,omitempty"` + ExternalFieldNames []string `protobuf:"bytes,3,rep,name=external_field_names,json=externalFieldNames,proto3" json:"external_field_names,omitempty"` + RequireFetchReasonsFieldNames []string `protobuf:"bytes,4,rep,name=require_fetch_reasons_field_names,json=requireFetchReasonsFieldNames,proto3" json:"require_fetch_reasons_field_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TypeField) Reset() { *x = TypeField{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypeField) String() string { @@ -1806,7 +1753,7 @@ func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1850,21 +1797,18 @@ func (x *TypeField) GetRequireFetchReasonsFieldNames() []string { } type FieldCoordinates struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` unknownFields protoimpl.UnknownFields - - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldCoordinates) String() string { @@ -1875,7 +1819,7 @@ func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1905,21 +1849,18 @@ func (x *FieldCoordinates) GetTypeName() string { } type FieldSetCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FieldCoordinatesPath []*FieldCoordinates `protobuf:"bytes,1,rep,name=field_coordinates_path,json=fieldCoordinatesPath,proto3" json:"field_coordinates_path,omitempty"` - FieldPath []string `protobuf:"bytes,2,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FieldCoordinatesPath []*FieldCoordinates `protobuf:"bytes,1,rep,name=field_coordinates_path,json=fieldCoordinatesPath,proto3" json:"field_coordinates_path,omitempty"` + FieldPath []string `protobuf:"bytes,2,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldSetCondition) String() string { @@ -1930,7 +1871,7 @@ func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1960,24 +1901,21 @@ func (x *FieldSetCondition) GetFieldPath() []string { } type RequiredField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - SelectionSet string `protobuf:"bytes,3,opt,name=selection_set,json=selectionSet,proto3" json:"selection_set,omitempty"` - DisableEntityResolver bool `protobuf:"varint,4,opt,name=disable_entity_resolver,json=disableEntityResolver,proto3" json:"disable_entity_resolver,omitempty"` - Conditions []*FieldSetCondition `protobuf:"bytes,5,rep,name=conditions,proto3" json:"conditions,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + SelectionSet string `protobuf:"bytes,3,opt,name=selection_set,json=selectionSet,proto3" json:"selection_set,omitempty"` + DisableEntityResolver bool `protobuf:"varint,4,opt,name=disable_entity_resolver,json=disableEntityResolver,proto3" json:"disable_entity_resolver,omitempty"` + Conditions []*FieldSetCondition `protobuf:"bytes,5,rep,name=conditions,proto3" json:"conditions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequiredField) Reset() { *x = RequiredField{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequiredField) String() string { @@ -1988,7 +1926,7 @@ func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2039,21 +1977,18 @@ func (x *RequiredField) GetConditions() []*FieldSetCondition { } type EntityInterfaceConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InterfaceTypeName string `protobuf:"bytes,1,opt,name=interface_type_name,json=interfaceTypeName,proto3" json:"interface_type_name,omitempty"` - ConcreteTypeNames []string `protobuf:"bytes,2,rep,name=concrete_type_names,json=concreteTypeNames,proto3" json:"concrete_type_names,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + InterfaceTypeName string `protobuf:"bytes,1,opt,name=interface_type_name,json=interfaceTypeName,proto3" json:"interface_type_name,omitempty"` + ConcreteTypeNames []string `protobuf:"bytes,2,rep,name=concrete_type_names,json=concreteTypeNames,proto3" json:"concrete_type_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EntityInterfaceConfiguration) String() string { @@ -2064,7 +1999,7 @@ func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2094,16 +2029,13 @@ func (x *EntityInterfaceConfiguration) GetConcreteTypeNames() []string { } type FetchConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // You should either configure url OR a combination of baseURL and path // If url resolves to a non empty string, it takes precedence over baseURL and path // If url resolves to an empty string, the url will be configured as "{{baseURL}}{{path}}" Url *ConfigurationVariable `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` Method HTTPMethod `protobuf:"varint,2,opt,name=method,proto3,enum=wg.cosmo.node.v1.HTTPMethod" json:"method,omitempty"` - Header map[string]*HTTPHeader `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Header map[string]*HTTPHeader `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Body *ConfigurationVariable `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` Query []*URLQueryConfiguration `protobuf:"bytes,5,rep,name=query,proto3" json:"query,omitempty"` // urlEncodeBody defines whether the body should be URL encoded or not @@ -2116,15 +2048,15 @@ type FetchConfiguration struct { BaseUrl *ConfigurationVariable `protobuf:"bytes,9,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"` Path *ConfigurationVariable `protobuf:"bytes,10,opt,name=path,proto3" json:"path,omitempty"` HttpProxyUrl *ConfigurationVariable `protobuf:"bytes,11,opt,name=http_proxy_url,json=httpProxyUrl,proto3,oneof" json:"http_proxy_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FetchConfiguration) String() string { @@ -2135,7 +2067,7 @@ func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2221,22 +2153,19 @@ func (x *FetchConfiguration) GetHttpProxyUrl() *ConfigurationVariable { } type StatusCodeTypeMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatusCode int64 `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` - TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - InjectStatusCodeIntoBody bool `protobuf:"varint,3,opt,name=inject_status_code_into_body,json=injectStatusCodeIntoBody,proto3" json:"inject_status_code_into_body,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + StatusCode int64 `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + InjectStatusCodeIntoBody bool `protobuf:"varint,3,opt,name=inject_status_code_into_body,json=injectStatusCodeIntoBody,proto3" json:"inject_status_code_into_body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StatusCodeTypeMapping) String() string { @@ -2247,7 +2176,7 @@ func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2284,25 +2213,22 @@ func (x *StatusCodeTypeMapping) GetInjectStatusCodeIntoBody() bool { } type DataSourceCustom_GraphQL struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Fetch *FetchConfiguration `protobuf:"bytes,1,opt,name=fetch,proto3" json:"fetch,omitempty"` Subscription *GraphQLSubscriptionConfiguration `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` Federation *GraphQLFederationConfiguration `protobuf:"bytes,3,opt,name=federation,proto3" json:"federation,omitempty"` UpstreamSchema *InternedString `protobuf:"bytes,4,opt,name=upstream_schema,json=upstreamSchema,proto3" json:"upstream_schema,omitempty"` CustomScalarTypeFields []*SingleTypeField `protobuf:"bytes,6,rep,name=custom_scalar_type_fields,json=customScalarTypeFields,proto3" json:"custom_scalar_type_fields,omitempty"` Grpc *GRPCConfiguration `protobuf:"bytes,7,opt,name=grpc,proto3" json:"grpc,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataSourceCustom_GraphQL) String() string { @@ -2313,7 +2239,7 @@ func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2371,22 +2297,19 @@ func (x *DataSourceCustom_GraphQL) GetGrpc() *GRPCConfiguration { } type GRPCConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Mapping *GRPCMapping `protobuf:"bytes,1,opt,name=mapping,proto3" json:"mapping,omitempty"` + ProtoSchema string `protobuf:"bytes,2,opt,name=proto_schema,json=protoSchema,proto3" json:"proto_schema,omitempty"` + Plugin *PluginConfiguration `protobuf:"bytes,3,opt,name=plugin,proto3" json:"plugin,omitempty"` unknownFields protoimpl.UnknownFields - - Mapping *GRPCMapping `protobuf:"bytes,1,opt,name=mapping,proto3" json:"mapping,omitempty"` - ProtoSchema string `protobuf:"bytes,2,opt,name=proto_schema,json=protoSchema,proto3" json:"proto_schema,omitempty"` - Plugin *PluginConfiguration `protobuf:"bytes,3,opt,name=plugin,proto3" json:"plugin,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GRPCConfiguration) String() string { @@ -2397,7 +2320,7 @@ func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2434,21 +2357,18 @@ func (x *GRPCConfiguration) GetPlugin() *PluginConfiguration { } type ImageReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // {organization_id}/{subgraph_id} + Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // v1 unknownFields protoimpl.UnknownFields - - Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // {organization_id}/{subgraph_id} - Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // v1 + sizeCache protoimpl.SizeCache } func (x *ImageReference) Reset() { *x = ImageReference{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImageReference) String() string { @@ -2459,7 +2379,7 @@ func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2489,24 +2409,21 @@ func (x *ImageReference) GetReference() string { } type PluginConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Plugin name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Plugin version Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` ImageReference *ImageReference `protobuf:"bytes,3,opt,name=image_reference,json=imageReference,proto3,oneof" json:"image_reference,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginConfiguration) String() string { @@ -2517,7 +2434,7 @@ func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2554,21 +2471,18 @@ func (x *PluginConfiguration) GetImageReference() *ImageReference { } type SSLConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Whether SSL is enabled - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SSLConfiguration) String() string { @@ -2579,7 +2493,7 @@ func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2603,10 +2517,7 @@ func (x *SSLConfiguration) GetEnabled() bool { // Defines mapping for a gRPC service type GRPCMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Version of the mapping format Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` // The main gRPC service name @@ -2621,15 +2532,15 @@ type GRPCMapping struct { EnumMappings []*EnumMapping `protobuf:"bytes,6,rep,name=enum_mappings,json=enumMappings,proto3" json:"enum_mappings,omitempty"` // Mappings for GraphQL resolve operations to gRPC service methods ResolveMappings []*LookupMapping `protobuf:"bytes,7,rep,name=resolve_mappings,json=resolveMappings,proto3" json:"resolve_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GRPCMapping) String() string { @@ -2640,7 +2551,7 @@ func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2706,10 +2617,7 @@ func (x *GRPCMapping) GetResolveMappings() []*LookupMapping { // Defines mapping for a lookup operation type LookupMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Type of lookup operation Type LookupType `protobuf:"varint,1,opt,name=type,proto3,enum=wg.cosmo.node.v1.LookupType" json:"type,omitempty"` // Mappings for GraphQL type fields to gRPC message fields @@ -2719,16 +2627,16 @@ type LookupMapping struct { // Mapped gRPC request message type name Request string `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` // Mapped gRPC response message type name - Response string `protobuf:"bytes,5,opt,name=response,proto3" json:"response,omitempty"` + Response string `protobuf:"bytes,5,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupMapping) Reset() { *x = LookupMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LookupMapping) String() string { @@ -2739,7 +2647,7 @@ func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2791,23 +2699,20 @@ func (x *LookupMapping) GetResponse() string { // Defines mapping for a lookup field type LookupFieldMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GraphQL type name Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Mapping for the lookup field - FieldMapping *FieldMapping `protobuf:"bytes,2,opt,name=field_mapping,json=fieldMapping,proto3" json:"field_mapping,omitempty"` -} + FieldMapping *FieldMapping `protobuf:"bytes,2,opt,name=field_mapping,json=fieldMapping,proto3" json:"field_mapping,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LookupFieldMapping) String() string { @@ -2818,7 +2723,7 @@ func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2849,10 +2754,7 @@ func (x *LookupFieldMapping) GetFieldMapping() *FieldMapping { // Defines mapping between a GraphQL operation and a gRPC method type OperationMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GraphQL operation type: Query, Mutation, or Subscription Type OperationType `protobuf:"varint,1,opt,name=type,proto3,enum=wg.cosmo.node.v1.OperationType" json:"type,omitempty"` // Original GraphQL field name @@ -2862,16 +2764,16 @@ type OperationMapping struct { // gRPC request message type name Request string `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` // gRPC response message type name - Response string `protobuf:"bytes,5,opt,name=response,proto3" json:"response,omitempty"` + Response string `protobuf:"bytes,5,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OperationMapping) Reset() { *x = OperationMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OperationMapping) String() string { @@ -2882,7 +2784,7 @@ func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2934,10 +2836,7 @@ func (x *OperationMapping) GetResponse() string { // Defines mapping for entity resolution type EntityMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GraphQL type name TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` // Kind of entity mapping: "entity", "requires", or "with_arguments" @@ -2952,15 +2851,15 @@ type EntityMapping struct { Response string `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` // Mappings for required fields RequiredFieldMappings []*RequiredFieldMapping `protobuf:"bytes,7,rep,name=required_field_mappings,json=requiredFieldMappings,proto3" json:"required_field_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityMapping) Reset() { *x = EntityMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EntityMapping) String() string { @@ -2971,7 +2870,7 @@ func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3037,26 +2936,23 @@ func (x *EntityMapping) GetRequiredFieldMappings() []*RequiredFieldMapping { // Defines mapping for required fields type RequiredFieldMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FieldMapping *FieldMapping `protobuf:"bytes,1,opt,name=field_mapping,json=fieldMapping,proto3" json:"field_mapping,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FieldMapping *FieldMapping `protobuf:"bytes,1,opt,name=field_mapping,json=fieldMapping,proto3" json:"field_mapping,omitempty"` // Mapped gRPC method name Rpc string `protobuf:"bytes,2,opt,name=rpc,proto3" json:"rpc,omitempty"` // gRPC request message type name Request string `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` // gRPC response message type name - Response string `protobuf:"bytes,4,opt,name=response,proto3" json:"response,omitempty"` + Response string `protobuf:"bytes,4,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequiredFieldMapping) String() string { @@ -3067,7 +2963,7 @@ func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3112,23 +3008,20 @@ func (x *RequiredFieldMapping) GetResponse() string { // Defines mapping between GraphQL type fields and gRPC message fields type TypeFieldMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GraphQL type name Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Mappings for each field in the type FieldMappings []*FieldMapping `protobuf:"bytes,2,rep,name=field_mappings,json=fieldMappings,proto3" json:"field_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypeFieldMapping) String() string { @@ -3139,7 +3032,7 @@ func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3170,25 +3063,22 @@ func (x *TypeFieldMapping) GetFieldMappings() []*FieldMapping { // Defines mapping for a single field type FieldMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Original GraphQL field name Original string `protobuf:"bytes,1,opt,name=original,proto3" json:"original,omitempty"` // Mapped gRPC field name Mapped string `protobuf:"bytes,2,opt,name=mapped,proto3" json:"mapped,omitempty"` // Mappings for field arguments ArgumentMappings []*ArgumentMapping `protobuf:"bytes,3,rep,name=argument_mappings,json=argumentMappings,proto3" json:"argument_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldMapping) Reset() { *x = FieldMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldMapping) String() string { @@ -3199,7 +3089,7 @@ func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3237,23 +3127,20 @@ func (x *FieldMapping) GetArgumentMappings() []*ArgumentMapping { // Defines mapping for a field argument type ArgumentMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Original GraphQL argument name Original string `protobuf:"bytes,1,opt,name=original,proto3" json:"original,omitempty"` // Mapped gRPC field name - Mapped string `protobuf:"bytes,2,opt,name=mapped,proto3" json:"mapped,omitempty"` + Mapped string `protobuf:"bytes,2,opt,name=mapped,proto3" json:"mapped,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ArgumentMapping) String() string { @@ -3264,7 +3151,7 @@ func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3294,21 +3181,18 @@ func (x *ArgumentMapping) GetMapped() string { } type EnumMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Values []*EnumValueMapping `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` unknownFields protoimpl.UnknownFields - - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Values []*EnumValueMapping `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnumMapping) Reset() { *x = EnumMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumMapping) String() string { @@ -3319,7 +3203,7 @@ func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3349,21 +3233,18 @@ func (x *EnumMapping) GetValues() []*EnumValueMapping { } type EnumValueMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Original string `protobuf:"bytes,1,opt,name=original,proto3" json:"original,omitempty"` + Mapped string `protobuf:"bytes,2,opt,name=mapped,proto3" json:"mapped,omitempty"` unknownFields protoimpl.UnknownFields - - Original string `protobuf:"bytes,1,opt,name=original,proto3" json:"original,omitempty"` - Mapped string `protobuf:"bytes,2,opt,name=mapped,proto3" json:"mapped,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumValueMapping) String() string { @@ -3374,7 +3255,7 @@ func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3404,22 +3285,19 @@ func (x *EnumValueMapping) GetMapped() string { } type NatsStreamConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ConsumerName string `protobuf:"bytes,1,opt,name=consumer_name,json=consumerName,proto3" json:"consumer_name,omitempty"` - StreamName string `protobuf:"bytes,2,opt,name=stream_name,json=streamName,proto3" json:"stream_name,omitempty"` - ConsumerInactiveThreshold int32 `protobuf:"varint,3,opt,name=consumer_inactive_threshold,json=consumerInactiveThreshold,proto3" json:"consumer_inactive_threshold,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ConsumerName string `protobuf:"bytes,1,opt,name=consumer_name,json=consumerName,proto3" json:"consumer_name,omitempty"` + StreamName string `protobuf:"bytes,2,opt,name=stream_name,json=streamName,proto3" json:"stream_name,omitempty"` + ConsumerInactiveThreshold int32 `protobuf:"varint,3,opt,name=consumer_inactive_threshold,json=consumerInactiveThreshold,proto3" json:"consumer_inactive_threshold,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NatsStreamConfiguration) String() string { @@ -3430,7 +3308,7 @@ func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3467,22 +3345,19 @@ func (x *NatsStreamConfiguration) GetConsumerInactiveThreshold() int32 { } type NatsEventConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` EngineEventConfiguration *EngineEventConfiguration `protobuf:"bytes,1,opt,name=engine_event_configuration,json=engineEventConfiguration,proto3" json:"engine_event_configuration,omitempty"` Subjects []string `protobuf:"bytes,2,rep,name=subjects,proto3" json:"subjects,omitempty"` StreamConfiguration *NatsStreamConfiguration `protobuf:"bytes,3,opt,name=stream_configuration,json=streamConfiguration,proto3" json:"stream_configuration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NatsEventConfiguration) String() string { @@ -3493,7 +3368,7 @@ func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3530,21 +3405,18 @@ func (x *NatsEventConfiguration) GetStreamConfiguration() *NatsStreamConfigurati } type KafkaEventConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` EngineEventConfiguration *EngineEventConfiguration `protobuf:"bytes,1,opt,name=engine_event_configuration,json=engineEventConfiguration,proto3" json:"engine_event_configuration,omitempty"` Topics []string `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KafkaEventConfiguration) String() string { @@ -3555,7 +3427,7 @@ func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3585,21 +3457,18 @@ func (x *KafkaEventConfiguration) GetTopics() []string { } type RedisEventConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` EngineEventConfiguration *EngineEventConfiguration `protobuf:"bytes,1,opt,name=engine_event_configuration,json=engineEventConfiguration,proto3" json:"engine_event_configuration,omitempty"` Channels []string `protobuf:"bytes,2,rep,name=channels,proto3" json:"channels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedisEventConfiguration) String() string { @@ -3610,7 +3479,7 @@ func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3640,23 +3509,20 @@ func (x *RedisEventConfiguration) GetChannels() []string { } type EngineEventConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProviderId string `protobuf:"bytes,1,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` + Type EventType `protobuf:"varint,2,opt,name=type,proto3,enum=wg.cosmo.node.v1.EventType" json:"type,omitempty"` + TypeName string `protobuf:"bytes,3,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldName string `protobuf:"bytes,4,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` unknownFields protoimpl.UnknownFields - - ProviderId string `protobuf:"bytes,1,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - Type EventType `protobuf:"varint,2,opt,name=type,proto3,enum=wg.cosmo.node.v1.EventType" json:"type,omitempty"` - TypeName string `protobuf:"bytes,3,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldName string `protobuf:"bytes,4,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EngineEventConfiguration) String() string { @@ -3667,7 +3533,7 @@ func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3711,22 +3577,19 @@ func (x *EngineEventConfiguration) GetFieldName() string { } type DataSourceCustomEvents struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Nats []*NatsEventConfiguration `protobuf:"bytes,1,rep,name=nats,proto3" json:"nats,omitempty"` + Kafka []*KafkaEventConfiguration `protobuf:"bytes,2,rep,name=kafka,proto3" json:"kafka,omitempty"` + Redis []*RedisEventConfiguration `protobuf:"bytes,3,rep,name=redis,proto3" json:"redis,omitempty"` unknownFields protoimpl.UnknownFields - - Nats []*NatsEventConfiguration `protobuf:"bytes,1,rep,name=nats,proto3" json:"nats,omitempty"` - Kafka []*KafkaEventConfiguration `protobuf:"bytes,2,rep,name=kafka,proto3" json:"kafka,omitempty"` - Redis []*RedisEventConfiguration `protobuf:"bytes,3,rep,name=redis,proto3" json:"redis,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataSourceCustomEvents) String() string { @@ -3737,7 +3600,7 @@ func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3774,20 +3637,17 @@ func (x *DataSourceCustomEvents) GetRedis() []*RedisEventConfiguration { } type DataSourceCustom_Static struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Data *ConfigurationVariable `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields - - Data *ConfigurationVariable `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DataSourceCustom_Static) String() string { @@ -3798,7 +3658,7 @@ func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3821,24 +3681,21 @@ func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { } type ConfigurationVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Kind ConfigurationVariableKind `protobuf:"varint,1,opt,name=kind,proto3,enum=wg.cosmo.node.v1.ConfigurationVariableKind" json:"kind,omitempty"` StaticVariableContent string `protobuf:"bytes,2,opt,name=static_variable_content,json=staticVariableContent,proto3" json:"static_variable_content,omitempty"` EnvironmentVariableName string `protobuf:"bytes,3,opt,name=environment_variable_name,json=environmentVariableName,proto3" json:"environment_variable_name,omitempty"` EnvironmentVariableDefaultValue string `protobuf:"bytes,4,opt,name=environment_variable_default_value,json=environmentVariableDefaultValue,proto3" json:"environment_variable_default_value,omitempty"` PlaceholderVariableName string `protobuf:"bytes,5,opt,name=placeholder_variable_name,json=placeholderVariableName,proto3" json:"placeholder_variable_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigurationVariable) String() string { @@ -3849,7 +3706,7 @@ func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3900,21 +3757,18 @@ func (x *ConfigurationVariable) GetPlaceholderVariableName() string { } type DirectiveConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + DirectiveName string `protobuf:"bytes,1,opt,name=directive_name,json=directiveName,proto3" json:"directive_name,omitempty"` + RenameTo string `protobuf:"bytes,2,opt,name=rename_to,json=renameTo,proto3" json:"rename_to,omitempty"` unknownFields protoimpl.UnknownFields - - DirectiveName string `protobuf:"bytes,1,opt,name=directive_name,json=directiveName,proto3" json:"directive_name,omitempty"` - RenameTo string `protobuf:"bytes,2,opt,name=rename_to,json=renameTo,proto3" json:"rename_to,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DirectiveConfiguration) String() string { @@ -3925,7 +3779,7 @@ func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3955,21 +3809,18 @@ func (x *DirectiveConfiguration) GetRenameTo() string { } type URLQueryConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *URLQueryConfiguration) String() string { @@ -3980,7 +3831,7 @@ func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4010,20 +3861,17 @@ func (x *URLQueryConfiguration) GetValue() string { } type HTTPHeader struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Values []*ConfigurationVariable `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` unknownFields protoimpl.UnknownFields - - Values []*ConfigurationVariable `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HTTPHeader) String() string { @@ -4034,7 +3882,7 @@ func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4057,22 +3905,19 @@ func (x *HTTPHeader) GetValues() []*ConfigurationVariable { } type MTLSConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Key *ConfigurationVariable `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Cert *ConfigurationVariable `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` InsecureSkipVerify bool `protobuf:"varint,3,opt,name=insecureSkipVerify,proto3" json:"insecureSkipVerify,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MTLSConfiguration) String() string { @@ -4083,7 +3928,7 @@ func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4120,25 +3965,22 @@ func (x *MTLSConfiguration) GetInsecureSkipVerify() bool { } type GraphQLSubscriptionConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Url *ConfigurationVariable `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` // @deprecated - Kept for backwards compatibility when decoding. Use protocol instead. UseSSE *bool `protobuf:"varint,3,opt,name=useSSE,proto3,oneof" json:"useSSE,omitempty"` Protocol *common.GraphQLSubscriptionProtocol `protobuf:"varint,4,opt,name=protocol,proto3,enum=wg.cosmo.common.GraphQLSubscriptionProtocol,oneof" json:"protocol,omitempty"` WebsocketSubprotocol *common.GraphQLWebsocketSubprotocol `protobuf:"varint,5,opt,name=websocketSubprotocol,proto3,enum=wg.cosmo.common.GraphQLWebsocketSubprotocol,oneof" json:"websocketSubprotocol,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphQLSubscriptionConfiguration) String() string { @@ -4149,7 +3991,7 @@ func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4200,21 +4042,18 @@ func (x *GraphQLSubscriptionConfiguration) GetWebsocketSubprotocol() common.Grap } type GraphQLFederationConfiguration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + ServiceSdl string `protobuf:"bytes,2,opt,name=serviceSdl,proto3" json:"serviceSdl,omitempty"` unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - ServiceSdl string `protobuf:"bytes,2,opt,name=serviceSdl,proto3" json:"serviceSdl,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphQLFederationConfiguration) String() string { @@ -4225,7 +4064,7 @@ func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4255,21 +4094,18 @@ func (x *GraphQLFederationConfiguration) GetServiceSdl() string { } type InternedString struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // key to index into EngineConfiguration.stringStorage - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *InternedString) Reset() { *x = InternedString{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *InternedString) String() string { @@ -4280,7 +4116,7 @@ func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4303,21 +4139,18 @@ func (x *InternedString) GetKey() string { } type SingleTypeField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` unknownFields protoimpl.UnknownFields - - TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SingleTypeField) String() string { @@ -4328,7 +4161,7 @@ func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4358,21 +4191,18 @@ func (x *SingleTypeField) GetFieldName() string { } type SubscriptionFieldCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FieldPath []string `protobuf:"bytes,1,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + Json string `protobuf:"bytes,2,opt,name=json,proto3" json:"json,omitempty"` unknownFields protoimpl.UnknownFields - - FieldPath []string `protobuf:"bytes,1,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` - Json string `protobuf:"bytes,2,opt,name=json,proto3" json:"json,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscriptionFieldCondition) String() string { @@ -4383,7 +4213,7 @@ func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4413,23 +4243,20 @@ func (x *SubscriptionFieldCondition) GetJson() string { } type SubscriptionFilterCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + And []*SubscriptionFilterCondition `protobuf:"bytes,1,rep,name=and,proto3" json:"and,omitempty"` + In *SubscriptionFieldCondition `protobuf:"bytes,2,opt,name=in,proto3,oneof" json:"in,omitempty"` + Not *SubscriptionFilterCondition `protobuf:"bytes,3,opt,name=not,proto3,oneof" json:"not,omitempty"` + Or []*SubscriptionFilterCondition `protobuf:"bytes,4,rep,name=or,proto3" json:"or,omitempty"` unknownFields protoimpl.UnknownFields - - And []*SubscriptionFilterCondition `protobuf:"bytes,1,rep,name=and,proto3" json:"and,omitempty"` - In *SubscriptionFieldCondition `protobuf:"bytes,2,opt,name=in,proto3,oneof" json:"in,omitempty"` - Not *SubscriptionFilterCondition `protobuf:"bytes,3,opt,name=not,proto3,oneof" json:"not,omitempty"` - Or []*SubscriptionFilterCondition `protobuf:"bytes,4,rep,name=or,proto3" json:"or,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscriptionFilterCondition) String() string { @@ -4440,7 +4267,7 @@ func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4484,20 +4311,17 @@ func (x *SubscriptionFilterCondition) GetOr() []*SubscriptionFilterCondition { } type CacheWarmerOperations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Operations []*Operation `protobuf:"bytes,1,rep,name=operations,proto3" json:"operations,omitempty"` unknownFields protoimpl.UnknownFields - - Operations []*Operation `protobuf:"bytes,1,rep,name=operations,proto3" json:"operations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CacheWarmerOperations) String() string { @@ -4508,7 +4332,7 @@ func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4531,21 +4355,18 @@ func (x *CacheWarmerOperations) GetOperations() []*Operation { } type Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Request *OperationRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Client *ClientInfo `protobuf:"bytes,2,opt,name=client,proto3" json:"client,omitempty"` unknownFields protoimpl.UnknownFields - - Request *OperationRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` - Client *ClientInfo `protobuf:"bytes,2,opt,name=client,proto3" json:"client,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Operation) Reset() { *x = Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Operation) String() string { @@ -4556,7 +4377,7 @@ func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4586,22 +4407,19 @@ func (x *Operation) GetClient() *ClientInfo { } type OperationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + OperationName string `protobuf:"bytes,1,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + Extensions *Extension `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` unknownFields protoimpl.UnknownFields - - OperationName string `protobuf:"bytes,1,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - Extensions *Extension `protobuf:"bytes,3,opt,name=extensions,proto3" json:"extensions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OperationRequest) Reset() { *x = OperationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OperationRequest) String() string { @@ -4612,7 +4430,7 @@ func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4649,20 +4467,17 @@ func (x *OperationRequest) GetExtensions() *Extension { } type Extension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PersistedQuery *PersistedQuery `protobuf:"bytes,1,opt,name=persisted_query,json=persistedQuery,proto3" json:"persisted_query,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PersistedQuery *PersistedQuery `protobuf:"bytes,1,opt,name=persisted_query,json=persistedQuery,proto3" json:"persisted_query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Extension) Reset() { *x = Extension{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extension) String() string { @@ -4673,7 +4488,7 @@ func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4696,21 +4511,18 @@ func (x *Extension) GetPersistedQuery() *PersistedQuery { } type PersistedQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Sha256Hash string `protobuf:"bytes,1,opt,name=sha256_hash,json=sha256Hash,proto3" json:"sha256_hash,omitempty"` + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Sha256Hash string `protobuf:"bytes,1,opt,name=sha256_hash,json=sha256Hash,proto3" json:"sha256_hash,omitempty"` - Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PersistedQuery) String() string { @@ -4721,7 +4533,7 @@ func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4751,21 +4563,18 @@ func (x *PersistedQuery) GetVersion() int32 { } type ClientInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientInfo) Reset() { *x = ClientInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientInfo) String() string { @@ -4776,7 +4585,7 @@ func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4807,937 +4616,421 @@ func (x *ClientInfo) GetVersion() string { var File_wg_cosmo_node_v1_node_proto protoreflect.FileDescriptor -var file_wg_cosmo_node_v1_node_proto_rawDesc = []byte{ - 0x0a, 0x1b, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, - 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x1a, - 0x1c, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4f, 0x0a, - 0x08, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x22, 0xb4, - 0x02, 0x0a, 0x21, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x62, 0x79, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, - 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7e, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x01, 0x0a, 0x20, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0d, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x38, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0xe8, 0x02, 0x0a, 0x0c, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0d, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x6a, 0x0a, 0x14, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x48, 0x00, - 0x52, 0x12, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0x3e, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x46, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, - 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x28, - 0x0a, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x6c, - 0x66, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, - 0x00, 0x52, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfc, 0x04, 0x0a, 0x13, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, - 0x75, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x66, 0x0a, 0x19, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x57, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x54, - 0x0a, 0x13, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x12, 0x74, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x13, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x1a, 0x40, - 0x0a, 0x12, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xce, 0x08, 0x0a, 0x17, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x0a, - 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x09, 0x72, - 0x6f, 0x6f, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0a, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x1e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x72, - 0x6f, 0x6d, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, - 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, - 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x52, 0x0d, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x12, 0x4e, 0x0a, - 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x48, 0x0a, - 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x33, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x04, - 0x6b, 0x65, 0x79, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x4d, - 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x5b, 0x0a, - 0x11, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x11, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x63, 0x6f, 0x73, 0x74, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x04, 0x0a, 0x11, - 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x4f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, - 0x57, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x74, 0x79, 0x70, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x7f, 0x0a, 0x1a, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x18, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x54, 0x79, 0x70, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xae, 0x02, 0x0a, 0x18, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, - 0x00, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x10, - 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x41, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x1a, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x75, - 0x6d, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6c, - 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6c, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x41, 0x72, - 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x7a, 0x65, 0x64, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x69, 0x7a, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x1c, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x69, 0x6e, - 0x67, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x01, 0x52, 0x19, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x4f, 0x6e, 0x65, 0x53, 0x6c, - 0x69, 0x63, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x6f, 0x6e, - 0x65, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x22, 0x6e, 0x0a, 0x15, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x41, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x38, 0x0a, 0x06, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x41, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x22, 0xef, 0x01, 0x0a, - 0x1a, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x17, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x5f, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x18, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x4f, 0x72, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x79, 0x4f, 0x72, 0x22, 0xbb, - 0x03, 0x0a, 0x12, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x60, 0x0a, 0x17, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x1b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x1d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x11, - 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x09, - 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, - 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x73, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x1d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x11, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x16, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x52, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, - 0x74, 0x68, 0x22, 0xed, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x43, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x1c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x72, 0x65, 0x74, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x72, 0x65, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x22, 0xed, 0x05, 0x0a, 0x12, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x06, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x52, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x72, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, - 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x72, 0x6c, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x37, 0x0a, 0x04, 0x6d, 0x74, 0x6c, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x54, 0x4c, 0x53, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6d, 0x74, 0x6c, - 0x73, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x61, - 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x52, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x1a, 0x57, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x75, - 0x72, 0x6c, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x6e, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x18, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x74, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xe2, 0x03, 0x0a, 0x18, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x12, 0x3a, 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x12, 0x56, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0a, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, - 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x16, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x22, - 0xae, 0x01, 0x0a, 0x11, 0x47, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x21, - 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x22, 0x4e, 0x0a, 0x0e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x10, 0x53, 0x53, - 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc2, 0x03, 0x0a, 0x0b, 0x47, 0x52, 0x50, - 0x43, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x12, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x48, 0x0a, 0x0f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x13, 0x74, 0x79, 0x70, - 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x74, 0x79, 0x70, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x42, 0x0a, - 0x0d, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x65, 0x6e, 0x75, 0x6d, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xd6, 0x01, - 0x0a, 0x0d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, - 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, - 0x0d, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x10, - 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x70, 0x63, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x43, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0xb1, 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x70, - 0x70, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x70, 0x63, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, - 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, - 0x43, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x72, 0x70, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x10, - 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x0c, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x70, 0x70, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, - 0x12, 0x4e, 0x0a, 0x11, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x10, - 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, - 0x22, 0x45, 0x0a, 0x0f, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, - 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x22, 0x5d, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x22, 0x9f, - 0x01, 0x0a, 0x17, 0x4e, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x49, - 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x22, 0xfc, 0x01, 0x0a, 0x16, 0x4e, 0x61, 0x74, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1a, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x65, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x12, 0x5c, 0x0a, 0x14, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x9b, 0x01, 0x0a, 0x17, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1a, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x65, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x22, 0x9f, 0x01, - 0x0a, 0x17, 0x52, 0x65, 0x64, 0x69, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1a, 0x65, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, - 0xa8, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x16, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x74, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, - 0x61, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x6b, - 0x61, 0x66, 0x6b, 0x61, 0x12, 0x3f, 0x0a, 0x05, 0x72, 0x65, 0x64, 0x69, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, - 0x72, 0x65, 0x64, 0x69, 0x73, 0x22, 0x56, 0x0a, 0x17, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd5, 0x02, - 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, - 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x22, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x16, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x54, 0x6f, 0x22, 0x41, 0x0a, 0x15, 0x55, 0x52, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4d, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x11, 0x4d, 0x54, 0x4c, 0x53, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x63, - 0x65, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, - 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x22, 0xfb, 0x02, 0x0a, 0x20, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x39, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x45, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x45, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x01, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x14, 0x77, 0x65, 0x62, - 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, - 0x4c, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x02, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x75, 0x73, 0x65, 0x53, 0x53, 0x45, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x77, 0x65, 0x62, - 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x22, 0x5a, 0x0a, 0x1e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x64, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x64, 0x6c, 0x22, 0x22, 0x0a, - 0x0e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0x4d, 0x0a, 0x0f, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x4f, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6a, 0x73, 0x6f, - 0x6e, 0x22, 0xb5, 0x02, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x3f, 0x0a, 0x03, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x61, - 0x6e, 0x64, 0x12, 0x41, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x02, - 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x03, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x01, 0x52, 0x03, 0x6e, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x02, 0x6f, - 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6e, 0x6f, 0x74, 0x22, 0x54, 0x0a, 0x15, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x7f, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x07, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x12, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x56, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0f, - 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x4b, 0x0a, 0x0e, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, - 0x32, 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2a, 0x82, 0x01, 0x0a, 0x1b, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x24, 0x0a, - 0x20, 0x52, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, - 0x5f, 0x41, 0x53, 0x5f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, - 0x45, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x52, - 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x5f, 0x41, 0x52, 0x52, 0x41, 0x59, 0x5f, - 0x43, 0x53, 0x56, 0x10, 0x02, 0x2a, 0x36, 0x0a, 0x0e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x2a, 0x35, 0x0a, - 0x0e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, - 0x52, 0x41, 0x50, 0x48, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x53, - 0x55, 0x42, 0x10, 0x02, 0x2a, 0x5c, 0x0a, 0x0a, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x17, 0x0a, 0x13, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x4c, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x4f, 0x4b, - 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, - 0x10, 0x02, 0x2a, 0x87, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x01, 0x12, 0x1b, - 0x0a, 0x17, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x55, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, - 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0x34, 0x0a, 0x09, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x55, 0x42, - 0x4c, 0x49, 0x53, 0x48, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, - 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, - 0x10, 0x02, 0x2a, 0x86, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, - 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x4e, 0x56, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, 0x4f, 0x4c, 0x44, - 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x2a, 0x41, 0x0a, 0x0a, 0x48, - 0x54, 0x54, 0x50, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, - 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, - 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x04, 0x32, 0x6e, - 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, - 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xcf, - 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x77, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6e, 0x6f, 0x64, 0x65, 0x76, 0x31, 0xa2, - 0x02, 0x03, 0x57, 0x43, 0x4e, 0xaa, 0x02, 0x10, 0x57, 0x67, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x57, 0x67, 0x5c, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x57, 0x67, - 0x5c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x57, 0x67, 0x3a, - 0x3a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + + "\n" + + "\x1bwg/cosmo/node/v1/node.proto\x12\x10wg.cosmo.node.v1\x1a\x1cwg/cosmo/common/common.proto\"O\n" + + "\bSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1f\n" + + "\vrouting_url\x18\x03 \x01(\tR\n" + + "routingUrl\"\xb4\x02\n" + + "!FeatureFlagRouterExecutionConfigs\x12\x8e\x01\n" + + "\x1bconfig_by_feature_flag_name\x18\x01 \x03(\v2P.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntryR\x17configByFeatureFlagName\x1a~\n" + + "\x1cConfigByFeatureFlagNameEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12H\n" + + "\x05value\x18\x02 \x01(\v22.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigR\x05value:\x028\x01\"\xc2\x01\n" + + " FeatureFlagRouterExecutionConfig\x12J\n" + + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\"\xe8\x02\n" + + "\fRouterConfig\x12J\n" + + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\x12j\n" + + "\x14feature_flag_configs\x18\x04 \x01(\v23.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigsH\x00R\x12featureFlagConfigs\x88\x01\x01\x123\n" + + "\x15compatibility_version\x18\x05 \x01(\tR\x14compatibilityVersionB\x17\n" + + "\x15_feature_flag_configs\"j\n" + + "\bResponse\x123\n" + + "\x04code\x18\x01 \x01(\x0e2\x1f.wg.cosmo.common.EnumStatusCodeR\x04code\x12\x1d\n" + + "\adetails\x18\x02 \x01(\tH\x00R\adetails\x88\x01\x01B\n" + + "\n" + + "\b_details\">\n" + + "\x0eResponseStatus\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"\x84\x01\n" + + "\x10RegistrationInfo\x12F\n" + + "\x0eaccount_limits\x18\x01 \x01(\v2\x1f.wg.cosmo.node.v1.AccountLimitsR\raccountLimits\x12(\n" + + "\x10graph_public_key\x18\x02 \x01(\tR\x0egraphPublicKey\"?\n" + + "\rAccountLimits\x12.\n" + + "\x13trace_sampling_rate\x18\x01 \x01(\x02R\x11traceSamplingRate\"\x15\n" + + "\x13SelfRegisterRequest\"\xb8\x01\n" + + "\x14SelfRegisterResponse\x126\n" + + "\bresponse\x18\x01 \x01(\v2\x1a.wg.cosmo.node.v1.ResponseR\bresponse\x12S\n" + + "\x10registrationInfo\x18\x02 \x01(\v2\".wg.cosmo.node.v1.RegistrationInfoH\x00R\x10registrationInfo\x88\x01\x01B\x13\n" + + "\x11_registrationInfo\"\xfc\x04\n" + + "\x13EngineConfiguration\x122\n" + + "\x14defaultFlushInterval\x18\x01 \x01(\x03R\x14defaultFlushInterval\x12f\n" + + "\x19datasource_configurations\x18\x02 \x03(\v2).wg.cosmo.node.v1.DataSourceConfigurationR\x18datasourceConfigurations\x12W\n" + + "\x14field_configurations\x18\x03 \x03(\v2$.wg.cosmo.node.v1.FieldConfigurationR\x13fieldConfigurations\x12$\n" + + "\rgraphqlSchema\x18\x04 \x01(\tR\rgraphqlSchema\x12T\n" + + "\x13type_configurations\x18\x05 \x03(\v2#.wg.cosmo.node.v1.TypeConfigurationR\x12typeConfigurations\x12_\n" + + "\x0estring_storage\x18\x06 \x03(\v28.wg.cosmo.node.v1.EngineConfiguration.StringStorageEntryR\rstringStorage\x127\n" + + "\x15graphql_client_schema\x18\a \x01(\tH\x00R\x13graphqlClientSchema\x88\x01\x01\x1a@\n" + + "\x12StringStorageEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" + + "\x16_graphql_client_schema\"\xce\b\n" + + "\x17DataSourceConfiguration\x124\n" + + "\x04kind\x18\x01 \x01(\x0e2 .wg.cosmo.node.v1.DataSourceKindR\x04kind\x12:\n" + + "\n" + + "root_nodes\x18\x02 \x03(\v2\x1b.wg.cosmo.node.v1.TypeFieldR\trootNodes\x12<\n" + + "\vchild_nodes\x18\x03 \x03(\v2\x1b.wg.cosmo.node.v1.TypeFieldR\n" + + "childNodes\x12B\n" + + "\x1eoverride_field_path_from_alias\x18\x04 \x01(\bR\x1aoverrideFieldPathFromAlias\x12Q\n" + + "\x0ecustom_graphql\x18\x05 \x01(\v2*.wg.cosmo.node.v1.DataSourceCustom_GraphQLR\rcustomGraphql\x12N\n" + + "\rcustom_static\x18\x06 \x01(\v2).wg.cosmo.node.v1.DataSourceCustom_StaticR\fcustomStatic\x12H\n" + + "\n" + + "directives\x18\a \x03(\v2(.wg.cosmo.node.v1.DirectiveConfigurationR\n" + + "directives\x126\n" + + "\x17request_timeout_seconds\x18\b \x01(\x03R\x15requestTimeoutSeconds\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x123\n" + + "\x04keys\x18\n" + + " \x03(\v2\x1f.wg.cosmo.node.v1.RequiredFieldR\x04keys\x12;\n" + + "\bprovides\x18\v \x03(\v2\x1f.wg.cosmo.node.v1.RequiredFieldR\bprovides\x12;\n" + + "\brequires\x18\f \x03(\v2\x1f.wg.cosmo.node.v1.RequiredFieldR\brequires\x12M\n" + + "\rcustom_events\x18\r \x01(\v2(.wg.cosmo.node.v1.DataSourceCustomEventsR\fcustomEvents\x12[\n" + + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\"\x98\x04\n" + + "\x11CostConfiguration\x12O\n" + + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + + "\n" + + "list_sizes\x18\x02 \x03(\v2,.wg.cosmo.node.v1.FieldListSizeConfigurationR\tlistSizes\x12W\n" + + "\ftype_weights\x18\x03 \x03(\v24.wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntryR\vtypeWeights\x12\x7f\n" + + "\x1adirective_argument_weights\x18\x04 \x03(\v2A.wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntryR\x18directiveArgumentWeights\x1a>\n" + + "\x10TypeWeightsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aK\n" + + "\x1dDirectiveArgumentWeightsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\"\x84\x04\n" + + "\x18FieldWeightConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x02 \x01(\tR\tfieldName\x12\x1b\n" + + "\x06weight\x18\x03 \x01(\x05H\x00R\x06weight\x88\x01\x01\x12j\n" + + "\x10argument_weights\x18\x04 \x03(\v2?.wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntryR\x0fargumentWeights\x12\x86\x01\n" + + "\x1adirective_argument_weights\x18\x05 \x03(\v2H.wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntryR\x18directiveArgumentWeights\x1aB\n" + + "\x14ArgumentWeightsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aK\n" + + "\x1dDirectiveArgumentWeightsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01B\t\n" + + "\a_weight\"\xc8\x02\n" + + "\x1aFieldListSizeConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x02 \x01(\tR\tfieldName\x12&\n" + + "\fassumed_size\x18\x03 \x01(\x05H\x00R\vassumedSize\x88\x01\x01\x12+\n" + + "\x11slicing_arguments\x18\x04 \x03(\tR\x10slicingArguments\x12!\n" + + "\fsized_fields\x18\x05 \x03(\tR\vsizedFields\x12D\n" + + "\x1crequire_one_slicing_argument\x18\x06 \x01(\bH\x01R\x19requireOneSlicingArgument\x88\x01\x01B\x0f\n" + + "\r_assumed_sizeB\x1f\n" + + "\x1d_require_one_slicing_argument\"n\n" + + "\x15ArgumentConfiguration\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12A\n" + + "\vsource_type\x18\x02 \x01(\x0e2 .wg.cosmo.node.v1.ArgumentSourceR\n" + + "sourceType\"8\n" + + "\x06Scopes\x12.\n" + + "\x13required_and_scopes\x18\x01 \x03(\tR\x11requiredAndScopes\"\xef\x01\n" + + "\x1aAuthorizationConfiguration\x127\n" + + "\x17requires_authentication\x18\x01 \x01(\bR\x16requiresAuthentication\x12F\n" + + "\x12required_or_scopes\x18\x02 \x03(\v2\x18.wg.cosmo.node.v1.ScopesR\x10requiredOrScopes\x12P\n" + + "\x18required_or_scopes_by_or\x18\x03 \x03(\v2\x18.wg.cosmo.node.v1.ScopesR\x14requiredOrScopesByOr\"\xbb\x03\n" + + "\x12FieldConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x02 \x01(\tR\tfieldName\x12`\n" + + "\x17arguments_configuration\x18\x03 \x03(\v2'.wg.cosmo.node.v1.ArgumentConfigurationR\x16argumentsConfiguration\x12m\n" + + "\x1bauthorization_configuration\x18\x04 \x01(\v2,.wg.cosmo.node.v1.AuthorizationConfigurationR\x1aauthorizationConfiguration\x12v\n" + + "\x1dsubscription_filter_condition\x18\x05 \x01(\v2-.wg.cosmo.node.v1.SubscriptionFilterConditionH\x00R\x1bsubscriptionFilterCondition\x88\x01\x01B \n" + + "\x1e_subscription_filter_condition\"M\n" + + "\x11TypeConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1b\n" + + "\trename_to\x18\x02 \x01(\tR\brenameTo\"\xc5\x01\n" + + "\tTypeField\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1f\n" + + "\vfield_names\x18\x02 \x03(\tR\n" + + "fieldNames\x120\n" + + "\x14external_field_names\x18\x03 \x03(\tR\x12externalFieldNames\x12H\n" + + "!require_fetch_reasons_field_names\x18\x04 \x03(\tR\x1drequireFetchReasonsFieldNames\"N\n" + + "\x10FieldCoordinates\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + + "\ttype_name\x18\x02 \x01(\tR\btypeName\"\x8c\x01\n" + + "\x11FieldSetCondition\x12X\n" + + "\x16field_coordinates_path\x18\x01 \x03(\v2\".wg.cosmo.node.v1.FieldCoordinatesR\x14fieldCoordinatesPath\x12\x1d\n" + + "\n" + + "field_path\x18\x02 \x03(\tR\tfieldPath\"\xed\x01\n" + + "\rRequiredField\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x02 \x01(\tR\tfieldName\x12#\n" + + "\rselection_set\x18\x03 \x01(\tR\fselectionSet\x126\n" + + "\x17disable_entity_resolver\x18\x04 \x01(\bR\x15disableEntityResolver\x12C\n" + + "\n" + + "conditions\x18\x05 \x03(\v2#.wg.cosmo.node.v1.FieldSetConditionR\n" + + "conditions\"~\n" + + "\x1cEntityInterfaceConfiguration\x12.\n" + + "\x13interface_type_name\x18\x01 \x01(\tR\x11interfaceTypeName\x12.\n" + + "\x13concrete_type_names\x18\x02 \x03(\tR\x11concreteTypeNames\"\xed\x05\n" + + "\x12FetchConfiguration\x129\n" + + "\x03url\x18\x01 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x03url\x124\n" + + "\x06method\x18\x02 \x01(\x0e2\x1c.wg.cosmo.node.v1.HTTPMethodR\x06method\x12H\n" + + "\x06header\x18\x03 \x03(\v20.wg.cosmo.node.v1.FetchConfiguration.HeaderEntryR\x06header\x12;\n" + + "\x04body\x18\x04 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x04body\x12=\n" + + "\x05query\x18\x05 \x03(\v2'.wg.cosmo.node.v1.URLQueryConfigurationR\x05query\x12&\n" + + "\x0furl_encode_body\x18\a \x01(\bR\rurlEncodeBody\x127\n" + + "\x04mtls\x18\b \x01(\v2#.wg.cosmo.node.v1.MTLSConfigurationR\x04mtls\x12B\n" + + "\bbase_url\x18\t \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\abaseUrl\x12;\n" + + "\x04path\x18\n" + + " \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x04path\x12R\n" + + "\x0ehttp_proxy_url\x18\v \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableH\x00R\fhttpProxyUrl\x88\x01\x01\x1aW\n" + + "\vHeaderEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x122\n" + + "\x05value\x18\x02 \x01(\v2\x1c.wg.cosmo.node.v1.HTTPHeaderR\x05value:\x028\x01B\x11\n" + + "\x0f_http_proxy_url\"\x95\x01\n" + + "\x15StatusCodeTypeMapping\x12\x1f\n" + + "\vstatus_code\x18\x01 \x01(\x03R\n" + + "statusCode\x12\x1b\n" + + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12>\n" + + "\x1cinject_status_code_into_body\x18\x03 \x01(\bR\x18injectStatusCodeIntoBody\"\xe2\x03\n" + + "\x18DataSourceCustom_GraphQL\x12:\n" + + "\x05fetch\x18\x01 \x01(\v2$.wg.cosmo.node.v1.FetchConfigurationR\x05fetch\x12V\n" + + "\fsubscription\x18\x02 \x01(\v22.wg.cosmo.node.v1.GraphQLSubscriptionConfigurationR\fsubscription\x12P\n" + + "\n" + + "federation\x18\x03 \x01(\v20.wg.cosmo.node.v1.GraphQLFederationConfigurationR\n" + + "federation\x12I\n" + + "\x0fupstream_schema\x18\x04 \x01(\v2 .wg.cosmo.node.v1.InternedStringR\x0eupstreamSchema\x12\\\n" + + "\x19custom_scalar_type_fields\x18\x06 \x03(\v2!.wg.cosmo.node.v1.SingleTypeFieldR\x16customScalarTypeFields\x127\n" + + "\x04grpc\x18\a \x01(\v2#.wg.cosmo.node.v1.GRPCConfigurationR\x04grpc\"\xae\x01\n" + + "\x11GRPCConfiguration\x127\n" + + "\amapping\x18\x01 \x01(\v2\x1d.wg.cosmo.node.v1.GRPCMappingR\amapping\x12!\n" + + "\fproto_schema\x18\x02 \x01(\tR\vprotoSchema\x12=\n" + + "\x06plugin\x18\x03 \x01(\v2%.wg.cosmo.node.v1.PluginConfigurationR\x06plugin\"N\n" + + "\x0eImageReference\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x1c\n" + + "\treference\x18\x02 \x01(\tR\treference\"\xa7\x01\n" + + "\x13PluginConfiguration\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12N\n" + + "\x0fimage_reference\x18\x03 \x01(\v2 .wg.cosmo.node.v1.ImageReferenceH\x00R\x0eimageReference\x88\x01\x01B\x12\n" + + "\x10_image_reference\",\n" + + "\x10SSLConfiguration\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\"\xc2\x03\n" + + "\vGRPCMapping\x12\x18\n" + + "\aversion\x18\x01 \x01(\x05R\aversion\x12\x18\n" + + "\aservice\x18\x02 \x01(\tR\aservice\x12Q\n" + + "\x12operation_mappings\x18\x03 \x03(\v2\".wg.cosmo.node.v1.OperationMappingR\x11operationMappings\x12H\n" + + "\x0fentity_mappings\x18\x04 \x03(\v2\x1f.wg.cosmo.node.v1.EntityMappingR\x0eentityMappings\x12R\n" + + "\x13type_field_mappings\x18\x05 \x03(\v2\".wg.cosmo.node.v1.TypeFieldMappingR\x11typeFieldMappings\x12B\n" + + "\renum_mappings\x18\x06 \x03(\v2\x1d.wg.cosmo.node.v1.EnumMappingR\fenumMappings\x12J\n" + + "\x10resolve_mappings\x18\a \x03(\v2\x1f.wg.cosmo.node.v1.LookupMappingR\x0fresolveMappings\"\xd6\x01\n" + + "\rLookupMapping\x120\n" + + "\x04type\x18\x01 \x01(\x0e2\x1c.wg.cosmo.node.v1.LookupTypeR\x04type\x12K\n" + + "\x0elookup_mapping\x18\x02 \x01(\v2$.wg.cosmo.node.v1.LookupFieldMappingR\rlookupMapping\x12\x10\n" + + "\x03rpc\x18\x03 \x01(\tR\x03rpc\x12\x18\n" + + "\arequest\x18\x04 \x01(\tR\arequest\x12\x1a\n" + + "\bresponse\x18\x05 \x01(\tR\bresponse\"m\n" + + "\x12LookupFieldMapping\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12C\n" + + "\rfield_mapping\x18\x02 \x01(\v2\x1e.wg.cosmo.node.v1.FieldMappingR\ffieldMapping\"\xb1\x01\n" + + "\x10OperationMapping\x123\n" + + "\x04type\x18\x01 \x01(\x0e2\x1f.wg.cosmo.node.v1.OperationTypeR\x04type\x12\x1a\n" + + "\boriginal\x18\x02 \x01(\tR\boriginal\x12\x16\n" + + "\x06mapped\x18\x03 \x01(\tR\x06mapped\x12\x18\n" + + "\arequest\x18\x04 \x01(\tR\arequest\x12\x1a\n" + + "\bresponse\x18\x05 \x01(\tR\bresponse\"\xfa\x01\n" + + "\rEntityMapping\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x12\n" + + "\x04kind\x18\x02 \x01(\tR\x04kind\x12\x10\n" + + "\x03key\x18\x03 \x01(\tR\x03key\x12\x10\n" + + "\x03rpc\x18\x04 \x01(\tR\x03rpc\x12\x18\n" + + "\arequest\x18\x05 \x01(\tR\arequest\x12\x1a\n" + + "\bresponse\x18\x06 \x01(\tR\bresponse\x12^\n" + + "\x17required_field_mappings\x18\a \x03(\v2&.wg.cosmo.node.v1.RequiredFieldMappingR\x15requiredFieldMappings\"\xa3\x01\n" + + "\x14RequiredFieldMapping\x12C\n" + + "\rfield_mapping\x18\x01 \x01(\v2\x1e.wg.cosmo.node.v1.FieldMappingR\ffieldMapping\x12\x10\n" + + "\x03rpc\x18\x02 \x01(\tR\x03rpc\x12\x18\n" + + "\arequest\x18\x03 \x01(\tR\arequest\x12\x1a\n" + + "\bresponse\x18\x04 \x01(\tR\bresponse\"m\n" + + "\x10TypeFieldMapping\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12E\n" + + "\x0efield_mappings\x18\x02 \x03(\v2\x1e.wg.cosmo.node.v1.FieldMappingR\rfieldMappings\"\x92\x01\n" + + "\fFieldMapping\x12\x1a\n" + + "\boriginal\x18\x01 \x01(\tR\boriginal\x12\x16\n" + + "\x06mapped\x18\x02 \x01(\tR\x06mapped\x12N\n" + + "\x11argument_mappings\x18\x03 \x03(\v2!.wg.cosmo.node.v1.ArgumentMappingR\x10argumentMappings\"E\n" + + "\x0fArgumentMapping\x12\x1a\n" + + "\boriginal\x18\x01 \x01(\tR\boriginal\x12\x16\n" + + "\x06mapped\x18\x02 \x01(\tR\x06mapped\"]\n" + + "\vEnumMapping\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12:\n" + + "\x06values\x18\x02 \x03(\v2\".wg.cosmo.node.v1.EnumValueMappingR\x06values\"F\n" + + "\x10EnumValueMapping\x12\x1a\n" + + "\boriginal\x18\x01 \x01(\tR\boriginal\x12\x16\n" + + "\x06mapped\x18\x02 \x01(\tR\x06mapped\"\x9f\x01\n" + + "\x17NatsStreamConfiguration\x12#\n" + + "\rconsumer_name\x18\x01 \x01(\tR\fconsumerName\x12\x1f\n" + + "\vstream_name\x18\x02 \x01(\tR\n" + + "streamName\x12>\n" + + "\x1bconsumer_inactive_threshold\x18\x03 \x01(\x05R\x19consumerInactiveThreshold\"\xfc\x01\n" + + "\x16NatsEventConfiguration\x12h\n" + + "\x1aengine_event_configuration\x18\x01 \x01(\v2*.wg.cosmo.node.v1.EngineEventConfigurationR\x18engineEventConfiguration\x12\x1a\n" + + "\bsubjects\x18\x02 \x03(\tR\bsubjects\x12\\\n" + + "\x14stream_configuration\x18\x03 \x01(\v2).wg.cosmo.node.v1.NatsStreamConfigurationR\x13streamConfiguration\"\x9b\x01\n" + + "\x17KafkaEventConfiguration\x12h\n" + + "\x1aengine_event_configuration\x18\x01 \x01(\v2*.wg.cosmo.node.v1.EngineEventConfigurationR\x18engineEventConfiguration\x12\x16\n" + + "\x06topics\x18\x02 \x03(\tR\x06topics\"\x9f\x01\n" + + "\x17RedisEventConfiguration\x12h\n" + + "\x1aengine_event_configuration\x18\x01 \x01(\v2*.wg.cosmo.node.v1.EngineEventConfigurationR\x18engineEventConfiguration\x12\x1a\n" + + "\bchannels\x18\x02 \x03(\tR\bchannels\"\xa8\x01\n" + + "\x18EngineEventConfiguration\x12\x1f\n" + + "\vprovider_id\x18\x01 \x01(\tR\n" + + "providerId\x12/\n" + + "\x04type\x18\x02 \x01(\x0e2\x1b.wg.cosmo.node.v1.EventTypeR\x04type\x12\x1b\n" + + "\ttype_name\x18\x03 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x04 \x01(\tR\tfieldName\"\xd8\x01\n" + + "\x16DataSourceCustomEvents\x12<\n" + + "\x04nats\x18\x01 \x03(\v2(.wg.cosmo.node.v1.NatsEventConfigurationR\x04nats\x12?\n" + + "\x05kafka\x18\x02 \x03(\v2).wg.cosmo.node.v1.KafkaEventConfigurationR\x05kafka\x12?\n" + + "\x05redis\x18\x03 \x03(\v2).wg.cosmo.node.v1.RedisEventConfigurationR\x05redis\"V\n" + + "\x17DataSourceCustom_Static\x12;\n" + + "\x04data\x18\x01 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x04data\"\xd5\x02\n" + + "\x15ConfigurationVariable\x12?\n" + + "\x04kind\x18\x01 \x01(\x0e2+.wg.cosmo.node.v1.ConfigurationVariableKindR\x04kind\x126\n" + + "\x17static_variable_content\x18\x02 \x01(\tR\x15staticVariableContent\x12:\n" + + "\x19environment_variable_name\x18\x03 \x01(\tR\x17environmentVariableName\x12K\n" + + "\"environment_variable_default_value\x18\x04 \x01(\tR\x1fenvironmentVariableDefaultValue\x12:\n" + + "\x19placeholder_variable_name\x18\x05 \x01(\tR\x17placeholderVariableName\"\\\n" + + "\x16DirectiveConfiguration\x12%\n" + + "\x0edirective_name\x18\x01 \x01(\tR\rdirectiveName\x12\x1b\n" + + "\trename_to\x18\x02 \x01(\tR\brenameTo\"A\n" + + "\x15URLQueryConfiguration\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"M\n" + + "\n" + + "HTTPHeader\x12?\n" + + "\x06values\x18\x01 \x03(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x06values\"\xbb\x01\n" + + "\x11MTLSConfiguration\x129\n" + + "\x03key\x18\x01 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x03key\x12;\n" + + "\x04cert\x18\x02 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x04cert\x12.\n" + + "\x12insecureSkipVerify\x18\x03 \x01(\bR\x12insecureSkipVerify\"\xfb\x02\n" + + " GraphQLSubscriptionConfiguration\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x129\n" + + "\x03url\x18\x02 \x01(\v2'.wg.cosmo.node.v1.ConfigurationVariableR\x03url\x12\x1b\n" + + "\x06useSSE\x18\x03 \x01(\bH\x00R\x06useSSE\x88\x01\x01\x12M\n" + + "\bprotocol\x18\x04 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x01R\bprotocol\x88\x01\x01\x12e\n" + + "\x14websocketSubprotocol\x18\x05 \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x02R\x14websocketSubprotocol\x88\x01\x01B\t\n" + + "\a_useSSEB\v\n" + + "\t_protocolB\x17\n" + + "\x15_websocketSubprotocol\"Z\n" + + "\x1eGraphQLFederationConfiguration\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1e\n" + + "\n" + + "serviceSdl\x18\x02 \x01(\tR\n" + + "serviceSdl\"\"\n" + + "\x0eInternedString\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\"M\n" + + "\x0fSingleTypeField\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12\x1d\n" + + "\n" + + "field_name\x18\x02 \x01(\tR\tfieldName\"O\n" + + "\x1aSubscriptionFieldCondition\x12\x1d\n" + + "\n" + + "field_path\x18\x01 \x03(\tR\tfieldPath\x12\x12\n" + + "\x04json\x18\x02 \x01(\tR\x04json\"\xb5\x02\n" + + "\x1bSubscriptionFilterCondition\x12?\n" + + "\x03and\x18\x01 \x03(\v2-.wg.cosmo.node.v1.SubscriptionFilterConditionR\x03and\x12A\n" + + "\x02in\x18\x02 \x01(\v2,.wg.cosmo.node.v1.SubscriptionFieldConditionH\x00R\x02in\x88\x01\x01\x12D\n" + + "\x03not\x18\x03 \x01(\v2-.wg.cosmo.node.v1.SubscriptionFilterConditionH\x01R\x03not\x88\x01\x01\x12=\n" + + "\x02or\x18\x04 \x03(\v2-.wg.cosmo.node.v1.SubscriptionFilterConditionR\x02orB\x05\n" + + "\x03_inB\x06\n" + + "\x04_not\"T\n" + + "\x15CacheWarmerOperations\x12;\n" + + "\n" + + "operations\x18\x01 \x03(\v2\x1b.wg.cosmo.node.v1.OperationR\n" + + "operations\"\x7f\n" + + "\tOperation\x12<\n" + + "\arequest\x18\x01 \x01(\v2\".wg.cosmo.node.v1.OperationRequestR\arequest\x124\n" + + "\x06client\x18\x02 \x01(\v2\x1c.wg.cosmo.node.v1.ClientInfoR\x06client\"\x8c\x01\n" + + "\x10OperationRequest\x12%\n" + + "\x0eoperation_name\x18\x01 \x01(\tR\roperationName\x12\x14\n" + + "\x05query\x18\x02 \x01(\tR\x05query\x12;\n" + + "\n" + + "extensions\x18\x03 \x01(\v2\x1b.wg.cosmo.node.v1.ExtensionR\n" + + "extensions\"V\n" + + "\tExtension\x12I\n" + + "\x0fpersisted_query\x18\x01 \x01(\v2 .wg.cosmo.node.v1.PersistedQueryR\x0epersistedQuery\"K\n" + + "\x0ePersistedQuery\x12\x1f\n" + + "\vsha256_hash\x18\x01 \x01(\tR\n" + + "sha256Hash\x12\x18\n" + + "\aversion\x18\x02 \x01(\x05R\aversion\":\n" + + "\n" + + "ClientInfo\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion*\x82\x01\n" + + "\x1bArgumentRenderConfiguration\x12\x1b\n" + + "\x17RENDER_ARGUMENT_DEFAULT\x10\x00\x12$\n" + + " RENDER_ARGUMENT_AS_GRAPHQL_VALUE\x10\x01\x12 \n" + + "\x1cRENDER_ARGUMENT_AS_ARRAY_CSV\x10\x02*6\n" + + "\x0eArgumentSource\x12\x10\n" + + "\fOBJECT_FIELD\x10\x00\x12\x12\n" + + "\x0eFIELD_ARGUMENT\x10\x01*5\n" + + "\x0eDataSourceKind\x12\n" + + "\n" + + "\x06STATIC\x10\x00\x12\v\n" + + "\aGRAPHQL\x10\x01\x12\n" + + "\n" + + "\x06PUBSUB\x10\x02*\\\n" + + "\n" + + "LookupType\x12\x1b\n" + + "\x17LOOKUP_TYPE_UNSPECIFIED\x10\x00\x12\x17\n" + + "\x13LOOKUP_TYPE_RESOLVE\x10\x01\x12\x18\n" + + "\x14LOOKUP_TYPE_REQUIRES\x10\x02*\x87\x01\n" + + "\rOperationType\x12\x1e\n" + + "\x1aOPERATION_TYPE_UNSPECIFIED\x10\x00\x12\x18\n" + + "\x14OPERATION_TYPE_QUERY\x10\x01\x12\x1b\n" + + "\x17OPERATION_TYPE_MUTATION\x10\x02\x12\x1f\n" + + "\x1bOPERATION_TYPE_SUBSCRIPTION\x10\x03*4\n" + + "\tEventType\x12\v\n" + + "\aPUBLISH\x10\x00\x12\v\n" + + "\aREQUEST\x10\x01\x12\r\n" + + "\tSUBSCRIBE\x10\x02*\x86\x01\n" + + "\x19ConfigurationVariableKind\x12!\n" + + "\x1dSTATIC_CONFIGURATION_VARIABLE\x10\x00\x12\x1e\n" + + "\x1aENV_CONFIGURATION_VARIABLE\x10\x01\x12&\n" + + "\"PLACEHOLDER_CONFIGURATION_VARIABLE\x10\x02*A\n" + + "\n" + + "HTTPMethod\x12\a\n" + + "\x03GET\x10\x00\x12\b\n" + + "\x04POST\x10\x01\x12\a\n" + + "\x03PUT\x10\x02\x12\n" + + "\n" + + "\x06DELETE\x10\x03\x12\v\n" + + "\aOPTIONS\x10\x042n\n" + + "\vNodeService\x12_\n" + + "\fSelfRegister\x12%.wg.cosmo.node.v1.SelfRegisterRequest\x1a&.wg.cosmo.node.v1.SelfRegisterResponse\"\x00B\xcf\x01\n" + + "\x14com.wg.cosmo.node.v1B\tNodeProtoP\x01ZIgithub.com/wundergraph/cosmo/connect-go/gen/proto/wg/cosmo/node/v1;nodev1\xa2\x02\x03WCN\xaa\x02\x10Wg.Cosmo.Node.V1\xca\x02\x10Wg\\Cosmo\\Node\\V1\xe2\x02\x1cWg\\Cosmo\\Node\\V1\\GPBMetadata\xea\x02\x13Wg::Cosmo::Node::V1b\x06proto3" var ( file_wg_cosmo_node_v1_node_proto_rawDescOnce sync.Once - file_wg_cosmo_node_v1_node_proto_rawDescData = file_wg_cosmo_node_v1_node_proto_rawDesc + file_wg_cosmo_node_v1_node_proto_rawDescData []byte ) func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { file_wg_cosmo_node_v1_node_proto_rawDescOnce.Do(func() { - file_wg_cosmo_node_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(file_wg_cosmo_node_v1_node_proto_rawDescData) + file_wg_cosmo_node_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc))) }) return file_wg_cosmo_node_v1_node_proto_rawDescData } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 73) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 74) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5819,10 +5112,11 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ nil, // 77: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry nil, // 78: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry nil, // 79: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 80: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 81: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 82: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 83: wg.cosmo.common.GraphQLWebsocketSubprotocol + nil, // 80: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 81: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 82: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 83: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 84: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 75, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry @@ -5831,7 +5125,7 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 81, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 82, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo @@ -5857,80 +5151,81 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 77, // 29: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry 78, // 30: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry 79, // 31: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 1, // 32: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 24, // 33: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 24, // 34: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 23, // 35: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 25, // 36: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 68, // 37: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 29, // 38: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 30, // 39: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 58, // 40: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 41: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 80, // 42: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 58, // 43: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 44: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 62, // 45: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 58, // 46: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 47: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 48: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 33, // 49: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 63, // 50: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 64, // 51: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 65, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 66, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 36, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 40, // 55: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 38, // 56: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 37, // 57: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 43, // 58: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 44, // 59: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 46, // 60: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 49, // 61: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 41, // 62: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 63: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 42, // 64: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 47, // 65: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 66: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 45, // 67: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 47, // 68: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 47, // 69: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 48, // 70: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 50, // 71: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 55, // 72: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 51, // 73: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 55, // 74: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 55, // 75: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 76: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 52, // 77: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 53, // 78: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 54, // 79: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 58, // 80: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 81: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 58, // 82: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 83: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 84: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 85: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 82, // 86: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 83, // 87: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 68, // 88: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 67, // 89: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 68, // 90: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 68, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 92: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 71, // 93: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 74, // 94: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 72, // 95: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 73, // 96: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 97: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 61, // 98: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 99: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 100: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 100, // [100:101] is the sub-list for method output_type - 99, // [99:100] is the sub-list for method input_type - 99, // [99:99] is the sub-list for extension type_name - 99, // [99:99] is the sub-list for extension extendee - 0, // [0:99] is the sub-list for field type_name + 80, // 32: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 33: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 24, // 34: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 24, // 35: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 23, // 36: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 25, // 37: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 68, // 38: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 29, // 39: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 30, // 40: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 58, // 41: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 42: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 81, // 43: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 58, // 44: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 45: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 62, // 46: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 58, // 47: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 58, // 48: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 58, // 49: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 33, // 50: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 63, // 51: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 64, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 36, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 40, // 56: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 38, // 57: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 37, // 58: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 43, // 59: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 44, // 60: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 46, // 61: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 49, // 62: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 41, // 63: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 64: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 42, // 65: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 47, // 66: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 67: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 45, // 68: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 47, // 69: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 47, // 70: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 48, // 71: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 50, // 72: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 55, // 73: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 51, // 74: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 55, // 75: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 55, // 76: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 77: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 52, // 78: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 53, // 79: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 58, // 81: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 82: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 58, // 83: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 58, // 84: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 58, // 85: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 58, // 86: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 83, // 87: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 84, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 68, // 89: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 67, // 90: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 68, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 68, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 70, // 93: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 71, // 94: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 74, // 95: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 72, // 96: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 73, // 97: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 98: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 61, // 99: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 100: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 101: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 101, // [101:102] is the sub-list for method output_type + 100, // [100:101] is the sub-list for method input_type + 100, // [100:100] is the sub-list for extension type_name + 100, // [100:100] is the sub-list for extension extendee + 0, // [0:100] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5938,812 +5233,6 @@ func file_wg_cosmo_node_v1_node_proto_init() { if File_wg_cosmo_node_v1_node_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_wg_cosmo_node_v1_node_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Subgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*FeatureFlagRouterExecutionConfigs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*FeatureFlagRouterExecutionConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*RouterConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ResponseStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*RegistrationInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*AccountLimits); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*SelfRegisterRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*SelfRegisterResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*EngineConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DataSourceConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*CostConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*FieldWeightConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*FieldListSizeConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*ArgumentConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*Scopes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*AuthorizationConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*FieldConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*TypeConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*TypeField); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*FieldCoordinates); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*FieldSetCondition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*RequiredField); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*EntityInterfaceConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*FetchConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*StatusCodeTypeMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*DataSourceCustom_GraphQL); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*GRPCConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*ImageReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*PluginConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*SSLConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*GRPCMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*LookupMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*LookupFieldMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*OperationMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*EntityMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*RequiredFieldMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*TypeFieldMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*FieldMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*ArgumentMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*EnumMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*EnumValueMapping); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*NatsStreamConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*NatsEventConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*KafkaEventConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*RedisEventConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*EngineEventConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*DataSourceCustomEvents); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*DataSourceCustom_Static); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*ConfigurationVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*DirectiveConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*URLQueryConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*HTTPHeader); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*MTLSConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*GraphQLSubscriptionConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*GraphQLFederationConfiguration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*InternedString); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*SingleTypeField); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*SubscriptionFieldCondition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*SubscriptionFilterCondition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*CacheWarmerOperations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*OperationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*Extension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*PersistedQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_node_v1_node_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*ClientInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_wg_cosmo_node_v1_node_proto_msgTypes[3].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} @@ -6759,9 +5248,9 @@ func file_wg_cosmo_node_v1_node_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_wg_cosmo_node_v1_node_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 73, + NumMessages: 74, NumExtensions: 0, NumServices: 1, }, @@ -6771,7 +5260,6 @@ func file_wg_cosmo_node_v1_node_proto_init() { MessageInfos: file_wg_cosmo_node_v1_node_proto_msgTypes, }.Build() File_wg_cosmo_node_v1_node_proto = out.File - file_wg_cosmo_node_v1_node_proto_rawDesc = nil file_wg_cosmo_node_v1_node_proto_goTypes = nil file_wg_cosmo_node_v1_node_proto_depIdxs = nil } diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/nodev1connect/node.connect.go b/connect-go/gen/proto/wg/cosmo/node/v1/nodev1connect/node.connect.go index fbd27f7246..3bc797d90d 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/nodev1connect/node.connect.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/nodev1connect/node.connect.go @@ -38,12 +38,6 @@ const ( NodeServiceSelfRegisterProcedure = "/wg.cosmo.node.v1.NodeService/SelfRegister" ) -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - nodeServiceServiceDescriptor = v1.File_wg_cosmo_node_v1_node_proto.Services().ByName("NodeService") - nodeServiceSelfRegisterMethodDescriptor = nodeServiceServiceDescriptor.Methods().ByName("SelfRegister") -) - // NodeServiceClient is a client for the wg.cosmo.node.v1.NodeService service. type NodeServiceClient interface { SelfRegister(context.Context, *connect.Request[v1.SelfRegisterRequest]) (*connect.Response[v1.SelfRegisterResponse], error) @@ -58,11 +52,12 @@ type NodeServiceClient interface { // http://api.acme.com or https://acme.com/grpc). func NewNodeServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) NodeServiceClient { baseURL = strings.TrimRight(baseURL, "/") + nodeServiceMethods := v1.File_wg_cosmo_node_v1_node_proto.Services().ByName("NodeService").Methods() return &nodeServiceClient{ selfRegister: connect.NewClient[v1.SelfRegisterRequest, v1.SelfRegisterResponse]( httpClient, baseURL+NodeServiceSelfRegisterProcedure, - connect.WithSchema(nodeServiceSelfRegisterMethodDescriptor), + connect.WithSchema(nodeServiceMethods.ByName("SelfRegister")), connect.WithClientOptions(opts...), ), } @@ -89,10 +84,11 @@ type NodeServiceHandler interface { // By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf // and JSON codecs. They also support gzip compression. func NewNodeServiceHandler(svc NodeServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + nodeServiceMethods := v1.File_wg_cosmo_node_v1_node_proto.Services().ByName("NodeService").Methods() nodeServiceSelfRegisterHandler := connect.NewUnaryHandler( NodeServiceSelfRegisterProcedure, svc.SelfRegister, - connect.WithSchema(nodeServiceSelfRegisterMethodDescriptor), + connect.WithSchema(nodeServiceMethods.ByName("SelfRegister")), connect.WithHandlerOptions(opts...), ) return "/wg.cosmo.node.v1.NodeService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/connect-go/gen/proto/wg/cosmo/notifications/events.pb.go b/connect-go/gen/proto/wg/cosmo/notifications/events.pb.go index 31d2da2af9..205824cc80 100644 --- a/connect-go/gen/proto/wg/cosmo/notifications/events.pb.go +++ b/connect-go/gen/proto/wg/cosmo/notifications/events.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.11 // protoc (unknown) // source: wg/cosmo/notifications/events.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -125,20 +126,17 @@ func (OrganizationEventName) EnumDescriptor() ([]byte, []int) { } type GraphSchemaUpdatedMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphIds []string `protobuf:"bytes,1,rep,name=graphIds,proto3" json:"graphIds,omitempty"` unknownFields protoimpl.UnknownFields - - GraphIds []string `protobuf:"bytes,1,rep,name=graphIds,proto3" json:"graphIds,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GraphSchemaUpdatedMeta) Reset() { *x = GraphSchemaUpdatedMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_notifications_events_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_notifications_events_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphSchemaUpdatedMeta) String() string { @@ -149,7 +147,7 @@ func (*GraphSchemaUpdatedMeta) ProtoMessage() {} func (x *GraphSchemaUpdatedMeta) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_notifications_events_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -172,20 +170,17 @@ func (x *GraphSchemaUpdatedMeta) GetGraphIds() []string { } type ProposalStateUpdatedMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphIds []string `protobuf:"bytes,1,rep,name=graphIds,proto3" json:"graphIds,omitempty"` unknownFields protoimpl.UnknownFields - - GraphIds []string `protobuf:"bytes,1,rep,name=graphIds,proto3" json:"graphIds,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProposalStateUpdatedMeta) Reset() { *x = ProposalStateUpdatedMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_notifications_events_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_notifications_events_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProposalStateUpdatedMeta) String() string { @@ -196,7 +191,7 @@ func (*ProposalStateUpdatedMeta) ProtoMessage() {} func (x *ProposalStateUpdatedMeta) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_notifications_events_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -219,26 +214,23 @@ func (x *ProposalStateUpdatedMeta) GetGraphIds() []string { } type EventMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EventName OrganizationEventName `protobuf:"varint,1,opt,name=event_name,json=eventName,proto3,enum=wg.cosmo.notifications.OrganizationEventName" json:"event_name,omitempty"` - // Types that are assignable to Meta: + state protoimpl.MessageState `protogen:"open.v1"` + EventName OrganizationEventName `protobuf:"varint,1,opt,name=event_name,json=eventName,proto3,enum=wg.cosmo.notifications.OrganizationEventName" json:"event_name,omitempty"` + // Types that are valid to be assigned to Meta: // // *EventMeta_FederatedGraphSchemaUpdated // *EventMeta_MonographSchemaUpdated // *EventMeta_ProposalStateUpdated - Meta isEventMeta_Meta `protobuf_oneof:"meta"` + Meta isEventMeta_Meta `protobuf_oneof:"meta"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EventMeta) Reset() { *x = EventMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_notifications_events_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_notifications_events_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EventMeta) String() string { @@ -249,7 +241,7 @@ func (*EventMeta) ProtoMessage() {} func (x *EventMeta) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_notifications_events_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -271,30 +263,36 @@ func (x *EventMeta) GetEventName() OrganizationEventName { return OrganizationEventName_FEDERATED_GRAPH_SCHEMA_UPDATED } -func (m *EventMeta) GetMeta() isEventMeta_Meta { - if m != nil { - return m.Meta +func (x *EventMeta) GetMeta() isEventMeta_Meta { + if x != nil { + return x.Meta } return nil } func (x *EventMeta) GetFederatedGraphSchemaUpdated() *GraphSchemaUpdatedMeta { - if x, ok := x.GetMeta().(*EventMeta_FederatedGraphSchemaUpdated); ok { - return x.FederatedGraphSchemaUpdated + if x != nil { + if x, ok := x.Meta.(*EventMeta_FederatedGraphSchemaUpdated); ok { + return x.FederatedGraphSchemaUpdated + } } return nil } func (x *EventMeta) GetMonographSchemaUpdated() *GraphSchemaUpdatedMeta { - if x, ok := x.GetMeta().(*EventMeta_MonographSchemaUpdated); ok { - return x.MonographSchemaUpdated + if x != nil { + if x, ok := x.Meta.(*EventMeta_MonographSchemaUpdated); ok { + return x.MonographSchemaUpdated + } } return nil } func (x *EventMeta) GetProposalStateUpdated() *ProposalStateUpdatedMeta { - if x, ok := x.GetMeta().(*EventMeta_ProposalStateUpdated); ok { - return x.ProposalStateUpdated + if x != nil { + if x, ok := x.Meta.(*EventMeta_ProposalStateUpdated); ok { + return x.ProposalStateUpdated + } } return nil } @@ -323,87 +321,40 @@ func (*EventMeta_ProposalStateUpdated) isEventMeta_Meta() {} var File_wg_cosmo_notifications_events_proto protoreflect.FileDescriptor -var file_wg_cosmo_notifications_events_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x34, 0x0a, - 0x16, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x49, 0x64, 0x73, 0x22, 0x36, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, - 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x73, 0x22, 0xae, 0x03, 0x0a, 0x09, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x0a, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x75, 0x0a, 0x1e, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x1b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x6a, - 0x0a, 0x18, 0x6d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x16, 0x6d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x68, 0x0a, 0x16, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x14, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x2a, 0x7c, 0x0a, 0x11, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, - 0x41, 0x50, 0x4f, 0x4c, 0x4c, 0x4f, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x49, - 0x4e, 0x49, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x50, 0x4f, 0x4c, 0x4c, 0x4f, 0x5f, - 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, - 0x02, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, - 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x2a, 0x8a, 0x01, 0x0a, 0x15, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x46, 0x45, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, - 0x44, 0x5f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x4f, - 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, - 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x42, 0xed, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x77, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, - 0x02, 0x03, 0x57, 0x43, 0x4e, 0xaa, 0x02, 0x16, 0x57, 0x67, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xca, 0x02, - 0x16, 0x57, 0x67, 0x5c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x5c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x22, 0x57, 0x67, 0x5c, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x5c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x57, - 0x67, 0x3a, 0x3a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x3a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_wg_cosmo_notifications_events_proto_rawDesc = "" + + "\n" + + "#wg/cosmo/notifications/events.proto\x12\x16wg.cosmo.notifications\"4\n" + + "\x16GraphSchemaUpdatedMeta\x12\x1a\n" + + "\bgraphIds\x18\x01 \x03(\tR\bgraphIds\"6\n" + + "\x18ProposalStateUpdatedMeta\x12\x1a\n" + + "\bgraphIds\x18\x01 \x03(\tR\bgraphIds\"\xae\x03\n" + + "\tEventMeta\x12L\n" + + "\n" + + "event_name\x18\x01 \x01(\x0e2-.wg.cosmo.notifications.OrganizationEventNameR\teventName\x12u\n" + + "\x1efederated_graph_schema_updated\x18\x02 \x01(\v2..wg.cosmo.notifications.GraphSchemaUpdatedMetaH\x00R\x1bfederatedGraphSchemaUpdated\x12j\n" + + "\x18monograph_schema_updated\x18\x03 \x01(\v2..wg.cosmo.notifications.GraphSchemaUpdatedMetaH\x00R\x16monographSchemaUpdated\x12h\n" + + "\x16proposal_state_updated\x18\x04 \x01(\v20.wg.cosmo.notifications.ProposalStateUpdatedMetaH\x00R\x14proposalStateUpdatedB\x06\n" + + "\x04meta*|\n" + + "\x11PlatformEventName\x12\x19\n" + + "\x15USER_REGISTER_SUCCESS\x10\x00\x12\x17\n" + + "\x13APOLLO_MIGRATE_INIT\x10\x01\x12\x1a\n" + + "\x16APOLLO_MIGRATE_SUCCESS\x10\x02\x12\x17\n" + + "\x13USER_DELETE_SUCCESS\x10\x03*\x8a\x01\n" + + "\x15OrganizationEventName\x12\"\n" + + "\x1eFEDERATED_GRAPH_SCHEMA_UPDATED\x10\x00\x12\x1c\n" + + "\x18MONOGRAPH_SCHEMA_UPDATED\x10\x01\x12\x13\n" + + "\x0fVALIDATE_CONFIG\x10\x03\x12\x1a\n" + + "\x16PROPOSAL_STATE_UPDATED\x10\x04B\xed\x01\n" + + "\x1acom.wg.cosmo.notificationsB\vEventsProtoP\x01ZHgithub.com/wundergraph/cosmo/connect-go/gen/proto/wg/cosmo/notifications\xa2\x02\x03WCN\xaa\x02\x16Wg.Cosmo.Notifications\xca\x02\x16Wg\\Cosmo\\Notifications\xe2\x02\"Wg\\Cosmo\\Notifications\\GPBMetadata\xea\x02\x18Wg::Cosmo::Notificationsb\x06proto3" var ( file_wg_cosmo_notifications_events_proto_rawDescOnce sync.Once - file_wg_cosmo_notifications_events_proto_rawDescData = file_wg_cosmo_notifications_events_proto_rawDesc + file_wg_cosmo_notifications_events_proto_rawDescData []byte ) func file_wg_cosmo_notifications_events_proto_rawDescGZIP() []byte { file_wg_cosmo_notifications_events_proto_rawDescOnce.Do(func() { - file_wg_cosmo_notifications_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_wg_cosmo_notifications_events_proto_rawDescData) + file_wg_cosmo_notifications_events_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_wg_cosmo_notifications_events_proto_rawDesc), len(file_wg_cosmo_notifications_events_proto_rawDesc))) }) return file_wg_cosmo_notifications_events_proto_rawDescData } @@ -434,44 +385,6 @@ func file_wg_cosmo_notifications_events_proto_init() { if File_wg_cosmo_notifications_events_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_wg_cosmo_notifications_events_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GraphSchemaUpdatedMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_notifications_events_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ProposalStateUpdatedMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_notifications_events_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*EventMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_wg_cosmo_notifications_events_proto_msgTypes[2].OneofWrappers = []any{ (*EventMeta_FederatedGraphSchemaUpdated)(nil), (*EventMeta_MonographSchemaUpdated)(nil), @@ -481,7 +394,7 @@ func file_wg_cosmo_notifications_events_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_wg_cosmo_notifications_events_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_notifications_events_proto_rawDesc), len(file_wg_cosmo_notifications_events_proto_rawDesc)), NumEnums: 2, NumMessages: 3, NumExtensions: 0, @@ -493,7 +406,6 @@ func file_wg_cosmo_notifications_events_proto_init() { MessageInfos: file_wg_cosmo_notifications_events_proto_msgTypes, }.Build() File_wg_cosmo_notifications_events_proto = out.File - file_wg_cosmo_notifications_events_proto_rawDesc = nil file_wg_cosmo_notifications_events_proto_goTypes = nil file_wg_cosmo_notifications_events_proto_depIdxs = nil } diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go index d440352aba..4443315e7c 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.11 // protoc (unknown) // source: wg/cosmo/platform/v1/platform.proto @@ -15,6 +15,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -421,6 +422,110 @@ func (ExpiresAt) EnumDescriptor() ([]byte, []int) { return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{6} } +type LoginMethodType int32 + +const ( + LoginMethodType_LOGIN_METHOD_TYPE_UNSPECIFIED LoginMethodType = 0 + LoginMethodType_LOGIN_METHOD_TYPE_SSO LoginMethodType = 1 + LoginMethodType_LOGIN_METHOD_TYPE_PASSWORD LoginMethodType = 2 + LoginMethodType_LOGIN_METHOD_TYPE_API_KEY LoginMethodType = 3 + LoginMethodType_LOGIN_METHOD_TYPE_SOCIAL LoginMethodType = 4 +) + +// Enum value maps for LoginMethodType. +var ( + LoginMethodType_name = map[int32]string{ + 0: "LOGIN_METHOD_TYPE_UNSPECIFIED", + 1: "LOGIN_METHOD_TYPE_SSO", + 2: "LOGIN_METHOD_TYPE_PASSWORD", + 3: "LOGIN_METHOD_TYPE_API_KEY", + 4: "LOGIN_METHOD_TYPE_SOCIAL", + } + LoginMethodType_value = map[string]int32{ + "LOGIN_METHOD_TYPE_UNSPECIFIED": 0, + "LOGIN_METHOD_TYPE_SSO": 1, + "LOGIN_METHOD_TYPE_PASSWORD": 2, + "LOGIN_METHOD_TYPE_API_KEY": 3, + "LOGIN_METHOD_TYPE_SOCIAL": 4, + } +) + +func (x LoginMethodType) Enum() *LoginMethodType { + p := new(LoginMethodType) + *p = x + return p +} + +func (x LoginMethodType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LoginMethodType) Descriptor() protoreflect.EnumDescriptor { + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[7].Descriptor() +} + +func (LoginMethodType) Type() protoreflect.EnumType { + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[7] +} + +func (x LoginMethodType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LoginMethodType.Descriptor instead. +func (LoginMethodType) EnumDescriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{7} +} + +type SocialLoginProvider int32 + +const ( + SocialLoginProvider_SOCIAL_LOGIN_PROVIDER_UNSPECIFIED SocialLoginProvider = 0 + SocialLoginProvider_SOCIAL_LOGIN_PROVIDER_GOOGLE SocialLoginProvider = 1 + SocialLoginProvider_SOCIAL_LOGIN_PROVIDER_GITHUB SocialLoginProvider = 2 +) + +// Enum value maps for SocialLoginProvider. +var ( + SocialLoginProvider_name = map[int32]string{ + 0: "SOCIAL_LOGIN_PROVIDER_UNSPECIFIED", + 1: "SOCIAL_LOGIN_PROVIDER_GOOGLE", + 2: "SOCIAL_LOGIN_PROVIDER_GITHUB", + } + SocialLoginProvider_value = map[string]int32{ + "SOCIAL_LOGIN_PROVIDER_UNSPECIFIED": 0, + "SOCIAL_LOGIN_PROVIDER_GOOGLE": 1, + "SOCIAL_LOGIN_PROVIDER_GITHUB": 2, + } +) + +func (x SocialLoginProvider) Enum() *SocialLoginProvider { + p := new(SocialLoginProvider) + *p = x + return p +} + +func (x SocialLoginProvider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SocialLoginProvider) Descriptor() protoreflect.EnumDescriptor { + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[8].Descriptor() +} + +func (SocialLoginProvider) Type() protoreflect.EnumType { + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[8] +} + +func (x SocialLoginProvider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SocialLoginProvider.Descriptor instead. +func (SocialLoginProvider) EnumDescriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{8} +} + type PublishedOperationStatus int32 const ( @@ -454,11 +559,11 @@ func (x PublishedOperationStatus) String() string { } func (PublishedOperationStatus) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[7].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[9].Descriptor() } func (PublishedOperationStatus) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[7] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[9] } func (x PublishedOperationStatus) Number() protoreflect.EnumNumber { @@ -467,7 +572,7 @@ func (x PublishedOperationStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PublishedOperationStatus.Descriptor instead. func (PublishedOperationStatus) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{7} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{9} } type IntegrationType int32 @@ -497,11 +602,11 @@ func (x IntegrationType) String() string { } func (IntegrationType) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[8].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[10].Descriptor() } func (IntegrationType) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[8] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[10] } func (x IntegrationType) Number() protoreflect.EnumNumber { @@ -510,7 +615,7 @@ func (x IntegrationType) Number() protoreflect.EnumNumber { // Deprecated: Use IntegrationType.Descriptor instead. func (IntegrationType) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{8} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{10} } type Feature int32 @@ -546,11 +651,11 @@ func (x Feature) String() string { } func (Feature) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[9].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[11].Descriptor() } func (Feature) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[9] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[11] } func (x Feature) Number() protoreflect.EnumNumber { @@ -559,7 +664,7 @@ func (x Feature) Number() protoreflect.EnumNumber { // Deprecated: Use Feature.Descriptor instead. func (Feature) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{9} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{11} } type ProposalOrigin int32 @@ -592,11 +697,11 @@ func (x ProposalOrigin) String() string { } func (ProposalOrigin) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[10].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[12].Descriptor() } func (ProposalOrigin) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[10] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[12] } func (x ProposalOrigin) Number() protoreflect.EnumNumber { @@ -605,7 +710,7 @@ func (x ProposalOrigin) Number() protoreflect.EnumNumber { // Deprecated: Use ProposalOrigin.Descriptor instead. func (ProposalOrigin) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{10} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{12} } type ProposalNamingConvention int32 @@ -638,11 +743,11 @@ func (x ProposalNamingConvention) String() string { } func (ProposalNamingConvention) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[11].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[13].Descriptor() } func (ProposalNamingConvention) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[11] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[13] } func (x ProposalNamingConvention) Number() protoreflect.EnumNumber { @@ -651,7 +756,7 @@ func (x ProposalNamingConvention) Number() protoreflect.EnumNumber { // Deprecated: Use ProposalNamingConvention.Descriptor instead. func (ProposalNamingConvention) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{11} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{13} } type OperationsFetchBasedOn int32 @@ -687,11 +792,11 @@ func (x OperationsFetchBasedOn) String() string { } func (OperationsFetchBasedOn) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[12].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[14].Descriptor() } func (OperationsFetchBasedOn) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[12] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[14] } func (x OperationsFetchBasedOn) Number() protoreflect.EnumNumber { @@ -700,7 +805,7 @@ func (x OperationsFetchBasedOn) Number() protoreflect.EnumNumber { // Deprecated: Use OperationsFetchBasedOn.Descriptor instead. func (OperationsFetchBasedOn) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{12} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{14} } type SortDirection int32 @@ -733,11 +838,11 @@ func (x SortDirection) String() string { } func (SortDirection) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[13].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[15].Descriptor() } func (SortDirection) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[13] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[15] } func (x SortDirection) Number() protoreflect.EnumNumber { @@ -746,7 +851,7 @@ func (x SortDirection) Number() protoreflect.EnumNumber { // Deprecated: Use SortDirection.Descriptor instead. func (SortDirection) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{13} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{15} } type GetOperationsResponse_OperationType int32 @@ -782,11 +887,11 @@ func (x GetOperationsResponse_OperationType) String() string { } func (GetOperationsResponse_OperationType) Descriptor() protoreflect.EnumDescriptor { - return file_wg_cosmo_platform_v1_platform_proto_enumTypes[14].Descriptor() + return file_wg_cosmo_platform_v1_platform_proto_enumTypes[16].Descriptor() } func (GetOperationsResponse_OperationType) Type() protoreflect.EnumType { - return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[14] + return &file_wg_cosmo_platform_v1_platform_proto_enumTypes[16] } func (x GetOperationsResponse_OperationType) Number() protoreflect.EnumNumber { @@ -795,25 +900,22 @@ func (x GetOperationsResponse_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use GetOperationsResponse_OperationType.Descriptor instead. func (GetOperationsResponse_OperationType) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441, 0} } type Label struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Label) Reset() { *x = Label{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Label) String() string { @@ -824,7 +926,7 @@ func (*Label) ProtoMessage() {} func (x *Label) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -854,22 +956,19 @@ func (x *Label) GetValue() string { } type Response struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code common.EnumStatusCode `protobuf:"varint,1,opt,name=code,proto3,enum=wg.cosmo.common.EnumStatusCode" json:"code,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Code common.EnumStatusCode `protobuf:"varint,1,opt,name=code,proto3,enum=wg.cosmo.common.EnumStatusCode" json:"code,omitempty"` // details is an optional field which can be used to provide more details about the error. - Details *string `protobuf:"bytes,2,opt,name=details,proto3,oneof" json:"details,omitempty"` + Details *string `protobuf:"bytes,2,opt,name=details,proto3,oneof" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Response) Reset() { *x = Response{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Response) String() string { @@ -880,7 +979,7 @@ func (*Response) ProtoMessage() {} func (x *Response) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -910,21 +1009,18 @@ func (x *Response) GetDetails() string { } type ResponseStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ResponseStatus) Reset() { *x = ResponseStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseStatus) String() string { @@ -935,7 +1031,7 @@ func (*ResponseStatus) ProtoMessage() {} func (x *ResponseStatus) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -965,22 +1061,19 @@ func (x *ResponseStatus) GetMessage() string { } type PublishMonographRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Schema string `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Schema string `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PublishMonographRequest) Reset() { *x = PublishMonographRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishMonographRequest) String() string { @@ -991,7 +1084,7 @@ func (*PublishMonographRequest) ProtoMessage() {} func (x *PublishMonographRequest) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1028,23 +1121,20 @@ func (x *PublishMonographRequest) GetSchema() string { } type PublishMonographResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PublishMonographResponse) Reset() { *x = PublishMonographResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishMonographResponse) String() string { @@ -1055,7 +1145,7 @@ func (*PublishMonographResponse) ProtoMessage() {} func (x *PublishMonographResponse) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1099,24 +1189,21 @@ func (x *PublishMonographResponse) GetCompositionWarnings() []*CompositionWarnin } type ProtoInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Schema string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` + Mappings string `protobuf:"bytes,2,opt,name=mappings,proto3" json:"mappings,omitempty"` + Lock string `protobuf:"bytes,3,opt,name=lock,proto3" json:"lock,omitempty"` + Platforms []string `protobuf:"bytes,4,rep,name=platforms,proto3" json:"platforms,omitempty"` + Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Schema string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` - Mappings string `protobuf:"bytes,2,opt,name=mappings,proto3" json:"mappings,omitempty"` - Lock string `protobuf:"bytes,3,opt,name=lock,proto3" json:"lock,omitempty"` - Platforms []string `protobuf:"bytes,4,rep,name=platforms,proto3" json:"platforms,omitempty"` - Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProtoInput) Reset() { *x = ProtoInput{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProtoInput) String() string { @@ -1127,7 +1214,7 @@ func (*ProtoInput) ProtoMessage() {} func (x *ProtoInput) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1178,10 +1265,7 @@ func (x *ProtoInput) GetVersion() string { } type PublishFederatedSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The FQDN of the subgraph to be published e.g. "wg.team1.orders" Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The string representation of the schema, the content of the file @@ -1204,16 +1288,16 @@ type PublishFederatedSubgraphRequest struct { Type *SubgraphType `protobuf:"varint,13,opt,name=type,proto3,enum=wg.cosmo.platform.v1.SubgraphType,oneof" json:"type,omitempty"` Proto *ProtoInput `protobuf:"bytes,14,opt,name=proto,proto3,oneof" json:"proto,omitempty"` // Optional limit for the number of errors/warnings returned - Limit *int32 `protobuf:"varint,15,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + Limit *int32 `protobuf:"varint,15,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PublishFederatedSubgraphRequest) Reset() { *x = PublishFederatedSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishFederatedSubgraphRequest) String() string { @@ -1224,7 +1308,7 @@ func (*PublishFederatedSubgraphRequest) ProtoMessage() {} func (x *PublishFederatedSubgraphRequest) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1338,26 +1422,23 @@ func (x *PublishFederatedSubgraphRequest) GetLimit() int32 { } type PublishFederatedSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - HasChanged *bool `protobuf:"varint,4,opt,name=hasChanged,proto3,oneof" json:"hasChanged,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,5,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - ProposalMatchMessage *string `protobuf:"bytes,6,opt,name=proposalMatchMessage,proto3,oneof" json:"proposalMatchMessage,omitempty"` - Counts *SubgraphPublishStats `protobuf:"bytes,7,opt,name=counts,proto3,oneof" json:"counts,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + HasChanged *bool `protobuf:"varint,4,opt,name=hasChanged,proto3,oneof" json:"hasChanged,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,5,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + ProposalMatchMessage *string `protobuf:"bytes,6,opt,name=proposalMatchMessage,proto3,oneof" json:"proposalMatchMessage,omitempty"` + Counts *SubgraphPublishStats `protobuf:"bytes,7,opt,name=counts,proto3,oneof" json:"counts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PublishFederatedSubgraphResponse) Reset() { *x = PublishFederatedSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishFederatedSubgraphResponse) String() string { @@ -1368,7 +1449,7 @@ func (*PublishFederatedSubgraphResponse) ProtoMessage() {} func (x *PublishFederatedSubgraphResponse) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1433,22 +1514,19 @@ func (x *PublishFederatedSubgraphResponse) GetCounts() *SubgraphPublishStats { } type SubgraphPublishStats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CompositionErrors int32 `protobuf:"varint,1,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - CompositionWarnings int32 `protobuf:"varint,2,opt,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - DeploymentErrors int32 `protobuf:"varint,3,opt,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + CompositionErrors int32 `protobuf:"varint,1,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + CompositionWarnings int32 `protobuf:"varint,2,opt,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + DeploymentErrors int32 `protobuf:"varint,3,opt,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SubgraphPublishStats) Reset() { *x = SubgraphPublishStats{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubgraphPublishStats) String() string { @@ -1459,7 +1537,7 @@ func (*SubgraphPublishStats) ProtoMessage() {} func (x *SubgraphPublishStats) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1495,35 +1573,33 @@ func (x *SubgraphPublishStats) GetDeploymentErrors() int32 { return 0 } -type GitInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// A single subgraph entry to publish as part of a batch publish request. +type PublishSubgraph struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The name of the subgraph to publish. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The schema to publish for the subgraph. + Schema string `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` unknownFields protoimpl.UnknownFields - - CommitSha string `protobuf:"bytes,1,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - OwnerSlug string `protobuf:"bytes,3,opt,name=owner_slug,json=ownerSlug,proto3" json:"owner_slug,omitempty"` - RepositorySlug string `protobuf:"bytes,4,opt,name=repository_slug,json=repositorySlug,proto3" json:"repository_slug,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *GitInfo) Reset() { - *x = GitInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PublishSubgraph) Reset() { + *x = PublishSubgraph{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GitInfo) String() string { +func (x *PublishSubgraph) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GitInfo) ProtoMessage() {} +func (*PublishSubgraph) ProtoMessage() {} -func (x *GitInfo) ProtoReflect() protoreflect.Message { +func (x *PublishSubgraph) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1533,67 +1609,54 @@ func (x *GitInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GitInfo.ProtoReflect.Descriptor instead. -func (*GitInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use PublishSubgraph.ProtoReflect.Descriptor instead. +func (*PublishSubgraph) Descriptor() ([]byte, []int) { return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{9} } -func (x *GitInfo) GetCommitSha() string { - if x != nil { - return x.CommitSha - } - return "" -} - -func (x *GitInfo) GetAccountId() string { - if x != nil { - return x.AccountId - } - return "" -} - -func (x *GitInfo) GetOwnerSlug() string { +func (x *PublishSubgraph) GetName() string { if x != nil { - return x.OwnerSlug + return x.Name } return "" } -func (x *GitInfo) GetRepositorySlug() string { +func (x *PublishSubgraph) GetSchema() string { if x != nil { - return x.RepositorySlug + return x.Schema } return "" } -type VCSContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type PublishFederatedSubgraphsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The namespace all the subgraphs belong to. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // The subgraphs to publish. Each must already exist in the namespace. Feature subgraphs are detected automatically. + Subgraphs []*PublishSubgraph `protobuf:"bytes,2,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,3,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + // Optional limit for the number of errors/warnings returned. + Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - CommitSha string `protobuf:"bytes,2,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` - Branch string `protobuf:"bytes,3,opt,name=branch,proto3" json:"branch,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *VCSContext) Reset() { - *x = VCSContext{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *PublishFederatedSubgraphsRequest) Reset() { + *x = PublishFederatedSubgraphsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *VCSContext) String() string { +func (x *PublishFederatedSubgraphsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VCSContext) ProtoMessage() {} +func (*PublishFederatedSubgraphsRequest) ProtoMessage() {} -func (x *VCSContext) ProtoReflect() protoreflect.Message { +func (x *PublishFederatedSubgraphsRequest) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1603,59 +1666,276 @@ func (x *VCSContext) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VCSContext.ProtoReflect.Descriptor instead. -func (*VCSContext) Descriptor() ([]byte, []int) { +// Deprecated: Use PublishFederatedSubgraphsRequest.ProtoReflect.Descriptor instead. +func (*PublishFederatedSubgraphsRequest) Descriptor() ([]byte, []int) { return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{10} } -func (x *VCSContext) GetAuthor() string { +func (x *PublishFederatedSubgraphsRequest) GetNamespace() string { if x != nil { - return x.Author + return x.Namespace } return "" } -func (x *VCSContext) GetCommitSha() string { +func (x *PublishFederatedSubgraphsRequest) GetSubgraphs() []*PublishSubgraph { if x != nil { - return x.CommitSha + return x.Subgraphs } - return "" + return nil } -func (x *VCSContext) GetBranch() string { - if x != nil { - return x.Branch +func (x *PublishFederatedSubgraphsRequest) GetDisableResolvabilityValidation() bool { + if x != nil && x.DisableResolvabilityValidation != nil { + return *x.DisableResolvabilityValidation } - return "" + return false } -type CheckSubgraphSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PublishFederatedSubgraphsRequest) GetLimit() int32 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 +} - // The FQDN of the subgraph to be checked e.g. "wg.team1.orders" - SubgraphName string `protobuf:"bytes,1,opt,name=subgraph_name,json=subgraphName,proto3" json:"subgraph_name,omitempty"` - // The binary representation of the schema, the content of the file - Schema []byte `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` - GitInfo *GitInfo `protobuf:"bytes,3,opt,name=gitInfo,proto3" json:"gitInfo,omitempty"` - // Check breaking changes and composition when this subgraph is deleted - Delete *bool `protobuf:"varint,4,opt,name=delete,proto3,oneof" json:"delete,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - SkipTrafficCheck *bool `protobuf:"varint,6,opt,name=skip_traffic_check,json=skipTrafficCheck,proto3,oneof" json:"skip_traffic_check,omitempty"` - VcsContext *VCSContext `protobuf:"bytes,7,opt,name=vcsContext,proto3,oneof" json:"vcsContext,omitempty"` - Labels []*Label `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` - Limit *int32 `protobuf:"varint,10,opt,name=limit,proto3,oneof" json:"limit,omitempty"` +type PublishFederatedSubgraphsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + Counts *SubgraphPublishStats `protobuf:"bytes,5,opt,name=counts,proto3,oneof" json:"counts,omitempty"` + // The names of the subgraphs whose schema actually changed as a result of this batch publish. + UpdatedSubgraphNames []string `protobuf:"bytes,6,rep,name=updatedSubgraphNames,proto3" json:"updatedSubgraphNames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *CheckSubgraphSchemaRequest) Reset() { - *x = CheckSubgraphSchemaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[11] +func (x *PublishFederatedSubgraphsResponse) Reset() { + *x = PublishFederatedSubgraphsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublishFederatedSubgraphsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishFederatedSubgraphsResponse) ProtoMessage() {} + +func (x *PublishFederatedSubgraphsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublishFederatedSubgraphsResponse.ProtoReflect.Descriptor instead. +func (*PublishFederatedSubgraphsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{11} +} + +func (x *PublishFederatedSubgraphsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *PublishFederatedSubgraphsResponse) GetCompositionErrors() []*CompositionError { + if x != nil { + return x.CompositionErrors + } + return nil +} + +func (x *PublishFederatedSubgraphsResponse) GetDeploymentErrors() []*DeploymentError { + if x != nil { + return x.DeploymentErrors + } + return nil +} + +func (x *PublishFederatedSubgraphsResponse) GetCompositionWarnings() []*CompositionWarning { + if x != nil { + return x.CompositionWarnings + } + return nil +} + +func (x *PublishFederatedSubgraphsResponse) GetCounts() *SubgraphPublishStats { + if x != nil { + return x.Counts + } + return nil +} + +func (x *PublishFederatedSubgraphsResponse) GetUpdatedSubgraphNames() []string { + if x != nil { + return x.UpdatedSubgraphNames + } + return nil +} + +type GitInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + CommitSha string `protobuf:"bytes,1,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + OwnerSlug string `protobuf:"bytes,3,opt,name=owner_slug,json=ownerSlug,proto3" json:"owner_slug,omitempty"` + RepositorySlug string `protobuf:"bytes,4,opt,name=repository_slug,json=repositorySlug,proto3" json:"repository_slug,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GitInfo) Reset() { + *x = GitInfo{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GitInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitInfo) ProtoMessage() {} + +func (x *GitInfo) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitInfo.ProtoReflect.Descriptor instead. +func (*GitInfo) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{12} +} + +func (x *GitInfo) GetCommitSha() string { + if x != nil { + return x.CommitSha + } + return "" +} + +func (x *GitInfo) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *GitInfo) GetOwnerSlug() string { + if x != nil { + return x.OwnerSlug + } + return "" +} + +func (x *GitInfo) GetRepositorySlug() string { + if x != nil { + return x.RepositorySlug + } + return "" +} + +type VCSContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + CommitSha string `protobuf:"bytes,2,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` + Branch string `protobuf:"bytes,3,opt,name=branch,proto3" json:"branch,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VCSContext) Reset() { + *x = VCSContext{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VCSContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VCSContext) ProtoMessage() {} + +func (x *VCSContext) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VCSContext.ProtoReflect.Descriptor instead. +func (*VCSContext) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{13} +} + +func (x *VCSContext) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *VCSContext) GetCommitSha() string { + if x != nil { + return x.CommitSha + } + return "" +} + +func (x *VCSContext) GetBranch() string { + if x != nil { + return x.Branch } + return "" +} + +type CheckSubgraphSchemaRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The FQDN of the subgraph to be checked e.g. "wg.team1.orders" + SubgraphName string `protobuf:"bytes,1,opt,name=subgraph_name,json=subgraphName,proto3" json:"subgraph_name,omitempty"` + // The binary representation of the schema, the content of the file + Schema []byte `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` + GitInfo *GitInfo `protobuf:"bytes,3,opt,name=gitInfo,proto3" json:"gitInfo,omitempty"` + // Check breaking changes and composition when this subgraph is deleted + Delete *bool `protobuf:"varint,4,opt,name=delete,proto3,oneof" json:"delete,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + SkipTrafficCheck *bool `protobuf:"varint,6,opt,name=skip_traffic_check,json=skipTrafficCheck,proto3,oneof" json:"skip_traffic_check,omitempty"` + VcsContext *VCSContext `protobuf:"bytes,7,opt,name=vcsContext,proto3,oneof" json:"vcsContext,omitempty"` + Labels []*Label `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + Limit *int32 `protobuf:"varint,10,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CheckSubgraphSchemaRequest) Reset() { + *x = CheckSubgraphSchemaRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckSubgraphSchemaRequest) String() string { @@ -1665,8 +1945,8 @@ func (x *CheckSubgraphSchemaRequest) String() string { func (*CheckSubgraphSchemaRequest) ProtoMessage() {} func (x *CheckSubgraphSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1678,7 +1958,7 @@ func (x *CheckSubgraphSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckSubgraphSchemaRequest.ProtoReflect.Descriptor instead. func (*CheckSubgraphSchemaRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{11} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{14} } func (x *CheckSubgraphSchemaRequest) GetSubgraphName() string { @@ -1752,25 +2032,22 @@ func (x *CheckSubgraphSchemaRequest) GetLimit() int32 { } type FixSubgraphSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The FQDN of the subgraph to be checked e.g. "wg.team1.orders" SubgraphName string `protobuf:"bytes,1,opt,name=subgraph_name,json=subgraphName,proto3" json:"subgraph_name,omitempty"` // The string representation of the schema, the content of the file Schema string `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FixSubgraphSchemaRequest) Reset() { *x = FixSubgraphSchemaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FixSubgraphSchemaRequest) String() string { @@ -1780,8 +2057,8 @@ func (x *FixSubgraphSchemaRequest) String() string { func (*FixSubgraphSchemaRequest) ProtoMessage() {} func (x *FixSubgraphSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1793,7 +2070,7 @@ func (x *FixSubgraphSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FixSubgraphSchemaRequest.ProtoReflect.Descriptor instead. func (*FixSubgraphSchemaRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{12} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{15} } func (x *FixSubgraphSchemaRequest) GetSubgraphName() string { @@ -1825,10 +2102,7 @@ func (x *FixSubgraphSchemaRequest) GetDisableResolvabilityValidation() bool { } type CreateMonographRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` RoutingUrl string `protobuf:"bytes,3,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` @@ -1840,15 +2114,15 @@ type CreateMonographRequest struct { // The subscription protocol to use when subscribing to this subgraph WebsocketSubprotocol *common.GraphQLWebsocketSubprotocol `protobuf:"varint,9,opt,name=websocket_subprotocol,json=websocketSubprotocol,proto3,enum=wg.cosmo.common.GraphQLWebsocketSubprotocol,oneof" json:"websocket_subprotocol,omitempty"` AdmissionWebhookSecret *string `protobuf:"bytes,10,opt,name=admissionWebhookSecret,proto3,oneof" json:"admissionWebhookSecret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateMonographRequest) Reset() { *x = CreateMonographRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMonographRequest) String() string { @@ -1858,8 +2132,8 @@ func (x *CreateMonographRequest) String() string { func (*CreateMonographRequest) ProtoMessage() {} func (x *CreateMonographRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1871,7 +2145,7 @@ func (x *CreateMonographRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMonographRequest.ProtoReflect.Descriptor instead. func (*CreateMonographRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{13} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{16} } func (x *CreateMonographRequest) GetName() string { @@ -1945,20 +2219,17 @@ func (x *CreateMonographRequest) GetAdmissionWebhookSecret() string { } type CreateMonographResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateMonographResponse) Reset() { *x = CreateMonographResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMonographResponse) String() string { @@ -1968,8 +2239,8 @@ func (x *CreateMonographResponse) String() string { func (*CreateMonographResponse) ProtoMessage() {} func (x *CreateMonographResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1981,7 +2252,7 @@ func (x *CreateMonographResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMonographResponse.ProtoReflect.Descriptor instead. func (*CreateMonographResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{14} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{17} } func (x *CreateMonographResponse) GetResponse() *Response { @@ -1992,10 +2263,7 @@ func (x *CreateMonographResponse) GetResponse() *Response { } type CreateFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name is the FQDN of the federated graph e.g. "wg.main" Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // routing_url is the URL of the service which will be used to route the requests to the subgraph. @@ -2008,15 +2276,15 @@ type CreateFederatedGraphRequest struct { AdmissionWebhookURL string `protobuf:"bytes,6,opt,name=admissionWebhookURL,proto3" json:"admissionWebhookURL,omitempty"` AdmissionWebhookSecret *string `protobuf:"bytes,7,opt,name=admissionWebhookSecret,proto3,oneof" json:"admissionWebhookSecret,omitempty"` DisableResolvabilityValidation *bool `protobuf:"varint,8,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateFederatedGraphRequest) Reset() { *x = CreateFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedGraphRequest) String() string { @@ -2026,8 +2294,8 @@ func (x *CreateFederatedGraphRequest) String() string { func (*CreateFederatedGraphRequest) ProtoMessage() {} func (x *CreateFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2039,7 +2307,7 @@ func (x *CreateFederatedGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*CreateFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{18} } func (x *CreateFederatedGraphRequest) GetName() string { @@ -2099,10 +2367,7 @@ func (x *CreateFederatedGraphRequest) GetDisableResolvabilityValidation() bool { } type CreateFederatedSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The FQDN of the subgraph to be published e.g. "wg.team1.orders" Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // routing_url is the URL of the service which will be used to route the requests to the subgraph. @@ -2121,15 +2386,15 @@ type CreateFederatedSubgraphRequest struct { IsFeatureSubgraph *bool `protobuf:"varint,11,opt,name=is_feature_subgraph,json=isFeatureSubgraph,proto3,oneof" json:"is_feature_subgraph,omitempty"` BaseSubgraphName *string `protobuf:"bytes,12,opt,name=base_subgraph_name,json=baseSubgraphName,proto3,oneof" json:"base_subgraph_name,omitempty"` Type SubgraphType `protobuf:"varint,13,opt,name=type,proto3,enum=wg.cosmo.platform.v1.SubgraphType" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateFederatedSubgraphRequest) Reset() { *x = CreateFederatedSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedSubgraphRequest) String() string { @@ -2139,8 +2404,8 @@ func (x *CreateFederatedSubgraphRequest) String() string { func (*CreateFederatedSubgraphRequest) ProtoMessage() {} func (x *CreateFederatedSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2152,7 +2417,7 @@ func (x *CreateFederatedSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFederatedSubgraphRequest.ProtoReflect.Descriptor instead. func (*CreateFederatedSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{19} } func (x *CreateFederatedSubgraphRequest) GetName() string { @@ -2240,21 +2505,18 @@ func (x *CreateFederatedSubgraphRequest) GetType() SubgraphType { } type DeleteFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteFederatedGraphRequest) Reset() { *x = DeleteFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFederatedGraphRequest) String() string { @@ -2264,8 +2526,8 @@ func (x *DeleteFederatedGraphRequest) String() string { func (*DeleteFederatedGraphRequest) ProtoMessage() {} func (x *DeleteFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2277,7 +2539,7 @@ func (x *DeleteFederatedGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*DeleteFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{20} } func (x *DeleteFederatedGraphRequest) GetName() string { @@ -2295,21 +2557,18 @@ func (x *DeleteFederatedGraphRequest) GetNamespace() string { } type DeleteMonographRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMonographRequest) Reset() { *x = DeleteMonographRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMonographRequest) String() string { @@ -2319,8 +2578,8 @@ func (x *DeleteMonographRequest) String() string { func (*DeleteMonographRequest) ProtoMessage() {} func (x *DeleteMonographRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2332,7 +2591,7 @@ func (x *DeleteMonographRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMonographRequest.ProtoReflect.Descriptor instead. func (*DeleteMonographRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{21} } func (x *DeleteMonographRequest) GetName() string { @@ -2350,20 +2609,17 @@ func (x *DeleteMonographRequest) GetNamespace() string { } type DeleteMonographResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMonographResponse) Reset() { *x = DeleteMonographResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMonographResponse) String() string { @@ -2373,8 +2629,8 @@ func (x *DeleteMonographResponse) String() string { func (*DeleteMonographResponse) ProtoMessage() {} func (x *DeleteMonographResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2386,7 +2642,7 @@ func (x *DeleteMonographResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMonographResponse.ProtoReflect.Descriptor instead. func (*DeleteMonographResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{22} } func (x *DeleteMonographResponse) GetResponse() *Response { @@ -2397,23 +2653,20 @@ func (x *DeleteMonographResponse) GetResponse() *Response { } type DeleteFederatedSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The FQDN of the subgraph to be checked e.g. "wg.team1.orders" SubgraphName string `protobuf:"bytes,1,opt,name=subgraph_name,json=subgraphName,proto3" json:"subgraph_name,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` DisableResolvabilityValidation *bool `protobuf:"varint,3,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteFederatedSubgraphRequest) Reset() { *x = DeleteFederatedSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFederatedSubgraphRequest) String() string { @@ -2423,8 +2676,8 @@ func (x *DeleteFederatedSubgraphRequest) String() string { func (*DeleteFederatedSubgraphRequest) ProtoMessage() {} func (x *DeleteFederatedSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2436,7 +2689,7 @@ func (x *DeleteFederatedSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFederatedSubgraphRequest.ProtoReflect.Descriptor instead. func (*DeleteFederatedSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{23} } func (x *DeleteFederatedSubgraphRequest) GetSubgraphName() string { @@ -2461,25 +2714,22 @@ func (x *DeleteFederatedSubgraphRequest) GetDisableResolvabilityValidation() boo } type SchemaChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + ChangeType string `protobuf:"bytes,2,opt,name=changeType,proto3" json:"changeType,omitempty"` + Path *string `protobuf:"bytes,3,opt,name=path,proto3,oneof" json:"path,omitempty"` + IsBreaking bool `protobuf:"varint,4,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` + HasOverride *bool `protobuf:"varint,5,opt,name=hasOverride,proto3,oneof" json:"hasOverride,omitempty"` + SubgraphName *string `protobuf:"bytes,6,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - ChangeType string `protobuf:"bytes,2,opt,name=changeType,proto3" json:"changeType,omitempty"` - Path *string `protobuf:"bytes,3,opt,name=path,proto3,oneof" json:"path,omitempty"` - IsBreaking bool `protobuf:"varint,4,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` - HasOverride *bool `protobuf:"varint,5,opt,name=hasOverride,proto3,oneof" json:"hasOverride,omitempty"` - SubgraphName *string `protobuf:"bytes,6,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SchemaChange) Reset() { *x = SchemaChange{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaChange) String() string { @@ -2489,8 +2739,8 @@ func (x *SchemaChange) String() string { func (*SchemaChange) ProtoMessage() {} func (x *SchemaChange) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2502,7 +2752,7 @@ func (x *SchemaChange) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaChange.ProtoReflect.Descriptor instead. func (*SchemaChange) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{24} } func (x *SchemaChange) GetMessage() string { @@ -2548,25 +2798,22 @@ func (x *SchemaChange) GetSubgraphName() string { } type FederatedGraphSchemaChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - ChangeType string `protobuf:"bytes,2,opt,name=changeType,proto3" json:"changeType,omitempty"` - Path *string `protobuf:"bytes,3,opt,name=path,proto3,oneof" json:"path,omitempty"` - IsBreaking bool `protobuf:"varint,4,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` - FederatedGraphName string `protobuf:"bytes,5,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - HasOverride *bool `protobuf:"varint,6,opt,name=hasOverride,proto3,oneof" json:"hasOverride,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + ChangeType string `protobuf:"bytes,2,opt,name=changeType,proto3" json:"changeType,omitempty"` + Path *string `protobuf:"bytes,3,opt,name=path,proto3,oneof" json:"path,omitempty"` + IsBreaking bool `protobuf:"varint,4,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` + FederatedGraphName string `protobuf:"bytes,5,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + HasOverride *bool `protobuf:"varint,6,opt,name=hasOverride,proto3,oneof" json:"hasOverride,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedGraphSchemaChange) Reset() { *x = FederatedGraphSchemaChange{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGraphSchemaChange) String() string { @@ -2576,8 +2823,8 @@ func (x *FederatedGraphSchemaChange) String() string { func (*FederatedGraphSchemaChange) ProtoMessage() {} func (x *FederatedGraphSchemaChange) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2589,7 +2836,7 @@ func (x *FederatedGraphSchemaChange) ProtoReflect() protoreflect.Message { // Deprecated: Use FederatedGraphSchemaChange.ProtoReflect.Descriptor instead. func (*FederatedGraphSchemaChange) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{25} } func (x *FederatedGraphSchemaChange) GetMessage() string { @@ -2635,23 +2882,20 @@ func (x *FederatedGraphSchemaChange) GetHasOverride() bool { } type CompositionError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - FeatureFlag string `protobuf:"bytes,4,opt,name=featureFlag,proto3" json:"featureFlag,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + FeatureFlag string `protobuf:"bytes,4,opt,name=featureFlag,proto3" json:"featureFlag,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CompositionError) Reset() { *x = CompositionError{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CompositionError) String() string { @@ -2661,8 +2905,8 @@ func (x *CompositionError) String() string { func (*CompositionError) ProtoMessage() {} func (x *CompositionError) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2674,7 +2918,7 @@ func (x *CompositionError) ProtoReflect() protoreflect.Message { // Deprecated: Use CompositionError.ProtoReflect.Descriptor instead. func (*CompositionError) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{26} } func (x *CompositionError) GetMessage() string { @@ -2706,23 +2950,20 @@ func (x *CompositionError) GetFeatureFlag() string { } type CompositionWarning struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - FeatureFlag string `protobuf:"bytes,4,opt,name=featureFlag,proto3" json:"featureFlag,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + FeatureFlag string `protobuf:"bytes,4,opt,name=featureFlag,proto3" json:"featureFlag,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CompositionWarning) Reset() { *x = CompositionWarning{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CompositionWarning) String() string { @@ -2732,8 +2973,8 @@ func (x *CompositionWarning) String() string { func (*CompositionWarning) ProtoMessage() {} func (x *CompositionWarning) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2745,7 +2986,7 @@ func (x *CompositionWarning) ProtoReflect() protoreflect.Message { // Deprecated: Use CompositionWarning.ProtoReflect.Descriptor instead. func (*CompositionWarning) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{27} } func (x *CompositionWarning) GetMessage() string { @@ -2777,22 +3018,19 @@ func (x *CompositionWarning) GetFeatureFlag() string { } type DeploymentError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeploymentError) Reset() { *x = DeploymentError{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeploymentError) String() string { @@ -2802,8 +3040,8 @@ func (x *DeploymentError) String() string { func (*DeploymentError) ProtoMessage() {} func (x *DeploymentError) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2815,7 +3053,7 @@ func (x *DeploymentError) ProtoReflect() protoreflect.Message { // Deprecated: Use DeploymentError.ProtoReflect.Descriptor instead. func (*DeploymentError) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{28} } func (x *DeploymentError) GetMessage() string { @@ -2840,23 +3078,20 @@ func (x *DeploymentError) GetNamespace() string { } type CheckOperationUsageStats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TotalOperations uint32 `protobuf:"varint,1,opt,name=totalOperations,proto3" json:"totalOperations,omitempty"` - FirstSeenAt string `protobuf:"bytes,2,opt,name=firstSeenAt,proto3" json:"firstSeenAt,omitempty"` - LastSeenAt string `protobuf:"bytes,3,opt,name=lastSeenAt,proto3" json:"lastSeenAt,omitempty"` - SafeOperations uint32 `protobuf:"varint,4,opt,name=safeOperations,proto3" json:"safeOperations,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TotalOperations uint32 `protobuf:"varint,1,opt,name=totalOperations,proto3" json:"totalOperations,omitempty"` + FirstSeenAt string `protobuf:"bytes,2,opt,name=firstSeenAt,proto3" json:"firstSeenAt,omitempty"` + LastSeenAt string `protobuf:"bytes,3,opt,name=lastSeenAt,proto3" json:"lastSeenAt,omitempty"` + SafeOperations uint32 `protobuf:"varint,4,opt,name=safeOperations,proto3" json:"safeOperations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckOperationUsageStats) Reset() { *x = CheckOperationUsageStats{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckOperationUsageStats) String() string { @@ -2866,8 +3101,8 @@ func (x *CheckOperationUsageStats) String() string { func (*CheckOperationUsageStats) ProtoMessage() {} func (x *CheckOperationUsageStats) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2879,7 +3114,7 @@ func (x *CheckOperationUsageStats) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckOperationUsageStats.ProtoReflect.Descriptor instead. func (*CheckOperationUsageStats) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{29} } func (x *CheckOperationUsageStats) GetTotalOperations() uint32 { @@ -2911,23 +3146,20 @@ func (x *CheckOperationUsageStats) GetSafeOperations() uint32 { } type CheckedFederatedGraphs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - OrganizationSlug string `protobuf:"bytes,4,opt,name=organization_slug,json=organizationSlug,proto3" json:"organization_slug,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + OrganizationSlug string `protobuf:"bytes,4,opt,name=organization_slug,json=organizationSlug,proto3" json:"organization_slug,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckedFederatedGraphs) Reset() { *x = CheckedFederatedGraphs{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckedFederatedGraphs) String() string { @@ -2937,8 +3169,8 @@ func (x *CheckedFederatedGraphs) String() string { func (*CheckedFederatedGraphs) ProtoMessage() {} func (x *CheckedFederatedGraphs) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2950,7 +3182,7 @@ func (x *CheckedFederatedGraphs) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckedFederatedGraphs.ProtoReflect.Descriptor instead. func (*CheckedFederatedGraphs) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{30} } func (x *CheckedFederatedGraphs) GetId() string { @@ -2982,23 +3214,20 @@ func (x *CheckedFederatedGraphs) GetOrganizationSlug() string { } type LintLocation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` + Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` + EndLine *uint32 `protobuf:"varint,3,opt,name=endLine,proto3,oneof" json:"endLine,omitempty"` + EndColumn *uint32 `protobuf:"varint,4,opt,name=endColumn,proto3,oneof" json:"endColumn,omitempty"` unknownFields protoimpl.UnknownFields - - Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` - Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` - EndLine *uint32 `protobuf:"varint,3,opt,name=endLine,proto3,oneof" json:"endLine,omitempty"` - EndColumn *uint32 `protobuf:"varint,4,opt,name=endColumn,proto3,oneof" json:"endColumn,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LintLocation) Reset() { *x = LintLocation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LintLocation) String() string { @@ -3008,8 +3237,8 @@ func (x *LintLocation) String() string { func (*LintLocation) ProtoMessage() {} func (x *LintLocation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3021,7 +3250,7 @@ func (x *LintLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use LintLocation.ProtoReflect.Descriptor instead. func (*LintLocation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{31} } func (x *LintLocation) GetLine() uint32 { @@ -3053,24 +3282,21 @@ func (x *LintLocation) GetEndColumn() uint32 { } type LintIssue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + LintRuleType *string `protobuf:"bytes,1,opt,name=lintRuleType,proto3,oneof" json:"lintRuleType,omitempty"` + Severity LintSeverity `protobuf:"varint,2,opt,name=severity,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severity,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + IssueLocation *LintLocation `protobuf:"bytes,4,opt,name=issueLocation,proto3" json:"issueLocation,omitempty"` + SubgraphName *string `protobuf:"bytes,5,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` unknownFields protoimpl.UnknownFields - - LintRuleType *string `protobuf:"bytes,1,opt,name=lintRuleType,proto3,oneof" json:"lintRuleType,omitempty"` - Severity LintSeverity `protobuf:"varint,2,opt,name=severity,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severity,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - IssueLocation *LintLocation `protobuf:"bytes,4,opt,name=issueLocation,proto3" json:"issueLocation,omitempty"` - SubgraphName *string `protobuf:"bytes,5,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LintIssue) Reset() { *x = LintIssue{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LintIssue) String() string { @@ -3080,8 +3306,8 @@ func (x *LintIssue) String() string { func (*LintIssue) ProtoMessage() {} func (x *LintIssue) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3093,7 +3319,7 @@ func (x *LintIssue) ProtoReflect() protoreflect.Message { // Deprecated: Use LintIssue.ProtoReflect.Descriptor instead. func (*LintIssue) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{32} } func (x *LintIssue) GetLintRuleType() string { @@ -3132,26 +3358,23 @@ func (x *LintIssue) GetSubgraphName() string { } type GraphPruningIssue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GraphPruningRuleType string `protobuf:"bytes,1,opt,name=graphPruningRuleType,proto3" json:"graphPruningRuleType,omitempty"` - Severity LintSeverity `protobuf:"varint,2,opt,name=severity,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severity,omitempty"` - FieldPath string `protobuf:"bytes,3,opt,name=fieldPath,proto3" json:"fieldPath,omitempty"` - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - IssueLocation *LintLocation `protobuf:"bytes,5,opt,name=issueLocation,proto3" json:"issueLocation,omitempty"` - FederatedGraphName string `protobuf:"bytes,6,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - SubgraphName *string `protobuf:"bytes,7,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + GraphPruningRuleType string `protobuf:"bytes,1,opt,name=graphPruningRuleType,proto3" json:"graphPruningRuleType,omitempty"` + Severity LintSeverity `protobuf:"varint,2,opt,name=severity,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severity,omitempty"` + FieldPath string `protobuf:"bytes,3,opt,name=fieldPath,proto3" json:"fieldPath,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` + IssueLocation *LintLocation `protobuf:"bytes,5,opt,name=issueLocation,proto3" json:"issueLocation,omitempty"` + FederatedGraphName string `protobuf:"bytes,6,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + SubgraphName *string `protobuf:"bytes,7,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GraphPruningIssue) Reset() { *x = GraphPruningIssue{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphPruningIssue) String() string { @@ -3161,8 +3384,8 @@ func (x *GraphPruningIssue) String() string { func (*GraphPruningIssue) ProtoMessage() {} func (x *GraphPruningIssue) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3174,7 +3397,7 @@ func (x *GraphPruningIssue) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphPruningIssue.ProtoReflect.Descriptor instead. func (*GraphPruningIssue) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{33} } func (x *GraphPruningIssue) GetGraphPruningRuleType() string { @@ -3227,14 +3450,11 @@ func (x *GraphPruningIssue) GetSubgraphName() string { } type CheckSubgraphSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - BreakingChanges []*SchemaChange `protobuf:"bytes,2,rep,name=breakingChanges,proto3" json:"breakingChanges,omitempty"` - NonBreakingChanges []*SchemaChange `protobuf:"bytes,3,rep,name=nonBreakingChanges,proto3" json:"nonBreakingChanges,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,4,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + BreakingChanges []*SchemaChange `protobuf:"bytes,2,rep,name=breakingChanges,proto3" json:"breakingChanges,omitempty"` + NonBreakingChanges []*SchemaChange `protobuf:"bytes,3,rep,name=nonBreakingChanges,proto3" json:"nonBreakingChanges,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,4,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` // Contains the operation usage stats for the operations that are impacted by the schema changes. OperationUsageStats *CheckOperationUsageStats `protobuf:"bytes,5,opt,name=operationUsageStats,proto3" json:"operationUsageStats,omitempty"` CheckId string `protobuf:"bytes,6,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` @@ -3255,15 +3475,15 @@ type CheckSubgraphSchemaResponse struct { Counts *SchemaCheckCounts `protobuf:"bytes,19,opt,name=counts,proto3,oneof" json:"counts,omitempty"` // Breaking changes detected in the composed federated graph schema (not subgraph level) ComposedSchemaBreakingChanges []*FederatedGraphSchemaChange `protobuf:"bytes,20,rep,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckSubgraphSchemaResponse) Reset() { *x = CheckSubgraphSchemaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckSubgraphSchemaResponse) String() string { @@ -3273,8 +3493,8 @@ func (x *CheckSubgraphSchemaResponse) String() string { func (*CheckSubgraphSchemaResponse) ProtoMessage() {} func (x *CheckSubgraphSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3286,7 +3506,7 @@ func (x *CheckSubgraphSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckSubgraphSchemaResponse.ProtoReflect.Descriptor instead. func (*CheckSubgraphSchemaResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{34} } func (x *CheckSubgraphSchemaResponse) GetResponse() *Response { @@ -3430,28 +3650,25 @@ func (x *CheckSubgraphSchemaResponse) GetComposedSchemaBreakingChanges() []*Fede } type SchemaCheckCounts struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LintWarnings int32 `protobuf:"varint,1,opt,name=lintWarnings,proto3" json:"lintWarnings,omitempty"` - LintErrors int32 `protobuf:"varint,2,opt,name=lintErrors,proto3" json:"lintErrors,omitempty"` - BreakingChanges int32 `protobuf:"varint,3,opt,name=breakingChanges,proto3" json:"breakingChanges,omitempty"` - NonBreakingChanges int32 `protobuf:"varint,4,opt,name=nonBreakingChanges,proto3" json:"nonBreakingChanges,omitempty"` - CompositionErrors int32 `protobuf:"varint,5,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - CompositionWarnings int32 `protobuf:"varint,6,opt,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - GraphPruneErrors int32 `protobuf:"varint,7,opt,name=graphPruneErrors,proto3" json:"graphPruneErrors,omitempty"` - GraphPruneWarnings int32 `protobuf:"varint,8,opt,name=graphPruneWarnings,proto3" json:"graphPruneWarnings,omitempty"` - ComposedSchemaBreakingChanges int32 `protobuf:"varint,9,opt,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + LintWarnings int32 `protobuf:"varint,1,opt,name=lintWarnings,proto3" json:"lintWarnings,omitempty"` + LintErrors int32 `protobuf:"varint,2,opt,name=lintErrors,proto3" json:"lintErrors,omitempty"` + BreakingChanges int32 `protobuf:"varint,3,opt,name=breakingChanges,proto3" json:"breakingChanges,omitempty"` + NonBreakingChanges int32 `protobuf:"varint,4,opt,name=nonBreakingChanges,proto3" json:"nonBreakingChanges,omitempty"` + CompositionErrors int32 `protobuf:"varint,5,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + CompositionWarnings int32 `protobuf:"varint,6,opt,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + GraphPruneErrors int32 `protobuf:"varint,7,opt,name=graphPruneErrors,proto3" json:"graphPruneErrors,omitempty"` + GraphPruneWarnings int32 `protobuf:"varint,8,opt,name=graphPruneWarnings,proto3" json:"graphPruneWarnings,omitempty"` + ComposedSchemaBreakingChanges int32 `protobuf:"varint,9,opt,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaCheckCounts) Reset() { *x = SchemaCheckCounts{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaCheckCounts) String() string { @@ -3461,8 +3678,8 @@ func (x *SchemaCheckCounts) String() string { func (*SchemaCheckCounts) ProtoMessage() {} func (x *SchemaCheckCounts) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3474,7 +3691,7 @@ func (x *SchemaCheckCounts) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaCheckCounts.ProtoReflect.Descriptor instead. func (*SchemaCheckCounts) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{35} } func (x *SchemaCheckCounts) GetLintWarnings() int32 { @@ -3541,22 +3758,19 @@ func (x *SchemaCheckCounts) GetComposedSchemaBreakingChanges() int32 { } type FixSubgraphSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Modified bool `protobuf:"varint,2,opt,name=modified,proto3" json:"modified,omitempty"` + Schema string `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Modified bool `protobuf:"varint,2,opt,name=modified,proto3" json:"modified,omitempty"` - Schema string `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FixSubgraphSchemaResponse) Reset() { *x = FixSubgraphSchemaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FixSubgraphSchemaResponse) String() string { @@ -3566,8 +3780,8 @@ func (x *FixSubgraphSchemaResponse) String() string { func (*FixSubgraphSchemaResponse) ProtoMessage() {} func (x *FixSubgraphSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3579,7 +3793,7 @@ func (x *FixSubgraphSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FixSubgraphSchemaResponse.ProtoReflect.Descriptor instead. func (*FixSubgraphSchemaResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{36} } func (x *FixSubgraphSchemaResponse) GetResponse() *Response { @@ -3604,23 +3818,20 @@ func (x *FixSubgraphSchemaResponse) GetSchema() string { } type CreateFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateFederatedGraphResponse) Reset() { *x = CreateFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedGraphResponse) String() string { @@ -3630,8 +3841,8 @@ func (x *CreateFederatedGraphResponse) String() string { func (*CreateFederatedGraphResponse) ProtoMessage() {} func (x *CreateFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3643,7 +3854,7 @@ func (x *CreateFederatedGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*CreateFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{37} } func (x *CreateFederatedGraphResponse) GetResponse() *Response { @@ -3675,20 +3886,17 @@ func (x *CreateFederatedGraphResponse) GetCompositionWarnings() []*CompositionWa } type CreateFederatedSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateFederatedSubgraphResponse) Reset() { *x = CreateFederatedSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedSubgraphResponse) String() string { @@ -3698,8 +3906,8 @@ func (x *CreateFederatedSubgraphResponse) String() string { func (*CreateFederatedSubgraphResponse) ProtoMessage() {} func (x *CreateFederatedSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3711,7 +3919,7 @@ func (x *CreateFederatedSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFederatedSubgraphResponse.ProtoReflect.Descriptor instead. func (*CreateFederatedSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{38} } func (x *CreateFederatedSubgraphResponse) GetResponse() *Response { @@ -3722,24 +3930,21 @@ func (x *CreateFederatedSubgraphResponse) GetResponse() *Response { } type DeleteFederatedSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - ProposalMatchMessage *string `protobuf:"bytes,5,opt,name=proposalMatchMessage,proto3,oneof" json:"proposalMatchMessage,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + ProposalMatchMessage *string `protobuf:"bytes,5,opt,name=proposalMatchMessage,proto3,oneof" json:"proposalMatchMessage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteFederatedSubgraphResponse) Reset() { *x = DeleteFederatedSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFederatedSubgraphResponse) String() string { @@ -3749,8 +3954,8 @@ func (x *DeleteFederatedSubgraphResponse) String() string { func (*DeleteFederatedSubgraphResponse) ProtoMessage() {} func (x *DeleteFederatedSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3762,7 +3967,7 @@ func (x *DeleteFederatedSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFederatedSubgraphResponse.ProtoReflect.Descriptor instead. func (*DeleteFederatedSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{39} } func (x *DeleteFederatedSubgraphResponse) GetResponse() *Response { @@ -3801,20 +4006,17 @@ func (x *DeleteFederatedSubgraphResponse) GetProposalMatchMessage() string { } type DeleteFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteFederatedGraphResponse) Reset() { *x = DeleteFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFederatedGraphResponse) String() string { @@ -3824,8 +4026,8 @@ func (x *DeleteFederatedGraphResponse) String() string { func (*DeleteFederatedGraphResponse) ProtoMessage() {} func (x *DeleteFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3837,7 +4039,7 @@ func (x *DeleteFederatedGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*DeleteFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{40} } func (x *DeleteFederatedGraphResponse) GetResponse() *Response { @@ -3848,24 +4050,21 @@ func (x *DeleteFederatedGraphResponse) GetResponse() *Response { } type GetFederatedGraphsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - IncludeMetrics bool `protobuf:"varint,3,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` - SupportsFederation *bool `protobuf:"varint,5,opt,name=supports_federation,json=supportsFederation,proto3,oneof" json:"supports_federation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + IncludeMetrics bool `protobuf:"varint,3,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + SupportsFederation *bool `protobuf:"varint,5,opt,name=supports_federation,json=supportsFederation,proto3,oneof" json:"supports_federation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphsRequest) Reset() { *x = GetFederatedGraphsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphsRequest) String() string { @@ -3875,8 +4074,8 @@ func (x *GetFederatedGraphsRequest) String() string { func (*GetFederatedGraphsRequest) ProtoMessage() {} func (x *GetFederatedGraphsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3888,7 +4087,7 @@ func (x *GetFederatedGraphsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphsRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{41} } func (x *GetFederatedGraphsRequest) GetLimit() int32 { @@ -3927,23 +4126,20 @@ func (x *GetFederatedGraphsRequest) GetSupportsFederation() bool { } type Contract struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SourceFederatedGraphId string `protobuf:"bytes,2,opt,name=source_federated_graph_id,json=sourceFederatedGraphId,proto3" json:"source_federated_graph_id,omitempty"` - ExcludeTags []string `protobuf:"bytes,3,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` - IncludeTags []string `protobuf:"bytes,4,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SourceFederatedGraphId string `protobuf:"bytes,2,opt,name=source_federated_graph_id,json=sourceFederatedGraphId,proto3" json:"source_federated_graph_id,omitempty"` + ExcludeTags []string `protobuf:"bytes,3,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` + IncludeTags []string `protobuf:"bytes,4,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Contract) Reset() { *x = Contract{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Contract) String() string { @@ -3953,8 +4149,8 @@ func (x *Contract) String() string { func (*Contract) ProtoMessage() {} func (x *Contract) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3966,7 +4162,7 @@ func (x *Contract) ProtoReflect() protoreflect.Message { // Deprecated: Use Contract.ProtoReflect.Descriptor instead. func (*Contract) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{42} } func (x *Contract) GetId() string { @@ -3998,36 +4194,33 @@ func (x *Contract) GetIncludeTags() []string { } type FederatedGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - RoutingURL string `protobuf:"bytes,3,opt,name=routingURL,proto3" json:"routingURL,omitempty"` - LabelMatchers []string `protobuf:"bytes,4,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` - LastUpdatedAt string `protobuf:"bytes,5,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` - IsComposable bool `protobuf:"varint,6,opt,name=isComposable,proto3" json:"isComposable,omitempty"` - CompositionErrors string `protobuf:"bytes,7,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - ConnectedSubgraphs int32 `protobuf:"varint,8,opt,name=connectedSubgraphs,proto3" json:"connectedSubgraphs,omitempty"` - RequestSeries []*RequestSeriesItem `protobuf:"bytes,9,rep,name=requestSeries,proto3" json:"requestSeries,omitempty"` - Readme *string `protobuf:"bytes,10,opt,name=readme,proto3,oneof" json:"readme,omitempty"` - TargetId string `protobuf:"bytes,11,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` - Namespace string `protobuf:"bytes,12,opt,name=namespace,proto3" json:"namespace,omitempty"` - CompositionId *string `protobuf:"bytes,13,opt,name=compositionId,proto3,oneof" json:"compositionId,omitempty"` - SupportsFederation bool `protobuf:"varint,14,opt,name=supports_federation,json=supportsFederation,proto3" json:"supports_federation,omitempty"` - Contract *Contract `protobuf:"bytes,15,opt,name=contract,proto3,oneof" json:"contract,omitempty"` - AdmissionWebhookUrl *string `protobuf:"bytes,16,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3,oneof" json:"admission_webhook_url,omitempty"` - RouterCompatibilityVersion string `protobuf:"bytes,17,opt,name=router_compatibility_version,json=routerCompatibilityVersion,proto3" json:"router_compatibility_version,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + RoutingURL string `protobuf:"bytes,3,opt,name=routingURL,proto3" json:"routingURL,omitempty"` + LabelMatchers []string `protobuf:"bytes,4,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` + LastUpdatedAt string `protobuf:"bytes,5,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` + IsComposable bool `protobuf:"varint,6,opt,name=isComposable,proto3" json:"isComposable,omitempty"` + CompositionErrors string `protobuf:"bytes,7,opt,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + ConnectedSubgraphs int32 `protobuf:"varint,8,opt,name=connectedSubgraphs,proto3" json:"connectedSubgraphs,omitempty"` + RequestSeries []*RequestSeriesItem `protobuf:"bytes,9,rep,name=requestSeries,proto3" json:"requestSeries,omitempty"` + Readme *string `protobuf:"bytes,10,opt,name=readme,proto3,oneof" json:"readme,omitempty"` + TargetId string `protobuf:"bytes,11,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + Namespace string `protobuf:"bytes,12,opt,name=namespace,proto3" json:"namespace,omitempty"` + CompositionId *string `protobuf:"bytes,13,opt,name=compositionId,proto3,oneof" json:"compositionId,omitempty"` + SupportsFederation bool `protobuf:"varint,14,opt,name=supports_federation,json=supportsFederation,proto3" json:"supports_federation,omitempty"` + Contract *Contract `protobuf:"bytes,15,opt,name=contract,proto3,oneof" json:"contract,omitempty"` + AdmissionWebhookUrl *string `protobuf:"bytes,16,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3,oneof" json:"admission_webhook_url,omitempty"` + RouterCompatibilityVersion string `protobuf:"bytes,17,opt,name=router_compatibility_version,json=routerCompatibilityVersion,proto3" json:"router_compatibility_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedGraph) Reset() { *x = FederatedGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGraph) String() string { @@ -4037,8 +4230,8 @@ func (x *FederatedGraph) String() string { func (*FederatedGraph) ProtoMessage() {} func (x *FederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4050,7 +4243,7 @@ func (x *FederatedGraph) ProtoReflect() protoreflect.Message { // Deprecated: Use FederatedGraph.ProtoReflect.Descriptor instead. func (*FederatedGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{43} } func (x *FederatedGraph) GetId() string { @@ -4173,21 +4366,18 @@ func (x *FederatedGraph) GetRouterCompatibilityVersion() string { } type GetFederatedGraphsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graphs []*FederatedGraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graphs []*FederatedGraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphsResponse) Reset() { *x = GetFederatedGraphsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphsResponse) String() string { @@ -4197,8 +4387,8 @@ func (x *GetFederatedGraphsResponse) String() string { func (*GetFederatedGraphsResponse) ProtoMessage() {} func (x *GetFederatedGraphsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4210,7 +4400,7 @@ func (x *GetFederatedGraphsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphsResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{44} } func (x *GetFederatedGraphsResponse) GetResponse() *Response { @@ -4228,21 +4418,18 @@ func (x *GetFederatedGraphsResponse) GetGraphs() []*FederatedGraph { } type GetFederatedGraphsBySubgraphLabelsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphsBySubgraphLabelsRequest) Reset() { *x = GetFederatedGraphsBySubgraphLabelsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphsBySubgraphLabelsRequest) String() string { @@ -4252,8 +4439,8 @@ func (x *GetFederatedGraphsBySubgraphLabelsRequest) String() string { func (*GetFederatedGraphsBySubgraphLabelsRequest) ProtoMessage() {} func (x *GetFederatedGraphsBySubgraphLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4265,7 +4452,7 @@ func (x *GetFederatedGraphsBySubgraphLabelsRequest) ProtoReflect() protoreflect. // Deprecated: Use GetFederatedGraphsBySubgraphLabelsRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphsBySubgraphLabelsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{45} } func (x *GetFederatedGraphsBySubgraphLabelsRequest) GetSubgraphName() string { @@ -4283,21 +4470,18 @@ func (x *GetFederatedGraphsBySubgraphLabelsRequest) GetNamespace() string { } type GetFederatedGraphsBySubgraphLabelsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graphs []*FederatedGraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graphs []*FederatedGraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphsBySubgraphLabelsResponse) Reset() { *x = GetFederatedGraphsBySubgraphLabelsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphsBySubgraphLabelsResponse) String() string { @@ -4307,8 +4491,8 @@ func (x *GetFederatedGraphsBySubgraphLabelsResponse) String() string { func (*GetFederatedGraphsBySubgraphLabelsResponse) ProtoMessage() {} func (x *GetFederatedGraphsBySubgraphLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4320,7 +4504,7 @@ func (x *GetFederatedGraphsBySubgraphLabelsResponse) ProtoReflect() protoreflect // Deprecated: Use GetFederatedGraphsBySubgraphLabelsResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphsBySubgraphLabelsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{46} } func (x *GetFederatedGraphsBySubgraphLabelsResponse) GetResponse() *Response { @@ -4338,24 +4522,21 @@ func (x *GetFederatedGraphsBySubgraphLabelsResponse) GetGraphs() []*FederatedGra } type GetSubgraphsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` - ExcludeFeatureSubgraphs bool `protobuf:"varint,5,opt,name=exclude_feature_subgraphs,json=excludeFeatureSubgraphs,proto3" json:"exclude_feature_subgraphs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` + ExcludeFeatureSubgraphs bool `protobuf:"varint,5,opt,name=exclude_feature_subgraphs,json=excludeFeatureSubgraphs,proto3" json:"exclude_feature_subgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSubgraphsRequest) Reset() { *x = GetSubgraphsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphsRequest) String() string { @@ -4365,8 +4546,8 @@ func (x *GetSubgraphsRequest) String() string { func (*GetSubgraphsRequest) ProtoMessage() {} func (x *GetSubgraphsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4378,7 +4559,7 @@ func (x *GetSubgraphsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphsRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{47} } func (x *GetSubgraphsRequest) GetLimit() int32 { @@ -4417,38 +4598,35 @@ func (x *GetSubgraphsRequest) GetExcludeFeatureSubgraphs() bool { } type Subgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - RoutingURL string `protobuf:"bytes,3,opt,name=routingURL,proto3" json:"routingURL,omitempty"` - LastUpdatedAt string `protobuf:"bytes,4,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` - Labels []*Label `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty"` - CreatorUserId *string `protobuf:"bytes,6,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` - Readme *string `protobuf:"bytes,7,opt,name=readme,proto3,oneof" json:"readme,omitempty"` - SubscriptionUrl string `protobuf:"bytes,8,opt,name=subscriptionUrl,proto3" json:"subscriptionUrl,omitempty"` - TargetId string `protobuf:"bytes,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` - Namespace string `protobuf:"bytes,10,opt,name=namespace,proto3" json:"namespace,omitempty"` - SubscriptionProtocol string `protobuf:"bytes,11,opt,name=subscriptionProtocol,proto3" json:"subscriptionProtocol,omitempty"` - IsV2Graph *bool `protobuf:"varint,12,opt,name=isV2Graph,proto3,oneof" json:"isV2Graph,omitempty"` - IsEventDrivenGraph bool `protobuf:"varint,13,opt,name=isEventDrivenGraph,proto3" json:"isEventDrivenGraph,omitempty"` - WebsocketSubprotocol string `protobuf:"bytes,14,opt,name=websocketSubprotocol,proto3" json:"websocketSubprotocol,omitempty"` - IsFeatureSubgraph bool `protobuf:"varint,15,opt,name=isFeatureSubgraph,proto3" json:"isFeatureSubgraph,omitempty"` - BaseSubgraphName *string `protobuf:"bytes,16,opt,name=baseSubgraphName,proto3,oneof" json:"baseSubgraphName,omitempty"` - BaseSubgraphId *string `protobuf:"bytes,17,opt,name=baseSubgraphId,proto3,oneof" json:"baseSubgraphId,omitempty"` - Type SubgraphType `protobuf:"varint,18,opt,name=type,proto3,enum=wg.cosmo.platform.v1.SubgraphType" json:"type,omitempty"` - PluginData *Subgraph_PluginData `protobuf:"bytes,19,opt,name=pluginData,proto3,oneof" json:"pluginData,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + RoutingURL string `protobuf:"bytes,3,opt,name=routingURL,proto3" json:"routingURL,omitempty"` + LastUpdatedAt string `protobuf:"bytes,4,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` + Labels []*Label `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty"` + CreatorUserId *string `protobuf:"bytes,6,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` + Readme *string `protobuf:"bytes,7,opt,name=readme,proto3,oneof" json:"readme,omitempty"` + SubscriptionUrl string `protobuf:"bytes,8,opt,name=subscriptionUrl,proto3" json:"subscriptionUrl,omitempty"` + TargetId string `protobuf:"bytes,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + Namespace string `protobuf:"bytes,10,opt,name=namespace,proto3" json:"namespace,omitempty"` + SubscriptionProtocol string `protobuf:"bytes,11,opt,name=subscriptionProtocol,proto3" json:"subscriptionProtocol,omitempty"` + IsV2Graph *bool `protobuf:"varint,12,opt,name=isV2Graph,proto3,oneof" json:"isV2Graph,omitempty"` + IsEventDrivenGraph bool `protobuf:"varint,13,opt,name=isEventDrivenGraph,proto3" json:"isEventDrivenGraph,omitempty"` + WebsocketSubprotocol string `protobuf:"bytes,14,opt,name=websocketSubprotocol,proto3" json:"websocketSubprotocol,omitempty"` + IsFeatureSubgraph bool `protobuf:"varint,15,opt,name=isFeatureSubgraph,proto3" json:"isFeatureSubgraph,omitempty"` + BaseSubgraphName *string `protobuf:"bytes,16,opt,name=baseSubgraphName,proto3,oneof" json:"baseSubgraphName,omitempty"` + BaseSubgraphId *string `protobuf:"bytes,17,opt,name=baseSubgraphId,proto3,oneof" json:"baseSubgraphId,omitempty"` + Type SubgraphType `protobuf:"varint,18,opt,name=type,proto3,enum=wg.cosmo.platform.v1.SubgraphType" json:"type,omitempty"` + PluginData *Subgraph_PluginData `protobuf:"bytes,19,opt,name=pluginData,proto3,oneof" json:"pluginData,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Subgraph) Reset() { *x = Subgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subgraph) String() string { @@ -4458,8 +4636,8 @@ func (x *Subgraph) String() string { func (*Subgraph) ProtoMessage() {} func (x *Subgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4471,7 +4649,7 @@ func (x *Subgraph) ProtoReflect() protoreflect.Message { // Deprecated: Use Subgraph.ProtoReflect.Descriptor instead. func (*Subgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{48} } func (x *Subgraph) GetId() string { @@ -4608,22 +4786,19 @@ func (x *Subgraph) GetPluginData() *Subgraph_PluginData { } type GetSubgraphsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graphs []*Subgraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graphs []*Subgraph `protobuf:"bytes,2,rep,name=graphs,proto3" json:"graphs,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphsResponse) Reset() { *x = GetSubgraphsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphsResponse) String() string { @@ -4633,8 +4808,8 @@ func (x *GetSubgraphsResponse) String() string { func (*GetSubgraphsResponse) ProtoMessage() {} func (x *GetSubgraphsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4646,7 +4821,7 @@ func (x *GetSubgraphsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphsResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{49} } func (x *GetSubgraphsResponse) GetResponse() *Response { @@ -4671,22 +4846,19 @@ func (x *GetSubgraphsResponse) GetCount() int32 { } type GetFederatedGraphByNameRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - IncludeMetrics bool `protobuf:"varint,2,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + IncludeMetrics bool `protobuf:"varint,2,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphByNameRequest) Reset() { *x = GetFederatedGraphByNameRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphByNameRequest) String() string { @@ -4696,8 +4868,8 @@ func (x *GetFederatedGraphByNameRequest) String() string { func (*GetFederatedGraphByNameRequest) ProtoMessage() {} func (x *GetFederatedGraphByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[50] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4709,7 +4881,7 @@ func (x *GetFederatedGraphByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphByNameRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphByNameRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{50} } func (x *GetFederatedGraphByNameRequest) GetName() string { @@ -4734,27 +4906,20 @@ func (x *GetFederatedGraphByNameRequest) GetNamespace() string { } type GetFederatedGraphByNameResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graph *FederatedGraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - GraphRequestToken string `protobuf:"bytes,4,opt,name=graphRequestToken,proto3" json:"graphRequestToken,omitempty"` - FeatureFlagsInLatestValidComposition []*FeatureFlag `protobuf:"bytes,5,rep,name=featureFlagsInLatestValidComposition,proto3" json:"featureFlagsInLatestValidComposition,omitempty"` - // includes all the feature subgraphs that are part of the federated graph; - // even the ones that are not part of the latest composition - FeatureSubgraphs []*Subgraph `protobuf:"bytes,6,rep,name=featureSubgraphs,proto3" json:"featureSubgraphs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graph *FederatedGraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + GraphRequestToken string `protobuf:"bytes,4,opt,name=graphRequestToken,proto3" json:"graphRequestToken,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphByNameResponse) Reset() { *x = GetFederatedGraphByNameResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphByNameResponse) String() string { @@ -4764,8 +4929,8 @@ func (x *GetFederatedGraphByNameResponse) String() string { func (*GetFederatedGraphByNameResponse) ProtoMessage() {} func (x *GetFederatedGraphByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4777,7 +4942,7 @@ func (x *GetFederatedGraphByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphByNameResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphByNameResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{51} } func (x *GetFederatedGraphByNameResponse) GetResponse() *Response { @@ -4808,37 +4973,20 @@ func (x *GetFederatedGraphByNameResponse) GetGraphRequestToken() string { return "" } -func (x *GetFederatedGraphByNameResponse) GetFeatureFlagsInLatestValidComposition() []*FeatureFlag { - if x != nil { - return x.FeatureFlagsInLatestValidComposition - } - return nil -} - -func (x *GetFederatedGraphByNameResponse) GetFeatureSubgraphs() []*Subgraph { - if x != nil { - return x.FeatureSubgraphs - } - return nil -} - type GetFederatedGraphSDLByNameRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - FeatureFlagName *string `protobuf:"bytes,3,opt,name=feature_flag_name,json=featureFlagName,proto3,oneof" json:"feature_flag_name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + FeatureFlagName *string `protobuf:"bytes,3,opt,name=feature_flag_name,json=featureFlagName,proto3,oneof" json:"feature_flag_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphSDLByNameRequest) Reset() { *x = GetFederatedGraphSDLByNameRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphSDLByNameRequest) String() string { @@ -4848,8 +4996,8 @@ func (x *GetFederatedGraphSDLByNameRequest) String() string { func (*GetFederatedGraphSDLByNameRequest) ProtoMessage() {} func (x *GetFederatedGraphSDLByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4861,7 +5009,7 @@ func (x *GetFederatedGraphSDLByNameRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetFederatedGraphSDLByNameRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphSDLByNameRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{52} } func (x *GetFederatedGraphSDLByNameRequest) GetName() string { @@ -4886,23 +5034,20 @@ func (x *GetFederatedGraphSDLByNameRequest) GetFeatureFlagName() string { } type GetFederatedGraphSDLByNameResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` + VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` + ClientSchema *string `protobuf:"bytes,4,opt,name=client_schema,json=clientSchema,proto3,oneof" json:"client_schema,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` - VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` - ClientSchema *string `protobuf:"bytes,4,opt,name=client_schema,json=clientSchema,proto3,oneof" json:"client_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphSDLByNameResponse) Reset() { *x = GetFederatedGraphSDLByNameResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphSDLByNameResponse) String() string { @@ -4912,8 +5057,8 @@ func (x *GetFederatedGraphSDLByNameResponse) String() string { func (*GetFederatedGraphSDLByNameResponse) ProtoMessage() {} func (x *GetFederatedGraphSDLByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4925,7 +5070,7 @@ func (x *GetFederatedGraphSDLByNameResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetFederatedGraphSDLByNameResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphSDLByNameResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{53} } func (x *GetFederatedGraphSDLByNameResponse) GetResponse() *Response { @@ -4957,21 +5102,18 @@ func (x *GetFederatedGraphSDLByNameResponse) GetClientSchema() string { } type GetSubgraphByNameRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphByNameRequest) Reset() { *x = GetSubgraphByNameRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphByNameRequest) String() string { @@ -4981,8 +5123,8 @@ func (x *GetSubgraphByNameRequest) String() string { func (*GetSubgraphByNameRequest) ProtoMessage() {} func (x *GetSubgraphByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[54] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4994,7 +5136,7 @@ func (x *GetSubgraphByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphByNameRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphByNameRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{54} } func (x *GetSubgraphByNameRequest) GetName() string { @@ -5012,23 +5154,20 @@ func (x *GetSubgraphByNameRequest) GetNamespace() string { } type GetSubgraphByNameResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Graph *Subgraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` Members []*SubgraphMember `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` LinkedSubgraph *GetSubgraphByNameResponse_LinkedSubgraph `protobuf:"bytes,4,opt,name=linkedSubgraph,proto3,oneof" json:"linkedSubgraph,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSubgraphByNameResponse) Reset() { *x = GetSubgraphByNameResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphByNameResponse) String() string { @@ -5038,8 +5177,8 @@ func (x *GetSubgraphByNameResponse) String() string { func (*GetSubgraphByNameResponse) ProtoMessage() {} func (x *GetSubgraphByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5051,7 +5190,7 @@ func (x *GetSubgraphByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphByNameResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphByNameResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{55} } func (x *GetSubgraphByNameResponse) GetResponse() *Response { @@ -5083,22 +5222,19 @@ func (x *GetSubgraphByNameResponse) GetLinkedSubgraph() *GetSubgraphByNameRespon } type GetSubgraphSDLFromLatestCompositionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + FedGraphName string `protobuf:"bytes,2,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - FedGraphName string `protobuf:"bytes,2,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphSDLFromLatestCompositionRequest) Reset() { *x = GetSubgraphSDLFromLatestCompositionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphSDLFromLatestCompositionRequest) String() string { @@ -5108,8 +5244,8 @@ func (x *GetSubgraphSDLFromLatestCompositionRequest) String() string { func (*GetSubgraphSDLFromLatestCompositionRequest) ProtoMessage() {} func (x *GetSubgraphSDLFromLatestCompositionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5121,7 +5257,7 @@ func (x *GetSubgraphSDLFromLatestCompositionRequest) ProtoReflect() protoreflect // Deprecated: Use GetSubgraphSDLFromLatestCompositionRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphSDLFromLatestCompositionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{56} } func (x *GetSubgraphSDLFromLatestCompositionRequest) GetName() string { @@ -5146,22 +5282,19 @@ func (x *GetSubgraphSDLFromLatestCompositionRequest) GetNamespace() string { } type GetSubgraphSDLFromLatestCompositionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` + VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` - VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphSDLFromLatestCompositionResponse) Reset() { *x = GetSubgraphSDLFromLatestCompositionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphSDLFromLatestCompositionResponse) String() string { @@ -5171,8 +5304,8 @@ func (x *GetSubgraphSDLFromLatestCompositionResponse) String() string { func (*GetSubgraphSDLFromLatestCompositionResponse) ProtoMessage() {} func (x *GetSubgraphSDLFromLatestCompositionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5184,7 +5317,7 @@ func (x *GetSubgraphSDLFromLatestCompositionResponse) ProtoReflect() protoreflec // Deprecated: Use GetSubgraphSDLFromLatestCompositionResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphSDLFromLatestCompositionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{57} } func (x *GetSubgraphSDLFromLatestCompositionResponse) GetResponse() *Response { @@ -5209,21 +5342,18 @@ func (x *GetSubgraphSDLFromLatestCompositionResponse) GetVersionId() string { } type GetLatestSubgraphSDLRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetLatestSubgraphSDLRequest) Reset() { *x = GetLatestSubgraphSDLRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetLatestSubgraphSDLRequest) String() string { @@ -5233,8 +5363,8 @@ func (x *GetLatestSubgraphSDLRequest) String() string { func (*GetLatestSubgraphSDLRequest) ProtoMessage() {} func (x *GetLatestSubgraphSDLRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5246,7 +5376,7 @@ func (x *GetLatestSubgraphSDLRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestSubgraphSDLRequest.ProtoReflect.Descriptor instead. func (*GetLatestSubgraphSDLRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{58} } func (x *GetLatestSubgraphSDLRequest) GetName() string { @@ -5264,22 +5394,19 @@ func (x *GetLatestSubgraphSDLRequest) GetNamespace() string { } type GetLatestSubgraphSDLResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` + VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Sdl *string `protobuf:"bytes,2,opt,name=sdl,proto3,oneof" json:"sdl,omitempty"` - VersionId *string `protobuf:"bytes,3,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetLatestSubgraphSDLResponse) Reset() { *x = GetLatestSubgraphSDLResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetLatestSubgraphSDLResponse) String() string { @@ -5289,8 +5416,8 @@ func (x *GetLatestSubgraphSDLResponse) String() string { func (*GetLatestSubgraphSDLResponse) ProtoMessage() {} func (x *GetLatestSubgraphSDLResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[59] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5302,7 +5429,7 @@ func (x *GetLatestSubgraphSDLResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestSubgraphSDLResponse.ProtoReflect.Descriptor instead. func (*GetLatestSubgraphSDLResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{59} } func (x *GetLatestSubgraphSDLResponse) GetResponse() *Response { @@ -5327,20 +5454,17 @@ func (x *GetLatestSubgraphSDLResponse) GetVersionId() string { } type GetChecksByFederatedGraphNameFilters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Subgraphs []string `protobuf:"bytes,1,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` unknownFields protoimpl.UnknownFields - - Subgraphs []string `protobuf:"bytes,1,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetChecksByFederatedGraphNameFilters) Reset() { *x = GetChecksByFederatedGraphNameFilters{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChecksByFederatedGraphNameFilters) String() string { @@ -5350,8 +5474,8 @@ func (x *GetChecksByFederatedGraphNameFilters) String() string { func (*GetChecksByFederatedGraphNameFilters) ProtoMessage() {} func (x *GetChecksByFederatedGraphNameFilters) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5363,7 +5487,7 @@ func (x *GetChecksByFederatedGraphNameFilters) ProtoReflect() protoreflect.Messa // Deprecated: Use GetChecksByFederatedGraphNameFilters.ProtoReflect.Descriptor instead. func (*GetChecksByFederatedGraphNameFilters) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{60} } func (x *GetChecksByFederatedGraphNameFilters) GetSubgraphs() []string { @@ -5374,26 +5498,23 @@ func (x *GetChecksByFederatedGraphNameFilters) GetSubgraphs() []string { } type GetChecksByFederatedGraphNameRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` + Namespace string `protobuf:"bytes,6,opt,name=namespace,proto3" json:"namespace,omitempty"` + Filters *GetChecksByFederatedGraphNameFilters `protobuf:"bytes,7,opt,name=filters,proto3,oneof" json:"filters,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` - Namespace string `protobuf:"bytes,6,opt,name=namespace,proto3" json:"namespace,omitempty"` - Filters *GetChecksByFederatedGraphNameFilters `protobuf:"bytes,7,opt,name=filters,proto3,oneof" json:"filters,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetChecksByFederatedGraphNameRequest) Reset() { *x = GetChecksByFederatedGraphNameRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChecksByFederatedGraphNameRequest) String() string { @@ -5403,8 +5524,8 @@ func (x *GetChecksByFederatedGraphNameRequest) String() string { func (*GetChecksByFederatedGraphNameRequest) ProtoMessage() {} func (x *GetChecksByFederatedGraphNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[61] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5416,7 +5537,7 @@ func (x *GetChecksByFederatedGraphNameRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use GetChecksByFederatedGraphNameRequest.ProtoReflect.Descriptor instead. func (*GetChecksByFederatedGraphNameRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{61} } func (x *GetChecksByFederatedGraphNameRequest) GetName() string { @@ -5469,10 +5590,7 @@ func (x *GetChecksByFederatedGraphNameRequest) GetFilters() *GetChecksByFederate } type SchemaCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` TargetID *string `protobuf:"bytes,2,opt,name=targetID,proto3,oneof" json:"targetID,omitempty"` SubgraphName *string `protobuf:"bytes,3,opt,name=subgraphName,proto3,oneof" json:"subgraphName,omitempty"` @@ -5497,15 +5615,15 @@ type SchemaCheck struct { LinkedChecks []*SchemaCheck_LinkedCheck `protobuf:"bytes,22,rep,name=linkedChecks,proto3" json:"linkedChecks,omitempty"` CheckExtensionDeliveryId *string `protobuf:"bytes,23,opt,name=check_extension_delivery_id,json=checkExtensionDeliveryId,proto3,oneof" json:"check_extension_delivery_id,omitempty"` CheckExtensionErrorMessage *string `protobuf:"bytes,24,opt,name=check_extension_error_message,json=checkExtensionErrorMessage,proto3,oneof" json:"check_extension_error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaCheck) Reset() { *x = SchemaCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaCheck) String() string { @@ -5515,8 +5633,8 @@ func (x *SchemaCheck) String() string { func (*SchemaCheck) ProtoMessage() {} func (x *SchemaCheck) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[62] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5528,7 +5646,7 @@ func (x *SchemaCheck) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaCheck.ProtoReflect.Descriptor instead. func (*SchemaCheck) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{62} } func (x *SchemaCheck) GetId() string { @@ -5700,22 +5818,19 @@ func (x *SchemaCheck) GetCheckExtensionErrorMessage() string { } type GetChecksByFederatedGraphNameResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Checks []*SchemaCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` - ChecksCountBasedOnDateRange int32 `protobuf:"varint,3,opt,name=checksCountBasedOnDateRange,proto3" json:"checksCountBasedOnDateRange,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Checks []*SchemaCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` + ChecksCountBasedOnDateRange int32 `protobuf:"varint,3,opt,name=checksCountBasedOnDateRange,proto3" json:"checksCountBasedOnDateRange,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetChecksByFederatedGraphNameResponse) Reset() { *x = GetChecksByFederatedGraphNameResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChecksByFederatedGraphNameResponse) String() string { @@ -5725,8 +5840,8 @@ func (x *GetChecksByFederatedGraphNameResponse) String() string { func (*GetChecksByFederatedGraphNameResponse) ProtoMessage() {} func (x *GetChecksByFederatedGraphNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5738,7 +5853,7 @@ func (x *GetChecksByFederatedGraphNameResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use GetChecksByFederatedGraphNameResponse.ProtoReflect.Descriptor instead. func (*GetChecksByFederatedGraphNameResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{63} } func (x *GetChecksByFederatedGraphNameResponse) GetResponse() *Response { @@ -5763,22 +5878,19 @@ func (x *GetChecksByFederatedGraphNameResponse) GetChecksCountBasedOnDateRange() } type GetCheckSummaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` + GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` - GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCheckSummaryRequest) Reset() { *x = GetCheckSummaryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckSummaryRequest) String() string { @@ -5788,8 +5900,8 @@ func (x *GetCheckSummaryRequest) String() string { func (*GetCheckSummaryRequest) ProtoMessage() {} func (x *GetCheckSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[64] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5801,7 +5913,7 @@ func (x *GetCheckSummaryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCheckSummaryRequest.ProtoReflect.Descriptor instead. func (*GetCheckSummaryRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{64} } func (x *GetCheckSummaryRequest) GetCheckId() string { @@ -5826,21 +5938,18 @@ func (x *GetCheckSummaryRequest) GetNamespace() string { } type ChangeCounts struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Additions int32 `protobuf:"varint,1,opt,name=additions,proto3" json:"additions,omitempty"` + Deletions int32 `protobuf:"varint,2,opt,name=deletions,proto3" json:"deletions,omitempty"` unknownFields protoimpl.UnknownFields - - Additions int32 `protobuf:"varint,1,opt,name=additions,proto3" json:"additions,omitempty"` - Deletions int32 `protobuf:"varint,2,opt,name=deletions,proto3" json:"deletions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeCounts) Reset() { *x = ChangeCounts{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangeCounts) String() string { @@ -5850,8 +5959,8 @@ func (x *ChangeCounts) String() string { func (*ChangeCounts) ProtoMessage() {} func (x *ChangeCounts) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[65] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5863,7 +5972,7 @@ func (x *ChangeCounts) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeCounts.ProtoReflect.Descriptor instead. func (*ChangeCounts) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{65} } func (x *ChangeCounts) GetAdditions() int32 { @@ -5881,10 +5990,7 @@ func (x *ChangeCounts) GetDeletions() int32 { } type GetCheckSummaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Check *SchemaCheck `protobuf:"bytes,2,opt,name=check,proto3" json:"check,omitempty"` AffectedGraphs []*GetCheckSummaryResponse_AffectedGraph `protobuf:"bytes,3,rep,name=affected_graphs,json=affectedGraphs,proto3" json:"affected_graphs,omitempty"` @@ -5900,15 +6006,15 @@ type GetCheckSummaryResponse struct { ProposalMatches []*GetCheckSummaryResponse_ProposalSchemaMatch `protobuf:"bytes,14,rep,name=proposalMatches,proto3" json:"proposalMatches,omitempty"` IsProposalsEnabled bool `protobuf:"varint,15,opt,name=isProposalsEnabled,proto3" json:"isProposalsEnabled,omitempty"` ComposedSchemaBreakingChanges []*FederatedGraphSchemaChange `protobuf:"bytes,16,rep,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCheckSummaryResponse) Reset() { *x = GetCheckSummaryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckSummaryResponse) String() string { @@ -5918,8 +6024,8 @@ func (x *GetCheckSummaryResponse) String() string { func (*GetCheckSummaryResponse) ProtoMessage() {} func (x *GetCheckSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5931,7 +6037,7 @@ func (x *GetCheckSummaryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCheckSummaryResponse.ProtoReflect.Descriptor instead. func (*GetCheckSummaryResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{66} } func (x *GetCheckSummaryResponse) GetResponse() *Response { @@ -6040,25 +6146,22 @@ func (x *GetCheckSummaryResponse) GetComposedSchemaBreakingChanges() []*Federate } type GetCheckOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` + GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` + Search *string `protobuf:"bytes,6,opt,name=search,proto3,oneof" json:"search,omitempty"` unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` - GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` - Search *string `protobuf:"bytes,6,opt,name=search,proto3,oneof" json:"search,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCheckOperationsRequest) Reset() { *x = GetCheckOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckOperationsRequest) String() string { @@ -6068,8 +6171,8 @@ func (x *GetCheckOperationsRequest) String() string { func (*GetCheckOperationsRequest) ProtoMessage() {} func (x *GetCheckOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6081,7 +6184,7 @@ func (x *GetCheckOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCheckOperationsRequest.ProtoReflect.Descriptor instead. func (*GetCheckOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{67} } func (x *GetCheckOperationsRequest) GetCheckId() string { @@ -6127,10 +6230,7 @@ func (x *GetCheckOperationsRequest) GetSearch() string { } type GetCheckOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Operations []*GetCheckOperationsResponse_CheckOperation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` TrafficCheckDays int32 `protobuf:"varint,3,opt,name=traffic_check_days,json=trafficCheckDays,proto3" json:"traffic_check_days,omitempty"` @@ -6139,15 +6239,15 @@ type GetCheckOperationsResponse struct { TotalOperationsCount int32 `protobuf:"varint,6,opt,name=totalOperationsCount,proto3" json:"totalOperationsCount,omitempty"` DoAllOperationsHaveIgnoreAllOverride bool `protobuf:"varint,7,opt,name=doAllOperationsHaveIgnoreAllOverride,proto3" json:"doAllOperationsHaveIgnoreAllOverride,omitempty"` DoAllOperationsHaveAllTheirChangesMarkedSafe bool `protobuf:"varint,8,opt,name=doAllOperationsHaveAllTheirChangesMarkedSafe,proto3" json:"doAllOperationsHaveAllTheirChangesMarkedSafe,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCheckOperationsResponse) Reset() { *x = GetCheckOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckOperationsResponse) String() string { @@ -6157,8 +6257,8 @@ func (x *GetCheckOperationsResponse) String() string { func (*GetCheckOperationsResponse) ProtoMessage() {} func (x *GetCheckOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6170,7 +6270,7 @@ func (x *GetCheckOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCheckOperationsResponse.ProtoReflect.Descriptor instead. func (*GetCheckOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{68} } func (x *GetCheckOperationsResponse) GetResponse() *Response { @@ -6230,23 +6330,20 @@ func (x *GetCheckOperationsResponse) GetDoAllOperationsHaveAllTheirChangesMarked } type GetOperationContentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOperationContentRequest) Reset() { *x = GetOperationContentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationContentRequest) String() string { @@ -6256,8 +6353,8 @@ func (x *GetOperationContentRequest) String() string { func (*GetOperationContentRequest) ProtoMessage() {} func (x *GetOperationContentRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6269,7 +6366,7 @@ func (x *GetOperationContentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationContentRequest.ProtoReflect.Descriptor instead. func (*GetOperationContentRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{69} } func (x *GetOperationContentRequest) GetHash() string { @@ -6301,21 +6398,18 @@ func (x *GetOperationContentRequest) GetName() string { } type GetOperationContentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - OperationContent string `protobuf:"bytes,2,opt,name=operation_content,json=operationContent,proto3" json:"operation_content,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + OperationContent string `protobuf:"bytes,2,opt,name=operation_content,json=operationContent,proto3" json:"operation_content,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOperationContentResponse) Reset() { *x = GetOperationContentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationContentResponse) String() string { @@ -6325,8 +6419,8 @@ func (x *GetOperationContentResponse) String() string { func (*GetOperationContentResponse) ProtoMessage() {} func (x *GetOperationContentResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[70] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6338,7 +6432,7 @@ func (x *GetOperationContentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationContentResponse.ProtoReflect.Descriptor instead. func (*GetOperationContentResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{70} } func (x *GetOperationContentResponse) GetResponse() *Response { @@ -6356,23 +6450,20 @@ func (x *GetOperationContentResponse) GetOperationContent() string { } type GetFederatedGraphChangelogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphChangelogRequest) Reset() { *x = GetFederatedGraphChangelogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphChangelogRequest) String() string { @@ -6382,8 +6473,8 @@ func (x *GetFederatedGraphChangelogRequest) String() string { func (*GetFederatedGraphChangelogRequest) ProtoMessage() {} func (x *GetFederatedGraphChangelogRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[71] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6395,7 +6486,7 @@ func (x *GetFederatedGraphChangelogRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetFederatedGraphChangelogRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphChangelogRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{71} } func (x *GetFederatedGraphChangelogRequest) GetName() string { @@ -6427,24 +6518,21 @@ func (x *GetFederatedGraphChangelogRequest) GetNamespace() string { } type FederatedGraphChangelog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + ChangeType string `protobuf:"bytes,3,opt,name=changeType,proto3" json:"changeType,omitempty"` + ChangeMessage string `protobuf:"bytes,4,opt,name=changeMessage,proto3" json:"changeMessage,omitempty"` + CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - ChangeType string `protobuf:"bytes,3,opt,name=changeType,proto3" json:"changeType,omitempty"` - ChangeMessage string `protobuf:"bytes,4,opt,name=changeMessage,proto3" json:"changeMessage,omitempty"` - CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FederatedGraphChangelog) Reset() { *x = FederatedGraphChangelog{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGraphChangelog) String() string { @@ -6454,8 +6542,8 @@ func (x *FederatedGraphChangelog) String() string { func (*FederatedGraphChangelog) ProtoMessage() {} func (x *FederatedGraphChangelog) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[72] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6467,7 +6555,7 @@ func (x *FederatedGraphChangelog) ProtoReflect() protoreflect.Message { // Deprecated: Use FederatedGraphChangelog.ProtoReflect.Descriptor instead. func (*FederatedGraphChangelog) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{72} } func (x *FederatedGraphChangelog) GetId() string { @@ -6506,23 +6594,20 @@ func (x *FederatedGraphChangelog) GetCreatedAt() string { } type FederatedGraphChangelogOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` CreatedAt string `protobuf:"bytes,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` Changelogs []*FederatedGraphChangelog `protobuf:"bytes,3,rep,name=changelogs,proto3" json:"changelogs,omitempty"` CompositionId string `protobuf:"bytes,4,opt,name=compositionId,proto3" json:"compositionId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedGraphChangelogOutput) Reset() { *x = FederatedGraphChangelogOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGraphChangelogOutput) String() string { @@ -6532,8 +6617,8 @@ func (x *FederatedGraphChangelogOutput) String() string { func (*FederatedGraphChangelogOutput) ProtoMessage() {} func (x *FederatedGraphChangelogOutput) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[73] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6545,7 +6630,7 @@ func (x *FederatedGraphChangelogOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use FederatedGraphChangelogOutput.ProtoReflect.Descriptor instead. func (*FederatedGraphChangelogOutput) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{73} } func (x *FederatedGraphChangelogOutput) GetCreatedAt() string { @@ -6577,22 +6662,19 @@ func (x *FederatedGraphChangelogOutput) GetCompositionId() string { } type GetFederatedGraphChangelogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` FederatedGraphChangelogOutput []*FederatedGraphChangelogOutput `protobuf:"bytes,2,rep,name=federatedGraphChangelogOutput,proto3" json:"federatedGraphChangelogOutput,omitempty"` HasNextPage bool `protobuf:"varint,3,opt,name=hasNextPage,proto3" json:"hasNextPage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphChangelogResponse) Reset() { *x = GetFederatedGraphChangelogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphChangelogResponse) String() string { @@ -6602,8 +6684,8 @@ func (x *GetFederatedGraphChangelogResponse) String() string { func (*GetFederatedGraphChangelogResponse) ProtoMessage() {} func (x *GetFederatedGraphChangelogResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[74] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6615,7 +6697,7 @@ func (x *GetFederatedGraphChangelogResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetFederatedGraphChangelogResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphChangelogResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{71} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{74} } func (x *GetFederatedGraphChangelogResponse) GetResponse() *Response { @@ -6640,21 +6722,18 @@ func (x *GetFederatedGraphChangelogResponse) GetHasNextPage() bool { } type GetFederatedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - FederatedSchemaSDL string `protobuf:"bytes,2,opt,name=FederatedSchemaSDL,proto3" json:"FederatedSchemaSDL,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FederatedSchemaSDL string `protobuf:"bytes,2,opt,name=FederatedSchemaSDL,proto3" json:"FederatedSchemaSDL,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedResponse) Reset() { *x = GetFederatedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedResponse) String() string { @@ -6664,8 +6743,8 @@ func (x *GetFederatedResponse) String() string { func (*GetFederatedResponse) ProtoMessage() {} func (x *GetFederatedResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[75] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6677,7 +6756,7 @@ func (x *GetFederatedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedResponse.ProtoReflect.Descriptor instead. func (*GetFederatedResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{72} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{75} } func (x *GetFederatedResponse) GetResponse() *Response { @@ -6695,14 +6774,11 @@ func (x *GetFederatedResponse) GetFederatedSchemaSDL() string { } type UpdateSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - RoutingUrl *string `protobuf:"bytes,2,opt,name=routing_url,json=routingUrl,proto3,oneof" json:"routing_url,omitempty"` - Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` - Headers []string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + RoutingUrl *string `protobuf:"bytes,2,opt,name=routing_url,json=routingUrl,proto3,oneof" json:"routing_url,omitempty"` + Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + Headers []string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` // subscription protocol to use when subscribing to this subgraph SubscriptionProtocol *common.GraphQLSubscriptionProtocol `protobuf:"varint,5,opt,name=subscription_protocol,json=subscriptionProtocol,proto3,enum=wg.cosmo.common.GraphQLSubscriptionProtocol,oneof" json:"subscription_protocol,omitempty"` // url used for subscriptions @@ -6712,15 +6788,15 @@ type UpdateSubgraphRequest struct { UnsetLabels *bool `protobuf:"varint,9,opt,name=unset_labels,json=unsetLabels,proto3,oneof" json:"unset_labels,omitempty"` WebsocketSubprotocol *common.GraphQLWebsocketSubprotocol `protobuf:"varint,10,opt,name=websocket_subprotocol,json=websocketSubprotocol,proto3,enum=wg.cosmo.common.GraphQLWebsocketSubprotocol,oneof" json:"websocket_subprotocol,omitempty"` DisableResolvabilityValidation *bool `protobuf:"varint,11,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateSubgraphRequest) Reset() { *x = UpdateSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateSubgraphRequest) String() string { @@ -6730,8 +6806,8 @@ func (x *UpdateSubgraphRequest) String() string { func (*UpdateSubgraphRequest) ProtoMessage() {} func (x *UpdateSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[76] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6743,7 +6819,7 @@ func (x *UpdateSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSubgraphRequest.ProtoReflect.Descriptor instead. func (*UpdateSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{73} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{76} } func (x *UpdateSubgraphRequest) GetName() string { @@ -6824,23 +6900,20 @@ func (x *UpdateSubgraphRequest) GetDisableResolvabilityValidation() bool { } type UpdateSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateSubgraphResponse) Reset() { *x = UpdateSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateSubgraphResponse) String() string { @@ -6850,8 +6923,8 @@ func (x *UpdateSubgraphResponse) String() string { func (*UpdateSubgraphResponse) ProtoMessage() {} func (x *UpdateSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[77] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6863,7 +6936,7 @@ func (x *UpdateSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSubgraphResponse.ProtoReflect.Descriptor instead. func (*UpdateSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{74} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{77} } func (x *UpdateSubgraphResponse) GetResponse() *Response { @@ -6895,28 +6968,25 @@ func (x *UpdateSubgraphResponse) GetCompositionWarnings() []*CompositionWarning } type UpdateFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - RoutingUrl string `protobuf:"bytes,2,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` - LabelMatchers []string `protobuf:"bytes,3,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` - Readme *string `protobuf:"bytes,4,opt,name=readme,proto3,oneof" json:"readme,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - UnsetLabelMatchers *bool `protobuf:"varint,6,opt,name=unset_label_matchers,json=unsetLabelMatchers,proto3,oneof" json:"unset_label_matchers,omitempty"` - AdmissionWebhookURL *string `protobuf:"bytes,7,opt,name=admissionWebhookURL,proto3,oneof" json:"admissionWebhookURL,omitempty"` - AdmissionWebhookSecret *string `protobuf:"bytes,8,opt,name=admissionWebhookSecret,proto3,oneof" json:"admissionWebhookSecret,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + RoutingUrl string `protobuf:"bytes,2,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` + LabelMatchers []string `protobuf:"bytes,3,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` + Readme *string `protobuf:"bytes,4,opt,name=readme,proto3,oneof" json:"readme,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + UnsetLabelMatchers *bool `protobuf:"varint,6,opt,name=unset_label_matchers,json=unsetLabelMatchers,proto3,oneof" json:"unset_label_matchers,omitempty"` + AdmissionWebhookURL *string `protobuf:"bytes,7,opt,name=admissionWebhookURL,proto3,oneof" json:"admissionWebhookURL,omitempty"` + AdmissionWebhookSecret *string `protobuf:"bytes,8,opt,name=admissionWebhookSecret,proto3,oneof" json:"admissionWebhookSecret,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateFederatedGraphRequest) Reset() { *x = UpdateFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFederatedGraphRequest) String() string { @@ -6926,8 +6996,8 @@ func (x *UpdateFederatedGraphRequest) String() string { func (*UpdateFederatedGraphRequest) ProtoMessage() {} func (x *UpdateFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[78] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6939,7 +7009,7 @@ func (x *UpdateFederatedGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*UpdateFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{75} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{78} } func (x *UpdateFederatedGraphRequest) GetName() string { @@ -7006,23 +7076,20 @@ func (x *UpdateFederatedGraphRequest) GetDisableResolvabilityValidation() bool { } type UpdateFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateFederatedGraphResponse) Reset() { *x = UpdateFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFederatedGraphResponse) String() string { @@ -7032,8 +7099,8 @@ func (x *UpdateFederatedGraphResponse) String() string { func (*UpdateFederatedGraphResponse) ProtoMessage() {} func (x *UpdateFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[79] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7045,7 +7112,7 @@ func (x *UpdateFederatedGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*UpdateFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{76} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{79} } func (x *UpdateFederatedGraphResponse) GetResponse() *Response { @@ -7077,10 +7144,7 @@ func (x *UpdateFederatedGraphResponse) GetCompositionWarnings() []*CompositionWa } type UpdateMonographRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` RoutingUrl string `protobuf:"bytes,3,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` @@ -7091,15 +7155,15 @@ type UpdateMonographRequest struct { WebsocketSubprotocol *common.GraphQLWebsocketSubprotocol `protobuf:"varint,8,opt,name=websocket_subprotocol,json=websocketSubprotocol,proto3,enum=wg.cosmo.common.GraphQLWebsocketSubprotocol,oneof" json:"websocket_subprotocol,omitempty"` AdmissionWebhookURL *string `protobuf:"bytes,9,opt,name=admissionWebhookURL,proto3,oneof" json:"admissionWebhookURL,omitempty"` AdmissionWebhookSecret *string `protobuf:"bytes,10,opt,name=admissionWebhookSecret,proto3,oneof" json:"admissionWebhookSecret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateMonographRequest) Reset() { *x = UpdateMonographRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateMonographRequest) String() string { @@ -7109,8 +7173,8 @@ func (x *UpdateMonographRequest) String() string { func (*UpdateMonographRequest) ProtoMessage() {} func (x *UpdateMonographRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[77] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[80] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7122,7 +7186,7 @@ func (x *UpdateMonographRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateMonographRequest.ProtoReflect.Descriptor instead. func (*UpdateMonographRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{77} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{80} } func (x *UpdateMonographRequest) GetName() string { @@ -7196,20 +7260,17 @@ func (x *UpdateMonographRequest) GetAdmissionWebhookSecret() string { } type UpdateMonographResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateMonographResponse) Reset() { *x = UpdateMonographResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateMonographResponse) String() string { @@ -7219,8 +7280,8 @@ func (x *UpdateMonographResponse) String() string { func (*UpdateMonographResponse) ProtoMessage() {} func (x *UpdateMonographResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[78] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[81] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7232,7 +7293,7 @@ func (x *UpdateMonographResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateMonographResponse.ProtoReflect.Descriptor instead. func (*UpdateMonographResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{78} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{81} } func (x *UpdateMonographResponse) GetResponse() *Response { @@ -7243,24 +7304,21 @@ func (x *UpdateMonographResponse) GetResponse() *Response { } type CheckFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - LabelMatchers []string `protobuf:"bytes,2,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` - Limit *int32 `protobuf:"varint,5,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + LabelMatchers []string `protobuf:"bytes,2,rep,name=label_matchers,json=labelMatchers,proto3" json:"label_matchers,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + Limit *int32 `protobuf:"varint,5,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckFederatedGraphRequest) Reset() { *x = CheckFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckFederatedGraphRequest) String() string { @@ -7270,8 +7328,8 @@ func (x *CheckFederatedGraphRequest) String() string { func (*CheckFederatedGraphRequest) ProtoMessage() {} func (x *CheckFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[79] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[82] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7283,7 +7341,7 @@ func (x *CheckFederatedGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*CheckFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{79} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{82} } func (x *CheckFederatedGraphRequest) GetName() string { @@ -7322,24 +7380,21 @@ func (x *CheckFederatedGraphRequest) GetLimit() int32 { } type CheckFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - Counts *SchemaCheckCounts `protobuf:"bytes,5,opt,name=counts,proto3,oneof" json:"counts,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + Counts *SchemaCheckCounts `protobuf:"bytes,5,opt,name=counts,proto3,oneof" json:"counts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckFederatedGraphResponse) Reset() { *x = CheckFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckFederatedGraphResponse) String() string { @@ -7349,8 +7404,8 @@ func (x *CheckFederatedGraphResponse) String() string { func (*CheckFederatedGraphResponse) ProtoMessage() {} func (x *CheckFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[80] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[83] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7362,7 +7417,7 @@ func (x *CheckFederatedGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*CheckFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{80} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{83} } func (x *CheckFederatedGraphResponse) GetResponse() *Response { @@ -7401,21 +7456,18 @@ func (x *CheckFederatedGraphResponse) GetCounts() *SchemaCheckCounts { } type Pagination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Pagination) Reset() { *x = Pagination{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Pagination) String() string { @@ -7425,8 +7477,8 @@ func (x *Pagination) String() string { func (*Pagination) ProtoMessage() {} func (x *Pagination) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[81] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[84] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7438,7 +7490,7 @@ func (x *Pagination) ProtoReflect() protoreflect.Message { // Deprecated: Use Pagination.ProtoReflect.Descriptor instead. func (*Pagination) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{81} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{84} } func (x *Pagination) GetLimit() int32 { @@ -7456,21 +7508,18 @@ func (x *Pagination) GetOffset() int32 { } type Sort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Desc bool `protobuf:"varint,2,opt,name=desc,proto3" json:"desc,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Desc bool `protobuf:"varint,2,opt,name=desc,proto3" json:"desc,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Sort) Reset() { *x = Sort{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Sort) String() string { @@ -7480,8 +7529,8 @@ func (x *Sort) String() string { func (*Sort) ProtoMessage() {} func (x *Sort) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[82] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[85] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7493,7 +7542,7 @@ func (x *Sort) ProtoReflect() protoreflect.Message { // Deprecated: Use Sort.ProtoReflect.Descriptor instead. func (*Sort) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{82} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{85} } func (x *Sort) GetId() string { @@ -7511,24 +7560,21 @@ func (x *Sort) GetDesc() bool { } type AnalyticsConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + DateRange *DateRange `protobuf:"bytes,1,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Range *int32 `protobuf:"varint,2,opt,name=range,proto3,oneof" json:"range,omitempty"` + Filters []*AnalyticsFilter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"` + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + Sort *Sort `protobuf:"bytes,5,opt,name=sort,proto3,oneof" json:"sort,omitempty"` unknownFields protoimpl.UnknownFields - - DateRange *DateRange `protobuf:"bytes,1,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Range *int32 `protobuf:"varint,2,opt,name=range,proto3,oneof" json:"range,omitempty"` - Filters []*AnalyticsFilter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"` - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` - Sort *Sort `protobuf:"bytes,5,opt,name=sort,proto3,oneof" json:"sort,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AnalyticsConfig) Reset() { *x = AnalyticsConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsConfig) String() string { @@ -7538,8 +7584,8 @@ func (x *AnalyticsConfig) String() string { func (*AnalyticsConfig) ProtoMessage() {} func (x *AnalyticsConfig) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[83] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[86] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7551,7 +7597,7 @@ func (x *AnalyticsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsConfig.ProtoReflect.Descriptor instead. func (*AnalyticsConfig) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{83} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{86} } func (x *AnalyticsConfig) GetDateRange() *DateRange { @@ -7590,25 +7636,22 @@ func (x *AnalyticsConfig) GetSort() *Sort { } type AnalyticsFilter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the column / attribute to filter on. Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` // The value to filter on. Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // The operator to use for the filter. - Operator AnalyticsViewFilterOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=wg.cosmo.platform.v1.AnalyticsViewFilterOperator" json:"operator,omitempty"` + Operator AnalyticsViewFilterOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=wg.cosmo.platform.v1.AnalyticsViewFilterOperator" json:"operator,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AnalyticsFilter) Reset() { *x = AnalyticsFilter{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsFilter) String() string { @@ -7618,8 +7661,8 @@ func (x *AnalyticsFilter) String() string { func (*AnalyticsFilter) ProtoMessage() {} func (x *AnalyticsFilter) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[84] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[87] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7631,7 +7674,7 @@ func (x *AnalyticsFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsFilter.ProtoReflect.Descriptor instead. func (*AnalyticsFilter) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{84} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{87} } func (x *AnalyticsFilter) GetField() string { @@ -7656,23 +7699,20 @@ func (x *AnalyticsFilter) GetOperator() AnalyticsViewFilterOperator { } type DateRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The start date of the date range in ISO 8601 format. Start string `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` // The end date of the date range in ISO 8601 format. - End string `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` + End string `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DateRange) Reset() { *x = DateRange{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DateRange) String() string { @@ -7682,8 +7722,8 @@ func (x *DateRange) String() string { func (*DateRange) ProtoMessage() {} func (x *DateRange) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[85] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[88] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7695,7 +7735,7 @@ func (x *DateRange) ProtoReflect() protoreflect.Message { // Deprecated: Use DateRange.ProtoReflect.Descriptor instead. func (*DateRange) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{85} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{88} } func (x *DateRange) GetStart() string { @@ -7713,23 +7753,20 @@ func (x *DateRange) GetEnd() string { } type GetAnalyticsViewRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` Name AnalyticsViewGroupName `protobuf:"varint,2,opt,name=name,proto3,enum=wg.cosmo.platform.v1.AnalyticsViewGroupName" json:"name,omitempty"` Config *AnalyticsConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetAnalyticsViewRequest) Reset() { *x = GetAnalyticsViewRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAnalyticsViewRequest) String() string { @@ -7739,8 +7776,8 @@ func (x *GetAnalyticsViewRequest) String() string { func (*GetAnalyticsViewRequest) ProtoMessage() {} func (x *GetAnalyticsViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[89] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7752,7 +7789,7 @@ func (x *GetAnalyticsViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalyticsViewRequest.ProtoReflect.Descriptor instead. func (*GetAnalyticsViewRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{86} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{89} } func (x *GetAnalyticsViewRequest) GetFederatedGraphName() string { @@ -7784,23 +7821,20 @@ func (x *GetAnalyticsViewRequest) GetNamespace() string { } type AnalyticsViewResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Columns []*AnalyticsViewColumn `protobuf:"bytes,1,rep,name=columns,proto3" json:"columns,omitempty"` + Rows []*AnalyticsViewRow `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"` + Filters []*AnalyticsViewResultFilter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"` + Pages int32 `protobuf:"varint,4,opt,name=pages,proto3" json:"pages,omitempty"` unknownFields protoimpl.UnknownFields - - Columns []*AnalyticsViewColumn `protobuf:"bytes,1,rep,name=columns,proto3" json:"columns,omitempty"` - Rows []*AnalyticsViewRow `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"` - Filters []*AnalyticsViewResultFilter `protobuf:"bytes,3,rep,name=filters,proto3" json:"filters,omitempty"` - Pages int32 `protobuf:"varint,4,opt,name=pages,proto3" json:"pages,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewResult) Reset() { *x = AnalyticsViewResult{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewResult) String() string { @@ -7810,8 +7844,8 @@ func (x *AnalyticsViewResult) String() string { func (*AnalyticsViewResult) ProtoMessage() {} func (x *AnalyticsViewResult) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[87] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[90] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7823,7 +7857,7 @@ func (x *AnalyticsViewResult) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewResult.ProtoReflect.Descriptor instead. func (*AnalyticsViewResult) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{87} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{90} } func (x *AnalyticsViewResult) GetColumns() []*AnalyticsViewColumn { @@ -7855,25 +7889,22 @@ func (x *AnalyticsViewResult) GetPages() int32 { } type AnalyticsViewColumn struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Unit *Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=wg.cosmo.platform.v1.Unit,oneof" json:"unit,omitempty"` + IsHidden *bool `protobuf:"varint,5,opt,name=is_hidden,json=isHidden,proto3,oneof" json:"is_hidden,omitempty"` + IsCta *bool `protobuf:"varint,6,opt,name=is_cta,json=isCta,proto3,oneof" json:"is_cta,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Unit *Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=wg.cosmo.platform.v1.Unit,oneof" json:"unit,omitempty"` - IsHidden *bool `protobuf:"varint,5,opt,name=is_hidden,json=isHidden,proto3,oneof" json:"is_hidden,omitempty"` - IsCta *bool `protobuf:"varint,6,opt,name=is_cta,json=isCta,proto3,oneof" json:"is_cta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewColumn) Reset() { *x = AnalyticsViewColumn{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewColumn) String() string { @@ -7883,8 +7914,8 @@ func (x *AnalyticsViewColumn) String() string { func (*AnalyticsViewColumn) ProtoMessage() {} func (x *AnalyticsViewColumn) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[88] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[91] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7896,7 +7927,7 @@ func (x *AnalyticsViewColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewColumn.ProtoReflect.Descriptor instead. func (*AnalyticsViewColumn) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{88} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{91} } func (x *AnalyticsViewColumn) GetName() string { @@ -7942,23 +7973,20 @@ func (x *AnalyticsViewColumn) GetIsCta() bool { } type AnalyticsViewResultFilter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ColumnName string `protobuf:"bytes,1,opt,name=columnName,proto3" json:"columnName,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` Options []*AnalyticsViewResultFilterOption `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` CustomOptions *CustomOptions `protobuf:"varint,4,opt,name=custom_options,json=customOptions,proto3,enum=wg.cosmo.platform.v1.CustomOptions,oneof" json:"custom_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewResultFilter) Reset() { *x = AnalyticsViewResultFilter{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewResultFilter) String() string { @@ -7968,8 +7996,8 @@ func (x *AnalyticsViewResultFilter) String() string { func (*AnalyticsViewResultFilter) ProtoMessage() {} func (x *AnalyticsViewResultFilter) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[89] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[92] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7981,7 +8009,7 @@ func (x *AnalyticsViewResultFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewResultFilter.ProtoReflect.Descriptor instead. func (*AnalyticsViewResultFilter) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{89} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{92} } func (x *AnalyticsViewResultFilter) GetColumnName() string { @@ -8013,22 +8041,19 @@ func (x *AnalyticsViewResultFilter) GetCustomOptions() CustomOptions { } type AnalyticsViewResultFilterOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + Operator AnalyticsViewFilterOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=wg.cosmo.platform.v1.AnalyticsViewFilterOperator" json:"operator,omitempty"` unknownFields protoimpl.UnknownFields - - Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - Operator AnalyticsViewFilterOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=wg.cosmo.platform.v1.AnalyticsViewFilterOperator" json:"operator,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewResultFilterOption) Reset() { *x = AnalyticsViewResultFilterOption{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewResultFilterOption) String() string { @@ -8038,8 +8063,8 @@ func (x *AnalyticsViewResultFilterOption) String() string { func (*AnalyticsViewResultFilterOption) ProtoMessage() {} func (x *AnalyticsViewResultFilterOption) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[90] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[93] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8051,7 +8076,7 @@ func (x *AnalyticsViewResultFilterOption) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewResultFilterOption.ProtoReflect.Descriptor instead. func (*AnalyticsViewResultFilterOption) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{90} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{93} } func (x *AnalyticsViewResultFilterOption) GetLabel() string { @@ -8076,20 +8101,17 @@ func (x *AnalyticsViewResultFilterOption) GetOperator() AnalyticsViewFilterOpera } type AnalyticsViewRow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value map[string]*AnalyticsViewRowValue `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Value map[string]*AnalyticsViewRowValue `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewRow) Reset() { *x = AnalyticsViewRow{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewRow) String() string { @@ -8099,8 +8121,8 @@ func (x *AnalyticsViewRow) String() string { func (*AnalyticsViewRow) ProtoMessage() {} func (x *AnalyticsViewRow) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[91] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[94] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8112,7 +8134,7 @@ func (x *AnalyticsViewRow) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewRow.ProtoReflect.Descriptor instead. func (*AnalyticsViewRow) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{91} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{94} } func (x *AnalyticsViewRow) GetValue() map[string]*AnalyticsViewRowValue { @@ -8123,27 +8145,24 @@ func (x *AnalyticsViewRow) GetValue() map[string]*AnalyticsViewRowValue { } type AnalyticsViewRowValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The kind of value. // - // Types that are assignable to Kind: + // Types that are valid to be assigned to Kind: // // *AnalyticsViewRowValue_NumberValue // *AnalyticsViewRowValue_StringValue // *AnalyticsViewRowValue_BoolValue - Kind isAnalyticsViewRowValue_Kind `protobuf_oneof:"kind"` + Kind isAnalyticsViewRowValue_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AnalyticsViewRowValue) Reset() { *x = AnalyticsViewRowValue{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnalyticsViewRowValue) String() string { @@ -8153,8 +8172,8 @@ func (x *AnalyticsViewRowValue) String() string { func (*AnalyticsViewRowValue) ProtoMessage() {} func (x *AnalyticsViewRowValue) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[92] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[95] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8166,33 +8185,39 @@ func (x *AnalyticsViewRowValue) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyticsViewRowValue.ProtoReflect.Descriptor instead. func (*AnalyticsViewRowValue) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{92} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{95} } -func (m *AnalyticsViewRowValue) GetKind() isAnalyticsViewRowValue_Kind { - if m != nil { - return m.Kind +func (x *AnalyticsViewRowValue) GetKind() isAnalyticsViewRowValue_Kind { + if x != nil { + return x.Kind } return nil } func (x *AnalyticsViewRowValue) GetNumberValue() float64 { - if x, ok := x.GetKind().(*AnalyticsViewRowValue_NumberValue); ok { - return x.NumberValue + if x != nil { + if x, ok := x.Kind.(*AnalyticsViewRowValue_NumberValue); ok { + return x.NumberValue + } } return 0 } func (x *AnalyticsViewRowValue) GetStringValue() string { - if x, ok := x.GetKind().(*AnalyticsViewRowValue_StringValue); ok { - return x.StringValue + if x != nil { + if x, ok := x.Kind.(*AnalyticsViewRowValue_StringValue); ok { + return x.StringValue + } } return "" } func (x *AnalyticsViewRowValue) GetBoolValue() bool { - if x, ok := x.GetKind().(*AnalyticsViewRowValue_BoolValue); ok { - return x.BoolValue + if x != nil { + if x, ok := x.Kind.(*AnalyticsViewRowValue_BoolValue); ok { + return x.BoolValue + } } return false } @@ -8223,21 +8248,18 @@ func (*AnalyticsViewRowValue_StringValue) isAnalyticsViewRowValue_Kind() {} func (*AnalyticsViewRowValue_BoolValue) isAnalyticsViewRowValue_Kind() {} type GetAnalyticsViewResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + View *AnalyticsViewResult `protobuf:"bytes,2,opt,name=view,proto3" json:"view,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - View *AnalyticsViewResult `protobuf:"bytes,2,opt,name=view,proto3" json:"view,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAnalyticsViewResponse) Reset() { *x = GetAnalyticsViewResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[93] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAnalyticsViewResponse) String() string { @@ -8247,8 +8269,8 @@ func (x *GetAnalyticsViewResponse) String() string { func (*GetAnalyticsViewResponse) ProtoMessage() {} func (x *GetAnalyticsViewResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[93] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[96] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8260,7 +8282,7 @@ func (x *GetAnalyticsViewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalyticsViewResponse.ProtoReflect.Descriptor instead. func (*GetAnalyticsViewResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{93} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{96} } func (x *GetAnalyticsViewResponse) GetResponse() *Response { @@ -8278,24 +8300,21 @@ func (x *GetAnalyticsViewResponse) GetView() *AnalyticsViewResult { } type GetDashboardAnalyticsViewRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - StartDate string `protobuf:"bytes,2,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,3,opt,name=endDate,proto3" json:"endDate,omitempty"` - Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + StartDate string `protobuf:"bytes,2,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,3,opt,name=endDate,proto3" json:"endDate,omitempty"` + Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetDashboardAnalyticsViewRequest) Reset() { *x = GetDashboardAnalyticsViewRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetDashboardAnalyticsViewRequest) String() string { @@ -8305,8 +8324,8 @@ func (x *GetDashboardAnalyticsViewRequest) String() string { func (*GetDashboardAnalyticsViewRequest) ProtoMessage() {} func (x *GetDashboardAnalyticsViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[94] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[97] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8318,7 +8337,7 @@ func (x *GetDashboardAnalyticsViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDashboardAnalyticsViewRequest.ProtoReflect.Descriptor instead. func (*GetDashboardAnalyticsViewRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{94} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{97} } func (x *GetDashboardAnalyticsViewRequest) GetFederatedGraphName() string { @@ -8357,22 +8376,19 @@ func (x *GetDashboardAnalyticsViewRequest) GetNamespace() string { } type RequestSeriesItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - TotalRequests int32 `protobuf:"varint,2,opt,name=totalRequests,proto3" json:"totalRequests,omitempty"` - ErroredRequests int32 `protobuf:"varint,3,opt,name=erroredRequests,proto3" json:"erroredRequests,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + TotalRequests int32 `protobuf:"varint,2,opt,name=totalRequests,proto3" json:"totalRequests,omitempty"` + ErroredRequests int32 `protobuf:"varint,3,opt,name=erroredRequests,proto3" json:"erroredRequests,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RequestSeriesItem) Reset() { *x = RequestSeriesItem{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[95] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestSeriesItem) String() string { @@ -8382,8 +8398,8 @@ func (x *RequestSeriesItem) String() string { func (*RequestSeriesItem) ProtoMessage() {} func (x *RequestSeriesItem) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[95] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[98] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8395,7 +8411,7 @@ func (x *RequestSeriesItem) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestSeriesItem.ProtoReflect.Descriptor instead. func (*RequestSeriesItem) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{95} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{98} } func (x *RequestSeriesItem) GetTimestamp() string { @@ -8420,22 +8436,19 @@ func (x *RequestSeriesItem) GetErroredRequests() int32 { } type OperationRequestCount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + OperationHash string `protobuf:"bytes,1,opt,name=operationHash,proto3" json:"operationHash,omitempty"` + OperationName string `protobuf:"bytes,2,opt,name=operationName,proto3" json:"operationName,omitempty"` + TotalRequests int32 `protobuf:"varint,3,opt,name=totalRequests,proto3" json:"totalRequests,omitempty"` unknownFields protoimpl.UnknownFields - - OperationHash string `protobuf:"bytes,1,opt,name=operationHash,proto3" json:"operationHash,omitempty"` - OperationName string `protobuf:"bytes,2,opt,name=operationName,proto3" json:"operationName,omitempty"` - TotalRequests int32 `protobuf:"varint,3,opt,name=totalRequests,proto3" json:"totalRequests,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OperationRequestCount) Reset() { *x = OperationRequestCount{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[96] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OperationRequestCount) String() string { @@ -8445,8 +8458,8 @@ func (x *OperationRequestCount) String() string { func (*OperationRequestCount) ProtoMessage() {} func (x *OperationRequestCount) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[96] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[99] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8458,7 +8471,7 @@ func (x *OperationRequestCount) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequestCount.ProtoReflect.Descriptor instead. func (*OperationRequestCount) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{96} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{99} } func (x *OperationRequestCount) GetOperationHash() string { @@ -8483,23 +8496,20 @@ func (x *OperationRequestCount) GetTotalRequests() int32 { } type FederatedGraphMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphID string `protobuf:"bytes,1,opt,name=federatedGraphID,proto3" json:"federatedGraphID,omitempty"` - RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` - ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` - Latency float32 `protobuf:"fixed32,4,opt,name=latency,proto3" json:"latency,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphID string `protobuf:"bytes,1,opt,name=federatedGraphID,proto3" json:"federatedGraphID,omitempty"` + RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` + ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` + Latency float32 `protobuf:"fixed32,4,opt,name=latency,proto3" json:"latency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FederatedGraphMetrics) Reset() { *x = FederatedGraphMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FederatedGraphMetrics) String() string { @@ -8509,8 +8519,8 @@ func (x *FederatedGraphMetrics) String() string { func (*FederatedGraphMetrics) ProtoMessage() {} func (x *FederatedGraphMetrics) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[97] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[100] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8522,7 +8532,7 @@ func (x *FederatedGraphMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use FederatedGraphMetrics.ProtoReflect.Descriptor instead. func (*FederatedGraphMetrics) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{97} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{100} } func (x *FederatedGraphMetrics) GetFederatedGraphID() string { @@ -8554,23 +8564,20 @@ func (x *FederatedGraphMetrics) GetLatency() float32 { } type SubgraphMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphID string `protobuf:"bytes,1,opt,name=subgraphID,proto3" json:"subgraphID,omitempty"` + RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` + ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` + Latency float32 `protobuf:"fixed32,4,opt,name=latency,proto3" json:"latency,omitempty"` unknownFields protoimpl.UnknownFields - - SubgraphID string `protobuf:"bytes,1,opt,name=subgraphID,proto3" json:"subgraphID,omitempty"` - RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` - ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` - Latency float32 `protobuf:"fixed32,4,opt,name=latency,proto3" json:"latency,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SubgraphMetrics) Reset() { *x = SubgraphMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[98] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubgraphMetrics) String() string { @@ -8580,8 +8587,8 @@ func (x *SubgraphMetrics) String() string { func (*SubgraphMetrics) ProtoMessage() {} func (x *SubgraphMetrics) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[98] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[101] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8593,7 +8600,7 @@ func (x *SubgraphMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use SubgraphMetrics.ProtoReflect.Descriptor instead. func (*SubgraphMetrics) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{98} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{101} } func (x *SubgraphMetrics) GetSubgraphID() string { @@ -8625,24 +8632,21 @@ func (x *SubgraphMetrics) GetLatency() float32 { } type GetDashboardAnalyticsViewResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` RequestSeries []*RequestSeriesItem `protobuf:"bytes,2,rep,name=requestSeries,proto3" json:"requestSeries,omitempty"` MostRequestedOperations []*OperationRequestCount `protobuf:"bytes,3,rep,name=mostRequestedOperations,proto3" json:"mostRequestedOperations,omitempty"` SubgraphMetrics []*SubgraphMetrics `protobuf:"bytes,4,rep,name=subgraphMetrics,proto3" json:"subgraphMetrics,omitempty"` FederatedGraphMetrics *FederatedGraphMetrics `protobuf:"bytes,5,opt,name=federatedGraphMetrics,proto3" json:"federatedGraphMetrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetDashboardAnalyticsViewResponse) Reset() { *x = GetDashboardAnalyticsViewResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetDashboardAnalyticsViewResponse) String() string { @@ -8652,8 +8656,8 @@ func (x *GetDashboardAnalyticsViewResponse) String() string { func (*GetDashboardAnalyticsViewResponse) ProtoMessage() {} func (x *GetDashboardAnalyticsViewResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[99] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[102] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8665,7 +8669,7 @@ func (x *GetDashboardAnalyticsViewResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetDashboardAnalyticsViewResponse.ProtoReflect.Descriptor instead. func (*GetDashboardAnalyticsViewResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{99} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{102} } func (x *GetDashboardAnalyticsViewResponse) GetResponse() *Response { @@ -8704,22 +8708,19 @@ func (x *GetDashboardAnalyticsViewResponse) GetFederatedGraphMetrics() *Federate } type CreateFederatedGraphTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graphName,proto3" json:"graphName,omitempty"` + TokenName string `protobuf:"bytes,2,opt,name=tokenName,proto3" json:"tokenName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graphName,proto3" json:"graphName,omitempty"` - TokenName string `protobuf:"bytes,2,opt,name=tokenName,proto3" json:"tokenName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateFederatedGraphTokenRequest) Reset() { *x = CreateFederatedGraphTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[100] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedGraphTokenRequest) String() string { @@ -8729,8 +8730,8 @@ func (x *CreateFederatedGraphTokenRequest) String() string { func (*CreateFederatedGraphTokenRequest) ProtoMessage() {} func (x *CreateFederatedGraphTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[100] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[103] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8742,7 +8743,7 @@ func (x *CreateFederatedGraphTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFederatedGraphTokenRequest.ProtoReflect.Descriptor instead. func (*CreateFederatedGraphTokenRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{100} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{103} } func (x *CreateFederatedGraphTokenRequest) GetGraphName() string { @@ -8767,21 +8768,18 @@ func (x *CreateFederatedGraphTokenRequest) GetNamespace() string { } type CreateFederatedGraphTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateFederatedGraphTokenResponse) Reset() { *x = CreateFederatedGraphTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFederatedGraphTokenResponse) String() string { @@ -8791,8 +8789,8 @@ func (x *CreateFederatedGraphTokenResponse) String() string { func (*CreateFederatedGraphTokenResponse) ProtoMessage() {} func (x *CreateFederatedGraphTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[101] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[104] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8804,7 +8802,7 @@ func (x *CreateFederatedGraphTokenResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateFederatedGraphTokenResponse.ProtoReflect.Descriptor instead. func (*CreateFederatedGraphTokenResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{101} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{104} } func (x *CreateFederatedGraphTokenResponse) GetResponse() *Response { @@ -8822,22 +8820,19 @@ func (x *CreateFederatedGraphTokenResponse) GetToken() string { } type OrganizationGroupRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Namespaces []string `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + Resources []string `protobuf:"bytes,3,rep,name=resources,proto3" json:"resources,omitempty"` unknownFields protoimpl.UnknownFields - - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - Namespaces []string `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` - Resources []string `protobuf:"bytes,3,rep,name=resources,proto3" json:"resources,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OrganizationGroupRule) Reset() { *x = OrganizationGroupRule{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[102] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OrganizationGroupRule) String() string { @@ -8847,8 +8842,8 @@ func (x *OrganizationGroupRule) String() string { func (*OrganizationGroupRule) ProtoMessage() {} func (x *OrganizationGroupRule) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[102] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[105] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8860,7 +8855,7 @@ func (x *OrganizationGroupRule) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationGroupRule.ProtoReflect.Descriptor instead. func (*OrganizationGroupRule) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{102} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{105} } func (x *OrganizationGroupRule) GetRole() string { @@ -8885,10 +8880,7 @@ func (x *OrganizationGroupRule) GetResources() []string { } type OrganizationGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` @@ -8897,15 +8889,15 @@ type OrganizationGroup struct { Rules []*OrganizationGroupRule `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` HasOidcMappers bool `protobuf:"varint,7,opt,name=hasOidcMappers,proto3" json:"hasOidcMappers,omitempty"` ApiKeysCount int32 `protobuf:"varint,8,opt,name=apiKeysCount,proto3" json:"apiKeysCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OrganizationGroup) Reset() { *x = OrganizationGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OrganizationGroup) String() string { @@ -8915,8 +8907,8 @@ func (x *OrganizationGroup) String() string { func (*OrganizationGroup) ProtoMessage() {} func (x *OrganizationGroup) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[103] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[106] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8928,7 +8920,7 @@ func (x *OrganizationGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationGroup.ProtoReflect.Descriptor instead. func (*OrganizationGroup) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{103} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{106} } func (x *OrganizationGroup) GetGroupId() string { @@ -8988,21 +8980,18 @@ func (x *OrganizationGroup) GetApiKeysCount() int32 { } type CreateOrganizationGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationGroupRequest) Reset() { *x = CreateOrganizationGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationGroupRequest) String() string { @@ -9012,8 +9001,8 @@ func (x *CreateOrganizationGroupRequest) String() string { func (*CreateOrganizationGroupRequest) ProtoMessage() {} func (x *CreateOrganizationGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[104] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[107] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9025,7 +9014,7 @@ func (x *CreateOrganizationGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationGroupRequest.ProtoReflect.Descriptor instead. func (*CreateOrganizationGroupRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{104} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{107} } func (x *CreateOrganizationGroupRequest) GetName() string { @@ -9043,21 +9032,18 @@ func (x *CreateOrganizationGroupRequest) GetDescription() string { } type CreateOrganizationGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Group *OrganizationGroup `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Group *OrganizationGroup `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationGroupResponse) Reset() { *x = CreateOrganizationGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationGroupResponse) String() string { @@ -9067,8 +9053,8 @@ func (x *CreateOrganizationGroupResponse) String() string { func (*CreateOrganizationGroupResponse) ProtoMessage() {} func (x *CreateOrganizationGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[105] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[108] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9080,7 +9066,7 @@ func (x *CreateOrganizationGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationGroupResponse.ProtoReflect.Descriptor instead. func (*CreateOrganizationGroupResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{105} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{108} } func (x *CreateOrganizationGroupResponse) GetResponse() *Response { @@ -9098,18 +9084,16 @@ func (x *CreateOrganizationGroupResponse) GetGroup() *OrganizationGroup { } type GetOrganizationGroupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupsRequest) Reset() { *x = GetOrganizationGroupsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupsRequest) String() string { @@ -9119,8 +9103,8 @@ func (x *GetOrganizationGroupsRequest) String() string { func (*GetOrganizationGroupsRequest) ProtoMessage() {} func (x *GetOrganizationGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[106] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[109] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9132,25 +9116,22 @@ func (x *GetOrganizationGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationGroupsRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{106} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{109} } type GetOrganizationGroupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Groups []*OrganizationGroup `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Groups []*OrganizationGroup `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupsResponse) Reset() { *x = GetOrganizationGroupsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupsResponse) String() string { @@ -9160,8 +9141,8 @@ func (x *GetOrganizationGroupsResponse) String() string { func (*GetOrganizationGroupsResponse) ProtoMessage() {} func (x *GetOrganizationGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[107] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[110] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9173,7 +9154,7 @@ func (x *GetOrganizationGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationGroupsResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{107} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{110} } func (x *GetOrganizationGroupsResponse) GetResponse() *Response { @@ -9191,20 +9172,17 @@ func (x *GetOrganizationGroupsResponse) GetGroups() []*OrganizationGroup { } type GetOrganizationGroupMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupMembersRequest) Reset() { *x = GetOrganizationGroupMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupMembersRequest) String() string { @@ -9214,8 +9192,8 @@ func (x *GetOrganizationGroupMembersRequest) String() string { func (*GetOrganizationGroupMembersRequest) ProtoMessage() {} func (x *GetOrganizationGroupMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[108] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[111] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9227,7 +9205,7 @@ func (x *GetOrganizationGroupMembersRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationGroupMembersRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupMembersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{108} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{111} } func (x *GetOrganizationGroupMembersRequest) GetGroupId() string { @@ -9238,22 +9216,19 @@ func (x *GetOrganizationGroupMembersRequest) GetGroupId() string { } type GetOrganizationGroupMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Members []*GetOrganizationGroupMembersResponse_GroupMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + ApiKeys []*GetOrganizationGroupMembersResponse_GroupApiKey `protobuf:"bytes,3,rep,name=apiKeys,proto3" json:"apiKeys,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Members []*GetOrganizationGroupMembersResponse_GroupMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - ApiKeys []*GetOrganizationGroupMembersResponse_GroupApiKey `protobuf:"bytes,3,rep,name=apiKeys,proto3" json:"apiKeys,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupMembersResponse) Reset() { *x = GetOrganizationGroupMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupMembersResponse) String() string { @@ -9263,8 +9238,8 @@ func (x *GetOrganizationGroupMembersResponse) String() string { func (*GetOrganizationGroupMembersResponse) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[109] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[112] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9276,7 +9251,7 @@ func (x *GetOrganizationGroupMembersResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetOrganizationGroupMembersResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupMembersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{109} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{112} } func (x *GetOrganizationGroupMembersResponse) GetResponse() *Response { @@ -9301,22 +9276,19 @@ func (x *GetOrganizationGroupMembersResponse) GetApiKeys() []*GetOrganizationGro } type UpdateOrganizationGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Rules []*UpdateOrganizationGroupRequest_GroupRule `protobuf:"bytes,3,rep,name=rules,proto3" json:"rules,omitempty"` unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Rules []*UpdateOrganizationGroupRequest_GroupRule `protobuf:"bytes,3,rep,name=rules,proto3" json:"rules,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationGroupRequest) Reset() { *x = UpdateOrganizationGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationGroupRequest) String() string { @@ -9326,8 +9298,8 @@ func (x *UpdateOrganizationGroupRequest) String() string { func (*UpdateOrganizationGroupRequest) ProtoMessage() {} func (x *UpdateOrganizationGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[110] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[113] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9339,7 +9311,7 @@ func (x *UpdateOrganizationGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationGroupRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationGroupRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{110} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{113} } func (x *UpdateOrganizationGroupRequest) GetGroupId() string { @@ -9364,20 +9336,17 @@ func (x *UpdateOrganizationGroupRequest) GetRules() []*UpdateOrganizationGroupRe } type UpdateOrganizationGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationGroupResponse) Reset() { *x = UpdateOrganizationGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationGroupResponse) String() string { @@ -9387,8 +9356,8 @@ func (x *UpdateOrganizationGroupResponse) String() string { func (*UpdateOrganizationGroupResponse) ProtoMessage() {} func (x *UpdateOrganizationGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[111] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[114] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9400,7 +9369,7 @@ func (x *UpdateOrganizationGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationGroupResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationGroupResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{111} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{114} } func (x *UpdateOrganizationGroupResponse) GetResponse() *Response { @@ -9411,21 +9380,18 @@ func (x *UpdateOrganizationGroupResponse) GetResponse() *Response { } type DeleteOrganizationGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` + ToGroupId *string `protobuf:"bytes,2,opt,name=toGroupId,proto3,oneof" json:"toGroupId,omitempty"` unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` - ToGroupId *string `protobuf:"bytes,2,opt,name=toGroupId,proto3,oneof" json:"toGroupId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationGroupRequest) Reset() { *x = DeleteOrganizationGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[112] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationGroupRequest) String() string { @@ -9435,8 +9401,8 @@ func (x *DeleteOrganizationGroupRequest) String() string { func (*DeleteOrganizationGroupRequest) ProtoMessage() {} func (x *DeleteOrganizationGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[112] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[115] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9448,7 +9414,7 @@ func (x *DeleteOrganizationGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationGroupRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationGroupRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{112} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{115} } func (x *DeleteOrganizationGroupRequest) GetGroupId() string { @@ -9466,20 +9432,17 @@ func (x *DeleteOrganizationGroupRequest) GetToGroupId() string { } type DeleteOrganizationGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationGroupResponse) Reset() { *x = DeleteOrganizationGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[113] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationGroupResponse) String() string { @@ -9489,8 +9452,8 @@ func (x *DeleteOrganizationGroupResponse) String() string { func (*DeleteOrganizationGroupResponse) ProtoMessage() {} func (x *DeleteOrganizationGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[113] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[116] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9502,7 +9465,7 @@ func (x *DeleteOrganizationGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationGroupResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationGroupResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{113} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{116} } func (x *DeleteOrganizationGroupResponse) GetResponse() *Response { @@ -9513,25 +9476,22 @@ func (x *DeleteOrganizationGroupResponse) GetResponse() *Response { } type OrgMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + OrgMemberID string `protobuf:"bytes,3,opt,name=orgMemberID,proto3" json:"orgMemberID,omitempty"` + Active bool `protobuf:"varint,4,opt,name=active,proto3" json:"active,omitempty"` + JoinedAt string `protobuf:"bytes,5,opt,name=joinedAt,proto3" json:"joinedAt,omitempty"` + Groups []*OrgMember_Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - OrgMemberID string `protobuf:"bytes,3,opt,name=orgMemberID,proto3" json:"orgMemberID,omitempty"` - Active bool `protobuf:"varint,4,opt,name=active,proto3" json:"active,omitempty"` - JoinedAt string `protobuf:"bytes,5,opt,name=joinedAt,proto3" json:"joinedAt,omitempty"` - Groups []*OrgMember_Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OrgMember) Reset() { *x = OrgMember{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[114] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OrgMember) String() string { @@ -9541,8 +9501,8 @@ func (x *OrgMember) String() string { func (*OrgMember) ProtoMessage() {} func (x *OrgMember) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[114] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[117] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9554,7 +9514,7 @@ func (x *OrgMember) ProtoReflect() protoreflect.Message { // Deprecated: Use OrgMember.ProtoReflect.Descriptor instead. func (*OrgMember) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{114} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{117} } func (x *OrgMember) GetUserID() string { @@ -9600,21 +9560,18 @@ func (x *OrgMember) GetGroups() []*OrgMember_Group { } type PendingOrgInvitation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PendingOrgInvitation) Reset() { *x = PendingOrgInvitation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[115] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PendingOrgInvitation) String() string { @@ -9624,8 +9581,8 @@ func (x *PendingOrgInvitation) String() string { func (*PendingOrgInvitation) ProtoMessage() {} func (x *PendingOrgInvitation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[115] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[118] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9637,7 +9594,7 @@ func (x *PendingOrgInvitation) ProtoReflect() protoreflect.Message { // Deprecated: Use PendingOrgInvitation.ProtoReflect.Descriptor instead. func (*PendingOrgInvitation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{115} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{118} } func (x *PendingOrgInvitation) GetUserID() string { @@ -9655,21 +9612,18 @@ func (x *PendingOrgInvitation) GetEmail() string { } type GetPendingOrganizationMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` unknownFields protoimpl.UnknownFields - - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` - Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPendingOrganizationMembersRequest) Reset() { *x = GetPendingOrganizationMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[116] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPendingOrganizationMembersRequest) String() string { @@ -9679,8 +9633,8 @@ func (x *GetPendingOrganizationMembersRequest) String() string { func (*GetPendingOrganizationMembersRequest) ProtoMessage() {} func (x *GetPendingOrganizationMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[116] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[119] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9692,7 +9646,7 @@ func (x *GetPendingOrganizationMembersRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use GetPendingOrganizationMembersRequest.ProtoReflect.Descriptor instead. func (*GetPendingOrganizationMembersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{116} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{119} } func (x *GetPendingOrganizationMembersRequest) GetPagination() *Pagination { @@ -9710,22 +9664,19 @@ func (x *GetPendingOrganizationMembersRequest) GetSearch() string { } type GetPendingOrganizationMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` PendingInvitations []*PendingOrgInvitation `protobuf:"bytes,2,rep,name=pendingInvitations,proto3" json:"pendingInvitations,omitempty"` TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPendingOrganizationMembersResponse) Reset() { *x = GetPendingOrganizationMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[117] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPendingOrganizationMembersResponse) String() string { @@ -9735,8 +9686,8 @@ func (x *GetPendingOrganizationMembersResponse) String() string { func (*GetPendingOrganizationMembersResponse) ProtoMessage() {} func (x *GetPendingOrganizationMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[117] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[120] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9748,7 +9699,7 @@ func (x *GetPendingOrganizationMembersResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use GetPendingOrganizationMembersResponse.ProtoReflect.Descriptor instead. func (*GetPendingOrganizationMembersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{117} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{120} } func (x *GetPendingOrganizationMembersResponse) GetResponse() *Response { @@ -9773,21 +9724,18 @@ func (x *GetPendingOrganizationMembersResponse) GetTotalCount() int32 { } type GetOrganizationMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` unknownFields protoimpl.UnknownFields - - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` - Search *string `protobuf:"bytes,2,opt,name=search,proto3,oneof" json:"search,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationMembersRequest) Reset() { *x = GetOrganizationMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[118] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationMembersRequest) String() string { @@ -9797,8 +9745,8 @@ func (x *GetOrganizationMembersRequest) String() string { func (*GetOrganizationMembersRequest) ProtoMessage() {} func (x *GetOrganizationMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[118] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[121] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9810,7 +9758,7 @@ func (x *GetOrganizationMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationMembersRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationMembersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{118} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{121} } func (x *GetOrganizationMembersRequest) GetPagination() *Pagination { @@ -9828,22 +9776,19 @@ func (x *GetOrganizationMembersRequest) GetSearch() string { } type GetOrganizationMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Members []*OrgMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Members []*OrgMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationMembersResponse) Reset() { *x = GetOrganizationMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationMembersResponse) String() string { @@ -9853,8 +9798,8 @@ func (x *GetOrganizationMembersResponse) String() string { func (*GetOrganizationMembersResponse) ProtoMessage() {} func (x *GetOrganizationMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[119] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[122] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9866,7 +9811,7 @@ func (x *GetOrganizationMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationMembersResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationMembersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{119} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{122} } func (x *GetOrganizationMembersResponse) GetResponse() *Response { @@ -9891,21 +9836,18 @@ func (x *GetOrganizationMembersResponse) GetTotalCount() int32 { } type InviteUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InviteUserRequest) Reset() { *x = InviteUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[120] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *InviteUserRequest) String() string { @@ -9915,8 +9857,8 @@ func (x *InviteUserRequest) String() string { func (*InviteUserRequest) ProtoMessage() {} func (x *InviteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[120] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[123] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9928,7 +9870,7 @@ func (x *InviteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InviteUserRequest.ProtoReflect.Descriptor instead. func (*InviteUserRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{120} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{123} } func (x *InviteUserRequest) GetEmail() string { @@ -9946,20 +9888,17 @@ func (x *InviteUserRequest) GetGroups() []string { } type InviteUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InviteUserResponse) Reset() { *x = InviteUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[121] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *InviteUserResponse) String() string { @@ -9969,8 +9908,8 @@ func (x *InviteUserResponse) String() string { func (*InviteUserResponse) ProtoMessage() {} func (x *InviteUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[121] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[124] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9982,7 +9921,7 @@ func (x *InviteUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InviteUserResponse.ProtoReflect.Descriptor instead. func (*InviteUserResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{121} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{124} } func (x *InviteUserResponse) GetResponse() *Response { @@ -9992,39 +9931,30 @@ func (x *InviteUserResponse) GetResponse() *Response { return nil } -type APIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type InviteUsersRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Emails []string `protobuf:"bytes,1,rep,name=emails,proto3" json:"emails,omitempty"` + Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - CreatedBy string `protobuf:"bytes,3,opt,name=createdBy,proto3" json:"createdBy,omitempty"` - CreatedAt string `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - LastUsedAt string `protobuf:"bytes,5,opt,name=lastUsedAt,proto3" json:"lastUsedAt,omitempty"` - ExpiresAt string `protobuf:"bytes,6,opt,name=expiresAt,proto3" json:"expiresAt,omitempty"` - Group *APIKey_Group `protobuf:"bytes,7,opt,name=group,proto3,oneof" json:"group,omitempty"` - External bool `protobuf:"varint,8,opt,name=external,proto3" json:"external,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *APIKey) Reset() { - *x = APIKey{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *InviteUsersRequest) Reset() { + *x = InviteUsersRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *APIKey) String() string { +func (x *InviteUsersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*APIKey) ProtoMessage() {} +func (*InviteUsersRequest) ProtoMessage() {} -func (x *APIKey) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[122] - if protoimpl.UnsafeEnabled && x != nil { +func (x *InviteUsersRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[125] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10034,94 +9964,101 @@ func (x *APIKey) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use APIKey.ProtoReflect.Descriptor instead. -func (*APIKey) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{122} +// Deprecated: Use InviteUsersRequest.ProtoReflect.Descriptor instead. +func (*InviteUsersRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{125} } -func (x *APIKey) GetId() string { +func (x *InviteUsersRequest) GetEmails() []string { if x != nil { - return x.Id + return x.Emails } - return "" + return nil } -func (x *APIKey) GetName() string { +func (x *InviteUsersRequest) GetGroups() []string { if x != nil { - return x.Name + return x.Groups } - return "" + return nil } -func (x *APIKey) GetCreatedBy() string { - if x != nil { - return x.CreatedBy - } - return "" +type InviteUsersInvitationError struct { + state protoimpl.MessageState `protogen:"open.v1"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *APIKey) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" +func (x *InviteUsersInvitationError) Reset() { + *x = InviteUsersInvitationError{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *APIKey) GetLastUsedAt() string { - if x != nil { - return x.LastUsedAt - } - return "" +func (x *InviteUsersInvitationError) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *APIKey) GetExpiresAt() string { +func (*InviteUsersInvitationError) ProtoMessage() {} + +func (x *InviteUsersInvitationError) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[126] if x != nil { - return x.ExpiresAt + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *APIKey) GetGroup() *APIKey_Group { +// Deprecated: Use InviteUsersInvitationError.ProtoReflect.Descriptor instead. +func (*InviteUsersInvitationError) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{126} +} + +func (x *InviteUsersInvitationError) GetEmail() string { if x != nil { - return x.Group + return x.Email } - return nil + return "" } -func (x *APIKey) GetExternal() bool { +func (x *InviteUsersInvitationError) GetError() string { if x != nil { - return x.External + return x.Error } - return false + return "" } -type GetAPIKeysRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` +type InviteUsersResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + InvitationErrors []*InviteUsersInvitationError `protobuf:"bytes,2,rep,name=invitationErrors,proto3" json:"invitationErrors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetAPIKeysRequest) Reset() { - *x = GetAPIKeysRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[123] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *InviteUsersResponse) Reset() { + *x = InviteUsersResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetAPIKeysRequest) String() string { +func (x *InviteUsersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAPIKeysRequest) ProtoMessage() {} +func (*InviteUsersResponse) ProtoMessage() {} -func (x *GetAPIKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[123] - if protoimpl.UnsafeEnabled && x != nil { +func (x *InviteUsersResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[127] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10131,42 +10068,191 @@ func (x *GetAPIKeysRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAPIKeysRequest.ProtoReflect.Descriptor instead. -func (*GetAPIKeysRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{123} +// Deprecated: Use InviteUsersResponse.ProtoReflect.Descriptor instead. +func (*InviteUsersResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{127} } -func (x *GetAPIKeysRequest) GetLimit() int32 { +func (x *InviteUsersResponse) GetResponse() *Response { if x != nil { - return x.Limit + return x.Response } - return 0 + return nil } -func (x *GetAPIKeysRequest) GetOffset() int32 { +func (x *InviteUsersResponse) GetInvitationErrors() []*InviteUsersInvitationError { if x != nil { - return x.Offset + return x.InvitationErrors } - return 0 + return nil } -type GetAPIKeysResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type APIKey struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedBy string `protobuf:"bytes,3,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + CreatedAt string `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + LastUsedAt string `protobuf:"bytes,5,opt,name=lastUsedAt,proto3" json:"lastUsedAt,omitempty"` + ExpiresAt string `protobuf:"bytes,6,opt,name=expiresAt,proto3" json:"expiresAt,omitempty"` + Group *APIKey_Group `protobuf:"bytes,7,opt,name=group,proto3,oneof" json:"group,omitempty"` + External bool `protobuf:"varint,8,opt,name=external,proto3" json:"external,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - ApiKeys []*APIKey `protobuf:"bytes,2,rep,name=apiKeys,proto3" json:"apiKeys,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` +func (x *APIKey) Reset() { + *x = APIKey{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetAPIKeysResponse) Reset() { - *x = GetAPIKeysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[124] +func (x *APIKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*APIKey) ProtoMessage() {} + +func (x *APIKey) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[128] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use APIKey.ProtoReflect.Descriptor instead. +func (*APIKey) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{128} +} + +func (x *APIKey) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *APIKey) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *APIKey) GetCreatedBy() string { + if x != nil { + return x.CreatedBy + } + return "" +} + +func (x *APIKey) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *APIKey) GetLastUsedAt() string { + if x != nil { + return x.LastUsedAt + } + return "" +} + +func (x *APIKey) GetExpiresAt() string { + if x != nil { + return x.ExpiresAt + } + return "" +} + +func (x *APIKey) GetGroup() *APIKey_Group { + if x != nil { + return x.Group + } + return nil +} + +func (x *APIKey) GetExternal() bool { + if x != nil { + return x.External + } + return false +} + +type GetAPIKeysRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAPIKeysRequest) Reset() { + *x = GetAPIKeysRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAPIKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAPIKeysRequest) ProtoMessage() {} + +func (x *GetAPIKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[129] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAPIKeysRequest.ProtoReflect.Descriptor instead. +func (*GetAPIKeysRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{129} +} + +func (x *GetAPIKeysRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetAPIKeysRequest) GetOffset() int32 { + if x != nil { + return x.Offset } + return 0 +} + +type GetAPIKeysResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + ApiKeys []*APIKey `protobuf:"bytes,2,rep,name=apiKeys,proto3" json:"apiKeys,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAPIKeysResponse) Reset() { + *x = GetAPIKeysResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAPIKeysResponse) String() string { @@ -10176,8 +10262,8 @@ func (x *GetAPIKeysResponse) String() string { func (*GetAPIKeysResponse) ProtoMessage() {} func (x *GetAPIKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[124] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[130] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10189,7 +10275,7 @@ func (x *GetAPIKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAPIKeysResponse.ProtoReflect.Descriptor instead. func (*GetAPIKeysResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{124} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{130} } func (x *GetAPIKeysResponse) GetResponse() *Response { @@ -10214,25 +10300,22 @@ func (x *GetAPIKeysResponse) GetCount() int32 { } type CreateAPIKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + Expires ExpiresAt `protobuf:"varint,3,opt,name=expires,proto3,enum=wg.cosmo.platform.v1.ExpiresAt" json:"expires,omitempty"` + GroupId string `protobuf:"bytes,4,opt,name=groupId,proto3" json:"groupId,omitempty"` + Permissions []string `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty"` + External *bool `protobuf:"varint,6,opt,name=external,proto3,oneof" json:"external,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - Expires ExpiresAt `protobuf:"varint,3,opt,name=expires,proto3,enum=wg.cosmo.platform.v1.ExpiresAt" json:"expires,omitempty"` - GroupId string `protobuf:"bytes,4,opt,name=groupId,proto3" json:"groupId,omitempty"` - Permissions []string `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty"` - External *bool `protobuf:"varint,6,opt,name=external,proto3,oneof" json:"external,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAPIKeyRequest) Reset() { *x = CreateAPIKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAPIKeyRequest) String() string { @@ -10242,8 +10325,8 @@ func (x *CreateAPIKeyRequest) String() string { func (*CreateAPIKeyRequest) ProtoMessage() {} func (x *CreateAPIKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[125] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[131] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10255,7 +10338,7 @@ func (x *CreateAPIKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPIKeyRequest.ProtoReflect.Descriptor instead. func (*CreateAPIKeyRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{125} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{131} } func (x *CreateAPIKeyRequest) GetName() string { @@ -10301,21 +10384,18 @@ func (x *CreateAPIKeyRequest) GetExternal() bool { } type CreateAPIKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + ApiKey string `protobuf:"bytes,2,opt,name=apiKey,proto3" json:"apiKey,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - ApiKey string `protobuf:"bytes,2,opt,name=apiKey,proto3" json:"apiKey,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateAPIKeyResponse) Reset() { *x = CreateAPIKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[126] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateAPIKeyResponse) String() string { @@ -10325,8 +10405,8 @@ func (x *CreateAPIKeyResponse) String() string { func (*CreateAPIKeyResponse) ProtoMessage() {} func (x *CreateAPIKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[126] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[132] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10338,7 +10418,7 @@ func (x *CreateAPIKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPIKeyResponse.ProtoReflect.Descriptor instead. func (*CreateAPIKeyResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{126} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{132} } func (x *CreateAPIKeyResponse) GetResponse() *Response { @@ -10356,20 +10436,17 @@ func (x *CreateAPIKeyResponse) GetApiKey() string { } type DeleteAPIKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteAPIKeyRequest) Reset() { *x = DeleteAPIKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAPIKeyRequest) String() string { @@ -10379,8 +10456,8 @@ func (x *DeleteAPIKeyRequest) String() string { func (*DeleteAPIKeyRequest) ProtoMessage() {} func (x *DeleteAPIKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[127] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[133] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10392,7 +10469,7 @@ func (x *DeleteAPIKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPIKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteAPIKeyRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{127} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{133} } func (x *DeleteAPIKeyRequest) GetName() string { @@ -10403,20 +10480,17 @@ func (x *DeleteAPIKeyRequest) GetName() string { } type DeleteAPIKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteAPIKeyResponse) Reset() { *x = DeleteAPIKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[128] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteAPIKeyResponse) String() string { @@ -10426,8 +10500,8 @@ func (x *DeleteAPIKeyResponse) String() string { func (*DeleteAPIKeyResponse) ProtoMessage() {} func (x *DeleteAPIKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[128] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[134] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10439,7 +10513,7 @@ func (x *DeleteAPIKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPIKeyResponse.ProtoReflect.Descriptor instead. func (*DeleteAPIKeyResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{128} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{134} } func (x *DeleteAPIKeyResponse) GetResponse() *Response { @@ -10450,21 +10524,18 @@ func (x *DeleteAPIKeyResponse) GetResponse() *Response { } type UpdateAPIKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + GroupId string `protobuf:"bytes,2,opt,name=groupId,proto3" json:"groupId,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - GroupId string `protobuf:"bytes,2,opt,name=groupId,proto3" json:"groupId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAPIKeyRequest) Reset() { *x = UpdateAPIKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[129] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAPIKeyRequest) String() string { @@ -10474,8 +10545,8 @@ func (x *UpdateAPIKeyRequest) String() string { func (*UpdateAPIKeyRequest) ProtoMessage() {} func (x *UpdateAPIKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[129] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[135] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10487,7 +10558,7 @@ func (x *UpdateAPIKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAPIKeyRequest.ProtoReflect.Descriptor instead. func (*UpdateAPIKeyRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{129} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{135} } func (x *UpdateAPIKeyRequest) GetName() string { @@ -10505,20 +10576,17 @@ func (x *UpdateAPIKeyRequest) GetGroupId() string { } type UpdateAPIKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAPIKeyResponse) Reset() { *x = UpdateAPIKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[130] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAPIKeyResponse) String() string { @@ -10528,8 +10596,8 @@ func (x *UpdateAPIKeyResponse) String() string { func (*UpdateAPIKeyResponse) ProtoMessage() {} func (x *UpdateAPIKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[130] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[136] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10541,7 +10609,7 @@ func (x *UpdateAPIKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAPIKeyResponse.ProtoReflect.Descriptor instead. func (*UpdateAPIKeyResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{130} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{136} } func (x *UpdateAPIKeyResponse) GetResponse() *Response { @@ -10552,20 +10620,17 @@ func (x *UpdateAPIKeyResponse) GetResponse() *Response { } type RemoveOrganizationMemberRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOrganizationMemberRequest) Reset() { *x = RemoveOrganizationMemberRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[131] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOrganizationMemberRequest) String() string { @@ -10575,8 +10640,8 @@ func (x *RemoveOrganizationMemberRequest) String() string { func (*RemoveOrganizationMemberRequest) ProtoMessage() {} func (x *RemoveOrganizationMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[131] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[137] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10588,7 +10653,7 @@ func (x *RemoveOrganizationMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveOrganizationMemberRequest.ProtoReflect.Descriptor instead. func (*RemoveOrganizationMemberRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{131} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{137} } func (x *RemoveOrganizationMemberRequest) GetEmail() string { @@ -10599,20 +10664,17 @@ func (x *RemoveOrganizationMemberRequest) GetEmail() string { } type RemoveOrganizationMemberResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOrganizationMemberResponse) Reset() { *x = RemoveOrganizationMemberResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[132] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOrganizationMemberResponse) String() string { @@ -10622,8 +10684,8 @@ func (x *RemoveOrganizationMemberResponse) String() string { func (*RemoveOrganizationMemberResponse) ProtoMessage() {} func (x *RemoveOrganizationMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[132] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[138] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10635,7 +10697,7 @@ func (x *RemoveOrganizationMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveOrganizationMemberResponse.ProtoReflect.Descriptor instead. func (*RemoveOrganizationMemberResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{132} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{138} } func (x *RemoveOrganizationMemberResponse) GetResponse() *Response { @@ -10646,20 +10708,17 @@ func (x *RemoveOrganizationMemberResponse) GetResponse() *Response { } type RemoveInvitationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveInvitationRequest) Reset() { *x = RemoveInvitationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveInvitationRequest) String() string { @@ -10669,8 +10728,8 @@ func (x *RemoveInvitationRequest) String() string { func (*RemoveInvitationRequest) ProtoMessage() {} func (x *RemoveInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[133] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[139] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10682,7 +10741,7 @@ func (x *RemoveInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveInvitationRequest.ProtoReflect.Descriptor instead. func (*RemoveInvitationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{133} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{139} } func (x *RemoveInvitationRequest) GetEmail() string { @@ -10693,20 +10752,17 @@ func (x *RemoveInvitationRequest) GetEmail() string { } type RemoveInvitationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveInvitationResponse) Reset() { *x = RemoveInvitationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[134] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveInvitationResponse) String() string { @@ -10716,8 +10772,8 @@ func (x *RemoveInvitationResponse) String() string { func (*RemoveInvitationResponse) ProtoMessage() {} func (x *RemoveInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[134] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[140] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10729,7 +10785,7 @@ func (x *RemoveInvitationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveInvitationResponse.ProtoReflect.Descriptor instead. func (*RemoveInvitationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{134} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{140} } func (x *RemoveInvitationResponse) GetResponse() *Response { @@ -10740,22 +10796,19 @@ func (x *RemoveInvitationResponse) GetResponse() *Response { } type MigrateFromApolloRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ApiKey string `protobuf:"bytes,1,opt,name=apiKey,proto3" json:"apiKey,omitempty"` + VariantName string `protobuf:"bytes,2,opt,name=variantName,proto3" json:"variantName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - ApiKey string `protobuf:"bytes,1,opt,name=apiKey,proto3" json:"apiKey,omitempty"` - VariantName string `protobuf:"bytes,2,opt,name=variantName,proto3" json:"variantName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MigrateFromApolloRequest) Reset() { *x = MigrateFromApolloRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MigrateFromApolloRequest) String() string { @@ -10765,8 +10818,8 @@ func (x *MigrateFromApolloRequest) String() string { func (*MigrateFromApolloRequest) ProtoMessage() {} func (x *MigrateFromApolloRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[135] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[141] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10778,7 +10831,7 @@ func (x *MigrateFromApolloRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateFromApolloRequest.ProtoReflect.Descriptor instead. func (*MigrateFromApolloRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{135} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{141} } func (x *MigrateFromApolloRequest) GetApiKey() string { @@ -10803,21 +10856,18 @@ func (x *MigrateFromApolloRequest) GetNamespace() string { } type MigrateFromApolloResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MigrateFromApolloResponse) Reset() { *x = MigrateFromApolloResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[136] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MigrateFromApolloResponse) String() string { @@ -10827,8 +10877,8 @@ func (x *MigrateFromApolloResponse) String() string { func (*MigrateFromApolloResponse) ProtoMessage() {} func (x *MigrateFromApolloResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[136] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[142] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10840,7 +10890,7 @@ func (x *MigrateFromApolloResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateFromApolloResponse.ProtoReflect.Descriptor instead. func (*MigrateFromApolloResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{136} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{142} } func (x *MigrateFromApolloResponse) GetResponse() *Response { @@ -10858,31 +10908,28 @@ func (x *MigrateFromApolloResponse) GetToken() string { } type Span struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + ScopeName string `protobuf:"bytes,2,opt,name=scopeName,proto3" json:"scopeName,omitempty"` + TraceID string `protobuf:"bytes,3,opt,name=traceID,proto3" json:"traceID,omitempty"` + SpanID string `protobuf:"bytes,4,opt,name=spanID,proto3" json:"spanID,omitempty"` + ParentSpanID string `protobuf:"bytes,5,opt,name=parentSpanID,proto3" json:"parentSpanID,omitempty"` + SpanName string `protobuf:"bytes,6,opt,name=spanName,proto3" json:"spanName,omitempty"` + SpanKind string `protobuf:"bytes,7,opt,name=spanKind,proto3" json:"spanKind,omitempty"` + Duration int64 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration,omitempty"` + ServiceName string `protobuf:"bytes,9,opt,name=serviceName,proto3" json:"serviceName,omitempty"` + StatusCode string `protobuf:"bytes,10,opt,name=statusCode,proto3" json:"statusCode,omitempty"` + StatusMessage string `protobuf:"bytes,11,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` + Attributes map[string]string `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - ScopeName string `protobuf:"bytes,2,opt,name=scopeName,proto3" json:"scopeName,omitempty"` - TraceID string `protobuf:"bytes,3,opt,name=traceID,proto3" json:"traceID,omitempty"` - SpanID string `protobuf:"bytes,4,opt,name=spanID,proto3" json:"spanID,omitempty"` - ParentSpanID string `protobuf:"bytes,5,opt,name=parentSpanID,proto3" json:"parentSpanID,omitempty"` - SpanName string `protobuf:"bytes,6,opt,name=spanName,proto3" json:"spanName,omitempty"` - SpanKind string `protobuf:"bytes,7,opt,name=spanKind,proto3" json:"spanKind,omitempty"` - Duration int64 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration,omitempty"` - ServiceName string `protobuf:"bytes,9,opt,name=serviceName,proto3" json:"serviceName,omitempty"` - StatusCode string `protobuf:"bytes,10,opt,name=statusCode,proto3" json:"statusCode,omitempty"` - StatusMessage string `protobuf:"bytes,11,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` - Attributes map[string]string `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Span) Reset() { *x = Span{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Span) String() string { @@ -10892,8 +10939,8 @@ func (x *Span) String() string { func (*Span) ProtoMessage() {} func (x *Span) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[137] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[143] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10905,7 +10952,7 @@ func (x *Span) ProtoReflect() protoreflect.Message { // Deprecated: Use Span.ProtoReflect.Descriptor instead. func (*Span) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{137} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{143} } func (x *Span) GetTimestamp() int64 { @@ -10993,22 +11040,19 @@ func (x *Span) GetAttributes() map[string]string { } type GetTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SpanId string `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"` - FederatedGraphId string `protobuf:"bytes,3,opt,name=federated_graph_id,json=federatedGraphId,proto3" json:"federated_graph_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SpanId string `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"` + FederatedGraphId string `protobuf:"bytes,3,opt,name=federated_graph_id,json=federatedGraphId,proto3" json:"federated_graph_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetTraceRequest) Reset() { *x = GetTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTraceRequest) String() string { @@ -11018,8 +11062,8 @@ func (x *GetTraceRequest) String() string { func (*GetTraceRequest) ProtoMessage() {} func (x *GetTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[138] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[144] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11031,7 +11075,7 @@ func (x *GetTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTraceRequest.ProtoReflect.Descriptor instead. func (*GetTraceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{138} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{144} } func (x *GetTraceRequest) GetId() string { @@ -11056,21 +11100,18 @@ func (x *GetTraceRequest) GetFederatedGraphId() string { } type GetTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Spans []*Span `protobuf:"bytes,2,rep,name=spans,proto3" json:"spans,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Spans []*Span `protobuf:"bytes,2,rep,name=spans,proto3" json:"spans,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTraceResponse) Reset() { *x = GetTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[139] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTraceResponse) String() string { @@ -11080,8 +11121,8 @@ func (x *GetTraceResponse) String() string { func (*GetTraceResponse) ProtoMessage() {} func (x *GetTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[139] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[145] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11093,7 +11134,7 @@ func (x *GetTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTraceResponse.ProtoReflect.Descriptor instead. func (*GetTraceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{139} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{145} } func (x *GetTraceResponse) GetResponse() *Response { @@ -11111,18 +11152,16 @@ func (x *GetTraceResponse) GetSpans() []*Span { } type WhoAmIRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WhoAmIRequest) Reset() { *x = WhoAmIRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[140] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WhoAmIRequest) String() string { @@ -11132,8 +11171,8 @@ func (x *WhoAmIRequest) String() string { func (*WhoAmIRequest) ProtoMessage() {} func (x *WhoAmIRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[140] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[146] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11145,27 +11184,26 @@ func (x *WhoAmIRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoAmIRequest.ProtoReflect.Descriptor instead. func (*WhoAmIRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{140} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{146} } type WhoAmIResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - OrganizationName string `protobuf:"bytes,2,opt,name=organizationName,proto3" json:"organizationName,omitempty"` - UserEmail *string `protobuf:"bytes,3,opt,name=userEmail,proto3,oneof" json:"userEmail,omitempty"` - OrganizationSlug string `protobuf:"bytes,4,opt,name=organizationSlug,proto3" json:"organizationSlug,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + OrganizationName string `protobuf:"bytes,2,opt,name=organizationName,proto3" json:"organizationName,omitempty"` + UserEmail *string `protobuf:"bytes,3,opt,name=userEmail,proto3,oneof" json:"userEmail,omitempty"` + OrganizationSlug string `protobuf:"bytes,4,opt,name=organizationSlug,proto3" json:"organizationSlug,omitempty"` + OrganizationId string `protobuf:"bytes,5,opt,name=organizationId,proto3" json:"organizationId,omitempty"` + LoginMethod *LoginMethod `protobuf:"bytes,6,opt,name=login_method,json=loginMethod,proto3" json:"login_method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WhoAmIResponse) Reset() { *x = WhoAmIResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[141] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WhoAmIResponse) String() string { @@ -11175,8 +11213,8 @@ func (x *WhoAmIResponse) String() string { func (*WhoAmIResponse) ProtoMessage() {} func (x *WhoAmIResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[141] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[147] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11188,7 +11226,7 @@ func (x *WhoAmIResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoAmIResponse.ProtoReflect.Descriptor instead. func (*WhoAmIResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{141} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{147} } func (x *WhoAmIResponse) GetResponse() *Response { @@ -11219,24 +11257,113 @@ func (x *WhoAmIResponse) GetOrganizationSlug() string { return "" } +func (x *WhoAmIResponse) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *WhoAmIResponse) GetLoginMethod() *LoginMethod { + if x != nil { + return x.LoginMethod + } + return nil +} + +type LoginMethod struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type LoginMethodType `protobuf:"varint,1,opt,name=type,proto3,enum=wg.cosmo.platform.v1.LoginMethodType" json:"type,omitempty"` + // Only populated when type = LOGIN_METHOD_TYPE_SSO. + SsoProviderId string `protobuf:"bytes,2,opt,name=sso_provider_id,json=ssoProviderId,proto3" json:"sso_provider_id,omitempty"` + SsoProviderName string `protobuf:"bytes,3,opt,name=sso_provider_name,json=ssoProviderName,proto3" json:"sso_provider_name,omitempty"` + SsoAlias string `protobuf:"bytes,4,opt,name=sso_alias,json=ssoAlias,proto3" json:"sso_alias,omitempty"` + // Only populated when type = LOGIN_METHOD_TYPE_SOCIAL. + SocialProvider SocialLoginProvider `protobuf:"varint,5,opt,name=social_provider,json=socialProvider,proto3,enum=wg.cosmo.platform.v1.SocialLoginProvider" json:"social_provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LoginMethod) Reset() { + *x = LoginMethod{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LoginMethod) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoginMethod) ProtoMessage() {} + +func (x *LoginMethod) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[148] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LoginMethod.ProtoReflect.Descriptor instead. +func (*LoginMethod) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{148} +} + +func (x *LoginMethod) GetType() LoginMethodType { + if x != nil { + return x.Type + } + return LoginMethodType_LOGIN_METHOD_TYPE_UNSPECIFIED +} + +func (x *LoginMethod) GetSsoProviderId() string { + if x != nil { + return x.SsoProviderId + } + return "" +} + +func (x *LoginMethod) GetSsoProviderName() string { + if x != nil { + return x.SsoProviderName + } + return "" +} + +func (x *LoginMethod) GetSsoAlias() string { + if x != nil { + return x.SsoAlias + } + return "" +} + +func (x *LoginMethod) GetSocialProvider() SocialLoginProvider { + if x != nil { + return x.SocialProvider + } + return SocialLoginProvider_SOCIAL_LOGIN_PROVIDER_UNSPECIFIED +} + type RouterToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + CreatorEmail string `protobuf:"bytes,5,opt,name=creatorEmail,proto3" json:"creatorEmail,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - CreatorEmail string `protobuf:"bytes,5,opt,name=creatorEmail,proto3" json:"creatorEmail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RouterToken) Reset() { *x = RouterToken{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[142] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RouterToken) String() string { @@ -11246,8 +11373,8 @@ func (x *RouterToken) String() string { func (*RouterToken) ProtoMessage() {} func (x *RouterToken) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[142] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[149] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11259,7 +11386,7 @@ func (x *RouterToken) ProtoReflect() protoreflect.Message { // Deprecated: Use RouterToken.ProtoReflect.Descriptor instead. func (*RouterToken) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{142} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{149} } func (x *RouterToken) GetId() string { @@ -11291,21 +11418,18 @@ func (x *RouterToken) GetCreatorEmail() string { } type GenerateRouterTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GenerateRouterTokenRequest) Reset() { *x = GenerateRouterTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[143] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GenerateRouterTokenRequest) String() string { @@ -11315,8 +11439,8 @@ func (x *GenerateRouterTokenRequest) String() string { func (*GenerateRouterTokenRequest) ProtoMessage() {} func (x *GenerateRouterTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[143] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[150] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11328,7 +11452,7 @@ func (x *GenerateRouterTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateRouterTokenRequest.ProtoReflect.Descriptor instead. func (*GenerateRouterTokenRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{143} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{150} } func (x *GenerateRouterTokenRequest) GetFedGraphName() string { @@ -11346,21 +11470,18 @@ func (x *GenerateRouterTokenRequest) GetNamespace() string { } type GenerateRouterTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GenerateRouterTokenResponse) Reset() { *x = GenerateRouterTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[144] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GenerateRouterTokenResponse) String() string { @@ -11370,8 +11491,8 @@ func (x *GenerateRouterTokenResponse) String() string { func (*GenerateRouterTokenResponse) ProtoMessage() {} func (x *GenerateRouterTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[144] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[151] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11383,7 +11504,7 @@ func (x *GenerateRouterTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateRouterTokenResponse.ProtoReflect.Descriptor instead. func (*GenerateRouterTokenResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{144} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{151} } func (x *GenerateRouterTokenResponse) GetResponse() *Response { @@ -11401,21 +11522,18 @@ func (x *GenerateRouterTokenResponse) GetToken() string { } type GetRouterTokensRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRouterTokensRequest) Reset() { *x = GetRouterTokensRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[145] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRouterTokensRequest) String() string { @@ -11425,8 +11543,8 @@ func (x *GetRouterTokensRequest) String() string { func (*GetRouterTokensRequest) ProtoMessage() {} func (x *GetRouterTokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[145] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[152] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11438,7 +11556,7 @@ func (x *GetRouterTokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRouterTokensRequest.ProtoReflect.Descriptor instead. func (*GetRouterTokensRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{145} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{152} } func (x *GetRouterTokensRequest) GetFedGraphName() string { @@ -11456,21 +11574,18 @@ func (x *GetRouterTokensRequest) GetNamespace() string { } type GetRouterTokensResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Tokens []*RouterToken `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Tokens []*RouterToken `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRouterTokensResponse) Reset() { *x = GetRouterTokensResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[153] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRouterTokensResponse) String() string { @@ -11480,8 +11595,8 @@ func (x *GetRouterTokensResponse) String() string { func (*GetRouterTokensResponse) ProtoMessage() {} func (x *GetRouterTokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[146] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[153] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11493,7 +11608,7 @@ func (x *GetRouterTokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRouterTokensResponse.ProtoReflect.Descriptor instead. func (*GetRouterTokensResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{146} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{153} } func (x *GetRouterTokensResponse) GetResponse() *Response { @@ -11511,22 +11626,19 @@ func (x *GetRouterTokensResponse) GetTokens() []*RouterToken { } type DeleteRouterTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TokenName string `protobuf:"bytes,1,opt,name=tokenName,proto3" json:"tokenName,omitempty"` + FedGraphName string `protobuf:"bytes,2,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - TokenName string `protobuf:"bytes,1,opt,name=tokenName,proto3" json:"tokenName,omitempty"` - FedGraphName string `protobuf:"bytes,2,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteRouterTokenRequest) Reset() { *x = DeleteRouterTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[154] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRouterTokenRequest) String() string { @@ -11536,8 +11648,8 @@ func (x *DeleteRouterTokenRequest) String() string { func (*DeleteRouterTokenRequest) ProtoMessage() {} func (x *DeleteRouterTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[147] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[154] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11549,7 +11661,7 @@ func (x *DeleteRouterTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRouterTokenRequest.ProtoReflect.Descriptor instead. func (*DeleteRouterTokenRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{147} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{154} } func (x *DeleteRouterTokenRequest) GetTokenName() string { @@ -11574,20 +11686,17 @@ func (x *DeleteRouterTokenRequest) GetNamespace() string { } type DeleteRouterTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteRouterTokenResponse) Reset() { *x = DeleteRouterTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[148] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRouterTokenResponse) String() string { @@ -11597,8 +11706,8 @@ func (x *DeleteRouterTokenResponse) String() string { func (*DeleteRouterTokenResponse) ProtoMessage() {} func (x *DeleteRouterTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[148] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[155] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11610,7 +11719,7 @@ func (x *DeleteRouterTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRouterTokenResponse.ProtoReflect.Descriptor instead. func (*DeleteRouterTokenResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{148} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{155} } func (x *DeleteRouterTokenResponse) GetResponse() *Response { @@ -11621,21 +11730,18 @@ func (x *DeleteRouterTokenResponse) GetResponse() *Response { } type PersistedOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Contents string `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Contents string `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PersistedOperation) Reset() { *x = PersistedOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[149] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PersistedOperation) String() string { @@ -11645,8 +11751,8 @@ func (x *PersistedOperation) String() string { func (*PersistedOperation) ProtoMessage() {} func (x *PersistedOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[149] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[156] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11658,7 +11764,7 @@ func (x *PersistedOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedOperation.ProtoReflect.Descriptor instead. func (*PersistedOperation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{149} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{156} } func (x *PersistedOperation) GetId() string { @@ -11676,23 +11782,20 @@ func (x *PersistedOperation) GetContents() string { } type PublishPersistedOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + ClientName string `protobuf:"bytes,2,opt,name=clientName,proto3" json:"clientName,omitempty"` + Operations []*PersistedOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - ClientName string `protobuf:"bytes,2,opt,name=clientName,proto3" json:"clientName,omitempty"` - Operations []*PersistedOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PublishPersistedOperationsRequest) Reset() { *x = PublishPersistedOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[150] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishPersistedOperationsRequest) String() string { @@ -11702,8 +11805,8 @@ func (x *PublishPersistedOperationsRequest) String() string { func (*PublishPersistedOperationsRequest) ProtoMessage() {} func (x *PublishPersistedOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[150] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[157] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11715,7 +11818,7 @@ func (x *PublishPersistedOperationsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use PublishPersistedOperationsRequest.ProtoReflect.Descriptor instead. func (*PublishPersistedOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{150} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{157} } func (x *PublishPersistedOperationsRequest) GetFedGraphName() string { @@ -11747,23 +11850,20 @@ func (x *PublishPersistedOperationsRequest) GetNamespace() string { } type PublishedOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Status PublishedOperationStatus `protobuf:"varint,3,opt,name=status,proto3,enum=wg.cosmo.platform.v1.PublishedOperationStatus" json:"status,omitempty"` OperationNames []string `protobuf:"bytes,4,rep,name=operationNames,proto3" json:"operationNames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PublishedOperation) Reset() { *x = PublishedOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[151] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[158] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishedOperation) String() string { @@ -11773,8 +11873,8 @@ func (x *PublishedOperation) String() string { func (*PublishedOperation) ProtoMessage() {} func (x *PublishedOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[151] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[158] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11786,7 +11886,7 @@ func (x *PublishedOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishedOperation.ProtoReflect.Descriptor instead. func (*PublishedOperation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{151} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{158} } func (x *PublishedOperation) GetId() string { @@ -11818,21 +11918,18 @@ func (x *PublishedOperation) GetOperationNames() []string { } type PublishPersistedOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Operations []*PublishedOperation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Operations []*PublishedOperation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PublishPersistedOperationsResponse) Reset() { *x = PublishPersistedOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[152] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[159] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PublishPersistedOperationsResponse) String() string { @@ -11842,8 +11939,8 @@ func (x *PublishPersistedOperationsResponse) String() string { func (*PublishPersistedOperationsResponse) ProtoMessage() {} func (x *PublishPersistedOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[152] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[159] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11855,7 +11952,7 @@ func (x *PublishPersistedOperationsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use PublishPersistedOperationsResponse.ProtoReflect.Descriptor instead. func (*PublishPersistedOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{152} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{159} } func (x *PublishPersistedOperationsResponse) GetResponse() *Response { @@ -11873,23 +11970,20 @@ func (x *PublishPersistedOperationsResponse) GetOperations() []*PublishedOperati } type DeletePersistedOperationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` + OperationId string `protobuf:"bytes,4,opt,name=operationId,proto3" json:"operationId,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` - OperationId string `protobuf:"bytes,4,opt,name=operationId,proto3" json:"operationId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePersistedOperationRequest) Reset() { *x = DeletePersistedOperationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePersistedOperationRequest) String() string { @@ -11899,8 +11993,8 @@ func (x *DeletePersistedOperationRequest) String() string { func (*DeletePersistedOperationRequest) ProtoMessage() {} func (x *DeletePersistedOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[153] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[160] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11912,7 +12006,7 @@ func (x *DeletePersistedOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePersistedOperationRequest.ProtoReflect.Descriptor instead. func (*DeletePersistedOperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{153} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{160} } func (x *DeletePersistedOperationRequest) GetFedGraphName() string { @@ -11944,21 +12038,18 @@ func (x *DeletePersistedOperationRequest) GetOperationId() string { } type DeletePersistedOperationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Operation *DeletePersistedOperationResponse_Operation `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Operation *DeletePersistedOperationResponse_Operation `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePersistedOperationResponse) Reset() { *x = DeletePersistedOperationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[154] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[161] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePersistedOperationResponse) String() string { @@ -11968,8 +12059,8 @@ func (x *DeletePersistedOperationResponse) String() string { func (*DeletePersistedOperationResponse) ProtoMessage() {} func (x *DeletePersistedOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[154] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[161] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11981,7 +12072,7 @@ func (x *DeletePersistedOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePersistedOperationResponse.ProtoReflect.Descriptor instead. func (*DeletePersistedOperationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{154} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{161} } func (x *DeletePersistedOperationResponse) GetResponse() *Response { @@ -11999,23 +12090,20 @@ func (x *DeletePersistedOperationResponse) GetOperation() *DeletePersistedOperat } type CheckPersistedOperationTrafficRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationId string `protobuf:"bytes,3,opt,name=operationId,proto3" json:"operationId,omitempty"` + ClientName string `protobuf:"bytes,4,opt,name=clientName,proto3" json:"clientName,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationId string `protobuf:"bytes,3,opt,name=operationId,proto3" json:"operationId,omitempty"` - ClientName string `protobuf:"bytes,4,opt,name=clientName,proto3" json:"clientName,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CheckPersistedOperationTrafficRequest) Reset() { *x = CheckPersistedOperationTrafficRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[155] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[162] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckPersistedOperationTrafficRequest) String() string { @@ -12025,8 +12113,8 @@ func (x *CheckPersistedOperationTrafficRequest) String() string { func (*CheckPersistedOperationTrafficRequest) ProtoMessage() {} func (x *CheckPersistedOperationTrafficRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[155] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[162] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12038,7 +12126,7 @@ func (x *CheckPersistedOperationTrafficRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use CheckPersistedOperationTrafficRequest.ProtoReflect.Descriptor instead. func (*CheckPersistedOperationTrafficRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{155} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{162} } func (x *CheckPersistedOperationTrafficRequest) GetFedGraphName() string { @@ -12070,21 +12158,18 @@ func (x *CheckPersistedOperationTrafficRequest) GetClientName() string { } type CheckPersistedOperationTrafficResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Operation *CheckPersistedOperationTrafficResponse_Operation `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Operation *CheckPersistedOperationTrafficResponse_Operation `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CheckPersistedOperationTrafficResponse) Reset() { *x = CheckPersistedOperationTrafficResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[156] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[163] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckPersistedOperationTrafficResponse) String() string { @@ -12094,8 +12179,8 @@ func (x *CheckPersistedOperationTrafficResponse) String() string { func (*CheckPersistedOperationTrafficResponse) ProtoMessage() {} func (x *CheckPersistedOperationTrafficResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[156] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[163] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12107,7 +12192,7 @@ func (x *CheckPersistedOperationTrafficResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use CheckPersistedOperationTrafficResponse.ProtoReflect.Descriptor instead. func (*CheckPersistedOperationTrafficResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{156} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{163} } func (x *CheckPersistedOperationTrafficResponse) GetResponse() *Response { @@ -12125,22 +12210,19 @@ func (x *CheckPersistedOperationTrafficResponse) GetOperation() *CheckPersistedO } type GetPersistedOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` - ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPersistedOperationsRequest) Reset() { *x = GetPersistedOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[157] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPersistedOperationsRequest) String() string { @@ -12150,8 +12232,8 @@ func (x *GetPersistedOperationsRequest) String() string { func (*GetPersistedOperationsRequest) ProtoMessage() {} func (x *GetPersistedOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[157] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[164] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12163,7 +12245,7 @@ func (x *GetPersistedOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPersistedOperationsRequest.ProtoReflect.Descriptor instead. func (*GetPersistedOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{157} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{164} } func (x *GetPersistedOperationsRequest) GetFederatedGraphName() string { @@ -12188,21 +12270,18 @@ func (x *GetPersistedOperationsRequest) GetNamespace() string { } type GetPersistedOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Operations []*GetPersistedOperationsResponse_Operation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Operations []*GetPersistedOperationsResponse_Operation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPersistedOperationsResponse) Reset() { *x = GetPersistedOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[158] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPersistedOperationsResponse) String() string { @@ -12212,8 +12291,8 @@ func (x *GetPersistedOperationsResponse) String() string { func (*GetPersistedOperationsResponse) ProtoMessage() {} func (x *GetPersistedOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[158] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[165] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12225,7 +12304,7 @@ func (x *GetPersistedOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPersistedOperationsResponse.ProtoReflect.Descriptor instead. func (*GetPersistedOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{158} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{165} } func (x *GetPersistedOperationsResponse) GetResponse() *Response { @@ -12243,21 +12322,18 @@ func (x *GetPersistedOperationsResponse) GetOperations() []*GetPersistedOperatio } type Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Header) Reset() { *x = Header{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[159] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[166] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Header) String() string { @@ -12267,8 +12343,8 @@ func (x *Header) String() string { func (*Header) ProtoMessage() {} func (x *Header) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[159] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[166] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12280,7 +12356,7 @@ func (x *Header) ProtoReflect() protoreflect.Message { // Deprecated: Use Header.ProtoReflect.Descriptor instead. func (*Header) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{159} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{166} } func (x *Header) GetKey() string { @@ -12298,23 +12374,20 @@ func (x *Header) GetValue() string { } type CreateOrganizationWebhookConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + EventsMeta []*notifications.EventMeta `protobuf:"bytes,4,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` unknownFields protoimpl.UnknownFields - - Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` - EventsMeta []*notifications.EventMeta `protobuf:"bytes,4,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationWebhookConfigRequest) Reset() { *x = CreateOrganizationWebhookConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[160] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[167] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationWebhookConfigRequest) String() string { @@ -12324,8 +12397,8 @@ func (x *CreateOrganizationWebhookConfigRequest) String() string { func (*CreateOrganizationWebhookConfigRequest) ProtoMessage() {} func (x *CreateOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[160] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[167] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12337,7 +12410,7 @@ func (x *CreateOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use CreateOrganizationWebhookConfigRequest.ProtoReflect.Descriptor instead. func (*CreateOrganizationWebhookConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{160} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{167} } func (x *CreateOrganizationWebhookConfigRequest) GetEndpoint() string { @@ -12369,21 +12442,18 @@ func (x *CreateOrganizationWebhookConfigRequest) GetEventsMeta() []*notification } type CreateOrganizationWebhookConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - WebhookConfigId string `protobuf:"bytes,2,opt,name=webhook_config_id,json=webhookConfigId,proto3" json:"webhook_config_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + WebhookConfigId string `protobuf:"bytes,2,opt,name=webhook_config_id,json=webhookConfigId,proto3" json:"webhook_config_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationWebhookConfigResponse) Reset() { *x = CreateOrganizationWebhookConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[161] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationWebhookConfigResponse) String() string { @@ -12393,8 +12463,8 @@ func (x *CreateOrganizationWebhookConfigResponse) String() string { func (*CreateOrganizationWebhookConfigResponse) ProtoMessage() {} func (x *CreateOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[161] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[168] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12406,7 +12476,7 @@ func (x *CreateOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Me // Deprecated: Use CreateOrganizationWebhookConfigResponse.ProtoReflect.Descriptor instead. func (*CreateOrganizationWebhookConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{161} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{168} } func (x *CreateOrganizationWebhookConfigResponse) GetResponse() *Response { @@ -12424,18 +12494,16 @@ func (x *CreateOrganizationWebhookConfigResponse) GetWebhookConfigId() string { } type GetOrganizationWebhookConfigsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookConfigsRequest) Reset() { *x = GetOrganizationWebhookConfigsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[162] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookConfigsRequest) String() string { @@ -12445,8 +12513,8 @@ func (x *GetOrganizationWebhookConfigsRequest) String() string { func (*GetOrganizationWebhookConfigsRequest) ProtoMessage() {} func (x *GetOrganizationWebhookConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[162] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[169] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12458,25 +12526,22 @@ func (x *GetOrganizationWebhookConfigsRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use GetOrganizationWebhookConfigsRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookConfigsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{162} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{169} } type GetOrganizationWebhookConfigsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Configs []*GetOrganizationWebhookConfigsResponse_Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Configs []*GetOrganizationWebhookConfigsResponse_Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookConfigsResponse) Reset() { *x = GetOrganizationWebhookConfigsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[163] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookConfigsResponse) String() string { @@ -12486,8 +12551,8 @@ func (x *GetOrganizationWebhookConfigsResponse) String() string { func (*GetOrganizationWebhookConfigsResponse) ProtoMessage() {} func (x *GetOrganizationWebhookConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[163] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[170] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12499,7 +12564,7 @@ func (x *GetOrganizationWebhookConfigsResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use GetOrganizationWebhookConfigsResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookConfigsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{163} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{170} } func (x *GetOrganizationWebhookConfigsResponse) GetResponse() *Response { @@ -12517,20 +12582,17 @@ func (x *GetOrganizationWebhookConfigsResponse) GetConfigs() []*GetOrganizationW } type GetOrganizationWebhookMetaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookMetaRequest) Reset() { *x = GetOrganizationWebhookMetaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[164] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookMetaRequest) String() string { @@ -12540,8 +12602,8 @@ func (x *GetOrganizationWebhookMetaRequest) String() string { func (*GetOrganizationWebhookMetaRequest) ProtoMessage() {} func (x *GetOrganizationWebhookMetaRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[164] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[171] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12553,7 +12615,7 @@ func (x *GetOrganizationWebhookMetaRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationWebhookMetaRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookMetaRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{164} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{171} } func (x *GetOrganizationWebhookMetaRequest) GetId() string { @@ -12564,21 +12626,18 @@ func (x *GetOrganizationWebhookMetaRequest) GetId() string { } type GetOrganizationWebhookMetaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + EventsMeta []*notifications.EventMeta `protobuf:"bytes,2,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - EventsMeta []*notifications.EventMeta `protobuf:"bytes,2,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookMetaResponse) Reset() { *x = GetOrganizationWebhookMetaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[165] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookMetaResponse) String() string { @@ -12588,8 +12647,8 @@ func (x *GetOrganizationWebhookMetaResponse) String() string { func (*GetOrganizationWebhookMetaResponse) ProtoMessage() {} func (x *GetOrganizationWebhookMetaResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[165] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[172] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12601,7 +12660,7 @@ func (x *GetOrganizationWebhookMetaResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationWebhookMetaResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookMetaResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{165} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{172} } func (x *GetOrganizationWebhookMetaResponse) GetResponse() *Response { @@ -12619,25 +12678,22 @@ func (x *GetOrganizationWebhookMetaResponse) GetEventsMeta() []*notifications.Ev } type UpdateOrganizationWebhookConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` Events []string `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` EventsMeta []*notifications.EventMeta `protobuf:"bytes,5,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` ShouldUpdateKey bool `protobuf:"varint,6,opt,name=should_update_key,json=shouldUpdateKey,proto3" json:"should_update_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationWebhookConfigRequest) Reset() { *x = UpdateOrganizationWebhookConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[166] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationWebhookConfigRequest) String() string { @@ -12647,8 +12703,8 @@ func (x *UpdateOrganizationWebhookConfigRequest) String() string { func (*UpdateOrganizationWebhookConfigRequest) ProtoMessage() {} func (x *UpdateOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[166] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[173] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12660,7 +12716,7 @@ func (x *UpdateOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use UpdateOrganizationWebhookConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationWebhookConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{166} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{173} } func (x *UpdateOrganizationWebhookConfigRequest) GetId() string { @@ -12706,20 +12762,17 @@ func (x *UpdateOrganizationWebhookConfigRequest) GetShouldUpdateKey() bool { } type UpdateOrganizationWebhookConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationWebhookConfigResponse) Reset() { *x = UpdateOrganizationWebhookConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[167] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationWebhookConfigResponse) String() string { @@ -12729,8 +12782,8 @@ func (x *UpdateOrganizationWebhookConfigResponse) String() string { func (*UpdateOrganizationWebhookConfigResponse) ProtoMessage() {} func (x *UpdateOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[167] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[174] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12742,7 +12795,7 @@ func (x *UpdateOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Me // Deprecated: Use UpdateOrganizationWebhookConfigResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationWebhookConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{167} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{174} } func (x *UpdateOrganizationWebhookConfigResponse) GetResponse() *Response { @@ -12753,20 +12806,17 @@ func (x *UpdateOrganizationWebhookConfigResponse) GetResponse() *Response { } type DeleteOrganizationWebhookConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationWebhookConfigRequest) Reset() { *x = DeleteOrganizationWebhookConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[168] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationWebhookConfigRequest) String() string { @@ -12776,8 +12826,8 @@ func (x *DeleteOrganizationWebhookConfigRequest) String() string { func (*DeleteOrganizationWebhookConfigRequest) ProtoMessage() {} func (x *DeleteOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[168] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[175] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12789,7 +12839,7 @@ func (x *DeleteOrganizationWebhookConfigRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use DeleteOrganizationWebhookConfigRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationWebhookConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{168} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{175} } func (x *DeleteOrganizationWebhookConfigRequest) GetId() string { @@ -12800,20 +12850,17 @@ func (x *DeleteOrganizationWebhookConfigRequest) GetId() string { } type DeleteOrganizationWebhookConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationWebhookConfigResponse) Reset() { *x = DeleteOrganizationWebhookConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[169] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationWebhookConfigResponse) String() string { @@ -12823,8 +12870,8 @@ func (x *DeleteOrganizationWebhookConfigResponse) String() string { func (*DeleteOrganizationWebhookConfigResponse) ProtoMessage() {} func (x *DeleteOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[169] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[176] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12836,7 +12883,7 @@ func (x *DeleteOrganizationWebhookConfigResponse) ProtoReflect() protoreflect.Me // Deprecated: Use DeleteOrganizationWebhookConfigResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationWebhookConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{169} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{176} } func (x *DeleteOrganizationWebhookConfigResponse) GetResponse() *Response { @@ -12847,24 +12894,21 @@ func (x *DeleteOrganizationWebhookConfigResponse) GetResponse() *Response { } type CreateIntegrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` + Events []string `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` + EventsMeta []*notifications.EventMeta `protobuf:"bytes,5,rep,name=eventsMeta,proto3" json:"eventsMeta,omitempty"` unknownFields protoimpl.UnknownFields - - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` - Events []string `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` - EventsMeta []*notifications.EventMeta `protobuf:"bytes,5,rep,name=eventsMeta,proto3" json:"eventsMeta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateIntegrationRequest) Reset() { *x = CreateIntegrationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[170] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateIntegrationRequest) String() string { @@ -12874,8 +12918,8 @@ func (x *CreateIntegrationRequest) String() string { func (*CreateIntegrationRequest) ProtoMessage() {} func (x *CreateIntegrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[170] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[177] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12887,7 +12931,7 @@ func (x *CreateIntegrationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateIntegrationRequest.ProtoReflect.Descriptor instead. func (*CreateIntegrationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{170} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{177} } func (x *CreateIntegrationRequest) GetType() string { @@ -12926,20 +12970,17 @@ func (x *CreateIntegrationRequest) GetEventsMeta() []*notifications.EventMeta { } type CreateIntegrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateIntegrationResponse) Reset() { *x = CreateIntegrationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[171] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateIntegrationResponse) String() string { @@ -12949,8 +12990,8 @@ func (x *CreateIntegrationResponse) String() string { func (*CreateIntegrationResponse) ProtoMessage() {} func (x *CreateIntegrationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[171] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[178] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12962,7 +13003,7 @@ func (x *CreateIntegrationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateIntegrationResponse.ProtoReflect.Descriptor instead. func (*CreateIntegrationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{171} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{178} } func (x *CreateIntegrationResponse) GetResponse() *Response { @@ -12973,18 +13014,16 @@ func (x *CreateIntegrationResponse) GetResponse() *Response { } type GetOrganizationIntegrationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrganizationIntegrationsRequest) Reset() { *x = GetOrganizationIntegrationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[172] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationIntegrationsRequest) String() string { @@ -12994,8 +13033,8 @@ func (x *GetOrganizationIntegrationsRequest) String() string { func (*GetOrganizationIntegrationsRequest) ProtoMessage() {} func (x *GetOrganizationIntegrationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[172] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[179] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13007,24 +13046,21 @@ func (x *GetOrganizationIntegrationsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationIntegrationsRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationIntegrationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{172} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{179} } type SlackIntegrationConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` unknownFields protoimpl.UnknownFields - - Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SlackIntegrationConfig) Reset() { *x = SlackIntegrationConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[173] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SlackIntegrationConfig) String() string { @@ -13034,8 +13070,8 @@ func (x *SlackIntegrationConfig) String() string { func (*SlackIntegrationConfig) ProtoMessage() {} func (x *SlackIntegrationConfig) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[173] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[180] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13047,7 +13083,7 @@ func (x *SlackIntegrationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SlackIntegrationConfig.ProtoReflect.Descriptor instead. func (*SlackIntegrationConfig) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{173} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{180} } func (x *SlackIntegrationConfig) GetEndpoint() string { @@ -13058,24 +13094,21 @@ func (x *SlackIntegrationConfig) GetEndpoint() string { } type IntegrationConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type IntegrationType `protobuf:"varint,1,opt,name=type,proto3,enum=wg.cosmo.platform.v1.IntegrationType" json:"type,omitempty"` - // Types that are assignable to Config: + state protoimpl.MessageState `protogen:"open.v1"` + Type IntegrationType `protobuf:"varint,1,opt,name=type,proto3,enum=wg.cosmo.platform.v1.IntegrationType" json:"type,omitempty"` + // Types that are valid to be assigned to Config: // // *IntegrationConfig_SlackIntegrationConfig - Config isIntegrationConfig_Config `protobuf_oneof:"config"` + Config isIntegrationConfig_Config `protobuf_oneof:"config"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IntegrationConfig) Reset() { *x = IntegrationConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[174] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IntegrationConfig) String() string { @@ -13085,8 +13118,8 @@ func (x *IntegrationConfig) String() string { func (*IntegrationConfig) ProtoMessage() {} func (x *IntegrationConfig) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[174] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[181] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13098,7 +13131,7 @@ func (x *IntegrationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use IntegrationConfig.ProtoReflect.Descriptor instead. func (*IntegrationConfig) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{174} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{181} } func (x *IntegrationConfig) GetType() IntegrationType { @@ -13108,16 +13141,18 @@ func (x *IntegrationConfig) GetType() IntegrationType { return IntegrationType_SLACK } -func (m *IntegrationConfig) GetConfig() isIntegrationConfig_Config { - if m != nil { - return m.Config +func (x *IntegrationConfig) GetConfig() isIntegrationConfig_Config { + if x != nil { + return x.Config } return nil } func (x *IntegrationConfig) GetSlackIntegrationConfig() *SlackIntegrationConfig { - if x, ok := x.GetConfig().(*IntegrationConfig_SlackIntegrationConfig); ok { - return x.SlackIntegrationConfig + if x != nil { + if x, ok := x.Config.(*IntegrationConfig_SlackIntegrationConfig); ok { + return x.SlackIntegrationConfig + } } return nil } @@ -13133,25 +13168,22 @@ type IntegrationConfig_SlackIntegrationConfig struct { func (*IntegrationConfig_SlackIntegrationConfig) isIntegrationConfig_Config() {} type Integration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` Events []string `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` IntegrationConfig *IntegrationConfig `protobuf:"bytes,5,opt,name=integrationConfig,proto3" json:"integrationConfig,omitempty"` EventsMeta []*notifications.EventMeta `protobuf:"bytes,6,rep,name=eventsMeta,proto3" json:"eventsMeta,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Integration) Reset() { *x = Integration{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[175] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[182] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Integration) String() string { @@ -13161,8 +13193,8 @@ func (x *Integration) String() string { func (*Integration) ProtoMessage() {} func (x *Integration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[175] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[182] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13174,7 +13206,7 @@ func (x *Integration) ProtoReflect() protoreflect.Message { // Deprecated: Use Integration.ProtoReflect.Descriptor instead. func (*Integration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{175} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{182} } func (x *Integration) GetId() string { @@ -13220,21 +13252,18 @@ func (x *Integration) GetEventsMeta() []*notifications.EventMeta { } type GetOrganizationIntegrationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Integrations []*Integration `protobuf:"bytes,2,rep,name=integrations,proto3" json:"integrations,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Integrations []*Integration `protobuf:"bytes,2,rep,name=integrations,proto3" json:"integrations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationIntegrationsResponse) Reset() { *x = GetOrganizationIntegrationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[176] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationIntegrationsResponse) String() string { @@ -13244,8 +13273,8 @@ func (x *GetOrganizationIntegrationsResponse) String() string { func (*GetOrganizationIntegrationsResponse) ProtoMessage() {} func (x *GetOrganizationIntegrationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[176] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[183] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13257,7 +13286,7 @@ func (x *GetOrganizationIntegrationsResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetOrganizationIntegrationsResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationIntegrationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{176} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{183} } func (x *GetOrganizationIntegrationsResponse) GetResponse() *Response { @@ -13275,23 +13304,20 @@ func (x *GetOrganizationIntegrationsResponse) GetIntegrations() []*Integration { } type UpdateIntegrationConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + EventsMeta []*notifications.EventMeta `protobuf:"bytes,4,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` - EventsMeta []*notifications.EventMeta `protobuf:"bytes,4,rep,name=events_meta,json=eventsMeta,proto3" json:"events_meta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateIntegrationConfigRequest) Reset() { *x = UpdateIntegrationConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[177] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[184] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateIntegrationConfigRequest) String() string { @@ -13301,8 +13327,8 @@ func (x *UpdateIntegrationConfigRequest) String() string { func (*UpdateIntegrationConfigRequest) ProtoMessage() {} func (x *UpdateIntegrationConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[177] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[184] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13314,7 +13340,7 @@ func (x *UpdateIntegrationConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateIntegrationConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateIntegrationConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{177} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{184} } func (x *UpdateIntegrationConfigRequest) GetId() string { @@ -13346,20 +13372,17 @@ func (x *UpdateIntegrationConfigRequest) GetEventsMeta() []*notifications.EventM } type UpdateIntegrationConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateIntegrationConfigResponse) Reset() { *x = UpdateIntegrationConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[178] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[185] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateIntegrationConfigResponse) String() string { @@ -13369,8 +13392,8 @@ func (x *UpdateIntegrationConfigResponse) String() string { func (*UpdateIntegrationConfigResponse) ProtoMessage() {} func (x *UpdateIntegrationConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[178] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[185] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13382,7 +13405,7 @@ func (x *UpdateIntegrationConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateIntegrationConfigResponse.ProtoReflect.Descriptor instead. func (*UpdateIntegrationConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{178} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{185} } func (x *UpdateIntegrationConfigResponse) GetResponse() *Response { @@ -13393,20 +13416,17 @@ func (x *UpdateIntegrationConfigResponse) GetResponse() *Response { } type DeleteIntegrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteIntegrationRequest) Reset() { *x = DeleteIntegrationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[179] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[186] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteIntegrationRequest) String() string { @@ -13416,8 +13436,8 @@ func (x *DeleteIntegrationRequest) String() string { func (*DeleteIntegrationRequest) ProtoMessage() {} func (x *DeleteIntegrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[179] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[186] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13429,7 +13449,7 @@ func (x *DeleteIntegrationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteIntegrationRequest.ProtoReflect.Descriptor instead. func (*DeleteIntegrationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{179} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{186} } func (x *DeleteIntegrationRequest) GetId() string { @@ -13440,20 +13460,17 @@ func (x *DeleteIntegrationRequest) GetId() string { } type DeleteIntegrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteIntegrationResponse) Reset() { *x = DeleteIntegrationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[180] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[187] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteIntegrationResponse) String() string { @@ -13463,8 +13480,8 @@ func (x *DeleteIntegrationResponse) String() string { func (*DeleteIntegrationResponse) ProtoMessage() {} func (x *DeleteIntegrationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[180] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[187] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13476,7 +13493,7 @@ func (x *DeleteIntegrationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteIntegrationResponse.ProtoReflect.Descriptor instead. func (*DeleteIntegrationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{180} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{187} } func (x *DeleteIntegrationResponse) GetResponse() *Response { @@ -13487,20 +13504,17 @@ func (x *DeleteIntegrationResponse) GetResponse() *Response { } type DeleteOrganizationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationRequest) Reset() { *x = DeleteOrganizationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[181] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[188] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationRequest) String() string { @@ -13510,8 +13524,8 @@ func (x *DeleteOrganizationRequest) String() string { func (*DeleteOrganizationRequest) ProtoMessage() {} func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[181] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[188] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13523,7 +13537,7 @@ func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{181} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{188} } func (x *DeleteOrganizationRequest) GetUserID() string { @@ -13534,20 +13548,17 @@ func (x *DeleteOrganizationRequest) GetUserID() string { } type DeleteOrganizationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOrganizationResponse) Reset() { *x = DeleteOrganizationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[182] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[189] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOrganizationResponse) String() string { @@ -13557,8 +13568,8 @@ func (x *DeleteOrganizationResponse) String() string { func (*DeleteOrganizationResponse) ProtoMessage() {} func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[182] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[189] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13570,7 +13581,7 @@ func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{182} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{189} } func (x *DeleteOrganizationResponse) GetResponse() *Response { @@ -13581,18 +13592,16 @@ func (x *DeleteOrganizationResponse) GetResponse() *Response { } type RestoreOrganizationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RestoreOrganizationRequest) Reset() { *x = RestoreOrganizationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[183] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[190] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RestoreOrganizationRequest) String() string { @@ -13602,8 +13611,8 @@ func (x *RestoreOrganizationRequest) String() string { func (*RestoreOrganizationRequest) ProtoMessage() {} func (x *RestoreOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[183] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[190] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13615,24 +13624,21 @@ func (x *RestoreOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreOrganizationRequest.ProtoReflect.Descriptor instead. func (*RestoreOrganizationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{183} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{190} } type RestoreOrganizationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RestoreOrganizationResponse) Reset() { *x = RestoreOrganizationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[184] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[191] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RestoreOrganizationResponse) String() string { @@ -13642,8 +13648,8 @@ func (x *RestoreOrganizationResponse) String() string { func (*RestoreOrganizationResponse) ProtoMessage() {} func (x *RestoreOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[184] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[191] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13655,7 +13661,7 @@ func (x *RestoreOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreOrganizationResponse.ProtoReflect.Descriptor instead. func (*RestoreOrganizationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{184} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{191} } func (x *RestoreOrganizationResponse) GetResponse() *Response { @@ -13666,18 +13672,16 @@ func (x *RestoreOrganizationResponse) GetResponse() *Response { } type LeaveOrganizationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LeaveOrganizationRequest) Reset() { *x = LeaveOrganizationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[185] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[192] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LeaveOrganizationRequest) String() string { @@ -13687,8 +13691,8 @@ func (x *LeaveOrganizationRequest) String() string { func (*LeaveOrganizationRequest) ProtoMessage() {} func (x *LeaveOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[185] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[192] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13700,24 +13704,21 @@ func (x *LeaveOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaveOrganizationRequest.ProtoReflect.Descriptor instead. func (*LeaveOrganizationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{185} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{192} } type LeaveOrganizationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LeaveOrganizationResponse) Reset() { *x = LeaveOrganizationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[186] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[193] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LeaveOrganizationResponse) String() string { @@ -13727,8 +13728,8 @@ func (x *LeaveOrganizationResponse) String() string { func (*LeaveOrganizationResponse) ProtoMessage() {} func (x *LeaveOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[186] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[193] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13740,7 +13741,7 @@ func (x *LeaveOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaveOrganizationResponse.ProtoReflect.Descriptor instead. func (*LeaveOrganizationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{186} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{193} } func (x *LeaveOrganizationResponse) GetResponse() *Response { @@ -13751,22 +13752,19 @@ func (x *LeaveOrganizationResponse) GetResponse() *Response { } type UpdateOrganizationDetailsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - OrganizationName string `protobuf:"bytes,2,opt,name=organizationName,proto3" json:"organizationName,omitempty"` - OrganizationSlug string `protobuf:"bytes,3,opt,name=organizationSlug,proto3" json:"organizationSlug,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + OrganizationName string `protobuf:"bytes,2,opt,name=organizationName,proto3" json:"organizationName,omitempty"` + OrganizationSlug string `protobuf:"bytes,3,opt,name=organizationSlug,proto3" json:"organizationSlug,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationDetailsRequest) Reset() { *x = UpdateOrganizationDetailsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[187] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationDetailsRequest) String() string { @@ -13776,8 +13774,8 @@ func (x *UpdateOrganizationDetailsRequest) String() string { func (*UpdateOrganizationDetailsRequest) ProtoMessage() {} func (x *UpdateOrganizationDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[187] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[194] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13789,7 +13787,7 @@ func (x *UpdateOrganizationDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationDetailsRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationDetailsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{187} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{194} } func (x *UpdateOrganizationDetailsRequest) GetUserID() string { @@ -13814,20 +13812,17 @@ func (x *UpdateOrganizationDetailsRequest) GetOrganizationSlug() string { } type UpdateOrganizationDetailsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationDetailsResponse) Reset() { *x = UpdateOrganizationDetailsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[188] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationDetailsResponse) String() string { @@ -13837,8 +13832,8 @@ func (x *UpdateOrganizationDetailsResponse) String() string { func (*UpdateOrganizationDetailsResponse) ProtoMessage() {} func (x *UpdateOrganizationDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[188] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[195] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13850,7 +13845,7 @@ func (x *UpdateOrganizationDetailsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateOrganizationDetailsResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationDetailsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{188} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{195} } func (x *UpdateOrganizationDetailsResponse) GetResponse() *Response { @@ -13861,21 +13856,18 @@ func (x *UpdateOrganizationDetailsResponse) GetResponse() *Response { } type UpdateOrgMemberGroupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OrgMemberUserID string `protobuf:"bytes,1,opt,name=orgMemberUserID,proto3" json:"orgMemberUserID,omitempty"` - Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OrgMemberUserID string `protobuf:"bytes,1,opt,name=orgMemberUserID,proto3" json:"orgMemberUserID,omitempty"` + Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateOrgMemberGroupRequest) Reset() { *x = UpdateOrgMemberGroupRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[189] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[196] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrgMemberGroupRequest) String() string { @@ -13885,8 +13877,8 @@ func (x *UpdateOrgMemberGroupRequest) String() string { func (*UpdateOrgMemberGroupRequest) ProtoMessage() {} func (x *UpdateOrgMemberGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[189] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[196] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13898,7 +13890,7 @@ func (x *UpdateOrgMemberGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgMemberGroupRequest.ProtoReflect.Descriptor instead. func (*UpdateOrgMemberGroupRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{189} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{196} } func (x *UpdateOrgMemberGroupRequest) GetOrgMemberUserID() string { @@ -13916,20 +13908,17 @@ func (x *UpdateOrgMemberGroupRequest) GetGroups() []string { } type UpdateOrgMemberGroupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrgMemberGroupResponse) Reset() { *x = UpdateOrgMemberGroupResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[190] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrgMemberGroupResponse) String() string { @@ -13939,8 +13928,8 @@ func (x *UpdateOrgMemberGroupResponse) String() string { func (*UpdateOrgMemberGroupResponse) ProtoMessage() {} func (x *UpdateOrgMemberGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[190] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[197] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13952,7 +13941,7 @@ func (x *UpdateOrgMemberGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgMemberGroupResponse.ProtoReflect.Descriptor instead. func (*UpdateOrgMemberGroupResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{190} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{197} } func (x *UpdateOrgMemberGroupResponse) GetResponse() *Response { @@ -13963,22 +13952,19 @@ func (x *UpdateOrgMemberGroupResponse) GetResponse() *Response { } type CreateOrganizationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Plan string `protobuf:"bytes,3,opt,name=plan,proto3" json:"plan,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Plan string `protobuf:"bytes,3,opt,name=plan,proto3" json:"plan,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationRequest) Reset() { *x = CreateOrganizationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[191] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[198] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationRequest) String() string { @@ -13988,8 +13974,8 @@ func (x *CreateOrganizationRequest) String() string { func (*CreateOrganizationRequest) ProtoMessage() {} func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[191] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[198] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14001,7 +13987,7 @@ func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationRequest.ProtoReflect.Descriptor instead. func (*CreateOrganizationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{191} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{198} } func (x *CreateOrganizationRequest) GetName() string { @@ -14026,22 +14012,19 @@ func (x *CreateOrganizationRequest) GetPlan() string { } type CreateOrganizationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Organization *Organization `protobuf:"bytes,2,opt,name=organization,proto3,oneof" json:"organization,omitempty"` - StripeSessionId *string `protobuf:"bytes,3,opt,name=stripeSessionId,proto3,oneof" json:"stripeSessionId,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Organization *Organization `protobuf:"bytes,2,opt,name=organization,proto3,oneof" json:"organization,omitempty"` + StripeSessionId *string `protobuf:"bytes,3,opt,name=stripeSessionId,proto3,oneof" json:"stripeSessionId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateOrganizationResponse) Reset() { *x = CreateOrganizationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[192] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[199] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOrganizationResponse) String() string { @@ -14051,8 +14034,8 @@ func (x *CreateOrganizationResponse) String() string { func (*CreateOrganizationResponse) ProtoMessage() {} func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[192] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[199] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14064,7 +14047,7 @@ func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationResponse.ProtoReflect.Descriptor instead. func (*CreateOrganizationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{192} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{199} } func (x *CreateOrganizationResponse) GetResponse() *Response { @@ -14089,24 +14072,21 @@ func (x *CreateOrganizationResponse) GetStripeSessionId() string { } type Organization struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + CreatorUserId *string `protobuf:"bytes,4,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` + CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` - CreatorUserId *string `protobuf:"bytes,4,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` - CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Organization) Reset() { *x = Organization{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[193] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[200] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Organization) String() string { @@ -14116,8 +14096,8 @@ func (x *Organization) String() string { func (*Organization) ProtoMessage() {} func (x *Organization) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[193] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[200] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14129,7 +14109,7 @@ func (x *Organization) ProtoReflect() protoreflect.Message { // Deprecated: Use Organization.ProtoReflect.Descriptor instead. func (*Organization) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{193} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{200} } func (x *Organization) GetId() string { @@ -14168,20 +14148,17 @@ func (x *Organization) GetCreatedAt() string { } type GetOrganizationBySlugRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` unknownFields protoimpl.UnknownFields - - Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationBySlugRequest) Reset() { *x = GetOrganizationBySlugRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[194] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[201] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationBySlugRequest) String() string { @@ -14191,8 +14168,8 @@ func (x *GetOrganizationBySlugRequest) String() string { func (*GetOrganizationBySlugRequest) ProtoMessage() {} func (x *GetOrganizationBySlugRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[194] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[201] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14204,7 +14181,7 @@ func (x *GetOrganizationBySlugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationBySlugRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationBySlugRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{194} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{201} } func (x *GetOrganizationBySlugRequest) GetSlug() string { @@ -14215,21 +14192,18 @@ func (x *GetOrganizationBySlugRequest) GetSlug() string { } type GetOrganizationBySlugResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Organization *Organization `protobuf:"bytes,2,opt,name=organization,proto3,oneof" json:"organization,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Organization *Organization `protobuf:"bytes,2,opt,name=organization,proto3,oneof" json:"organization,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationBySlugResponse) Reset() { *x = GetOrganizationBySlugResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[195] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[202] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationBySlugResponse) String() string { @@ -14239,8 +14213,8 @@ func (x *GetOrganizationBySlugResponse) String() string { func (*GetOrganizationBySlugResponse) ProtoMessage() {} func (x *GetOrganizationBySlugResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[195] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[202] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14252,7 +14226,7 @@ func (x *GetOrganizationBySlugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationBySlugResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationBySlugResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{195} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{202} } func (x *GetOrganizationBySlugResponse) GetResponse() *Response { @@ -14272,18 +14246,16 @@ func (x *GetOrganizationBySlugResponse) GetOrganization() *Organization { // * // Billing type GetBillingPlansRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetBillingPlansRequest) Reset() { *x = GetBillingPlansRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[196] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[203] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBillingPlansRequest) String() string { @@ -14293,8 +14265,8 @@ func (x *GetBillingPlansRequest) String() string { func (*GetBillingPlansRequest) ProtoMessage() {} func (x *GetBillingPlansRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[196] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[203] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14306,25 +14278,22 @@ func (x *GetBillingPlansRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBillingPlansRequest.ProtoReflect.Descriptor instead. func (*GetBillingPlansRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{196} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{203} } type GetBillingPlansResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Plans []*GetBillingPlansResponse_BillingPlan `protobuf:"bytes,2,rep,name=plans,proto3" json:"plans,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Plans []*GetBillingPlansResponse_BillingPlan `protobuf:"bytes,2,rep,name=plans,proto3" json:"plans,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBillingPlansResponse) Reset() { *x = GetBillingPlansResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[197] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[204] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBillingPlansResponse) String() string { @@ -14334,8 +14303,8 @@ func (x *GetBillingPlansResponse) String() string { func (*GetBillingPlansResponse) ProtoMessage() {} func (x *GetBillingPlansResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[197] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[204] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14347,7 +14316,7 @@ func (x *GetBillingPlansResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBillingPlansResponse.ProtoReflect.Descriptor instead. func (*GetBillingPlansResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{197} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{204} } func (x *GetBillingPlansResponse) GetResponse() *Response { @@ -14365,20 +14334,17 @@ func (x *GetBillingPlansResponse) GetPlans() []*GetBillingPlansResponse_BillingP } type CreateCheckoutSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Plan string `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` unknownFields protoimpl.UnknownFields - - Plan string `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCheckoutSessionRequest) Reset() { *x = CreateCheckoutSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[198] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[205] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCheckoutSessionRequest) String() string { @@ -14388,8 +14354,8 @@ func (x *CreateCheckoutSessionRequest) String() string { func (*CreateCheckoutSessionRequest) ProtoMessage() {} func (x *CreateCheckoutSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[198] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[205] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14401,7 +14367,7 @@ func (x *CreateCheckoutSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCheckoutSessionRequest.ProtoReflect.Descriptor instead. func (*CreateCheckoutSessionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{198} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{205} } func (x *CreateCheckoutSessionRequest) GetPlan() string { @@ -14412,21 +14378,18 @@ func (x *CreateCheckoutSessionRequest) GetPlan() string { } type CreateCheckoutSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=sessionId,proto3" json:"sessionId,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=sessionId,proto3" json:"sessionId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateCheckoutSessionResponse) Reset() { *x = CreateCheckoutSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[199] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[206] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateCheckoutSessionResponse) String() string { @@ -14436,8 +14399,8 @@ func (x *CreateCheckoutSessionResponse) String() string { func (*CreateCheckoutSessionResponse) ProtoMessage() {} func (x *CreateCheckoutSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[199] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[206] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14449,7 +14412,7 @@ func (x *CreateCheckoutSessionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCheckoutSessionResponse.ProtoReflect.Descriptor instead. func (*CreateCheckoutSessionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{199} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{206} } func (x *CreateCheckoutSessionResponse) GetResponse() *Response { @@ -14467,18 +14430,16 @@ func (x *CreateCheckoutSessionResponse) GetSessionId() string { } type CreateBillingPortalSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBillingPortalSessionRequest) Reset() { *x = CreateBillingPortalSessionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[200] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[207] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBillingPortalSessionRequest) String() string { @@ -14488,8 +14449,8 @@ func (x *CreateBillingPortalSessionRequest) String() string { func (*CreateBillingPortalSessionRequest) ProtoMessage() {} func (x *CreateBillingPortalSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[200] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[207] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14501,26 +14462,23 @@ func (x *CreateBillingPortalSessionRequest) ProtoReflect() protoreflect.Message // Deprecated: Use CreateBillingPortalSessionRequest.ProtoReflect.Descriptor instead. func (*CreateBillingPortalSessionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{200} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{207} } type CreateBillingPortalSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=sessionId,proto3" json:"sessionId,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=sessionId,proto3" json:"sessionId,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBillingPortalSessionResponse) Reset() { *x = CreateBillingPortalSessionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[201] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[208] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBillingPortalSessionResponse) String() string { @@ -14530,8 +14488,8 @@ func (x *CreateBillingPortalSessionResponse) String() string { func (*CreateBillingPortalSessionResponse) ProtoMessage() {} func (x *CreateBillingPortalSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[201] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[208] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14543,7 +14501,7 @@ func (x *CreateBillingPortalSessionResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateBillingPortalSessionResponse.ProtoReflect.Descriptor instead. func (*CreateBillingPortalSessionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{201} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{208} } func (x *CreateBillingPortalSessionResponse) GetResponse() *Response { @@ -14568,20 +14526,17 @@ func (x *CreateBillingPortalSessionResponse) GetUrl() string { } type UpgradePlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Plan string `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` unknownFields protoimpl.UnknownFields - - Plan string `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpgradePlanRequest) Reset() { *x = UpgradePlanRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[202] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[209] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpgradePlanRequest) String() string { @@ -14591,8 +14546,8 @@ func (x *UpgradePlanRequest) String() string { func (*UpgradePlanRequest) ProtoMessage() {} func (x *UpgradePlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[202] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[209] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14604,7 +14559,7 @@ func (x *UpgradePlanRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpgradePlanRequest.ProtoReflect.Descriptor instead. func (*UpgradePlanRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{202} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{209} } func (x *UpgradePlanRequest) GetPlan() string { @@ -14615,20 +14570,17 @@ func (x *UpgradePlanRequest) GetPlan() string { } type UpgradePlanResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpgradePlanResponse) Reset() { *x = UpgradePlanResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[203] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[210] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpgradePlanResponse) String() string { @@ -14638,8 +14590,8 @@ func (x *UpgradePlanResponse) String() string { func (*UpgradePlanResponse) ProtoMessage() {} func (x *UpgradePlanResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[203] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[210] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14651,7 +14603,7 @@ func (x *UpgradePlanResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpgradePlanResponse.ProtoReflect.Descriptor instead. func (*UpgradePlanResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{203} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{210} } func (x *UpgradePlanResponse) GetResponse() *Response { @@ -14664,24 +14616,21 @@ func (x *UpgradePlanResponse) GetResponse() *Response { // * // MetricsDashboard type GetGraphMetricsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Range int32 `protobuf:"varint,2,opt,name=range,proto3" json:"range,omitempty"` - DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Filters []*AnalyticsFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Range int32 `protobuf:"varint,2,opt,name=range,proto3" json:"range,omitempty"` + DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Filters []*AnalyticsFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetGraphMetricsRequest) Reset() { *x = GetGraphMetricsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[204] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[211] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetGraphMetricsRequest) String() string { @@ -14691,8 +14640,8 @@ func (x *GetGraphMetricsRequest) String() string { func (*GetGraphMetricsRequest) ProtoMessage() {} func (x *GetGraphMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[204] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[211] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14704,7 +14653,7 @@ func (x *GetGraphMetricsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGraphMetricsRequest.ProtoReflect.Descriptor instead. func (*GetGraphMetricsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{204} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{211} } func (x *GetGraphMetricsRequest) GetFederatedGraphName() string { @@ -14743,25 +14692,22 @@ func (x *GetGraphMetricsRequest) GetNamespace() string { } type GetGraphMetricsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Requests *MetricsDashboardMetric `protobuf:"bytes,2,opt,name=requests,proto3" json:"requests,omitempty"` + Latency *MetricsDashboardMetric `protobuf:"bytes,3,opt,name=latency,proto3" json:"latency,omitempty"` + Errors *MetricsDashboardMetric `protobuf:"bytes,4,opt,name=errors,proto3" json:"errors,omitempty"` + Filters []*AnalyticsViewResultFilter `protobuf:"bytes,5,rep,name=filters,proto3" json:"filters,omitempty"` + Resolution *string `protobuf:"bytes,6,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Requests *MetricsDashboardMetric `protobuf:"bytes,2,opt,name=requests,proto3" json:"requests,omitempty"` - Latency *MetricsDashboardMetric `protobuf:"bytes,3,opt,name=latency,proto3" json:"latency,omitempty"` - Errors *MetricsDashboardMetric `protobuf:"bytes,4,opt,name=errors,proto3" json:"errors,omitempty"` - Filters []*AnalyticsViewResultFilter `protobuf:"bytes,5,rep,name=filters,proto3" json:"filters,omitempty"` - Resolution *string `protobuf:"bytes,6,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetGraphMetricsResponse) Reset() { *x = GetGraphMetricsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[205] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[212] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetGraphMetricsResponse) String() string { @@ -14771,8 +14717,8 @@ func (x *GetGraphMetricsResponse) String() string { func (*GetGraphMetricsResponse) ProtoMessage() {} func (x *GetGraphMetricsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[205] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[212] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14784,7 +14730,7 @@ func (x *GetGraphMetricsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGraphMetricsResponse.ProtoReflect.Descriptor instead. func (*GetGraphMetricsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{205} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{212} } func (x *GetGraphMetricsResponse) GetResponse() *Response { @@ -14830,23 +14776,20 @@ func (x *GetGraphMetricsResponse) GetResolution() string { } type MetricsDashboardMetric struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + PreviousValue *string `protobuf:"bytes,2,opt,name=previousValue,proto3,oneof" json:"previousValue,omitempty"` + Top []*MetricsTopItem `protobuf:"bytes,3,rep,name=top,proto3" json:"top,omitempty"` + Series []*MetricsSeriesItem `protobuf:"bytes,4,rep,name=series,proto3" json:"series,omitempty"` unknownFields protoimpl.UnknownFields - - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - PreviousValue *string `protobuf:"bytes,2,opt,name=previousValue,proto3,oneof" json:"previousValue,omitempty"` - Top []*MetricsTopItem `protobuf:"bytes,3,rep,name=top,proto3" json:"top,omitempty"` - Series []*MetricsSeriesItem `protobuf:"bytes,4,rep,name=series,proto3" json:"series,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MetricsDashboardMetric) Reset() { *x = MetricsDashboardMetric{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[206] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[213] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetricsDashboardMetric) String() string { @@ -14856,8 +14799,8 @@ func (x *MetricsDashboardMetric) String() string { func (*MetricsDashboardMetric) ProtoMessage() {} func (x *MetricsDashboardMetric) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[206] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[213] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14869,7 +14812,7 @@ func (x *MetricsDashboardMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsDashboardMetric.ProtoReflect.Descriptor instead. func (*MetricsDashboardMetric) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{206} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{213} } func (x *MetricsDashboardMetric) GetValue() string { @@ -14901,23 +14844,20 @@ func (x *MetricsDashboardMetric) GetSeries() []*MetricsSeriesItem { } type MetricsTopItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + IsPersisted bool `protobuf:"varint,4,opt,name=isPersisted,proto3" json:"isPersisted,omitempty"` unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - IsPersisted bool `protobuf:"varint,4,opt,name=isPersisted,proto3" json:"isPersisted,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MetricsTopItem) Reset() { *x = MetricsTopItem{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[207] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[214] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetricsTopItem) String() string { @@ -14927,8 +14867,8 @@ func (x *MetricsTopItem) String() string { func (*MetricsTopItem) ProtoMessage() {} func (x *MetricsTopItem) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[207] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[214] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14940,7 +14880,7 @@ func (x *MetricsTopItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsTopItem.ProtoReflect.Descriptor instead. func (*MetricsTopItem) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{207} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{214} } func (x *MetricsTopItem) GetHash() string { @@ -14972,25 +14912,22 @@ func (x *MetricsTopItem) GetIsPersisted() bool { } type MetricsSeriesItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + PreviousValue *string `protobuf:"bytes,3,opt,name=previousValue,proto3,oneof" json:"previousValue,omitempty"` + P50 *string `protobuf:"bytes,4,opt,name=p50,proto3,oneof" json:"p50,omitempty"` + P90 *string `protobuf:"bytes,5,opt,name=p90,proto3,oneof" json:"p90,omitempty"` + P99 *string `protobuf:"bytes,6,opt,name=p99,proto3,oneof" json:"p99,omitempty"` unknownFields protoimpl.UnknownFields - - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - PreviousValue *string `protobuf:"bytes,3,opt,name=previousValue,proto3,oneof" json:"previousValue,omitempty"` - P50 *string `protobuf:"bytes,4,opt,name=p50,proto3,oneof" json:"p50,omitempty"` - P90 *string `protobuf:"bytes,5,opt,name=p90,proto3,oneof" json:"p90,omitempty"` - P99 *string `protobuf:"bytes,6,opt,name=p99,proto3,oneof" json:"p99,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MetricsSeriesItem) Reset() { *x = MetricsSeriesItem{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[208] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[215] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetricsSeriesItem) String() string { @@ -15000,8 +14937,8 @@ func (x *MetricsSeriesItem) String() string { func (*MetricsSeriesItem) ProtoMessage() {} func (x *MetricsSeriesItem) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[208] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[215] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15013,7 +14950,7 @@ func (x *MetricsSeriesItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsSeriesItem.ProtoReflect.Descriptor instead. func (*MetricsSeriesItem) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{208} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{215} } func (x *MetricsSeriesItem) GetTimestamp() string { @@ -15059,25 +14996,22 @@ func (x *MetricsSeriesItem) GetP99() string { } type MetricsDashboard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Unit *Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=wg.cosmo.platform.v1.Unit,oneof" json:"unit,omitempty"` + IsHidden *bool `protobuf:"varint,5,opt,name=is_hidden,json=isHidden,proto3,oneof" json:"is_hidden,omitempty"` + IsCta *bool `protobuf:"varint,6,opt,name=is_cta,json=isCta,proto3,oneof" json:"is_cta,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Unit *Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=wg.cosmo.platform.v1.Unit,oneof" json:"unit,omitempty"` - IsHidden *bool `protobuf:"varint,5,opt,name=is_hidden,json=isHidden,proto3,oneof" json:"is_hidden,omitempty"` - IsCta *bool `protobuf:"varint,6,opt,name=is_cta,json=isCta,proto3,oneof" json:"is_cta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MetricsDashboard) Reset() { *x = MetricsDashboard{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[209] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[216] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetricsDashboard) String() string { @@ -15087,8 +15021,8 @@ func (x *MetricsDashboard) String() string { func (*MetricsDashboard) ProtoMessage() {} func (x *MetricsDashboard) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[209] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[216] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15100,7 +15034,7 @@ func (x *MetricsDashboard) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsDashboard.ProtoReflect.Descriptor instead. func (*MetricsDashboard) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{209} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{216} } func (x *MetricsDashboard) GetName() string { @@ -15146,24 +15080,21 @@ func (x *MetricsDashboard) GetIsCta() bool { } type GetMetricsErrorRateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Range int32 `protobuf:"varint,2,opt,name=range,proto3" json:"range,omitempty"` - DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Filters []*AnalyticsFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Range int32 `protobuf:"varint,2,opt,name=range,proto3" json:"range,omitempty"` + DateRange *DateRange `protobuf:"bytes,3,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Filters []*AnalyticsFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetricsErrorRateRequest) Reset() { *x = GetMetricsErrorRateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[210] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[217] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetricsErrorRateRequest) String() string { @@ -15173,8 +15104,8 @@ func (x *GetMetricsErrorRateRequest) String() string { func (*GetMetricsErrorRateRequest) ProtoMessage() {} func (x *GetMetricsErrorRateRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[210] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[217] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15186,7 +15117,7 @@ func (x *GetMetricsErrorRateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetricsErrorRateRequest.ProtoReflect.Descriptor instead. func (*GetMetricsErrorRateRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{210} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{217} } func (x *GetMetricsErrorRateRequest) GetFederatedGraphName() string { @@ -15225,22 +15156,19 @@ func (x *GetMetricsErrorRateRequest) GetNamespace() string { } type GetMetricsErrorRateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Series []*MetricsErrorRateSeriesItem `protobuf:"bytes,2,rep,name=series,proto3" json:"series,omitempty"` + Resolution *string `protobuf:"bytes,3,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Series []*MetricsErrorRateSeriesItem `protobuf:"bytes,2,rep,name=series,proto3" json:"series,omitempty"` - Resolution *string `protobuf:"bytes,3,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMetricsErrorRateResponse) Reset() { *x = GetMetricsErrorRateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[211] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[218] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetricsErrorRateResponse) String() string { @@ -15250,8 +15178,8 @@ func (x *GetMetricsErrorRateResponse) String() string { func (*GetMetricsErrorRateResponse) ProtoMessage() {} func (x *GetMetricsErrorRateResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[211] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[218] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15263,7 +15191,7 @@ func (x *GetMetricsErrorRateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMetricsErrorRateResponse.ProtoReflect.Descriptor instead. func (*GetMetricsErrorRateResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{211} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{218} } func (x *GetMetricsErrorRateResponse) GetResponse() *Response { @@ -15288,22 +15216,19 @@ func (x *GetMetricsErrorRateResponse) GetResolution() string { } type MetricsErrorRateSeriesItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` + ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` unknownFields protoimpl.UnknownFields - - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - RequestRate float32 `protobuf:"fixed32,2,opt,name=requestRate,proto3" json:"requestRate,omitempty"` - ErrorRate float32 `protobuf:"fixed32,3,opt,name=errorRate,proto3" json:"errorRate,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MetricsErrorRateSeriesItem) Reset() { *x = MetricsErrorRateSeriesItem{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[212] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[219] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MetricsErrorRateSeriesItem) String() string { @@ -15313,8 +15238,8 @@ func (x *MetricsErrorRateSeriesItem) String() string { func (*MetricsErrorRateSeriesItem) ProtoMessage() {} func (x *MetricsErrorRateSeriesItem) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[212] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[219] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15326,7 +15251,7 @@ func (x *MetricsErrorRateSeriesItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsErrorRateSeriesItem.ProtoReflect.Descriptor instead. func (*MetricsErrorRateSeriesItem) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{212} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{219} } func (x *MetricsErrorRateSeriesItem) GetTimestamp() string { @@ -15351,24 +15276,21 @@ func (x *MetricsErrorRateSeriesItem) GetErrorRate() float32 { } type GetSubgraphMetricsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` + DateRange *DateRange `protobuf:"bytes,5,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Filters []*AnalyticsFilter `protobuf:"bytes,6,rep,name=filters,proto3" json:"filters,omitempty"` unknownFields protoimpl.UnknownFields - - SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` - DateRange *DateRange `protobuf:"bytes,5,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Filters []*AnalyticsFilter `protobuf:"bytes,6,rep,name=filters,proto3" json:"filters,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMetricsRequest) Reset() { *x = GetSubgraphMetricsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[213] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[220] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMetricsRequest) String() string { @@ -15378,8 +15300,8 @@ func (x *GetSubgraphMetricsRequest) String() string { func (*GetSubgraphMetricsRequest) ProtoMessage() {} func (x *GetSubgraphMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[213] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[220] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15391,7 +15313,7 @@ func (x *GetSubgraphMetricsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphMetricsRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphMetricsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{213} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{220} } func (x *GetSubgraphMetricsRequest) GetSubgraphName() string { @@ -15430,25 +15352,22 @@ func (x *GetSubgraphMetricsRequest) GetFilters() []*AnalyticsFilter { } type GetSubgraphMetricsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Requests *MetricsDashboardMetric `protobuf:"bytes,2,opt,name=requests,proto3" json:"requests,omitempty"` + Latency *MetricsDashboardMetric `protobuf:"bytes,3,opt,name=latency,proto3" json:"latency,omitempty"` + Errors *MetricsDashboardMetric `protobuf:"bytes,4,opt,name=errors,proto3" json:"errors,omitempty"` + Filters []*AnalyticsViewResultFilter `protobuf:"bytes,5,rep,name=filters,proto3" json:"filters,omitempty"` + Resolution *string `protobuf:"bytes,6,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Requests *MetricsDashboardMetric `protobuf:"bytes,2,opt,name=requests,proto3" json:"requests,omitempty"` - Latency *MetricsDashboardMetric `protobuf:"bytes,3,opt,name=latency,proto3" json:"latency,omitempty"` - Errors *MetricsDashboardMetric `protobuf:"bytes,4,opt,name=errors,proto3" json:"errors,omitempty"` - Filters []*AnalyticsViewResultFilter `protobuf:"bytes,5,rep,name=filters,proto3" json:"filters,omitempty"` - Resolution *string `protobuf:"bytes,6,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMetricsResponse) Reset() { *x = GetSubgraphMetricsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[214] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[221] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMetricsResponse) String() string { @@ -15458,8 +15377,8 @@ func (x *GetSubgraphMetricsResponse) String() string { func (*GetSubgraphMetricsResponse) ProtoMessage() {} func (x *GetSubgraphMetricsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[214] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[221] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15471,7 +15390,7 @@ func (x *GetSubgraphMetricsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphMetricsResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphMetricsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{214} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{221} } func (x *GetSubgraphMetricsResponse) GetResponse() *Response { @@ -15517,24 +15436,21 @@ func (x *GetSubgraphMetricsResponse) GetResolution() string { } type GetSubgraphMetricsErrorRateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` + DateRange *DateRange `protobuf:"bytes,5,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Filters []*AnalyticsFilter `protobuf:"bytes,6,rep,name=filters,proto3" json:"filters,omitempty"` unknownFields protoimpl.UnknownFields - - SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Range int32 `protobuf:"varint,4,opt,name=range,proto3" json:"range,omitempty"` - DateRange *DateRange `protobuf:"bytes,5,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Filters []*AnalyticsFilter `protobuf:"bytes,6,rep,name=filters,proto3" json:"filters,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMetricsErrorRateRequest) Reset() { *x = GetSubgraphMetricsErrorRateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[215] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[222] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMetricsErrorRateRequest) String() string { @@ -15544,8 +15460,8 @@ func (x *GetSubgraphMetricsErrorRateRequest) String() string { func (*GetSubgraphMetricsErrorRateRequest) ProtoMessage() {} func (x *GetSubgraphMetricsErrorRateRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[215] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[222] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15557,7 +15473,7 @@ func (x *GetSubgraphMetricsErrorRateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetSubgraphMetricsErrorRateRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphMetricsErrorRateRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{215} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{222} } func (x *GetSubgraphMetricsErrorRateRequest) GetSubgraphName() string { @@ -15596,22 +15512,19 @@ func (x *GetSubgraphMetricsErrorRateRequest) GetFilters() []*AnalyticsFilter { } type GetSubgraphMetricsErrorRateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Series []*MetricsErrorRateSeriesItem `protobuf:"bytes,2,rep,name=series,proto3" json:"series,omitempty"` + Resolution *string `protobuf:"bytes,3,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Series []*MetricsErrorRateSeriesItem `protobuf:"bytes,2,rep,name=series,proto3" json:"series,omitempty"` - Resolution *string `protobuf:"bytes,3,opt,name=resolution,proto3,oneof" json:"resolution,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMetricsErrorRateResponse) Reset() { *x = GetSubgraphMetricsErrorRateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[216] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[223] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMetricsErrorRateResponse) String() string { @@ -15621,8 +15534,8 @@ func (x *GetSubgraphMetricsErrorRateResponse) String() string { func (*GetSubgraphMetricsErrorRateResponse) ProtoMessage() {} func (x *GetSubgraphMetricsErrorRateResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[216] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[223] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15634,7 +15547,7 @@ func (x *GetSubgraphMetricsErrorRateResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetSubgraphMetricsErrorRateResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphMetricsErrorRateResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{216} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{223} } func (x *GetSubgraphMetricsErrorRateResponse) GetResponse() *Response { @@ -15659,22 +15572,19 @@ func (x *GetSubgraphMetricsErrorRateResponse) GetResolution() string { } type ForceCheckSuccessRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` + GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` - GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ForceCheckSuccessRequest) Reset() { *x = ForceCheckSuccessRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[217] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[224] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ForceCheckSuccessRequest) String() string { @@ -15684,8 +15594,8 @@ func (x *ForceCheckSuccessRequest) String() string { func (*ForceCheckSuccessRequest) ProtoMessage() {} func (x *ForceCheckSuccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[217] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[224] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15697,7 +15607,7 @@ func (x *ForceCheckSuccessRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ForceCheckSuccessRequest.ProtoReflect.Descriptor instead. func (*ForceCheckSuccessRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{217} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{224} } func (x *ForceCheckSuccessRequest) GetCheckId() string { @@ -15722,20 +15632,17 @@ func (x *ForceCheckSuccessRequest) GetNamespace() string { } type ForceCheckSuccessResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ForceCheckSuccessResponse) Reset() { *x = ForceCheckSuccessResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[218] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[225] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ForceCheckSuccessResponse) String() string { @@ -15745,8 +15652,8 @@ func (x *ForceCheckSuccessResponse) String() string { func (*ForceCheckSuccessResponse) ProtoMessage() {} func (x *ForceCheckSuccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[218] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[225] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15758,7 +15665,7 @@ func (x *ForceCheckSuccessResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ForceCheckSuccessResponse.ProtoReflect.Descriptor instead. func (*ForceCheckSuccessResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{218} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{225} } func (x *ForceCheckSuccessResponse) GetResponse() *Response { @@ -15769,24 +15676,21 @@ func (x *ForceCheckSuccessResponse) GetResponse() *Response { } type ToggleChangeOverridesForAllOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` + IsSafe bool `protobuf:"varint,2,opt,name=is_safe,json=isSafe,proto3" json:"is_safe,omitempty"` + GraphName string `protobuf:"bytes,3,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + Search *string `protobuf:"bytes,5,opt,name=search,proto3,oneof" json:"search,omitempty"` unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` - IsSafe bool `protobuf:"varint,2,opt,name=is_safe,json=isSafe,proto3" json:"is_safe,omitempty"` - GraphName string `protobuf:"bytes,3,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` - Search *string `protobuf:"bytes,5,opt,name=search,proto3,oneof" json:"search,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToggleChangeOverridesForAllOperationsRequest) Reset() { *x = ToggleChangeOverridesForAllOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[219] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[226] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToggleChangeOverridesForAllOperationsRequest) String() string { @@ -15796,8 +15700,8 @@ func (x *ToggleChangeOverridesForAllOperationsRequest) String() string { func (*ToggleChangeOverridesForAllOperationsRequest) ProtoMessage() {} func (x *ToggleChangeOverridesForAllOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[219] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[226] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15809,7 +15713,7 @@ func (x *ToggleChangeOverridesForAllOperationsRequest) ProtoReflect() protorefle // Deprecated: Use ToggleChangeOverridesForAllOperationsRequest.ProtoReflect.Descriptor instead. func (*ToggleChangeOverridesForAllOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{219} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{226} } func (x *ToggleChangeOverridesForAllOperationsRequest) GetCheckId() string { @@ -15848,20 +15752,17 @@ func (x *ToggleChangeOverridesForAllOperationsRequest) GetSearch() string { } type ToggleChangeOverridesForAllOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToggleChangeOverridesForAllOperationsResponse) Reset() { *x = ToggleChangeOverridesForAllOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[220] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[227] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToggleChangeOverridesForAllOperationsResponse) String() string { @@ -15871,8 +15772,8 @@ func (x *ToggleChangeOverridesForAllOperationsResponse) String() string { func (*ToggleChangeOverridesForAllOperationsResponse) ProtoMessage() {} func (x *ToggleChangeOverridesForAllOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[220] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[227] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15884,7 +15785,7 @@ func (x *ToggleChangeOverridesForAllOperationsResponse) ProtoReflect() protorefl // Deprecated: Use ToggleChangeOverridesForAllOperationsResponse.ProtoReflect.Descriptor instead. func (*ToggleChangeOverridesForAllOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{220} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{227} } func (x *ToggleChangeOverridesForAllOperationsResponse) GetResponse() *Response { @@ -15895,23 +15796,20 @@ func (x *ToggleChangeOverridesForAllOperationsResponse) GetResponse() *Response } type CreateIgnoreOverridesForAllOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` + GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"` - GraphName string `protobuf:"bytes,2,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Search *string `protobuf:"bytes,4,opt,name=search,proto3,oneof" json:"search,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateIgnoreOverridesForAllOperationsRequest) Reset() { *x = CreateIgnoreOverridesForAllOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[221] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[228] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateIgnoreOverridesForAllOperationsRequest) String() string { @@ -15921,8 +15819,8 @@ func (x *CreateIgnoreOverridesForAllOperationsRequest) String() string { func (*CreateIgnoreOverridesForAllOperationsRequest) ProtoMessage() {} func (x *CreateIgnoreOverridesForAllOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[221] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[228] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -15934,7 +15832,7 @@ func (x *CreateIgnoreOverridesForAllOperationsRequest) ProtoReflect() protorefle // Deprecated: Use CreateIgnoreOverridesForAllOperationsRequest.ProtoReflect.Descriptor instead. func (*CreateIgnoreOverridesForAllOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{221} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{228} } func (x *CreateIgnoreOverridesForAllOperationsRequest) GetCheckId() string { @@ -15966,20 +15864,17 @@ func (x *CreateIgnoreOverridesForAllOperationsRequest) GetSearch() string { } type CreateIgnoreOverridesForAllOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateIgnoreOverridesForAllOperationsResponse) Reset() { *x = CreateIgnoreOverridesForAllOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[222] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[229] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateIgnoreOverridesForAllOperationsResponse) String() string { @@ -15989,8 +15884,8 @@ func (x *CreateIgnoreOverridesForAllOperationsResponse) String() string { func (*CreateIgnoreOverridesForAllOperationsResponse) ProtoMessage() {} func (x *CreateIgnoreOverridesForAllOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[222] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[229] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16002,7 +15897,7 @@ func (x *CreateIgnoreOverridesForAllOperationsResponse) ProtoReflect() protorefl // Deprecated: Use CreateIgnoreOverridesForAllOperationsResponse.ProtoReflect.Descriptor instead. func (*CreateIgnoreOverridesForAllOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{222} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{229} } func (x *CreateIgnoreOverridesForAllOperationsResponse) GetResponse() *Response { @@ -16013,21 +15908,18 @@ func (x *CreateIgnoreOverridesForAllOperationsResponse) GetResponse() *Response } type OverrideChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ChangeType string `protobuf:"bytes,1,opt,name=changeType,proto3" json:"changeType,omitempty"` + Path *string `protobuf:"bytes,2,opt,name=path,proto3,oneof" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - ChangeType string `protobuf:"bytes,1,opt,name=changeType,proto3" json:"changeType,omitempty"` - Path *string `protobuf:"bytes,2,opt,name=path,proto3,oneof" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OverrideChange) Reset() { *x = OverrideChange{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[223] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[230] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OverrideChange) String() string { @@ -16037,8 +15929,8 @@ func (x *OverrideChange) String() string { func (*OverrideChange) ProtoMessage() {} func (x *OverrideChange) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[223] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[230] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16050,7 +15942,7 @@ func (x *OverrideChange) ProtoReflect() protoreflect.Message { // Deprecated: Use OverrideChange.ProtoReflect.Descriptor instead. func (*OverrideChange) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{223} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{230} } func (x *OverrideChange) GetChangeType() string { @@ -16068,24 +15960,21 @@ func (x *OverrideChange) GetPath() string { } type CreateOperationOverridesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` + OperationName string `protobuf:"bytes,4,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` + Changes []*OverrideChange `protobuf:"bytes,5,rep,name=changes,proto3" json:"changes,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` - OperationName string `protobuf:"bytes,4,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` - Changes []*OverrideChange `protobuf:"bytes,5,rep,name=changes,proto3" json:"changes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOperationOverridesRequest) Reset() { *x = CreateOperationOverridesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[224] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[231] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOperationOverridesRequest) String() string { @@ -16095,8 +15984,8 @@ func (x *CreateOperationOverridesRequest) String() string { func (*CreateOperationOverridesRequest) ProtoMessage() {} func (x *CreateOperationOverridesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[224] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[231] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16108,7 +15997,7 @@ func (x *CreateOperationOverridesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOperationOverridesRequest.ProtoReflect.Descriptor instead. func (*CreateOperationOverridesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{224} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{231} } func (x *CreateOperationOverridesRequest) GetGraphName() string { @@ -16147,20 +16036,17 @@ func (x *CreateOperationOverridesRequest) GetChanges() []*OverrideChange { } type CreateOperationOverridesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOperationOverridesResponse) Reset() { *x = CreateOperationOverridesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[225] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[232] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOperationOverridesResponse) String() string { @@ -16170,8 +16056,8 @@ func (x *CreateOperationOverridesResponse) String() string { func (*CreateOperationOverridesResponse) ProtoMessage() {} func (x *CreateOperationOverridesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[225] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[232] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16183,7 +16069,7 @@ func (x *CreateOperationOverridesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOperationOverridesResponse.ProtoReflect.Descriptor instead. func (*CreateOperationOverridesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{225} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{232} } func (x *CreateOperationOverridesResponse) GetResponse() *Response { @@ -16194,23 +16080,20 @@ func (x *CreateOperationOverridesResponse) GetResponse() *Response { } type CreateOperationIgnoreAllOverrideRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` + OperationName string `protobuf:"bytes,4,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` - OperationName string `protobuf:"bytes,4,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOperationIgnoreAllOverrideRequest) Reset() { *x = CreateOperationIgnoreAllOverrideRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[226] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[233] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOperationIgnoreAllOverrideRequest) String() string { @@ -16220,8 +16103,8 @@ func (x *CreateOperationIgnoreAllOverrideRequest) String() string { func (*CreateOperationIgnoreAllOverrideRequest) ProtoMessage() {} func (x *CreateOperationIgnoreAllOverrideRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[226] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[233] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16233,7 +16116,7 @@ func (x *CreateOperationIgnoreAllOverrideRequest) ProtoReflect() protoreflect.Me // Deprecated: Use CreateOperationIgnoreAllOverrideRequest.ProtoReflect.Descriptor instead. func (*CreateOperationIgnoreAllOverrideRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{226} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{233} } func (x *CreateOperationIgnoreAllOverrideRequest) GetGraphName() string { @@ -16265,20 +16148,17 @@ func (x *CreateOperationIgnoreAllOverrideRequest) GetOperationName() string { } type CreateOperationIgnoreAllOverrideResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOperationIgnoreAllOverrideResponse) Reset() { *x = CreateOperationIgnoreAllOverrideResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[227] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[234] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOperationIgnoreAllOverrideResponse) String() string { @@ -16288,8 +16168,8 @@ func (x *CreateOperationIgnoreAllOverrideResponse) String() string { func (*CreateOperationIgnoreAllOverrideResponse) ProtoMessage() {} func (x *CreateOperationIgnoreAllOverrideResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[227] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[234] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16301,7 +16181,7 @@ func (x *CreateOperationIgnoreAllOverrideResponse) ProtoReflect() protoreflect.M // Deprecated: Use CreateOperationIgnoreAllOverrideResponse.ProtoReflect.Descriptor instead. func (*CreateOperationIgnoreAllOverrideResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{227} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{234} } func (x *CreateOperationIgnoreAllOverrideResponse) GetResponse() *Response { @@ -16312,23 +16192,20 @@ func (x *CreateOperationIgnoreAllOverrideResponse) GetResponse() *Response { } type RemoveOperationOverridesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` + Changes []*OverrideChange `protobuf:"bytes,4,rep,name=changes,proto3" json:"changes,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` - Changes []*OverrideChange `protobuf:"bytes,4,rep,name=changes,proto3" json:"changes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOperationOverridesRequest) Reset() { *x = RemoveOperationOverridesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[228] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[235] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOperationOverridesRequest) String() string { @@ -16338,8 +16215,8 @@ func (x *RemoveOperationOverridesRequest) String() string { func (*RemoveOperationOverridesRequest) ProtoMessage() {} func (x *RemoveOperationOverridesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[228] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[235] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16351,7 +16228,7 @@ func (x *RemoveOperationOverridesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveOperationOverridesRequest.ProtoReflect.Descriptor instead. func (*RemoveOperationOverridesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{228} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{235} } func (x *RemoveOperationOverridesRequest) GetGraphName() string { @@ -16383,20 +16260,17 @@ func (x *RemoveOperationOverridesRequest) GetChanges() []*OverrideChange { } type RemoveOperationOverridesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOperationOverridesResponse) Reset() { *x = RemoveOperationOverridesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[229] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[236] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOperationOverridesResponse) String() string { @@ -16406,8 +16280,8 @@ func (x *RemoveOperationOverridesResponse) String() string { func (*RemoveOperationOverridesResponse) ProtoMessage() {} func (x *RemoveOperationOverridesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[229] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[236] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16419,7 +16293,7 @@ func (x *RemoveOperationOverridesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveOperationOverridesResponse.ProtoReflect.Descriptor instead. func (*RemoveOperationOverridesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{229} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{236} } func (x *RemoveOperationOverridesResponse) GetResponse() *Response { @@ -16430,22 +16304,19 @@ func (x *RemoveOperationOverridesResponse) GetResponse() *Response { } type RemoveOperationIgnoreAllOverrideRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOperationIgnoreAllOverrideRequest) Reset() { *x = RemoveOperationIgnoreAllOverrideRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[230] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[237] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOperationIgnoreAllOverrideRequest) String() string { @@ -16455,8 +16326,8 @@ func (x *RemoveOperationIgnoreAllOverrideRequest) String() string { func (*RemoveOperationIgnoreAllOverrideRequest) ProtoMessage() {} func (x *RemoveOperationIgnoreAllOverrideRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[230] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[237] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16468,7 +16339,7 @@ func (x *RemoveOperationIgnoreAllOverrideRequest) ProtoReflect() protoreflect.Me // Deprecated: Use RemoveOperationIgnoreAllOverrideRequest.ProtoReflect.Descriptor instead. func (*RemoveOperationIgnoreAllOverrideRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{230} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{237} } func (x *RemoveOperationIgnoreAllOverrideRequest) GetGraphName() string { @@ -16493,20 +16364,17 @@ func (x *RemoveOperationIgnoreAllOverrideRequest) GetOperationHash() string { } type RemoveOperationIgnoreAllOverrideResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveOperationIgnoreAllOverrideResponse) Reset() { *x = RemoveOperationIgnoreAllOverrideResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[231] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[238] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RemoveOperationIgnoreAllOverrideResponse) String() string { @@ -16516,8 +16384,8 @@ func (x *RemoveOperationIgnoreAllOverrideResponse) String() string { func (*RemoveOperationIgnoreAllOverrideResponse) ProtoMessage() {} func (x *RemoveOperationIgnoreAllOverrideResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[231] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[238] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16529,7 +16397,7 @@ func (x *RemoveOperationIgnoreAllOverrideResponse) ProtoReflect() protoreflect.M // Deprecated: Use RemoveOperationIgnoreAllOverrideResponse.ProtoReflect.Descriptor instead. func (*RemoveOperationIgnoreAllOverrideResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{231} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{238} } func (x *RemoveOperationIgnoreAllOverrideResponse) GetResponse() *Response { @@ -16540,22 +16408,19 @@ func (x *RemoveOperationIgnoreAllOverrideResponse) GetResponse() *Response { } type GetOperationOverridesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operation_hash,json=operationHash,proto3" json:"operation_hash,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOperationOverridesRequest) Reset() { *x = GetOperationOverridesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[232] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[239] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationOverridesRequest) String() string { @@ -16565,8 +16430,8 @@ func (x *GetOperationOverridesRequest) String() string { func (*GetOperationOverridesRequest) ProtoMessage() {} func (x *GetOperationOverridesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[232] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[239] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16578,7 +16443,7 @@ func (x *GetOperationOverridesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationOverridesRequest.ProtoReflect.Descriptor instead. func (*GetOperationOverridesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{232} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{239} } func (x *GetOperationOverridesRequest) GetGraphName() string { @@ -16603,22 +16468,19 @@ func (x *GetOperationOverridesRequest) GetOperationHash() string { } type GetOperationOverridesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Changes []*OverrideChange `protobuf:"bytes,2,rep,name=changes,proto3" json:"changes,omitempty"` + IgnoreAll bool `protobuf:"varint,3,opt,name=ignore_all,json=ignoreAll,proto3" json:"ignore_all,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Changes []*OverrideChange `protobuf:"bytes,2,rep,name=changes,proto3" json:"changes,omitempty"` - IgnoreAll bool `protobuf:"varint,3,opt,name=ignore_all,json=ignoreAll,proto3" json:"ignore_all,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOperationOverridesResponse) Reset() { *x = GetOperationOverridesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[233] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[240] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationOverridesResponse) String() string { @@ -16628,8 +16490,8 @@ func (x *GetOperationOverridesResponse) String() string { func (*GetOperationOverridesResponse) ProtoMessage() {} func (x *GetOperationOverridesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[233] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[240] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16641,7 +16503,7 @@ func (x *GetOperationOverridesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationOverridesResponse.ProtoReflect.Descriptor instead. func (*GetOperationOverridesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{233} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{240} } func (x *GetOperationOverridesResponse) GetResponse() *Response { @@ -16666,21 +16528,20 @@ func (x *GetOperationOverridesResponse) GetIgnoreAll() bool { } type GetAllOverridesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAllOverridesRequest) Reset() { *x = GetAllOverridesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[234] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[241] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllOverridesRequest) String() string { @@ -16690,8 +16551,8 @@ func (x *GetAllOverridesRequest) String() string { func (*GetAllOverridesRequest) ProtoMessage() {} func (x *GetAllOverridesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[234] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[241] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16703,7 +16564,7 @@ func (x *GetAllOverridesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllOverridesRequest.ProtoReflect.Descriptor instead. func (*GetAllOverridesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{234} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{241} } func (x *GetAllOverridesRequest) GetGraphName() string { @@ -16720,22 +16581,34 @@ func (x *GetAllOverridesRequest) GetNamespace() string { return "" } +func (x *GetAllOverridesRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetAllOverridesRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + type GetAllOverridesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Overrides []*GetAllOverridesResponse_Override `protobuf:"bytes,2,rep,name=overrides,proto3" json:"overrides,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Overrides []*GetAllOverridesResponse_Override `protobuf:"bytes,2,rep,name=overrides,proto3" json:"overrides,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAllOverridesResponse) Reset() { *x = GetAllOverridesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[235] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[242] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllOverridesResponse) String() string { @@ -16745,8 +16618,8 @@ func (x *GetAllOverridesResponse) String() string { func (*GetAllOverridesResponse) ProtoMessage() {} func (x *GetAllOverridesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[235] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[242] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16758,7 +16631,7 @@ func (x *GetAllOverridesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllOverridesResponse.ProtoReflect.Descriptor instead. func (*GetAllOverridesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{235} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{242} } func (x *GetAllOverridesResponse) GetResponse() *Response { @@ -16775,21 +16648,25 @@ func (x *GetAllOverridesResponse) GetOverrides() []*GetAllOverridesResponse_Over return nil } +func (x *GetAllOverridesResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + type IsGitHubAppInstalledRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GitInfo *GitInfo `protobuf:"bytes,1,opt,name=git_info,json=gitInfo,proto3" json:"git_info,omitempty"` unknownFields protoimpl.UnknownFields - - GitInfo *GitInfo `protobuf:"bytes,1,opt,name=git_info,json=gitInfo,proto3" json:"git_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *IsGitHubAppInstalledRequest) Reset() { *x = IsGitHubAppInstalledRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[236] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[243] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IsGitHubAppInstalledRequest) String() string { @@ -16799,8 +16676,8 @@ func (x *IsGitHubAppInstalledRequest) String() string { func (*IsGitHubAppInstalledRequest) ProtoMessage() {} func (x *IsGitHubAppInstalledRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[236] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[243] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16812,7 +16689,7 @@ func (x *IsGitHubAppInstalledRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IsGitHubAppInstalledRequest.ProtoReflect.Descriptor instead. func (*IsGitHubAppInstalledRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{236} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{243} } func (x *IsGitHubAppInstalledRequest) GetGitInfo() *GitInfo { @@ -16823,21 +16700,18 @@ func (x *IsGitHubAppInstalledRequest) GetGitInfo() *GitInfo { } type IsGitHubAppInstalledResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + IsInstalled bool `protobuf:"varint,2,opt,name=is_installed,json=isInstalled,proto3" json:"is_installed,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - IsInstalled bool `protobuf:"varint,2,opt,name=is_installed,json=isInstalled,proto3" json:"is_installed,omitempty"` + sizeCache protoimpl.SizeCache } func (x *IsGitHubAppInstalledResponse) Reset() { *x = IsGitHubAppInstalledResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[237] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[244] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IsGitHubAppInstalledResponse) String() string { @@ -16847,8 +16721,8 @@ func (x *IsGitHubAppInstalledResponse) String() string { func (*IsGitHubAppInstalledResponse) ProtoMessage() {} func (x *IsGitHubAppInstalledResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[237] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[244] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16860,7 +16734,7 @@ func (x *IsGitHubAppInstalledResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IsGitHubAppInstalledResponse.ProtoReflect.Descriptor instead. func (*IsGitHubAppInstalledResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{237} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{244} } func (x *IsGitHubAppInstalledResponse) GetResponse() *Response { @@ -16878,21 +16752,18 @@ func (x *IsGitHubAppInstalledResponse) GetIsInstalled() bool { } type GroupMapper struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` + SsoGroup string `protobuf:"bytes,2,opt,name=ssoGroup,proto3" json:"ssoGroup,omitempty"` unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` - SsoGroup string `protobuf:"bytes,2,opt,name=ssoGroup,proto3" json:"ssoGroup,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GroupMapper) Reset() { *x = GroupMapper{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[238] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[245] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupMapper) String() string { @@ -16902,8 +16773,8 @@ func (x *GroupMapper) String() string { func (*GroupMapper) ProtoMessage() {} func (x *GroupMapper) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[238] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[245] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16915,7 +16786,7 @@ func (x *GroupMapper) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMapper.ProtoReflect.Descriptor instead. func (*GroupMapper) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{238} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{245} } func (x *GroupMapper) GetGroupId() string { @@ -16933,24 +16804,21 @@ func (x *GroupMapper) GetSsoGroup() string { } type CreateOIDCProviderRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DiscoveryEndpoint string `protobuf:"bytes,2,opt,name=discoveryEndpoint,proto3" json:"discoveryEndpoint,omitempty"` - ClientID string `protobuf:"bytes,3,opt,name=clientID,proto3" json:"clientID,omitempty"` - ClientSecrect string `protobuf:"bytes,4,opt,name=clientSecrect,proto3" json:"clientSecrect,omitempty"` - Mappers []*GroupMapper `protobuf:"bytes,5,rep,name=mappers,proto3" json:"mappers,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DiscoveryEndpoint string `protobuf:"bytes,2,opt,name=discoveryEndpoint,proto3" json:"discoveryEndpoint,omitempty"` + ClientID string `protobuf:"bytes,3,opt,name=clientID,proto3" json:"clientID,omitempty"` + ClientSecret string `protobuf:"bytes,4,opt,name=clientSecret,proto3" json:"clientSecret,omitempty"` + Mappers []*GroupMapper `protobuf:"bytes,5,rep,name=mappers,proto3" json:"mappers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateOIDCProviderRequest) Reset() { *x = CreateOIDCProviderRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[239] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[246] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOIDCProviderRequest) String() string { @@ -16960,8 +16828,8 @@ func (x *CreateOIDCProviderRequest) String() string { func (*CreateOIDCProviderRequest) ProtoMessage() {} func (x *CreateOIDCProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[239] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[246] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -16973,7 +16841,7 @@ func (x *CreateOIDCProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOIDCProviderRequest.ProtoReflect.Descriptor instead. func (*CreateOIDCProviderRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{239} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{246} } func (x *CreateOIDCProviderRequest) GetName() string { @@ -16997,9 +16865,9 @@ func (x *CreateOIDCProviderRequest) GetClientID() string { return "" } -func (x *CreateOIDCProviderRequest) GetClientSecrect() string { +func (x *CreateOIDCProviderRequest) GetClientSecret() string { if x != nil { - return x.ClientSecrect + return x.ClientSecret } return "" } @@ -17012,23 +16880,20 @@ func (x *CreateOIDCProviderRequest) GetMappers() []*GroupMapper { } type CreateOIDCProviderResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + SignInURL string `protobuf:"bytes,2,opt,name=signInURL,proto3" json:"signInURL,omitempty"` + SignOutURL string `protobuf:"bytes,3,opt,name=signOutURL,proto3" json:"signOutURL,omitempty"` + LoginURL string `protobuf:"bytes,4,opt,name=loginURL,proto3" json:"loginURL,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - SignInURL string `protobuf:"bytes,2,opt,name=signInURL,proto3" json:"signInURL,omitempty"` - SignOutURL string `protobuf:"bytes,3,opt,name=signOutURL,proto3" json:"signOutURL,omitempty"` - LoginURL string `protobuf:"bytes,4,opt,name=loginURL,proto3" json:"loginURL,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateOIDCProviderResponse) Reset() { *x = CreateOIDCProviderResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[240] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[247] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateOIDCProviderResponse) String() string { @@ -17038,8 +16903,8 @@ func (x *CreateOIDCProviderResponse) String() string { func (*CreateOIDCProviderResponse) ProtoMessage() {} func (x *CreateOIDCProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[240] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[247] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17051,7 +16916,7 @@ func (x *CreateOIDCProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOIDCProviderResponse.ProtoReflect.Descriptor instead. func (*CreateOIDCProviderResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{240} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{247} } func (x *CreateOIDCProviderResponse) GetResponse() *Response { @@ -17082,30 +16947,36 @@ func (x *CreateOIDCProviderResponse) GetLoginURL() string { return "" } -type GetOIDCProviderRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type OIDCProvider struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + Endpoint string `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + LoginUrl string `protobuf:"bytes,5,opt,name=login_url,json=loginUrl,proto3" json:"login_url,omitempty"` + SignInRedirectUrl string `protobuf:"bytes,6,opt,name=sign_in_redirect_url,json=signInRedirectUrl,proto3" json:"sign_in_redirect_url,omitempty"` + SignOutRedirectUrl string `protobuf:"bytes,7,opt,name=sign_out_redirect_url,json=signOutRedirectUrl,proto3" json:"sign_out_redirect_url,omitempty"` + CreatedAt string `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetOIDCProviderRequest) Reset() { - *x = GetOIDCProviderRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[241] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *OIDCProvider) Reset() { + *x = OIDCProvider{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[248] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOIDCProviderRequest) String() string { +func (x *OIDCProvider) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOIDCProviderRequest) ProtoMessage() {} +func (*OIDCProvider) ProtoMessage() {} -func (x *GetOIDCProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[241] - if protoimpl.UnsafeEnabled && x != nil { +func (x *OIDCProvider) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[248] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17115,43 +16986,228 @@ func (x *GetOIDCProviderRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOIDCProviderRequest.ProtoReflect.Descriptor instead. -func (*GetOIDCProviderRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{241} +// Deprecated: Use OIDCProvider.ProtoReflect.Descriptor instead. +func (*OIDCProvider) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{248} } -type GetOIDCProviderResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *OIDCProvider) GetId() string { + if x != nil { + return x.Id + } + return "" +} - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - LoginURL string `protobuf:"bytes,4,opt,name=loginURL,proto3" json:"loginURL,omitempty"` - SignInRedirectURL string `protobuf:"bytes,5,opt,name=signInRedirectURL,proto3" json:"signInRedirectURL,omitempty"` - SignOutRedirectURL string `protobuf:"bytes,6,opt,name=signOutRedirectURL,proto3" json:"signOutRedirectURL,omitempty"` - Mappers []*GroupMapper `protobuf:"bytes,7,rep,name=mappers,proto3" json:"mappers,omitempty"` +func (x *OIDCProvider) GetName() string { + if x != nil { + return x.Name + } + return "" } -func (x *GetOIDCProviderResponse) Reset() { - *x = GetOIDCProviderResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[242] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *OIDCProvider) GetAlias() string { + if x != nil { + return x.Alias } + return "" } -func (x *GetOIDCProviderResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *OIDCProvider) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *OIDCProvider) GetLoginUrl() string { + if x != nil { + return x.LoginUrl + } + return "" +} + +func (x *OIDCProvider) GetSignInRedirectUrl() string { + if x != nil { + return x.SignInRedirectUrl + } + return "" +} + +func (x *OIDCProvider) GetSignOutRedirectUrl() string { + if x != nil { + return x.SignOutRedirectUrl + } + return "" +} + +func (x *OIDCProvider) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +type ListOIDCProvidersRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListOIDCProvidersRequest) Reset() { + *x = ListOIDCProvidersRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[249] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListOIDCProvidersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOIDCProvidersRequest) ProtoMessage() {} + +func (x *ListOIDCProvidersRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[249] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOIDCProvidersRequest.ProtoReflect.Descriptor instead. +func (*ListOIDCProvidersRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{249} +} + +type ListOIDCProvidersResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Providers []*OIDCProvider `protobuf:"bytes,2,rep,name=providers,proto3" json:"providers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListOIDCProvidersResponse) Reset() { + *x = ListOIDCProvidersResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[250] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListOIDCProvidersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOIDCProvidersResponse) ProtoMessage() {} + +func (x *ListOIDCProvidersResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[250] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOIDCProvidersResponse.ProtoReflect.Descriptor instead. +func (*ListOIDCProvidersResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{250} +} + +func (x *ListOIDCProvidersResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *ListOIDCProvidersResponse) GetProviders() []*OIDCProvider { + if x != nil { + return x.Providers + } + return nil +} + +type GetOIDCProviderRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOIDCProviderRequest) Reset() { + *x = GetOIDCProviderRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[251] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOIDCProviderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOIDCProviderRequest) ProtoMessage() {} + +func (x *GetOIDCProviderRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[251] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOIDCProviderRequest.ProtoReflect.Descriptor instead. +func (*GetOIDCProviderRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{251} +} + +func (x *GetOIDCProviderRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetOIDCProviderResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + LoginURL string `protobuf:"bytes,4,opt,name=loginURL,proto3" json:"loginURL,omitempty"` + SignInRedirectURL string `protobuf:"bytes,5,opt,name=signInRedirectURL,proto3" json:"signInRedirectURL,omitempty"` + SignOutRedirectURL string `protobuf:"bytes,6,opt,name=signOutRedirectURL,proto3" json:"signOutRedirectURL,omitempty"` + Mappers []*GroupMapper `protobuf:"bytes,7,rep,name=mappers,proto3" json:"mappers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOIDCProviderResponse) Reset() { + *x = GetOIDCProviderResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[252] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOIDCProviderResponse) String() string { + return protoimpl.X.MessageStringOf(x) } func (*GetOIDCProviderResponse) ProtoMessage() {} func (x *GetOIDCProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[242] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[252] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17163,7 +17219,7 @@ func (x *GetOIDCProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOIDCProviderResponse.ProtoReflect.Descriptor instead. func (*GetOIDCProviderResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{242} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{252} } func (x *GetOIDCProviderResponse) GetResponse() *Response { @@ -17216,18 +17272,17 @@ func (x *GetOIDCProviderResponse) GetMappers() []*GroupMapper { } type DeleteOIDCProviderRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteOIDCProviderRequest) Reset() { *x = DeleteOIDCProviderRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[243] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[253] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOIDCProviderRequest) String() string { @@ -17237,8 +17292,8 @@ func (x *DeleteOIDCProviderRequest) String() string { func (*DeleteOIDCProviderRequest) ProtoMessage() {} func (x *DeleteOIDCProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[243] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[253] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17250,24 +17305,28 @@ func (x *DeleteOIDCProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOIDCProviderRequest.ProtoReflect.Descriptor instead. func (*DeleteOIDCProviderRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{243} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{253} +} + +func (x *DeleteOIDCProviderRequest) GetId() string { + if x != nil { + return x.Id + } + return "" } type DeleteOIDCProviderResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteOIDCProviderResponse) Reset() { *x = DeleteOIDCProviderResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[244] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[254] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteOIDCProviderResponse) String() string { @@ -17277,8 +17336,8 @@ func (x *DeleteOIDCProviderResponse) String() string { func (*DeleteOIDCProviderResponse) ProtoMessage() {} func (x *DeleteOIDCProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[244] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[254] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17290,7 +17349,7 @@ func (x *DeleteOIDCProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOIDCProviderResponse.ProtoReflect.Descriptor instead. func (*DeleteOIDCProviderResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{244} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{254} } func (x *DeleteOIDCProviderResponse) GetResponse() *Response { @@ -17301,20 +17360,18 @@ func (x *DeleteOIDCProviderResponse) GetResponse() *Response { } type UpdateIDPMappersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Mappers []*GroupMapper `protobuf:"bytes,1,rep,name=mappers,proto3" json:"mappers,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Mappers []*GroupMapper `protobuf:"bytes,1,rep,name=mappers,proto3" json:"mappers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateIDPMappersRequest) Reset() { *x = UpdateIDPMappersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[245] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[255] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateIDPMappersRequest) String() string { @@ -17324,8 +17381,8 @@ func (x *UpdateIDPMappersRequest) String() string { func (*UpdateIDPMappersRequest) ProtoMessage() {} func (x *UpdateIDPMappersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[245] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[255] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17337,7 +17394,7 @@ func (x *UpdateIDPMappersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateIDPMappersRequest.ProtoReflect.Descriptor instead. func (*UpdateIDPMappersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{245} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{255} } func (x *UpdateIDPMappersRequest) GetMappers() []*GroupMapper { @@ -17347,21 +17404,25 @@ func (x *UpdateIDPMappersRequest) GetMappers() []*GroupMapper { return nil } +func (x *UpdateIDPMappersRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + type UpdateIDPMappersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateIDPMappersResponse) Reset() { *x = UpdateIDPMappersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[246] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[256] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateIDPMappersResponse) String() string { @@ -17371,8 +17432,8 @@ func (x *UpdateIDPMappersResponse) String() string { func (*UpdateIDPMappersResponse) ProtoMessage() {} func (x *UpdateIDPMappersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[246] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[256] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17384,7 +17445,7 @@ func (x *UpdateIDPMappersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateIDPMappersResponse.ProtoReflect.Descriptor instead. func (*UpdateIDPMappersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{246} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{256} } func (x *UpdateIDPMappersResponse) GetResponse() *Response { @@ -17395,18 +17456,16 @@ func (x *UpdateIDPMappersResponse) GetResponse() *Response { } type GetOrganizationRequestsCountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrganizationRequestsCountRequest) Reset() { *x = GetOrganizationRequestsCountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[247] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[257] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationRequestsCountRequest) String() string { @@ -17416,8 +17475,8 @@ func (x *GetOrganizationRequestsCountRequest) String() string { func (*GetOrganizationRequestsCountRequest) ProtoMessage() {} func (x *GetOrganizationRequestsCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[247] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[257] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17429,25 +17488,22 @@ func (x *GetOrganizationRequestsCountRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetOrganizationRequestsCountRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationRequestsCountRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{247} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{257} } type GetOrganizationRequestsCountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationRequestsCountResponse) Reset() { *x = GetOrganizationRequestsCountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[248] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[258] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationRequestsCountResponse) String() string { @@ -17457,8 +17513,8 @@ func (x *GetOrganizationRequestsCountResponse) String() string { func (*GetOrganizationRequestsCountResponse) ProtoMessage() {} func (x *GetOrganizationRequestsCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[248] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[258] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17470,7 +17526,7 @@ func (x *GetOrganizationRequestsCountResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetOrganizationRequestsCountResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationRequestsCountResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{248} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{258} } func (x *GetOrganizationRequestsCountResponse) GetResponse() *Response { @@ -17488,25 +17544,22 @@ func (x *GetOrganizationRequestsCountResponse) GetCount() int64 { } type OrganizationInvite struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + CreatorUserId *string `protobuf:"bytes,4,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` + CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + InvitedBy *string `protobuf:"bytes,6,opt,name=invitedBy,proto3,oneof" json:"invitedBy,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` - CreatorUserId *string `protobuf:"bytes,4,opt,name=creatorUserId,proto3,oneof" json:"creatorUserId,omitempty"` - CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - InvitedBy *string `protobuf:"bytes,6,opt,name=invitedBy,proto3,oneof" json:"invitedBy,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OrganizationInvite) Reset() { *x = OrganizationInvite{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[249] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[259] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OrganizationInvite) String() string { @@ -17516,8 +17569,8 @@ func (x *OrganizationInvite) String() string { func (*OrganizationInvite) ProtoMessage() {} func (x *OrganizationInvite) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[249] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[259] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17529,7 +17582,7 @@ func (x *OrganizationInvite) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationInvite.ProtoReflect.Descriptor instead. func (*OrganizationInvite) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{249} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{259} } func (x *OrganizationInvite) GetId() string { @@ -17575,23 +17628,20 @@ func (x *OrganizationInvite) GetInvitedBy() string { } type GetAuditLogsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + StartDate string `protobuf:"bytes,3,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,4,opt,name=endDate,proto3" json:"endDate,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - StartDate string `protobuf:"bytes,3,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,4,opt,name=endDate,proto3" json:"endDate,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAuditLogsRequest) Reset() { *x = GetAuditLogsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[250] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[260] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuditLogsRequest) String() string { @@ -17601,8 +17651,8 @@ func (x *GetAuditLogsRequest) String() string { func (*GetAuditLogsRequest) ProtoMessage() {} func (x *GetAuditLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[250] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[260] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17614,7 +17664,7 @@ func (x *GetAuditLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuditLogsRequest.ProtoReflect.Descriptor instead. func (*GetAuditLogsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{250} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{260} } func (x *GetAuditLogsRequest) GetLimit() int32 { @@ -17646,31 +17696,28 @@ func (x *GetAuditLogsRequest) GetEndDate() string { } type AuditLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ActorDisplayName string `protobuf:"bytes,2,opt,name=actorDisplayName,proto3" json:"actorDisplayName,omitempty"` - Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` - ActorType string `protobuf:"bytes,4,opt,name=actorType,proto3" json:"actorType,omitempty"` - AuditAction string `protobuf:"bytes,5,opt,name=auditAction,proto3" json:"auditAction,omitempty"` - AuditableDisplayName string `protobuf:"bytes,6,opt,name=auditableDisplayName,proto3" json:"auditableDisplayName,omitempty"` - TargetDisplayName string `protobuf:"bytes,7,opt,name=targetDisplayName,proto3" json:"targetDisplayName,omitempty"` - TargetType string `protobuf:"bytes,8,opt,name=targetType,proto3" json:"targetType,omitempty"` - CreatedAt string `protobuf:"bytes,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - TargetNamespaceId string `protobuf:"bytes,10,opt,name=targetNamespaceId,proto3" json:"targetNamespaceId,omitempty"` - TargetNamespaceDisplayName string `protobuf:"bytes,11,opt,name=targetNamespaceDisplayName,proto3" json:"targetNamespaceDisplayName,omitempty"` - ApiKeyName string `protobuf:"bytes,12,opt,name=apiKeyName,proto3" json:"apiKeyName,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ActorDisplayName string `protobuf:"bytes,2,opt,name=actorDisplayName,proto3" json:"actorDisplayName,omitempty"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` + ActorType string `protobuf:"bytes,4,opt,name=actorType,proto3" json:"actorType,omitempty"` + AuditAction string `protobuf:"bytes,5,opt,name=auditAction,proto3" json:"auditAction,omitempty"` + AuditableDisplayName string `protobuf:"bytes,6,opt,name=auditableDisplayName,proto3" json:"auditableDisplayName,omitempty"` + TargetDisplayName string `protobuf:"bytes,7,opt,name=targetDisplayName,proto3" json:"targetDisplayName,omitempty"` + TargetType string `protobuf:"bytes,8,opt,name=targetType,proto3" json:"targetType,omitempty"` + CreatedAt string `protobuf:"bytes,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + TargetNamespaceId string `protobuf:"bytes,10,opt,name=targetNamespaceId,proto3" json:"targetNamespaceId,omitempty"` + TargetNamespaceDisplayName string `protobuf:"bytes,11,opt,name=targetNamespaceDisplayName,proto3" json:"targetNamespaceDisplayName,omitempty"` + ApiKeyName string `protobuf:"bytes,12,opt,name=apiKeyName,proto3" json:"apiKeyName,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuditLog) Reset() { *x = AuditLog{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[251] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[261] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuditLog) String() string { @@ -17680,8 +17727,8 @@ func (x *AuditLog) String() string { func (*AuditLog) ProtoMessage() {} func (x *AuditLog) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[251] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[261] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17693,7 +17740,7 @@ func (x *AuditLog) ProtoReflect() protoreflect.Message { // Deprecated: Use AuditLog.ProtoReflect.Descriptor instead. func (*AuditLog) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{251} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{261} } func (x *AuditLog) GetId() string { @@ -17781,22 +17828,19 @@ func (x *AuditLog) GetApiKeyName() string { } type GetAuditLogsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Logs []*AuditLog `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Logs []*AuditLog `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetAuditLogsResponse) Reset() { *x = GetAuditLogsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[252] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[262] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAuditLogsResponse) String() string { @@ -17806,8 +17850,8 @@ func (x *GetAuditLogsResponse) String() string { func (*GetAuditLogsResponse) ProtoMessage() {} func (x *GetAuditLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[252] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[262] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17819,7 +17863,7 @@ func (x *GetAuditLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuditLogsResponse.ProtoReflect.Descriptor instead. func (*GetAuditLogsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{252} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{262} } func (x *GetAuditLogsResponse) GetResponse() *Response { @@ -17844,18 +17888,16 @@ func (x *GetAuditLogsResponse) GetCount() int32 { } type GetInvitationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetInvitationsRequest) Reset() { *x = GetInvitationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[253] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[263] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetInvitationsRequest) String() string { @@ -17865,8 +17907,8 @@ func (x *GetInvitationsRequest) String() string { func (*GetInvitationsRequest) ProtoMessage() {} func (x *GetInvitationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[253] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[263] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17878,25 +17920,22 @@ func (x *GetInvitationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInvitationsRequest.ProtoReflect.Descriptor instead. func (*GetInvitationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{253} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{263} } type GetInvitationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Invitations []*OrganizationInvite `protobuf:"bytes,2,rep,name=invitations,proto3" json:"invitations,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Invitations []*OrganizationInvite `protobuf:"bytes,2,rep,name=invitations,proto3" json:"invitations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetInvitationsResponse) Reset() { *x = GetInvitationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[254] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[264] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetInvitationsResponse) String() string { @@ -17906,8 +17945,8 @@ func (x *GetInvitationsResponse) String() string { func (*GetInvitationsResponse) ProtoMessage() {} func (x *GetInvitationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[254] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[264] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17919,7 +17958,7 @@ func (x *GetInvitationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInvitationsResponse.ProtoReflect.Descriptor instead. func (*GetInvitationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{254} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{264} } func (x *GetInvitationsResponse) GetResponse() *Response { @@ -17937,21 +17976,18 @@ func (x *GetInvitationsResponse) GetInvitations() []*OrganizationInvite { } type AcceptOrDeclineInvitationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OrganizationId string `protobuf:"bytes,1,opt,name=organizationId,proto3" json:"organizationId,omitempty"` - Accept bool `protobuf:"varint,2,opt,name=accept,proto3" json:"accept,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OrganizationId string `protobuf:"bytes,1,opt,name=organizationId,proto3" json:"organizationId,omitempty"` + Accept bool `protobuf:"varint,2,opt,name=accept,proto3" json:"accept,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AcceptOrDeclineInvitationRequest) Reset() { *x = AcceptOrDeclineInvitationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[255] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[265] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AcceptOrDeclineInvitationRequest) String() string { @@ -17961,8 +17997,8 @@ func (x *AcceptOrDeclineInvitationRequest) String() string { func (*AcceptOrDeclineInvitationRequest) ProtoMessage() {} func (x *AcceptOrDeclineInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[255] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[265] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -17974,7 +18010,7 @@ func (x *AcceptOrDeclineInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcceptOrDeclineInvitationRequest.ProtoReflect.Descriptor instead. func (*AcceptOrDeclineInvitationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{255} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{265} } func (x *AcceptOrDeclineInvitationRequest) GetOrganizationId() string { @@ -17992,20 +18028,17 @@ func (x *AcceptOrDeclineInvitationRequest) GetAccept() bool { } type AcceptOrDeclineInvitationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AcceptOrDeclineInvitationResponse) Reset() { *x = AcceptOrDeclineInvitationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[256] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[266] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AcceptOrDeclineInvitationResponse) String() string { @@ -18015,8 +18048,8 @@ func (x *AcceptOrDeclineInvitationResponse) String() string { func (*AcceptOrDeclineInvitationResponse) ProtoMessage() {} func (x *AcceptOrDeclineInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[256] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[266] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18028,7 +18061,7 @@ func (x *AcceptOrDeclineInvitationResponse) ProtoReflect() protoreflect.Message // Deprecated: Use AcceptOrDeclineInvitationResponse.ProtoReflect.Descriptor instead. func (*AcceptOrDeclineInvitationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{256} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{266} } func (x *AcceptOrDeclineInvitationResponse) GetResponse() *Response { @@ -18039,33 +18072,30 @@ func (x *AcceptOrDeclineInvitationResponse) GetResponse() *Response { } type GraphComposition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - IsComposable bool `protobuf:"varint,4,opt,name=isComposable,proto3" json:"isComposable,omitempty"` - CompositionErrors *string `protobuf:"bytes,5,opt,name=compositionErrors,proto3,oneof" json:"compositionErrors,omitempty"` - CreatedBy *string `protobuf:"bytes,6,opt,name=createdBy,proto3,oneof" json:"createdBy,omitempty"` - IsLatestValid bool `protobuf:"varint,7,opt,name=isLatestValid,proto3" json:"isLatestValid,omitempty"` - RouterConfigSignature *string `protobuf:"bytes,8,opt,name=routerConfigSignature,proto3,oneof" json:"routerConfigSignature,omitempty"` - AdmissionError *string `protobuf:"bytes,9,opt,name=admissionError,proto3,oneof" json:"admissionError,omitempty"` - DeploymentError *string `protobuf:"bytes,10,opt,name=deploymentError,proto3,oneof" json:"deploymentError,omitempty"` - HasMultipleChangedSubgraphs *bool `protobuf:"varint,11,opt,name=hasMultipleChangedSubgraphs,proto3,oneof" json:"hasMultipleChangedSubgraphs,omitempty"` - TriggeredBySubgraphName *string `protobuf:"bytes,12,opt,name=triggeredBySubgraphName,proto3,oneof" json:"triggeredBySubgraphName,omitempty"` - CompositionWarnings *string `protobuf:"bytes,13,opt,name=compositionWarnings,proto3,oneof" json:"compositionWarnings,omitempty"` - RouterCompatibilityVersion string `protobuf:"bytes,14,opt,name=router_compatibility_version,json=routerCompatibilityVersion,proto3" json:"router_compatibility_version,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + IsComposable bool `protobuf:"varint,4,opt,name=isComposable,proto3" json:"isComposable,omitempty"` + CompositionErrors *string `protobuf:"bytes,5,opt,name=compositionErrors,proto3,oneof" json:"compositionErrors,omitempty"` + CreatedBy *string `protobuf:"bytes,6,opt,name=createdBy,proto3,oneof" json:"createdBy,omitempty"` + IsLatestValid bool `protobuf:"varint,7,opt,name=isLatestValid,proto3" json:"isLatestValid,omitempty"` + RouterConfigSignature *string `protobuf:"bytes,8,opt,name=routerConfigSignature,proto3,oneof" json:"routerConfigSignature,omitempty"` + AdmissionError *string `protobuf:"bytes,9,opt,name=admissionError,proto3,oneof" json:"admissionError,omitempty"` + DeploymentError *string `protobuf:"bytes,10,opt,name=deploymentError,proto3,oneof" json:"deploymentError,omitempty"` + HasMultipleChangedSubgraphs *bool `protobuf:"varint,11,opt,name=hasMultipleChangedSubgraphs,proto3,oneof" json:"hasMultipleChangedSubgraphs,omitempty"` + TriggeredBySubgraphName *string `protobuf:"bytes,12,opt,name=triggeredBySubgraphName,proto3,oneof" json:"triggeredBySubgraphName,omitempty"` + CompositionWarnings *string `protobuf:"bytes,13,opt,name=compositionWarnings,proto3,oneof" json:"compositionWarnings,omitempty"` + RouterCompatibilityVersion string `protobuf:"bytes,14,opt,name=router_compatibility_version,json=routerCompatibilityVersion,proto3" json:"router_compatibility_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GraphComposition) Reset() { *x = GraphComposition{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[257] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[267] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphComposition) String() string { @@ -18075,8 +18105,8 @@ func (x *GraphComposition) String() string { func (*GraphComposition) ProtoMessage() {} func (x *GraphComposition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[257] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[267] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18088,7 +18118,7 @@ func (x *GraphComposition) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphComposition.ProtoReflect.Descriptor instead. func (*GraphComposition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{257} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{267} } func (x *GraphComposition) GetId() string { @@ -18190,26 +18220,23 @@ func (x *GraphComposition) GetRouterCompatibilityVersion() string { } type GraphCompositionSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - TargetId string `protobuf:"bytes,4,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` - IsFeatureSubgraph bool `protobuf:"varint,5,opt,name=isFeatureSubgraph,proto3" json:"isFeatureSubgraph,omitempty"` - ChangeType string `protobuf:"bytes,6,opt,name=changeType,proto3" json:"changeType,omitempty"` - SubgraphType SubgraphType `protobuf:"varint,7,opt,name=subgraphType,proto3,enum=wg.cosmo.platform.v1.SubgraphType" json:"subgraphType,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + TargetId string `protobuf:"bytes,4,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + IsFeatureSubgraph bool `protobuf:"varint,5,opt,name=isFeatureSubgraph,proto3" json:"isFeatureSubgraph,omitempty"` + ChangeType string `protobuf:"bytes,6,opt,name=changeType,proto3" json:"changeType,omitempty"` + SubgraphType SubgraphType `protobuf:"varint,7,opt,name=subgraphType,proto3,enum=wg.cosmo.platform.v1.SubgraphType" json:"subgraphType,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GraphCompositionSubgraph) Reset() { *x = GraphCompositionSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[258] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[268] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphCompositionSubgraph) String() string { @@ -18219,8 +18246,8 @@ func (x *GraphCompositionSubgraph) String() string { func (*GraphCompositionSubgraph) ProtoMessage() {} func (x *GraphCompositionSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[258] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[268] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18232,7 +18259,7 @@ func (x *GraphCompositionSubgraph) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphCompositionSubgraph.ProtoReflect.Descriptor instead. func (*GraphCompositionSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{258} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{268} } func (x *GraphCompositionSubgraph) GetId() string { @@ -18285,26 +18312,23 @@ func (x *GraphCompositionSubgraph) GetSubgraphType() SubgraphType { } type GetCompositionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` - Namespace string `protobuf:"bytes,6,opt,name=namespace,proto3" json:"namespace,omitempty"` - ExcludeFeatureFlagCompositions bool `protobuf:"varint,7,opt,name=excludeFeatureFlagCompositions,proto3" json:"excludeFeatureFlagCompositions,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` + Namespace string `protobuf:"bytes,6,opt,name=namespace,proto3" json:"namespace,omitempty"` + ExcludeFeatureFlagCompositions bool `protobuf:"varint,7,opt,name=excludeFeatureFlagCompositions,proto3" json:"excludeFeatureFlagCompositions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCompositionsRequest) Reset() { *x = GetCompositionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[259] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[269] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCompositionsRequest) String() string { @@ -18314,8 +18338,8 @@ func (x *GetCompositionsRequest) String() string { func (*GetCompositionsRequest) ProtoMessage() {} func (x *GetCompositionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[259] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[269] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18327,7 +18351,7 @@ func (x *GetCompositionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCompositionsRequest.ProtoReflect.Descriptor instead. func (*GetCompositionsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{259} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{269} } func (x *GetCompositionsRequest) GetFedGraphName() string { @@ -18380,22 +18404,19 @@ func (x *GetCompositionsRequest) GetExcludeFeatureFlagCompositions() bool { } type GetCompositionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Compositions []*GraphComposition `protobuf:"bytes,2,rep,name=compositions,proto3" json:"compositions,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Compositions []*GraphComposition `protobuf:"bytes,2,rep,name=compositions,proto3" json:"compositions,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCompositionsResponse) Reset() { *x = GetCompositionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[260] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[270] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCompositionsResponse) String() string { @@ -18405,8 +18426,8 @@ func (x *GetCompositionsResponse) String() string { func (*GetCompositionsResponse) ProtoMessage() {} func (x *GetCompositionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[260] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[270] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18418,7 +18439,7 @@ func (x *GetCompositionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCompositionsResponse.ProtoReflect.Descriptor instead. func (*GetCompositionsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{260} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{270} } func (x *GetCompositionsResponse) GetResponse() *Response { @@ -18443,21 +18464,18 @@ func (x *GetCompositionsResponse) GetCount() int32 { } type GetCompositionDetailsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CompositionId string `protobuf:"bytes,1,opt,name=compositionId,proto3" json:"compositionId,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - CompositionId string `protobuf:"bytes,1,opt,name=compositionId,proto3" json:"compositionId,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCompositionDetailsRequest) Reset() { *x = GetCompositionDetailsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[261] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[271] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCompositionDetailsRequest) String() string { @@ -18467,8 +18485,8 @@ func (x *GetCompositionDetailsRequest) String() string { func (*GetCompositionDetailsRequest) ProtoMessage() {} func (x *GetCompositionDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[261] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[271] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18480,7 +18498,7 @@ func (x *GetCompositionDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCompositionDetailsRequest.ProtoReflect.Descriptor instead. func (*GetCompositionDetailsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{261} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{271} } func (x *GetCompositionDetailsRequest) GetCompositionId() string { @@ -18498,30 +18516,27 @@ func (x *GetCompositionDetailsRequest) GetNamespace() string { } type FeatureFlagComposition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - IsComposable bool `protobuf:"varint,4,opt,name=isComposable,proto3" json:"isComposable,omitempty"` - CompositionErrors *string `protobuf:"bytes,5,opt,name=compositionErrors,proto3,oneof" json:"compositionErrors,omitempty"` - CreatedBy *string `protobuf:"bytes,6,opt,name=createdBy,proto3,oneof" json:"createdBy,omitempty"` - RouterConfigSignature *string `protobuf:"bytes,7,opt,name=routerConfigSignature,proto3,oneof" json:"routerConfigSignature,omitempty"` - AdmissionError *string `protobuf:"bytes,8,opt,name=admissionError,proto3,oneof" json:"admissionError,omitempty"` - DeploymentError *string `protobuf:"bytes,9,opt,name=deploymentError,proto3,oneof" json:"deploymentError,omitempty"` - FeatureFlagName string `protobuf:"bytes,10,opt,name=featureFlagName,proto3" json:"featureFlagName,omitempty"` - CompositionWarnings *string `protobuf:"bytes,11,opt,name=compositionWarnings,proto3,oneof" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaVersionId string `protobuf:"bytes,2,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + IsComposable bool `protobuf:"varint,4,opt,name=isComposable,proto3" json:"isComposable,omitempty"` + CompositionErrors *string `protobuf:"bytes,5,opt,name=compositionErrors,proto3,oneof" json:"compositionErrors,omitempty"` + CreatedBy *string `protobuf:"bytes,6,opt,name=createdBy,proto3,oneof" json:"createdBy,omitempty"` + RouterConfigSignature *string `protobuf:"bytes,7,opt,name=routerConfigSignature,proto3,oneof" json:"routerConfigSignature,omitempty"` + AdmissionError *string `protobuf:"bytes,8,opt,name=admissionError,proto3,oneof" json:"admissionError,omitempty"` + DeploymentError *string `protobuf:"bytes,9,opt,name=deploymentError,proto3,oneof" json:"deploymentError,omitempty"` + FeatureFlagName string `protobuf:"bytes,10,opt,name=featureFlagName,proto3" json:"featureFlagName,omitempty"` + CompositionWarnings *string `protobuf:"bytes,11,opt,name=compositionWarnings,proto3,oneof" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FeatureFlagComposition) Reset() { *x = FeatureFlagComposition{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[262] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[272] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureFlagComposition) String() string { @@ -18531,8 +18546,8 @@ func (x *FeatureFlagComposition) String() string { func (*FeatureFlagComposition) ProtoMessage() {} func (x *FeatureFlagComposition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[262] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[272] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18544,7 +18559,7 @@ func (x *FeatureFlagComposition) ProtoReflect() protoreflect.Message { // Deprecated: Use FeatureFlagComposition.ProtoReflect.Descriptor instead. func (*FeatureFlagComposition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{262} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{272} } func (x *FeatureFlagComposition) GetId() string { @@ -18625,24 +18640,21 @@ func (x *FeatureFlagComposition) GetCompositionWarnings() string { } type GetCompositionDetailsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Composition *GraphComposition `protobuf:"bytes,2,opt,name=composition,proto3" json:"composition,omitempty"` CompositionSubgraphs []*GraphCompositionSubgraph `protobuf:"bytes,3,rep,name=compositionSubgraphs,proto3" json:"compositionSubgraphs,omitempty"` ChangeCounts *ChangeCounts `protobuf:"bytes,4,opt,name=changeCounts,proto3" json:"changeCounts,omitempty"` FeatureFlagCompositions []*FeatureFlagComposition `protobuf:"bytes,5,rep,name=featureFlagCompositions,proto3" json:"featureFlagCompositions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCompositionDetailsResponse) Reset() { *x = GetCompositionDetailsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[263] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[273] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCompositionDetailsResponse) String() string { @@ -18652,8 +18664,8 @@ func (x *GetCompositionDetailsResponse) String() string { func (*GetCompositionDetailsResponse) ProtoMessage() {} func (x *GetCompositionDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[263] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[273] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18665,7 +18677,7 @@ func (x *GetCompositionDetailsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCompositionDetailsResponse.ProtoReflect.Descriptor instead. func (*GetCompositionDetailsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{263} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{273} } func (x *GetCompositionDetailsResponse) GetResponse() *Response { @@ -18704,21 +18716,18 @@ func (x *GetCompositionDetailsResponse) GetFeatureFlagCompositions() []*FeatureF } type GetSdlBySchemaVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SchemaVersionId string `protobuf:"bytes,1,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` - TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SchemaVersionId string `protobuf:"bytes,1,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSdlBySchemaVersionRequest) Reset() { *x = GetSdlBySchemaVersionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[264] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[274] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSdlBySchemaVersionRequest) String() string { @@ -18728,8 +18737,8 @@ func (x *GetSdlBySchemaVersionRequest) String() string { func (*GetSdlBySchemaVersionRequest) ProtoMessage() {} func (x *GetSdlBySchemaVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[264] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[274] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18741,7 +18750,7 @@ func (x *GetSdlBySchemaVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSdlBySchemaVersionRequest.ProtoReflect.Descriptor instead. func (*GetSdlBySchemaVersionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{264} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{274} } func (x *GetSdlBySchemaVersionRequest) GetSchemaVersionId() string { @@ -18759,22 +18768,19 @@ func (x *GetSdlBySchemaVersionRequest) GetTargetId() string { } type GetSdlBySchemaVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Sdl string `protobuf:"bytes,2,opt,name=sdl,proto3" json:"sdl,omitempty"` + ClientSchema string `protobuf:"bytes,3,opt,name=client_schema,json=clientSchema,proto3" json:"client_schema,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Sdl string `protobuf:"bytes,2,opt,name=sdl,proto3" json:"sdl,omitempty"` - ClientSchema string `protobuf:"bytes,3,opt,name=client_schema,json=clientSchema,proto3" json:"client_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSdlBySchemaVersionResponse) Reset() { *x = GetSdlBySchemaVersionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[265] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[275] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSdlBySchemaVersionResponse) String() string { @@ -18784,8 +18790,8 @@ func (x *GetSdlBySchemaVersionResponse) String() string { func (*GetSdlBySchemaVersionResponse) ProtoMessage() {} func (x *GetSdlBySchemaVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[265] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[275] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18797,7 +18803,7 @@ func (x *GetSdlBySchemaVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSdlBySchemaVersionResponse.ProtoReflect.Descriptor instead. func (*GetSdlBySchemaVersionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{265} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{275} } func (x *GetSdlBySchemaVersionResponse) GetResponse() *Response { @@ -18822,20 +18828,17 @@ func (x *GetSdlBySchemaVersionResponse) GetClientSchema() string { } type GetChangelogBySchemaVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SchemaVersionId string `protobuf:"bytes,1,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SchemaVersionId string `protobuf:"bytes,1,opt,name=schemaVersionId,proto3" json:"schemaVersionId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetChangelogBySchemaVersionRequest) Reset() { *x = GetChangelogBySchemaVersionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[266] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[276] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangelogBySchemaVersionRequest) String() string { @@ -18845,8 +18848,8 @@ func (x *GetChangelogBySchemaVersionRequest) String() string { func (*GetChangelogBySchemaVersionRequest) ProtoMessage() {} func (x *GetChangelogBySchemaVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[266] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[276] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18858,7 +18861,7 @@ func (x *GetChangelogBySchemaVersionRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetChangelogBySchemaVersionRequest.ProtoReflect.Descriptor instead. func (*GetChangelogBySchemaVersionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{266} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{276} } func (x *GetChangelogBySchemaVersionRequest) GetSchemaVersionId() string { @@ -18869,21 +18872,18 @@ func (x *GetChangelogBySchemaVersionRequest) GetSchemaVersionId() string { } type GetChangelogBySchemaVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Changelog *FederatedGraphChangelogOutput `protobuf:"bytes,2,opt,name=changelog,proto3" json:"changelog,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Changelog *FederatedGraphChangelogOutput `protobuf:"bytes,2,opt,name=changelog,proto3" json:"changelog,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetChangelogBySchemaVersionResponse) Reset() { *x = GetChangelogBySchemaVersionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[267] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[277] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangelogBySchemaVersionResponse) String() string { @@ -18893,8 +18893,8 @@ func (x *GetChangelogBySchemaVersionResponse) String() string { func (*GetChangelogBySchemaVersionResponse) ProtoMessage() {} func (x *GetChangelogBySchemaVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[267] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[277] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18906,7 +18906,7 @@ func (x *GetChangelogBySchemaVersionResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetChangelogBySchemaVersionResponse.ProtoReflect.Descriptor instead. func (*GetChangelogBySchemaVersionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{267} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{277} } func (x *GetChangelogBySchemaVersionResponse) GetResponse() *Response { @@ -18924,18 +18924,16 @@ func (x *GetChangelogBySchemaVersionResponse) GetChangelog() *FederatedGraphChan } type GetUserAccessibleResourcesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetUserAccessibleResourcesRequest) Reset() { *x = GetUserAccessibleResourcesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[268] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[278] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessibleResourcesRequest) String() string { @@ -18945,8 +18943,8 @@ func (x *GetUserAccessibleResourcesRequest) String() string { func (*GetUserAccessibleResourcesRequest) ProtoMessage() {} func (x *GetUserAccessibleResourcesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[268] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[278] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -18958,27 +18956,24 @@ func (x *GetUserAccessibleResourcesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetUserAccessibleResourcesRequest.ProtoReflect.Descriptor instead. func (*GetUserAccessibleResourcesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{268} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{278} } type GetUserAccessibleResourcesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Namespaces []*GetUserAccessibleResourcesResponse_Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` FederatedGraphs []*GetUserAccessibleResourcesResponse_FederatedGraph `protobuf:"bytes,3,rep,name=federatedGraphs,proto3" json:"federatedGraphs,omitempty"` Subgraphs []*GetUserAccessibleResourcesResponse_SubGraph `protobuf:"bytes,4,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetUserAccessibleResourcesResponse) Reset() { *x = GetUserAccessibleResourcesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[269] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[279] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessibleResourcesResponse) String() string { @@ -18988,8 +18983,8 @@ func (x *GetUserAccessibleResourcesResponse) String() string { func (*GetUserAccessibleResourcesResponse) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[269] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[279] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19001,7 +18996,7 @@ func (x *GetUserAccessibleResourcesResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetUserAccessibleResourcesResponse.ProtoReflect.Descriptor instead. func (*GetUserAccessibleResourcesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{269} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{279} } func (x *GetUserAccessibleResourcesResponse) GetResponse() *Response { @@ -19033,21 +19028,18 @@ func (x *GetUserAccessibleResourcesResponse) GetSubgraphs() []*GetUserAccessible } type UpdateFeatureSettingsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` + FeatureId Feature `protobuf:"varint,2,opt,name=featureId,proto3,enum=wg.cosmo.platform.v1.Feature" json:"featureId,omitempty"` unknownFields protoimpl.UnknownFields - - Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` - FeatureId Feature `protobuf:"varint,2,opt,name=featureId,proto3,enum=wg.cosmo.platform.v1.Feature" json:"featureId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateFeatureSettingsRequest) Reset() { *x = UpdateFeatureSettingsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[270] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[280] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFeatureSettingsRequest) String() string { @@ -19057,8 +19049,8 @@ func (x *UpdateFeatureSettingsRequest) String() string { func (*UpdateFeatureSettingsRequest) ProtoMessage() {} func (x *UpdateFeatureSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[270] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[280] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19070,7 +19062,7 @@ func (x *UpdateFeatureSettingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFeatureSettingsRequest.ProtoReflect.Descriptor instead. func (*UpdateFeatureSettingsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{270} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{280} } func (x *UpdateFeatureSettingsRequest) GetEnable() bool { @@ -19088,20 +19080,17 @@ func (x *UpdateFeatureSettingsRequest) GetFeatureId() Feature { } type UpdateFeatureSettingsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateFeatureSettingsResponse) Reset() { *x = UpdateFeatureSettingsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[271] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[281] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFeatureSettingsResponse) String() string { @@ -19111,8 +19100,8 @@ func (x *UpdateFeatureSettingsResponse) String() string { func (*UpdateFeatureSettingsResponse) ProtoMessage() {} func (x *UpdateFeatureSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[271] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[281] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19124,7 +19113,7 @@ func (x *UpdateFeatureSettingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFeatureSettingsResponse.ProtoReflect.Descriptor instead. func (*UpdateFeatureSettingsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{271} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{281} } func (x *UpdateFeatureSettingsResponse) GetResponse() *Response { @@ -19135,21 +19124,18 @@ func (x *UpdateFeatureSettingsResponse) GetResponse() *Response { } type GetSubgraphMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - SubgraphName string `protobuf:"bytes,1,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMembersRequest) Reset() { *x = GetSubgraphMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[272] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[282] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMembersRequest) String() string { @@ -19159,8 +19145,8 @@ func (x *GetSubgraphMembersRequest) String() string { func (*GetSubgraphMembersRequest) ProtoMessage() {} func (x *GetSubgraphMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[272] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[282] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19172,7 +19158,7 @@ func (x *GetSubgraphMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphMembersRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphMembersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{272} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{282} } func (x *GetSubgraphMembersRequest) GetSubgraphName() string { @@ -19190,22 +19176,19 @@ func (x *GetSubgraphMembersRequest) GetNamespace() string { } type SubgraphMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - SubgraphMemberId string `protobuf:"bytes,4,opt,name=subgraphMemberId,proto3" json:"subgraphMemberId,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + SubgraphMemberId string `protobuf:"bytes,4,opt,name=subgraphMemberId,proto3" json:"subgraphMemberId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SubgraphMember) Reset() { *x = SubgraphMember{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[273] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[283] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubgraphMember) String() string { @@ -19215,8 +19198,8 @@ func (x *SubgraphMember) String() string { func (*SubgraphMember) ProtoMessage() {} func (x *SubgraphMember) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[273] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[283] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19228,7 +19211,7 @@ func (x *SubgraphMember) ProtoReflect() protoreflect.Message { // Deprecated: Use SubgraphMember.ProtoReflect.Descriptor instead. func (*SubgraphMember) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{273} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{283} } func (x *SubgraphMember) GetUserId() string { @@ -19253,21 +19236,18 @@ func (x *SubgraphMember) GetSubgraphMemberId() string { } type GetSubgraphMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Members []*SubgraphMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Members []*SubgraphMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphMembersResponse) Reset() { *x = GetSubgraphMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[274] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[284] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphMembersResponse) String() string { @@ -19277,8 +19257,8 @@ func (x *GetSubgraphMembersResponse) String() string { func (*GetSubgraphMembersResponse) ProtoMessage() {} func (x *GetSubgraphMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[274] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[284] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19290,7 +19270,7 @@ func (x *GetSubgraphMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphMembersResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphMembersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{274} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{284} } func (x *GetSubgraphMembersResponse) GetResponse() *Response { @@ -19308,22 +19288,19 @@ func (x *GetSubgraphMembersResponse) GetMembers() []*SubgraphMember { } type AddReadmeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TargetName string `protobuf:"bytes,1,opt,name=targetName,proto3" json:"targetName,omitempty"` + Readme string `protobuf:"bytes,2,opt,name=readme,proto3" json:"readme,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - TargetName string `protobuf:"bytes,1,opt,name=targetName,proto3" json:"targetName,omitempty"` - Readme string `protobuf:"bytes,2,opt,name=readme,proto3" json:"readme,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddReadmeRequest) Reset() { *x = AddReadmeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[275] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[285] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddReadmeRequest) String() string { @@ -19333,8 +19310,8 @@ func (x *AddReadmeRequest) String() string { func (*AddReadmeRequest) ProtoMessage() {} func (x *AddReadmeRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[275] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[285] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19346,7 +19323,7 @@ func (x *AddReadmeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddReadmeRequest.ProtoReflect.Descriptor instead. func (*AddReadmeRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{275} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{285} } func (x *AddReadmeRequest) GetTargetName() string { @@ -19371,20 +19348,17 @@ func (x *AddReadmeRequest) GetNamespace() string { } type AddReadmeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddReadmeResponse) Reset() { *x = AddReadmeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[276] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[286] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddReadmeResponse) String() string { @@ -19394,8 +19368,8 @@ func (x *AddReadmeResponse) String() string { func (*AddReadmeResponse) ProtoMessage() {} func (x *AddReadmeResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[276] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[286] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19407,7 +19381,7 @@ func (x *AddReadmeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddReadmeResponse.ProtoReflect.Descriptor instead. func (*AddReadmeResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{276} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{286} } func (x *AddReadmeResponse) GetResponse() *Response { @@ -19418,33 +19392,30 @@ func (x *AddReadmeResponse) GetResponse() *Response { } type Router struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClusterName string `protobuf:"bytes,2,opt,name=clusterName,proto3" json:"clusterName,omitempty"` - ServiceName string `protobuf:"bytes,3,opt,name=serviceName,proto3" json:"serviceName,omitempty"` - ServiceVersion string `protobuf:"bytes,4,opt,name=serviceVersion,proto3" json:"serviceVersion,omitempty"` - ServiceInstanceId string `protobuf:"bytes,5,opt,name=serviceInstanceId,proto3" json:"serviceInstanceId,omitempty"` - UptimeSeconds string `protobuf:"bytes,6,opt,name=uptimeSeconds,proto3" json:"uptimeSeconds,omitempty"` - ServerUptimeSeconds string `protobuf:"bytes,7,opt,name=serverUptimeSeconds,proto3" json:"serverUptimeSeconds,omitempty"` - CompositionId string `protobuf:"bytes,8,opt,name=compositionId,proto3" json:"compositionId,omitempty"` - OnLatestComposition bool `protobuf:"varint,9,opt,name=onLatestComposition,proto3" json:"onLatestComposition,omitempty"` - ProcessId string `protobuf:"bytes,10,opt,name=processId,proto3" json:"processId,omitempty"` - MemoryUsageMb float32 `protobuf:"fixed32,11,opt,name=memoryUsageMb,proto3" json:"memoryUsageMb,omitempty"` - MemoryUsageChangePercent float32 `protobuf:"fixed32,12,opt,name=memoryUsageChangePercent,proto3" json:"memoryUsageChangePercent,omitempty"` - CpuUsagePercent float32 `protobuf:"fixed32,13,opt,name=cpuUsagePercent,proto3" json:"cpuUsagePercent,omitempty"` - CpuUsageChangePercent float32 `protobuf:"fixed32,14,opt,name=cpuUsageChangePercent,proto3" json:"cpuUsageChangePercent,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + ClusterName string `protobuf:"bytes,2,opt,name=clusterName,proto3" json:"clusterName,omitempty"` + ServiceName string `protobuf:"bytes,3,opt,name=serviceName,proto3" json:"serviceName,omitempty"` + ServiceVersion string `protobuf:"bytes,4,opt,name=serviceVersion,proto3" json:"serviceVersion,omitempty"` + ServiceInstanceId string `protobuf:"bytes,5,opt,name=serviceInstanceId,proto3" json:"serviceInstanceId,omitempty"` + UptimeSeconds string `protobuf:"bytes,6,opt,name=uptimeSeconds,proto3" json:"uptimeSeconds,omitempty"` + ServerUptimeSeconds string `protobuf:"bytes,7,opt,name=serverUptimeSeconds,proto3" json:"serverUptimeSeconds,omitempty"` + CompositionId string `protobuf:"bytes,8,opt,name=compositionId,proto3" json:"compositionId,omitempty"` + OnLatestComposition bool `protobuf:"varint,9,opt,name=onLatestComposition,proto3" json:"onLatestComposition,omitempty"` + ProcessId string `protobuf:"bytes,10,opt,name=processId,proto3" json:"processId,omitempty"` + MemoryUsageMb float32 `protobuf:"fixed32,11,opt,name=memoryUsageMb,proto3" json:"memoryUsageMb,omitempty"` + MemoryUsageChangePercent float32 `protobuf:"fixed32,12,opt,name=memoryUsageChangePercent,proto3" json:"memoryUsageChangePercent,omitempty"` + CpuUsagePercent float32 `protobuf:"fixed32,13,opt,name=cpuUsagePercent,proto3" json:"cpuUsagePercent,omitempty"` + CpuUsageChangePercent float32 `protobuf:"fixed32,14,opt,name=cpuUsageChangePercent,proto3" json:"cpuUsageChangePercent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Router) Reset() { *x = Router{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[277] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[287] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Router) String() string { @@ -19454,8 +19425,8 @@ func (x *Router) String() string { func (*Router) ProtoMessage() {} func (x *Router) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[277] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[287] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19467,7 +19438,7 @@ func (x *Router) ProtoReflect() protoreflect.Message { // Deprecated: Use Router.ProtoReflect.Descriptor instead. func (*Router) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{277} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{287} } func (x *Router) GetHostname() string { @@ -19569,21 +19540,18 @@ func (x *Router) GetCpuUsageChangePercent() float32 { } type GetRoutersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRoutersRequest) Reset() { *x = GetRoutersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[278] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[288] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoutersRequest) String() string { @@ -19593,8 +19561,8 @@ func (x *GetRoutersRequest) String() string { func (*GetRoutersRequest) ProtoMessage() {} func (x *GetRoutersRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[278] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[288] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19606,7 +19574,7 @@ func (x *GetRoutersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoutersRequest.ProtoReflect.Descriptor instead. func (*GetRoutersRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{278} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{288} } func (x *GetRoutersRequest) GetFedGraphName() string { @@ -19624,21 +19592,18 @@ func (x *GetRoutersRequest) GetNamespace() string { } type GetRoutersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Routers []*Router `protobuf:"bytes,2,rep,name=routers,proto3" json:"routers,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Routers []*Router `protobuf:"bytes,2,rep,name=routers,proto3" json:"routers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRoutersResponse) Reset() { *x = GetRoutersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[279] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[289] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoutersResponse) String() string { @@ -19648,8 +19613,8 @@ func (x *GetRoutersResponse) String() string { func (*GetRoutersResponse) ProtoMessage() {} func (x *GetRoutersResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[279] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[289] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19661,7 +19626,7 @@ func (x *GetRoutersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoutersResponse.ProtoReflect.Descriptor instead. func (*GetRoutersResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{279} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{289} } func (x *GetRoutersResponse) GetResponse() *Response { @@ -19679,25 +19644,22 @@ func (x *GetRoutersResponse) GetRouters() []*Router { } type ClientInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + LastUpdatedAt string `protobuf:"bytes,4,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` + CreatedBy string `protobuf:"bytes,5,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + LastUpdatedBy string `protobuf:"bytes,6,opt,name=lastUpdatedBy,proto3" json:"lastUpdatedBy,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - LastUpdatedAt string `protobuf:"bytes,4,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` - CreatedBy string `protobuf:"bytes,5,opt,name=createdBy,proto3" json:"createdBy,omitempty"` - LastUpdatedBy string `protobuf:"bytes,6,opt,name=lastUpdatedBy,proto3" json:"lastUpdatedBy,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientInfo) Reset() { *x = ClientInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[280] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[290] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientInfo) String() string { @@ -19707,8 +19669,8 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[280] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[290] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19720,7 +19682,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{280} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{290} } func (x *ClientInfo) GetName() string { @@ -19766,21 +19728,18 @@ func (x *ClientInfo) GetLastUpdatedBy() string { } type GetClientsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - FedGraphName string `protobuf:"bytes,1,opt,name=fedGraphName,proto3" json:"fedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetClientsRequest) Reset() { *x = GetClientsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[281] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[291] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetClientsRequest) String() string { @@ -19790,8 +19749,8 @@ func (x *GetClientsRequest) String() string { func (*GetClientsRequest) ProtoMessage() {} func (x *GetClientsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[281] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[291] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19803,7 +19762,7 @@ func (x *GetClientsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsRequest.ProtoReflect.Descriptor instead. func (*GetClientsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{281} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{291} } func (x *GetClientsRequest) GetFedGraphName() string { @@ -19821,21 +19780,18 @@ func (x *GetClientsRequest) GetNamespace() string { } type GetClientsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Clients []*ClientInfo `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Clients []*ClientInfo `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetClientsResponse) Reset() { *x = GetClientsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[282] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[292] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetClientsResponse) String() string { @@ -19845,8 +19801,8 @@ func (x *GetClientsResponse) String() string { func (*GetClientsResponse) ProtoMessage() {} func (x *GetClientsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[282] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[292] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19858,7 +19814,7 @@ func (x *GetClientsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsResponse.ProtoReflect.Descriptor instead. func (*GetClientsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{282} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{292} } func (x *GetClientsResponse) GetResponse() *Response { @@ -19876,29 +19832,26 @@ func (x *GetClientsResponse) GetClients() []*ClientInfo { } type GetFieldUsageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` - NamedType *string `protobuf:"bytes,2,opt,name=namedType,proto3,oneof" json:"namedType,omitempty"` - Typename *string `protobuf:"bytes,3,opt,name=typename,proto3,oneof" json:"typename,omitempty"` - Field *string `protobuf:"bytes,4,opt,name=field,proto3,oneof" json:"field,omitempty"` - Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` - DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3" json:"dateRange,omitempty"` - Namespace string `protobuf:"bytes,7,opt,name=namespace,proto3" json:"namespace,omitempty"` - FeatureFlagName *string `protobuf:"bytes,8,opt,name=feature_flag_name,json=featureFlagName,proto3,oneof" json:"feature_flag_name,omitempty"` - IsArgument bool `protobuf:"varint,9,opt,name=is_argument,json=isArgument,proto3" json:"is_argument,omitempty"` - IsInput bool `protobuf:"varint,10,opt,name=is_input,json=isInput,proto3" json:"is_input,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + GraphName string `protobuf:"bytes,1,opt,name=graph_name,json=graphName,proto3" json:"graph_name,omitempty"` + NamedType *string `protobuf:"bytes,2,opt,name=namedType,proto3,oneof" json:"namedType,omitempty"` + Typename *string `protobuf:"bytes,3,opt,name=typename,proto3,oneof" json:"typename,omitempty"` + Field *string `protobuf:"bytes,4,opt,name=field,proto3,oneof" json:"field,omitempty"` + Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` + DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3" json:"dateRange,omitempty"` + Namespace string `protobuf:"bytes,7,opt,name=namespace,proto3" json:"namespace,omitempty"` + FeatureFlagName *string `protobuf:"bytes,8,opt,name=feature_flag_name,json=featureFlagName,proto3,oneof" json:"feature_flag_name,omitempty"` + IsArgument bool `protobuf:"varint,9,opt,name=is_argument,json=isArgument,proto3" json:"is_argument,omitempty"` + IsInput bool `protobuf:"varint,10,opt,name=is_input,json=isInput,proto3" json:"is_input,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFieldUsageRequest) Reset() { *x = GetFieldUsageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[283] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[293] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFieldUsageRequest) String() string { @@ -19908,8 +19861,8 @@ func (x *GetFieldUsageRequest) String() string { func (*GetFieldUsageRequest) ProtoMessage() {} func (x *GetFieldUsageRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[283] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[293] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -19921,7 +19874,7 @@ func (x *GetFieldUsageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFieldUsageRequest.ProtoReflect.Descriptor instead. func (*GetFieldUsageRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{283} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{293} } func (x *GetFieldUsageRequest) GetGraphName() string { @@ -19995,22 +19948,19 @@ func (x *GetFieldUsageRequest) GetIsInput() bool { } type ClientWithOperations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Operations []*ClientWithOperations_Operation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Operations []*ClientWithOperations_Operation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientWithOperations) Reset() { *x = ClientWithOperations{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[284] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[294] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientWithOperations) String() string { @@ -20020,8 +19970,8 @@ func (x *ClientWithOperations) String() string { func (*ClientWithOperations) ProtoMessage() {} func (x *ClientWithOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[284] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[294] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20033,7 +19983,7 @@ func (x *ClientWithOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientWithOperations.ProtoReflect.Descriptor instead. func (*ClientWithOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{284} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{294} } func (x *ClientWithOperations) GetName() string { @@ -20058,22 +20008,19 @@ func (x *ClientWithOperations) GetOperations() []*ClientWithOperations_Operation } type FieldUsageMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SubgraphIds []string `protobuf:"bytes,1,rep,name=subgraph_ids,json=subgraphIds,proto3" json:"subgraph_ids,omitempty"` - FirstSeenTimestamp string `protobuf:"bytes,2,opt,name=firstSeenTimestamp,proto3" json:"firstSeenTimestamp,omitempty"` - LatestSeenTimestamp string `protobuf:"bytes,3,opt,name=latestSeenTimestamp,proto3" json:"latestSeenTimestamp,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SubgraphIds []string `protobuf:"bytes,1,rep,name=subgraph_ids,json=subgraphIds,proto3" json:"subgraph_ids,omitempty"` + FirstSeenTimestamp string `protobuf:"bytes,2,opt,name=firstSeenTimestamp,proto3" json:"firstSeenTimestamp,omitempty"` + LatestSeenTimestamp string `protobuf:"bytes,3,opt,name=latestSeenTimestamp,proto3" json:"latestSeenTimestamp,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldUsageMeta) Reset() { *x = FieldUsageMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[285] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[295] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldUsageMeta) String() string { @@ -20083,8 +20030,8 @@ func (x *FieldUsageMeta) String() string { func (*FieldUsageMeta) ProtoMessage() {} func (x *FieldUsageMeta) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[285] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[295] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20096,7 +20043,7 @@ func (x *FieldUsageMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldUsageMeta.ProtoReflect.Descriptor instead. func (*FieldUsageMeta) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{285} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{295} } func (x *FieldUsageMeta) GetSubgraphIds() []string { @@ -20121,23 +20068,20 @@ func (x *FieldUsageMeta) GetLatestSeenTimestamp() string { } type GetFieldUsageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` RequestSeries []*RequestSeriesItem `protobuf:"bytes,2,rep,name=request_series,json=requestSeries,proto3" json:"request_series,omitempty"` Clients []*ClientWithOperations `protobuf:"bytes,3,rep,name=clients,proto3" json:"clients,omitempty"` Meta *FieldUsageMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFieldUsageResponse) Reset() { *x = GetFieldUsageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[286] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[296] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFieldUsageResponse) String() string { @@ -20147,8 +20091,8 @@ func (x *GetFieldUsageResponse) String() string { func (*GetFieldUsageResponse) ProtoMessage() {} func (x *GetFieldUsageResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[286] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[296] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20160,7 +20104,7 @@ func (x *GetFieldUsageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFieldUsageResponse.ProtoReflect.Descriptor instead. func (*GetFieldUsageResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{286} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{296} } func (x *GetFieldUsageResponse) GetResponse() *Response { @@ -20192,20 +20136,17 @@ func (x *GetFieldUsageResponse) GetMeta() *FieldUsageMeta { } type CreateNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateNamespaceRequest) Reset() { *x = CreateNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[287] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[297] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateNamespaceRequest) String() string { @@ -20215,8 +20156,8 @@ func (x *CreateNamespaceRequest) String() string { func (*CreateNamespaceRequest) ProtoMessage() {} func (x *CreateNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[287] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[297] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20228,7 +20169,7 @@ func (x *CreateNamespaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateNamespaceRequest.ProtoReflect.Descriptor instead. func (*CreateNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{287} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{297} } func (x *CreateNamespaceRequest) GetName() string { @@ -20239,20 +20180,17 @@ func (x *CreateNamespaceRequest) GetName() string { } type CreateNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateNamespaceResponse) Reset() { *x = CreateNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[288] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[298] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateNamespaceResponse) String() string { @@ -20262,8 +20200,8 @@ func (x *CreateNamespaceResponse) String() string { func (*CreateNamespaceResponse) ProtoMessage() {} func (x *CreateNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[288] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[298] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20275,7 +20213,7 @@ func (x *CreateNamespaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateNamespaceResponse.ProtoReflect.Descriptor instead. func (*CreateNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{288} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{298} } func (x *CreateNamespaceResponse) GetResponse() *Response { @@ -20286,20 +20224,17 @@ func (x *CreateNamespaceResponse) GetResponse() *Response { } type DeleteNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteNamespaceRequest) Reset() { *x = DeleteNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[289] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[299] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteNamespaceRequest) String() string { @@ -20309,8 +20244,8 @@ func (x *DeleteNamespaceRequest) String() string { func (*DeleteNamespaceRequest) ProtoMessage() {} func (x *DeleteNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[289] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[299] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20322,7 +20257,7 @@ func (x *DeleteNamespaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteNamespaceRequest.ProtoReflect.Descriptor instead. func (*DeleteNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{289} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{299} } func (x *DeleteNamespaceRequest) GetName() string { @@ -20333,20 +20268,17 @@ func (x *DeleteNamespaceRequest) GetName() string { } type DeleteNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteNamespaceResponse) Reset() { *x = DeleteNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[290] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[300] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteNamespaceResponse) String() string { @@ -20356,8 +20288,8 @@ func (x *DeleteNamespaceResponse) String() string { func (*DeleteNamespaceResponse) ProtoMessage() {} func (x *DeleteNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[290] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[300] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20369,7 +20301,7 @@ func (x *DeleteNamespaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteNamespaceResponse.ProtoReflect.Descriptor instead. func (*DeleteNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{290} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{300} } func (x *DeleteNamespaceResponse) GetResponse() *Response { @@ -20380,21 +20312,18 @@ func (x *DeleteNamespaceResponse) GetResponse() *Response { } type RenameNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + NewName string `protobuf:"bytes,2,opt,name=new_name,json=newName,proto3" json:"new_name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - NewName string `protobuf:"bytes,2,opt,name=new_name,json=newName,proto3" json:"new_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RenameNamespaceRequest) Reset() { *x = RenameNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[291] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[301] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RenameNamespaceRequest) String() string { @@ -20404,8 +20333,8 @@ func (x *RenameNamespaceRequest) String() string { func (*RenameNamespaceRequest) ProtoMessage() {} func (x *RenameNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[291] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[301] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20417,7 +20346,7 @@ func (x *RenameNamespaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameNamespaceRequest.ProtoReflect.Descriptor instead. func (*RenameNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{291} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{301} } func (x *RenameNamespaceRequest) GetName() string { @@ -20435,20 +20364,17 @@ func (x *RenameNamespaceRequest) GetNewName() string { } type RenameNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RenameNamespaceResponse) Reset() { *x = RenameNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[292] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[302] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RenameNamespaceResponse) String() string { @@ -20458,8 +20384,8 @@ func (x *RenameNamespaceResponse) String() string { func (*RenameNamespaceResponse) ProtoMessage() {} func (x *RenameNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[292] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[302] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20471,7 +20397,7 @@ func (x *RenameNamespaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameNamespaceResponse.ProtoReflect.Descriptor instead. func (*RenameNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{292} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{302} } func (x *RenameNamespaceResponse) GetResponse() *Response { @@ -20482,21 +20408,18 @@ func (x *RenameNamespaceResponse) GetResponse() *Response { } type Namespace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Namespace) Reset() { *x = Namespace{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[293] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[303] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Namespace) String() string { @@ -20506,8 +20429,8 @@ func (x *Namespace) String() string { func (*Namespace) ProtoMessage() {} func (x *Namespace) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[293] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[303] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20519,7 +20442,7 @@ func (x *Namespace) ProtoReflect() protoreflect.Message { // Deprecated: Use Namespace.ProtoReflect.Descriptor instead. func (*Namespace) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{293} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{303} } func (x *Namespace) GetId() string { @@ -20537,18 +20460,16 @@ func (x *Namespace) GetName() string { } type GetNamespacesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetNamespacesRequest) Reset() { *x = GetNamespacesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[294] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[304] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespacesRequest) String() string { @@ -20558,8 +20479,8 @@ func (x *GetNamespacesRequest) String() string { func (*GetNamespacesRequest) ProtoMessage() {} func (x *GetNamespacesRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[294] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[304] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20571,25 +20492,22 @@ func (x *GetNamespacesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespacesRequest.ProtoReflect.Descriptor instead. func (*GetNamespacesRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{294} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{304} } type GetNamespacesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Namespaces []*Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Namespaces []*Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespacesResponse) Reset() { *x = GetNamespacesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[295] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[305] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespacesResponse) String() string { @@ -20599,8 +20517,8 @@ func (x *GetNamespacesResponse) String() string { func (*GetNamespacesResponse) ProtoMessage() {} func (x *GetNamespacesResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[295] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[305] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20612,7 +20530,7 @@ func (x *GetNamespacesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespacesResponse.ProtoReflect.Descriptor instead. func (*GetNamespacesResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{295} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{305} } func (x *GetNamespacesResponse) GetResponse() *Response { @@ -20630,23 +20548,20 @@ func (x *GetNamespacesResponse) GetNamespaces() []*Namespace { } type MoveGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - NewNamespace string `protobuf:"bytes,3,opt,name=new_namespace,json=newNamespace,proto3" json:"new_namespace,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + NewNamespace string `protobuf:"bytes,3,opt,name=new_namespace,json=newNamespace,proto3" json:"new_namespace,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MoveGraphRequest) Reset() { *x = MoveGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[296] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[306] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MoveGraphRequest) String() string { @@ -20656,8 +20571,8 @@ func (x *MoveGraphRequest) String() string { func (*MoveGraphRequest) ProtoMessage() {} func (x *MoveGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[296] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[306] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20669,7 +20584,7 @@ func (x *MoveGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveGraphRequest.ProtoReflect.Descriptor instead. func (*MoveGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{296} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{306} } func (x *MoveGraphRequest) GetName() string { @@ -20701,23 +20616,20 @@ func (x *MoveGraphRequest) GetDisableResolvabilityValidation() bool { } type MoveGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MoveGraphResponse) Reset() { *x = MoveGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[297] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[307] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MoveGraphResponse) String() string { @@ -20727,8 +20639,8 @@ func (x *MoveGraphResponse) String() string { func (*MoveGraphResponse) ProtoMessage() {} func (x *MoveGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[297] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[307] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20740,7 +20652,7 @@ func (x *MoveGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveGraphResponse.ProtoReflect.Descriptor instead. func (*MoveGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{297} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{307} } func (x *MoveGraphResponse) GetResponse() *Response { @@ -20772,20 +20684,17 @@ func (x *MoveGraphResponse) GetCompositionWarnings() []*CompositionWarning { } type GetNamespaceLintConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceLintConfigRequest) Reset() { *x = GetNamespaceLintConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[298] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[308] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceLintConfigRequest) String() string { @@ -20795,8 +20704,8 @@ func (x *GetNamespaceLintConfigRequest) String() string { func (*GetNamespaceLintConfigRequest) ProtoMessage() {} func (x *GetNamespaceLintConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[298] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[308] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20808,7 +20717,7 @@ func (x *GetNamespaceLintConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespaceLintConfigRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceLintConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{298} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{308} } func (x *GetNamespaceLintConfigRequest) GetNamespace() string { @@ -20819,22 +20728,19 @@ func (x *GetNamespaceLintConfigRequest) GetNamespace() string { } type GetNamespaceLintConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + LinterEnabled bool `protobuf:"varint,2,opt,name=linterEnabled,proto3" json:"linterEnabled,omitempty"` + Configs []*LintConfig `protobuf:"bytes,3,rep,name=configs,proto3" json:"configs,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - LinterEnabled bool `protobuf:"varint,2,opt,name=linterEnabled,proto3" json:"linterEnabled,omitempty"` - Configs []*LintConfig `protobuf:"bytes,3,rep,name=configs,proto3" json:"configs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceLintConfigResponse) Reset() { *x = GetNamespaceLintConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[299] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[309] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceLintConfigResponse) String() string { @@ -20844,8 +20750,8 @@ func (x *GetNamespaceLintConfigResponse) String() string { func (*GetNamespaceLintConfigResponse) ProtoMessage() {} func (x *GetNamespaceLintConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[299] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[309] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20857,7 +20763,7 @@ func (x *GetNamespaceLintConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespaceLintConfigResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceLintConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{299} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{309} } func (x *GetNamespaceLintConfigResponse) GetResponse() *Response { @@ -20882,20 +20788,17 @@ func (x *GetNamespaceLintConfigResponse) GetConfigs() []*LintConfig { } type GetNamespaceChecksConfigurationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceChecksConfigurationRequest) Reset() { *x = GetNamespaceChecksConfigurationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[300] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[310] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceChecksConfigurationRequest) String() string { @@ -20905,8 +20808,8 @@ func (x *GetNamespaceChecksConfigurationRequest) String() string { func (*GetNamespaceChecksConfigurationRequest) ProtoMessage() {} func (x *GetNamespaceChecksConfigurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[300] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[310] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20918,7 +20821,7 @@ func (x *GetNamespaceChecksConfigurationRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use GetNamespaceChecksConfigurationRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceChecksConfigurationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{300} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{310} } func (x *GetNamespaceChecksConfigurationRequest) GetNamespace() string { @@ -20929,22 +20832,19 @@ func (x *GetNamespaceChecksConfigurationRequest) GetNamespace() string { } type GetNamespaceChecksConfigurationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - TimeframeInDays int32 `protobuf:"varint,2,opt,name=timeframeInDays,proto3" json:"timeframeInDays,omitempty"` - TimeframeLimitInDays int32 `protobuf:"varint,3,opt,name=timeframeLimitInDays,proto3" json:"timeframeLimitInDays,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + TimeframeInDays int32 `protobuf:"varint,2,opt,name=timeframeInDays,proto3" json:"timeframeInDays,omitempty"` + TimeframeLimitInDays int32 `protobuf:"varint,3,opt,name=timeframeLimitInDays,proto3" json:"timeframeLimitInDays,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetNamespaceChecksConfigurationResponse) Reset() { *x = GetNamespaceChecksConfigurationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[301] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[311] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceChecksConfigurationResponse) String() string { @@ -20954,8 +20854,8 @@ func (x *GetNamespaceChecksConfigurationResponse) String() string { func (*GetNamespaceChecksConfigurationResponse) ProtoMessage() {} func (x *GetNamespaceChecksConfigurationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[301] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[311] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -20967,7 +20867,7 @@ func (x *GetNamespaceChecksConfigurationResponse) ProtoReflect() protoreflect.Me // Deprecated: Use GetNamespaceChecksConfigurationResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceChecksConfigurationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{301} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{311} } func (x *GetNamespaceChecksConfigurationResponse) GetResponse() *Response { @@ -20992,21 +20892,18 @@ func (x *GetNamespaceChecksConfigurationResponse) GetTimeframeLimitInDays() int3 } type UpdateNamespaceChecksConfigurationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - TimeframeInDays int32 `protobuf:"varint,2,opt,name=timeframeInDays,proto3" json:"timeframeInDays,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + TimeframeInDays int32 `protobuf:"varint,2,opt,name=timeframeInDays,proto3" json:"timeframeInDays,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateNamespaceChecksConfigurationRequest) Reset() { *x = UpdateNamespaceChecksConfigurationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[302] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[312] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateNamespaceChecksConfigurationRequest) String() string { @@ -21016,8 +20913,8 @@ func (x *UpdateNamespaceChecksConfigurationRequest) String() string { func (*UpdateNamespaceChecksConfigurationRequest) ProtoMessage() {} func (x *UpdateNamespaceChecksConfigurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[302] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[312] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21029,7 +20926,7 @@ func (x *UpdateNamespaceChecksConfigurationRequest) ProtoReflect() protoreflect. // Deprecated: Use UpdateNamespaceChecksConfigurationRequest.ProtoReflect.Descriptor instead. func (*UpdateNamespaceChecksConfigurationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{302} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{312} } func (x *UpdateNamespaceChecksConfigurationRequest) GetNamespace() string { @@ -21047,20 +20944,17 @@ func (x *UpdateNamespaceChecksConfigurationRequest) GetTimeframeInDays() int32 { } type UpdateNamespaceChecksConfigurationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateNamespaceChecksConfigurationResponse) Reset() { *x = UpdateNamespaceChecksConfigurationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[303] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[313] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateNamespaceChecksConfigurationResponse) String() string { @@ -21070,8 +20964,8 @@ func (x *UpdateNamespaceChecksConfigurationResponse) String() string { func (*UpdateNamespaceChecksConfigurationResponse) ProtoMessage() {} func (x *UpdateNamespaceChecksConfigurationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[303] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[313] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21083,7 +20977,7 @@ func (x *UpdateNamespaceChecksConfigurationResponse) ProtoReflect() protoreflect // Deprecated: Use UpdateNamespaceChecksConfigurationResponse.ProtoReflect.Descriptor instead. func (*UpdateNamespaceChecksConfigurationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{303} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{313} } func (x *UpdateNamespaceChecksConfigurationResponse) GetResponse() *Response { @@ -21094,21 +20988,18 @@ func (x *UpdateNamespaceChecksConfigurationResponse) GetResponse() *Response { } type EnableLintingForTheNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + EnableLinting bool `protobuf:"varint,2,opt,name=enableLinting,proto3" json:"enableLinting,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - EnableLinting bool `protobuf:"varint,2,opt,name=enableLinting,proto3" json:"enableLinting,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnableLintingForTheNamespaceRequest) Reset() { *x = EnableLintingForTheNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[304] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[314] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableLintingForTheNamespaceRequest) String() string { @@ -21118,8 +21009,8 @@ func (x *EnableLintingForTheNamespaceRequest) String() string { func (*EnableLintingForTheNamespaceRequest) ProtoMessage() {} func (x *EnableLintingForTheNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[304] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[314] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21131,7 +21022,7 @@ func (x *EnableLintingForTheNamespaceRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use EnableLintingForTheNamespaceRequest.ProtoReflect.Descriptor instead. func (*EnableLintingForTheNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{304} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{314} } func (x *EnableLintingForTheNamespaceRequest) GetNamespace() string { @@ -21149,20 +21040,17 @@ func (x *EnableLintingForTheNamespaceRequest) GetEnableLinting() bool { } type EnableLintingForTheNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnableLintingForTheNamespaceResponse) Reset() { *x = EnableLintingForTheNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[305] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[315] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableLintingForTheNamespaceResponse) String() string { @@ -21172,8 +21060,8 @@ func (x *EnableLintingForTheNamespaceResponse) String() string { func (*EnableLintingForTheNamespaceResponse) ProtoMessage() {} func (x *EnableLintingForTheNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[305] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[315] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21185,7 +21073,7 @@ func (x *EnableLintingForTheNamespaceResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use EnableLintingForTheNamespaceResponse.ProtoReflect.Descriptor instead. func (*EnableLintingForTheNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{305} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{315} } func (x *EnableLintingForTheNamespaceResponse) GetResponse() *Response { @@ -21196,21 +21084,18 @@ func (x *EnableLintingForTheNamespaceResponse) GetResponse() *Response { } type LintConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RuleName string `protobuf:"bytes,1,opt,name=ruleName,proto3" json:"ruleName,omitempty"` + SeverityLevel LintSeverity `protobuf:"varint,2,opt,name=severityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severityLevel,omitempty"` unknownFields protoimpl.UnknownFields - - RuleName string `protobuf:"bytes,1,opt,name=ruleName,proto3" json:"ruleName,omitempty"` - SeverityLevel LintSeverity `protobuf:"varint,2,opt,name=severityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severityLevel,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LintConfig) Reset() { *x = LintConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[306] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[316] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LintConfig) String() string { @@ -21220,8 +21105,8 @@ func (x *LintConfig) String() string { func (*LintConfig) ProtoMessage() {} func (x *LintConfig) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[306] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[316] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21233,7 +21118,7 @@ func (x *LintConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use LintConfig.ProtoReflect.Descriptor instead. func (*LintConfig) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{306} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{316} } func (x *LintConfig) GetRuleName() string { @@ -21251,21 +21136,18 @@ func (x *LintConfig) GetSeverityLevel() LintSeverity { } type ConfigureNamespaceLintConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + Configs []*LintConfig `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - Configs []*LintConfig `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceLintConfigRequest) Reset() { *x = ConfigureNamespaceLintConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[307] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[317] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceLintConfigRequest) String() string { @@ -21275,8 +21157,8 @@ func (x *ConfigureNamespaceLintConfigRequest) String() string { func (*ConfigureNamespaceLintConfigRequest) ProtoMessage() {} func (x *ConfigureNamespaceLintConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[307] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[317] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21288,7 +21170,7 @@ func (x *ConfigureNamespaceLintConfigRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ConfigureNamespaceLintConfigRequest.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceLintConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{307} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{317} } func (x *ConfigureNamespaceLintConfigRequest) GetNamespace() string { @@ -21306,20 +21188,17 @@ func (x *ConfigureNamespaceLintConfigRequest) GetConfigs() []*LintConfig { } type ConfigureNamespaceLintConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceLintConfigResponse) Reset() { *x = ConfigureNamespaceLintConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[308] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[318] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceLintConfigResponse) String() string { @@ -21329,8 +21208,8 @@ func (x *ConfigureNamespaceLintConfigResponse) String() string { func (*ConfigureNamespaceLintConfigResponse) ProtoMessage() {} func (x *ConfigureNamespaceLintConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[308] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[318] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21342,7 +21221,7 @@ func (x *ConfigureNamespaceLintConfigResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ConfigureNamespaceLintConfigResponse.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceLintConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{308} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{318} } func (x *ConfigureNamespaceLintConfigResponse) GetResponse() *Response { @@ -21353,21 +21232,18 @@ func (x *ConfigureNamespaceLintConfigResponse) GetResponse() *Response { } type EnableGraphPruningRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - EnableGraphPruning bool `protobuf:"varint,2,opt,name=enableGraphPruning,proto3" json:"enableGraphPruning,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + EnableGraphPruning bool `protobuf:"varint,2,opt,name=enableGraphPruning,proto3" json:"enableGraphPruning,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EnableGraphPruningRequest) Reset() { *x = EnableGraphPruningRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[309] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[319] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableGraphPruningRequest) String() string { @@ -21377,8 +21253,8 @@ func (x *EnableGraphPruningRequest) String() string { func (*EnableGraphPruningRequest) ProtoMessage() {} func (x *EnableGraphPruningRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[309] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[319] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21390,7 +21266,7 @@ func (x *EnableGraphPruningRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableGraphPruningRequest.ProtoReflect.Descriptor instead. func (*EnableGraphPruningRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{309} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{319} } func (x *EnableGraphPruningRequest) GetNamespace() string { @@ -21408,20 +21284,17 @@ func (x *EnableGraphPruningRequest) GetEnableGraphPruning() bool { } type EnableGraphPruningResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnableGraphPruningResponse) Reset() { *x = EnableGraphPruningResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[310] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[320] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableGraphPruningResponse) String() string { @@ -21431,8 +21304,8 @@ func (x *EnableGraphPruningResponse) String() string { func (*EnableGraphPruningResponse) ProtoMessage() {} func (x *EnableGraphPruningResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[310] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[320] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21444,7 +21317,7 @@ func (x *EnableGraphPruningResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableGraphPruningResponse.ProtoReflect.Descriptor instead. func (*EnableGraphPruningResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{310} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{320} } func (x *EnableGraphPruningResponse) GetResponse() *Response { @@ -21455,23 +21328,20 @@ func (x *EnableGraphPruningResponse) GetResponse() *Response { } type GraphPruningConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RuleName string `protobuf:"bytes,1,opt,name=ruleName,proto3" json:"ruleName,omitempty"` - SeverityLevel LintSeverity `protobuf:"varint,2,opt,name=severityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severityLevel,omitempty"` - GracePeriodInDays int32 `protobuf:"varint,3,opt,name=gracePeriodInDays,proto3" json:"gracePeriodInDays,omitempty"` - SchemaUsageCheckPeriodInDays *int32 `protobuf:"varint,4,opt,name=schemaUsageCheckPeriodInDays,proto3,oneof" json:"schemaUsageCheckPeriodInDays,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RuleName string `protobuf:"bytes,1,opt,name=ruleName,proto3" json:"ruleName,omitempty"` + SeverityLevel LintSeverity `protobuf:"varint,2,opt,name=severityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"severityLevel,omitempty"` + GracePeriodInDays int32 `protobuf:"varint,3,opt,name=gracePeriodInDays,proto3" json:"gracePeriodInDays,omitempty"` + SchemaUsageCheckPeriodInDays *int32 `protobuf:"varint,4,opt,name=schemaUsageCheckPeriodInDays,proto3,oneof" json:"schemaUsageCheckPeriodInDays,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GraphPruningConfig) Reset() { *x = GraphPruningConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[311] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[321] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GraphPruningConfig) String() string { @@ -21481,8 +21351,8 @@ func (x *GraphPruningConfig) String() string { func (*GraphPruningConfig) ProtoMessage() {} func (x *GraphPruningConfig) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[311] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[321] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21494,7 +21364,7 @@ func (x *GraphPruningConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphPruningConfig.ProtoReflect.Descriptor instead. func (*GraphPruningConfig) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{311} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{321} } func (x *GraphPruningConfig) GetRuleName() string { @@ -21526,21 +21396,18 @@ func (x *GraphPruningConfig) GetSchemaUsageCheckPeriodInDays() int32 { } type ConfigureNamespaceGraphPruningConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + Configs []*GraphPruningConfig `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - Configs []*GraphPruningConfig `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceGraphPruningConfigRequest) Reset() { *x = ConfigureNamespaceGraphPruningConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[312] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[322] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceGraphPruningConfigRequest) String() string { @@ -21550,8 +21417,8 @@ func (x *ConfigureNamespaceGraphPruningConfigRequest) String() string { func (*ConfigureNamespaceGraphPruningConfigRequest) ProtoMessage() {} func (x *ConfigureNamespaceGraphPruningConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[312] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[322] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21563,7 +21430,7 @@ func (x *ConfigureNamespaceGraphPruningConfigRequest) ProtoReflect() protoreflec // Deprecated: Use ConfigureNamespaceGraphPruningConfigRequest.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceGraphPruningConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{312} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{322} } func (x *ConfigureNamespaceGraphPruningConfigRequest) GetNamespace() string { @@ -21581,20 +21448,17 @@ func (x *ConfigureNamespaceGraphPruningConfigRequest) GetConfigs() []*GraphPruni } type ConfigureNamespaceGraphPruningConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceGraphPruningConfigResponse) Reset() { *x = ConfigureNamespaceGraphPruningConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[313] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[323] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceGraphPruningConfigResponse) String() string { @@ -21604,8 +21468,8 @@ func (x *ConfigureNamespaceGraphPruningConfigResponse) String() string { func (*ConfigureNamespaceGraphPruningConfigResponse) ProtoMessage() {} func (x *ConfigureNamespaceGraphPruningConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[313] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[323] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21617,7 +21481,7 @@ func (x *ConfigureNamespaceGraphPruningConfigResponse) ProtoReflect() protorefle // Deprecated: Use ConfigureNamespaceGraphPruningConfigResponse.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceGraphPruningConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{313} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{323} } func (x *ConfigureNamespaceGraphPruningConfigResponse) GetResponse() *Response { @@ -21628,20 +21492,17 @@ func (x *ConfigureNamespaceGraphPruningConfigResponse) GetResponse() *Response { } type GetNamespaceGraphPruningConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceGraphPruningConfigRequest) Reset() { *x = GetNamespaceGraphPruningConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[314] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[324] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceGraphPruningConfigRequest) String() string { @@ -21651,8 +21512,8 @@ func (x *GetNamespaceGraphPruningConfigRequest) String() string { func (*GetNamespaceGraphPruningConfigRequest) ProtoMessage() {} func (x *GetNamespaceGraphPruningConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[314] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[324] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21664,7 +21525,7 @@ func (x *GetNamespaceGraphPruningConfigRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GetNamespaceGraphPruningConfigRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceGraphPruningConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{314} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{324} } func (x *GetNamespaceGraphPruningConfigRequest) GetNamespace() string { @@ -21675,22 +21536,19 @@ func (x *GetNamespaceGraphPruningConfigRequest) GetNamespace() string { } type GetNamespaceGraphPruningConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - GraphPrunerEnabled bool `protobuf:"varint,2,opt,name=graphPrunerEnabled,proto3" json:"graphPrunerEnabled,omitempty"` - Configs []*GraphPruningConfig `protobuf:"bytes,3,rep,name=configs,proto3" json:"configs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + GraphPrunerEnabled bool `protobuf:"varint,2,opt,name=graphPrunerEnabled,proto3" json:"graphPrunerEnabled,omitempty"` + Configs []*GraphPruningConfig `protobuf:"bytes,3,rep,name=configs,proto3" json:"configs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetNamespaceGraphPruningConfigResponse) Reset() { *x = GetNamespaceGraphPruningConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[315] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[325] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceGraphPruningConfigResponse) String() string { @@ -21700,8 +21558,8 @@ func (x *GetNamespaceGraphPruningConfigResponse) String() string { func (*GetNamespaceGraphPruningConfigResponse) ProtoMessage() {} func (x *GetNamespaceGraphPruningConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[315] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[325] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21713,7 +21571,7 @@ func (x *GetNamespaceGraphPruningConfigResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GetNamespaceGraphPruningConfigResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceGraphPruningConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{315} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{325} } func (x *GetNamespaceGraphPruningConfigResponse) GetResponse() *Response { @@ -21738,21 +21596,18 @@ func (x *GetNamespaceGraphPruningConfigResponse) GetConfigs() []*GraphPruningCon } type MigrateMonographRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MigrateMonographRequest) Reset() { *x = MigrateMonographRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[316] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[326] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MigrateMonographRequest) String() string { @@ -21762,8 +21617,8 @@ func (x *MigrateMonographRequest) String() string { func (*MigrateMonographRequest) ProtoMessage() {} func (x *MigrateMonographRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[316] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[326] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21775,7 +21630,7 @@ func (x *MigrateMonographRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateMonographRequest.ProtoReflect.Descriptor instead. func (*MigrateMonographRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{316} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{326} } func (x *MigrateMonographRequest) GetName() string { @@ -21793,20 +21648,17 @@ func (x *MigrateMonographRequest) GetNamespace() string { } type MigrateMonographResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MigrateMonographResponse) Reset() { *x = MigrateMonographResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[317] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[327] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MigrateMonographResponse) String() string { @@ -21816,8 +21668,8 @@ func (x *MigrateMonographResponse) String() string { func (*MigrateMonographResponse) ProtoMessage() {} func (x *MigrateMonographResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[317] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[327] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21829,7 +21681,7 @@ func (x *MigrateMonographResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateMonographResponse.ProtoReflect.Descriptor instead. func (*MigrateMonographResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{317} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{327} } func (x *MigrateMonographResponse) GetResponse() *Response { @@ -21840,18 +21692,16 @@ func (x *MigrateMonographResponse) GetResponse() *Response { } type GetUserAccessiblePermissionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetUserAccessiblePermissionsRequest) Reset() { *x = GetUserAccessiblePermissionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[318] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[328] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessiblePermissionsRequest) String() string { @@ -21861,8 +21711,8 @@ func (x *GetUserAccessiblePermissionsRequest) String() string { func (*GetUserAccessiblePermissionsRequest) ProtoMessage() {} func (x *GetUserAccessiblePermissionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[318] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[328] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21874,25 +21724,22 @@ func (x *GetUserAccessiblePermissionsRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetUserAccessiblePermissionsRequest.ProtoReflect.Descriptor instead. func (*GetUserAccessiblePermissionsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{318} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{328} } type Permission struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + DisplayName string `protobuf:"bytes,1,opt,name=displayName,proto3" json:"displayName,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - DisplayName string `protobuf:"bytes,1,opt,name=displayName,proto3" json:"displayName,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Permission) Reset() { *x = Permission{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[319] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[329] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Permission) String() string { @@ -21902,8 +21749,8 @@ func (x *Permission) String() string { func (*Permission) ProtoMessage() {} func (x *Permission) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[319] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[329] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21915,7 +21762,7 @@ func (x *Permission) ProtoReflect() protoreflect.Message { // Deprecated: Use Permission.ProtoReflect.Descriptor instead. func (*Permission) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{319} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{329} } func (x *Permission) GetDisplayName() string { @@ -21933,21 +21780,18 @@ func (x *Permission) GetValue() string { } type GetUserAccessiblePermissionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Permissions []*Permission `protobuf:"bytes,2,rep,name=permissions,proto3" json:"permissions,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Permissions []*Permission `protobuf:"bytes,2,rep,name=permissions,proto3" json:"permissions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUserAccessiblePermissionsResponse) Reset() { *x = GetUserAccessiblePermissionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[320] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[330] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessiblePermissionsResponse) String() string { @@ -21957,8 +21801,8 @@ func (x *GetUserAccessiblePermissionsResponse) String() string { func (*GetUserAccessiblePermissionsResponse) ProtoMessage() {} func (x *GetUserAccessiblePermissionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[320] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[330] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -21970,7 +21814,7 @@ func (x *GetUserAccessiblePermissionsResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetUserAccessiblePermissionsResponse.ProtoReflect.Descriptor instead. func (*GetUserAccessiblePermissionsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{320} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{330} } func (x *GetUserAccessiblePermissionsResponse) GetResponse() *Response { @@ -21988,29 +21832,26 @@ func (x *GetUserAccessiblePermissionsResponse) GetPermissions() []*Permission { } type CreateContractRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - SourceGraphName string `protobuf:"bytes,3,opt,name=source_graph_name,json=sourceGraphName,proto3" json:"source_graph_name,omitempty"` - RoutingUrl string `protobuf:"bytes,4,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` - AdmissionWebhookUrl string `protobuf:"bytes,5,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3" json:"admission_webhook_url,omitempty"` - ExcludeTags []string `protobuf:"bytes,6,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` - Readme *string `protobuf:"bytes,7,opt,name=readme,proto3,oneof" json:"readme,omitempty"` - AdmissionWebhookSecret *string `protobuf:"bytes,8,opt,name=admission_webhook_secret,json=admissionWebhookSecret,proto3,oneof" json:"admission_webhook_secret,omitempty"` - IncludeTags []string `protobuf:"bytes,9,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,10,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + SourceGraphName string `protobuf:"bytes,3,opt,name=source_graph_name,json=sourceGraphName,proto3" json:"source_graph_name,omitempty"` + RoutingUrl string `protobuf:"bytes,4,opt,name=routing_url,json=routingUrl,proto3" json:"routing_url,omitempty"` + AdmissionWebhookUrl string `protobuf:"bytes,5,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3" json:"admission_webhook_url,omitempty"` + ExcludeTags []string `protobuf:"bytes,6,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` + Readme *string `protobuf:"bytes,7,opt,name=readme,proto3,oneof" json:"readme,omitempty"` + AdmissionWebhookSecret *string `protobuf:"bytes,8,opt,name=admission_webhook_secret,json=admissionWebhookSecret,proto3,oneof" json:"admission_webhook_secret,omitempty"` + IncludeTags []string `protobuf:"bytes,9,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,10,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateContractRequest) Reset() { *x = CreateContractRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[321] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[331] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateContractRequest) String() string { @@ -22020,8 +21861,8 @@ func (x *CreateContractRequest) String() string { func (*CreateContractRequest) ProtoMessage() {} func (x *CreateContractRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[321] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[331] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22033,7 +21874,7 @@ func (x *CreateContractRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateContractRequest.ProtoReflect.Descriptor instead. func (*CreateContractRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{321} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{331} } func (x *CreateContractRequest) GetName() string { @@ -22107,23 +21948,20 @@ func (x *CreateContractRequest) GetDisableResolvabilityValidation() bool { } type CreateContractResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateContractResponse) Reset() { *x = CreateContractResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[322] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[332] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateContractResponse) String() string { @@ -22133,8 +21971,8 @@ func (x *CreateContractResponse) String() string { func (*CreateContractResponse) ProtoMessage() {} func (x *CreateContractResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[322] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[332] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22146,7 +21984,7 @@ func (x *CreateContractResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateContractResponse.ProtoReflect.Descriptor instead. func (*CreateContractResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{322} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{332} } func (x *CreateContractResponse) GetResponse() *Response { @@ -22178,28 +22016,25 @@ func (x *CreateContractResponse) GetCompositionWarnings() []*CompositionWarning } type UpdateContractRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ExcludeTags []string `protobuf:"bytes,3,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` - IncludeTags []string `protobuf:"bytes,4,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` - RoutingUrl *string `protobuf:"bytes,5,opt,name=routing_url,json=routingUrl,proto3,oneof" json:"routing_url,omitempty"` - AdmissionWebhookUrl *string `protobuf:"bytes,6,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3,oneof" json:"admission_webhook_url,omitempty"` - AdmissionWebhookSecret *string `protobuf:"bytes,7,opt,name=admission_webhook_secret,json=admissionWebhookSecret,proto3,oneof" json:"admission_webhook_secret,omitempty"` - Readme *string `protobuf:"bytes,8,opt,name=readme,proto3,oneof" json:"readme,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + ExcludeTags []string `protobuf:"bytes,3,rep,name=exclude_tags,json=excludeTags,proto3" json:"exclude_tags,omitempty"` + IncludeTags []string `protobuf:"bytes,4,rep,name=include_tags,json=includeTags,proto3" json:"include_tags,omitempty"` + RoutingUrl *string `protobuf:"bytes,5,opt,name=routing_url,json=routingUrl,proto3,oneof" json:"routing_url,omitempty"` + AdmissionWebhookUrl *string `protobuf:"bytes,6,opt,name=admission_webhook_url,json=admissionWebhookUrl,proto3,oneof" json:"admission_webhook_url,omitempty"` + AdmissionWebhookSecret *string `protobuf:"bytes,7,opt,name=admission_webhook_secret,json=admissionWebhookSecret,proto3,oneof" json:"admission_webhook_secret,omitempty"` + Readme *string `protobuf:"bytes,8,opt,name=readme,proto3,oneof" json:"readme,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,9,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateContractRequest) Reset() { *x = UpdateContractRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[323] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[333] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateContractRequest) String() string { @@ -22209,8 +22044,8 @@ func (x *UpdateContractRequest) String() string { func (*UpdateContractRequest) ProtoMessage() {} func (x *UpdateContractRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[323] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[333] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22222,7 +22057,7 @@ func (x *UpdateContractRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateContractRequest.ProtoReflect.Descriptor instead. func (*UpdateContractRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{323} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{333} } func (x *UpdateContractRequest) GetName() string { @@ -22289,23 +22124,20 @@ func (x *UpdateContractRequest) GetDisableResolvabilityValidation() bool { } type UpdateContractResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateContractResponse) Reset() { *x = UpdateContractResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[324] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[334] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateContractResponse) String() string { @@ -22315,8 +22147,8 @@ func (x *UpdateContractResponse) String() string { func (*UpdateContractResponse) ProtoMessage() {} func (x *UpdateContractResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[324] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[334] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22328,7 +22160,7 @@ func (x *UpdateContractResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateContractResponse.ProtoReflect.Descriptor instead. func (*UpdateContractResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{324} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{334} } func (x *UpdateContractResponse) GetResponse() *Response { @@ -22360,18 +22192,16 @@ func (x *UpdateContractResponse) GetCompositionWarnings() []*CompositionWarning } type IsMemberLimitReachedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IsMemberLimitReachedRequest) Reset() { *x = IsMemberLimitReachedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[325] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[335] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IsMemberLimitReachedRequest) String() string { @@ -22381,8 +22211,8 @@ func (x *IsMemberLimitReachedRequest) String() string { func (*IsMemberLimitReachedRequest) ProtoMessage() {} func (x *IsMemberLimitReachedRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[325] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[335] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22394,26 +22224,23 @@ func (x *IsMemberLimitReachedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IsMemberLimitReachedRequest.ProtoReflect.Descriptor instead. func (*IsMemberLimitReachedRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{325} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{335} } type IsMemberLimitReachedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + LimitReached bool `protobuf:"varint,2,opt,name=limit_reached,json=limitReached,proto3" json:"limit_reached,omitempty"` + MemberCount int32 `protobuf:"varint,3,opt,name=member_count,json=memberCount,proto3" json:"member_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - LimitReached bool `protobuf:"varint,2,opt,name=limit_reached,json=limitReached,proto3" json:"limit_reached,omitempty"` - MemberCount int32 `protobuf:"varint,3,opt,name=member_count,json=memberCount,proto3" json:"member_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *IsMemberLimitReachedResponse) Reset() { *x = IsMemberLimitReachedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[326] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[336] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IsMemberLimitReachedResponse) String() string { @@ -22423,8 +22250,8 @@ func (x *IsMemberLimitReachedResponse) String() string { func (*IsMemberLimitReachedResponse) ProtoMessage() {} func (x *IsMemberLimitReachedResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[326] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[336] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22436,7 +22263,7 @@ func (x *IsMemberLimitReachedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IsMemberLimitReachedResponse.ProtoReflect.Descriptor instead. func (*IsMemberLimitReachedResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{326} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{336} } func (x *IsMemberLimitReachedResponse) GetResponse() *Response { @@ -22461,18 +22288,16 @@ func (x *IsMemberLimitReachedResponse) GetMemberCount() int32 { } type DeleteUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[327] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[337] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUserRequest) String() string { @@ -22482,8 +22307,8 @@ func (x *DeleteUserRequest) String() string { func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[327] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[337] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22495,24 +22320,21 @@ func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{327} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{337} } type DeleteUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteUserResponse) Reset() { *x = DeleteUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[328] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[338] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUserResponse) String() string { @@ -22522,8 +22344,8 @@ func (x *DeleteUserResponse) String() string { func (*DeleteUserResponse) ProtoMessage() {} func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[328] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[338] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22535,7 +22357,7 @@ func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserResponse.ProtoReflect.Descriptor instead. func (*DeleteUserResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{328} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{338} } func (x *DeleteUserResponse) GetResponse() *Response { @@ -22546,25 +22368,22 @@ func (x *DeleteUserResponse) GetResponse() *Response { } type CreateFeatureFlagRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` - FeatureSubgraphNames []string `protobuf:"bytes,4,rep,name=feature_subgraph_names,json=featureSubgraphNames,proto3" json:"feature_subgraph_names,omitempty"` - IsEnabled bool `protobuf:"varint,5,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,6,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + FeatureSubgraphNames []string `protobuf:"bytes,4,rep,name=feature_subgraph_names,json=featureSubgraphNames,proto3" json:"feature_subgraph_names,omitempty"` + IsEnabled bool `protobuf:"varint,5,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,6,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateFeatureFlagRequest) Reset() { *x = CreateFeatureFlagRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[329] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[339] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFeatureFlagRequest) String() string { @@ -22574,8 +22393,8 @@ func (x *CreateFeatureFlagRequest) String() string { func (*CreateFeatureFlagRequest) ProtoMessage() {} func (x *CreateFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[329] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[339] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22587,7 +22406,7 @@ func (x *CreateFeatureFlagRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFeatureFlagRequest.ProtoReflect.Descriptor instead. func (*CreateFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{329} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{339} } func (x *CreateFeatureFlagRequest) GetName() string { @@ -22633,23 +22452,20 @@ func (x *CreateFeatureFlagRequest) GetDisableResolvabilityValidation() bool { } type CreateFeatureFlagResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateFeatureFlagResponse) Reset() { *x = CreateFeatureFlagResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[330] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[340] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateFeatureFlagResponse) String() string { @@ -22659,8 +22475,8 @@ func (x *CreateFeatureFlagResponse) String() string { func (*CreateFeatureFlagResponse) ProtoMessage() {} func (x *CreateFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[330] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[340] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22672,7 +22488,7 @@ func (x *CreateFeatureFlagResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFeatureFlagResponse.ProtoReflect.Descriptor instead. func (*CreateFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{330} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{340} } func (x *CreateFeatureFlagResponse) GetResponse() *Response { @@ -22704,25 +22520,22 @@ func (x *CreateFeatureFlagResponse) GetCompositionWarnings() []*CompositionWarni } type UpdateFeatureFlagRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` - FeatureSubgraphNames []string `protobuf:"bytes,4,rep,name=feature_subgraph_names,json=featureSubgraphNames,proto3" json:"feature_subgraph_names,omitempty"` - UnsetLabels bool `protobuf:"varint,5,opt,name=unset_labels,json=unsetLabels,proto3" json:"unset_labels,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,6,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + FeatureSubgraphNames []string `protobuf:"bytes,4,rep,name=feature_subgraph_names,json=featureSubgraphNames,proto3" json:"feature_subgraph_names,omitempty"` + UnsetLabels bool `protobuf:"varint,5,opt,name=unset_labels,json=unsetLabels,proto3" json:"unset_labels,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,6,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateFeatureFlagRequest) Reset() { *x = UpdateFeatureFlagRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[331] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[341] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFeatureFlagRequest) String() string { @@ -22732,8 +22545,8 @@ func (x *UpdateFeatureFlagRequest) String() string { func (*UpdateFeatureFlagRequest) ProtoMessage() {} func (x *UpdateFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[331] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[341] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22745,7 +22558,7 @@ func (x *UpdateFeatureFlagRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFeatureFlagRequest.ProtoReflect.Descriptor instead. func (*UpdateFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{331} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{341} } func (x *UpdateFeatureFlagRequest) GetName() string { @@ -22791,23 +22604,20 @@ func (x *UpdateFeatureFlagRequest) GetDisableResolvabilityValidation() bool { } type UpdateFeatureFlagResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateFeatureFlagResponse) Reset() { *x = UpdateFeatureFlagResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[332] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[342] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateFeatureFlagResponse) String() string { @@ -22817,8 +22627,8 @@ func (x *UpdateFeatureFlagResponse) String() string { func (*UpdateFeatureFlagResponse) ProtoMessage() {} func (x *UpdateFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[332] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[342] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22830,7 +22640,7 @@ func (x *UpdateFeatureFlagResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFeatureFlagResponse.ProtoReflect.Descriptor instead. func (*UpdateFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{332} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{342} } func (x *UpdateFeatureFlagResponse) GetResponse() *Response { @@ -22862,23 +22672,20 @@ func (x *UpdateFeatureFlagResponse) GetCompositionWarnings() []*CompositionWarni } type EnableFeatureFlagRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EnableFeatureFlagRequest) Reset() { *x = EnableFeatureFlagRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[333] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[343] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableFeatureFlagRequest) String() string { @@ -22888,8 +22695,8 @@ func (x *EnableFeatureFlagRequest) String() string { func (*EnableFeatureFlagRequest) ProtoMessage() {} func (x *EnableFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[333] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[343] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22901,7 +22708,7 @@ func (x *EnableFeatureFlagRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableFeatureFlagRequest.ProtoReflect.Descriptor instead. func (*EnableFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{333} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{343} } func (x *EnableFeatureFlagRequest) GetName() string { @@ -22933,24 +22740,21 @@ func (x *EnableFeatureFlagRequest) GetDisableResolvabilityValidation() bool { } type EnableFeatureFlagResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` - HasChanged *bool `protobuf:"varint,4,opt,name=has_changed,json=hasChanged,proto3,oneof" json:"has_changed,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,5,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` + HasChanged *bool `protobuf:"varint,4,opt,name=has_changed,json=hasChanged,proto3,oneof" json:"has_changed,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,5,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EnableFeatureFlagResponse) Reset() { *x = EnableFeatureFlagResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[334] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[344] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableFeatureFlagResponse) String() string { @@ -22960,8 +22764,8 @@ func (x *EnableFeatureFlagResponse) String() string { func (*EnableFeatureFlagResponse) ProtoMessage() {} func (x *EnableFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[334] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[344] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -22973,7 +22777,7 @@ func (x *EnableFeatureFlagResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableFeatureFlagResponse.ProtoReflect.Descriptor instead. func (*EnableFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{334} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{344} } func (x *EnableFeatureFlagResponse) GetResponse() *Response { @@ -23012,22 +22816,19 @@ func (x *EnableFeatureFlagResponse) GetCompositionWarnings() []*CompositionWarni } type DeleteFeatureFlagRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,3,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,3,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteFeatureFlagRequest) Reset() { *x = DeleteFeatureFlagRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[335] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[345] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFeatureFlagRequest) String() string { @@ -23037,8 +22838,8 @@ func (x *DeleteFeatureFlagRequest) String() string { func (*DeleteFeatureFlagRequest) ProtoMessage() {} func (x *DeleteFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[335] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[345] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23050,7 +22851,7 @@ func (x *DeleteFeatureFlagRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFeatureFlagRequest.ProtoReflect.Descriptor instead. func (*DeleteFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{335} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{345} } func (x *DeleteFeatureFlagRequest) GetName() string { @@ -23075,23 +22876,20 @@ func (x *DeleteFeatureFlagRequest) GetDisableResolvabilityValidation() bool { } type DeleteFeatureFlagResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=composition_errors,json=compositionErrors,proto3" json:"composition_errors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deployment_errors,json=deploymentErrors,proto3" json:"deployment_errors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteFeatureFlagResponse) Reset() { *x = DeleteFeatureFlagResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[336] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[346] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteFeatureFlagResponse) String() string { @@ -23101,8 +22899,8 @@ func (x *DeleteFeatureFlagResponse) String() string { func (*DeleteFeatureFlagResponse) ProtoMessage() {} func (x *DeleteFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[336] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[346] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23114,7 +22912,7 @@ func (x *DeleteFeatureFlagResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFeatureFlagResponse.ProtoReflect.Descriptor instead. func (*DeleteFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{336} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{346} } func (x *DeleteFeatureFlagResponse) GetResponse() *Response { @@ -23146,27 +22944,24 @@ func (x *DeleteFeatureFlagResponse) GetCompositionWarnings() []*CompositionWarni } type FeatureFlag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Labels []*Label `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"` + IsEnabled bool `protobuf:"varint,5,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` + CreatedBy string `protobuf:"bytes,6,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` + CreatedAt string `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt string `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Labels []*Label `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"` - IsEnabled bool `protobuf:"varint,5,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` - CreatedBy string `protobuf:"bytes,6,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` - CreatedAt string `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FeatureFlag) Reset() { *x = FeatureFlag{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[337] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[347] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureFlag) String() string { @@ -23176,8 +22971,8 @@ func (x *FeatureFlag) String() string { func (*FeatureFlag) ProtoMessage() {} func (x *FeatureFlag) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[337] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[347] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23189,7 +22984,7 @@ func (x *FeatureFlag) ProtoReflect() protoreflect.Message { // Deprecated: Use FeatureFlag.ProtoReflect.Descriptor instead. func (*FeatureFlag) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{337} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{347} } func (x *FeatureFlag) GetId() string { @@ -23249,23 +23044,20 @@ func (x *FeatureFlag) GetUpdatedAt() string { } type GetFeatureFlagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagsRequest) Reset() { *x = GetFeatureFlagsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[338] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[348] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagsRequest) String() string { @@ -23275,8 +23067,8 @@ func (x *GetFeatureFlagsRequest) String() string { func (*GetFeatureFlagsRequest) ProtoMessage() {} func (x *GetFeatureFlagsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[338] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[348] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23288,7 +23080,7 @@ func (x *GetFeatureFlagsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureFlagsRequest.ProtoReflect.Descriptor instead. func (*GetFeatureFlagsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{338} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{348} } func (x *GetFeatureFlagsRequest) GetLimit() int32 { @@ -23320,22 +23112,19 @@ func (x *GetFeatureFlagsRequest) GetQuery() string { } type GetFeatureFlagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FeatureFlags []*FeatureFlag `protobuf:"bytes,2,rep,name=feature_flags,json=featureFlags,proto3" json:"feature_flags,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - FeatureFlags []*FeatureFlag `protobuf:"bytes,2,rep,name=feature_flags,json=featureFlags,proto3" json:"feature_flags,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagsResponse) Reset() { *x = GetFeatureFlagsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[339] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[349] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagsResponse) String() string { @@ -23345,8 +23134,8 @@ func (x *GetFeatureFlagsResponse) String() string { func (*GetFeatureFlagsResponse) ProtoMessage() {} func (x *GetFeatureFlagsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[339] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[349] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23358,7 +23147,7 @@ func (x *GetFeatureFlagsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureFlagsResponse.ProtoReflect.Descriptor instead. func (*GetFeatureFlagsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{339} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{349} } func (x *GetFeatureFlagsResponse) GetResponse() *Response { @@ -23383,21 +23172,18 @@ func (x *GetFeatureFlagsResponse) GetTotalCount() int32 { } type GetFeatureFlagByNameRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagByNameRequest) Reset() { *x = GetFeatureFlagByNameRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[340] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[350] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagByNameRequest) String() string { @@ -23407,8 +23193,8 @@ func (x *GetFeatureFlagByNameRequest) String() string { func (*GetFeatureFlagByNameRequest) ProtoMessage() {} func (x *GetFeatureFlagByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[340] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[350] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23420,7 +23206,7 @@ func (x *GetFeatureFlagByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureFlagByNameRequest.ProtoReflect.Descriptor instead. func (*GetFeatureFlagByNameRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{340} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{350} } func (x *GetFeatureFlagByNameRequest) GetName() string { @@ -23438,23 +23224,20 @@ func (x *GetFeatureFlagByNameRequest) GetNamespace() string { } type GetFeatureFlagByNameResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` FeatureFlag *FeatureFlag `protobuf:"bytes,2,opt,name=feature_flag,json=featureFlag,proto3" json:"feature_flag,omitempty"` FederatedGraphs []*GetFeatureFlagByNameResponse_FfFederatedGraph `protobuf:"bytes,3,rep,name=federated_graphs,json=federatedGraphs,proto3" json:"federated_graphs,omitempty"` FeatureSubgraphs []*Subgraph `protobuf:"bytes,4,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagByNameResponse) Reset() { *x = GetFeatureFlagByNameResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[341] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[351] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagByNameResponse) String() string { @@ -23464,8 +23247,8 @@ func (x *GetFeatureFlagByNameResponse) String() string { func (*GetFeatureFlagByNameResponse) ProtoMessage() {} func (x *GetFeatureFlagByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[341] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[351] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23477,7 +23260,7 @@ func (x *GetFeatureFlagByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureFlagByNameResponse.ProtoReflect.Descriptor instead. func (*GetFeatureFlagByNameResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{341} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{351} } func (x *GetFeatureFlagByNameResponse) GetResponse() *Response { @@ -23509,21 +23292,18 @@ func (x *GetFeatureFlagByNameResponse) GetFeatureSubgraphs() []*Subgraph { } type GetFeatureSubgraphsByFeatureFlagRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FeatureFlagName string `protobuf:"bytes,1,opt,name=feature_flag_name,json=featureFlagName,proto3" json:"feature_flag_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FeatureFlagName string `protobuf:"bytes,1,opt,name=feature_flag_name,json=featureFlagName,proto3" json:"feature_flag_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureSubgraphsByFeatureFlagRequest) Reset() { *x = GetFeatureSubgraphsByFeatureFlagRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[342] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[352] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureSubgraphsByFeatureFlagRequest) String() string { @@ -23533,8 +23313,8 @@ func (x *GetFeatureSubgraphsByFeatureFlagRequest) String() string { func (*GetFeatureSubgraphsByFeatureFlagRequest) ProtoMessage() {} func (x *GetFeatureSubgraphsByFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[342] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[352] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23546,7 +23326,7 @@ func (x *GetFeatureSubgraphsByFeatureFlagRequest) ProtoReflect() protoreflect.Me // Deprecated: Use GetFeatureSubgraphsByFeatureFlagRequest.ProtoReflect.Descriptor instead. func (*GetFeatureSubgraphsByFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{342} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{352} } func (x *GetFeatureSubgraphsByFeatureFlagRequest) GetFeatureFlagName() string { @@ -23564,21 +23344,18 @@ func (x *GetFeatureSubgraphsByFeatureFlagRequest) GetNamespace() string { } type GetFeatureSubgraphsByFeatureFlagResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - FeatureSubgraphs []*Subgraph `protobuf:"bytes,2,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FeatureSubgraphs []*Subgraph `protobuf:"bytes,2,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureSubgraphsByFeatureFlagResponse) Reset() { *x = GetFeatureSubgraphsByFeatureFlagResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[343] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[353] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureSubgraphsByFeatureFlagResponse) String() string { @@ -23588,8 +23365,8 @@ func (x *GetFeatureSubgraphsByFeatureFlagResponse) String() string { func (*GetFeatureSubgraphsByFeatureFlagResponse) ProtoMessage() {} func (x *GetFeatureSubgraphsByFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[343] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[353] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23601,7 +23378,7 @@ func (x *GetFeatureSubgraphsByFeatureFlagResponse) ProtoReflect() protoreflect.M // Deprecated: Use GetFeatureSubgraphsByFeatureFlagResponse.ProtoReflect.Descriptor instead. func (*GetFeatureSubgraphsByFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{343} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{353} } func (x *GetFeatureSubgraphsByFeatureFlagResponse) GetResponse() *Response { @@ -23619,23 +23396,20 @@ func (x *GetFeatureSubgraphsByFeatureFlagResponse) GetFeatureSubgraphs() []*Subg } type GetFeatureSubgraphsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFeatureSubgraphsRequest) Reset() { *x = GetFeatureSubgraphsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[344] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[354] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureSubgraphsRequest) String() string { @@ -23645,8 +23419,8 @@ func (x *GetFeatureSubgraphsRequest) String() string { func (*GetFeatureSubgraphsRequest) ProtoMessage() {} func (x *GetFeatureSubgraphsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[344] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[354] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23658,7 +23432,7 @@ func (x *GetFeatureSubgraphsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureSubgraphsRequest.ProtoReflect.Descriptor instead. func (*GetFeatureSubgraphsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{344} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{354} } func (x *GetFeatureSubgraphsRequest) GetLimit() int32 { @@ -23690,22 +23464,19 @@ func (x *GetFeatureSubgraphsRequest) GetQuery() string { } type GetFeatureSubgraphsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - FeatureSubgraphs []*Subgraph `protobuf:"bytes,2,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FeatureSubgraphs []*Subgraph `protobuf:"bytes,2,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureSubgraphsResponse) Reset() { *x = GetFeatureSubgraphsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[345] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[355] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureSubgraphsResponse) String() string { @@ -23715,8 +23486,8 @@ func (x *GetFeatureSubgraphsResponse) String() string { func (*GetFeatureSubgraphsResponse) ProtoMessage() {} func (x *GetFeatureSubgraphsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[345] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[355] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23728,7 +23499,7 @@ func (x *GetFeatureSubgraphsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeatureSubgraphsResponse.ProtoReflect.Descriptor instead. func (*GetFeatureSubgraphsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{345} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{355} } func (x *GetFeatureSubgraphsResponse) GetResponse() *Response { @@ -23753,24 +23524,21 @@ func (x *GetFeatureSubgraphsResponse) GetCount() int32 { } type GetFeatureFlagsByFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` - Query *string `protobuf:"bytes,5,opt,name=query,proto3,oneof" json:"query,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + Query *string `protobuf:"bytes,5,opt,name=query,proto3,oneof" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagsByFederatedGraphRequest) Reset() { *x = GetFeatureFlagsByFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[346] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[356] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagsByFederatedGraphRequest) String() string { @@ -23780,8 +23548,8 @@ func (x *GetFeatureFlagsByFederatedGraphRequest) String() string { func (*GetFeatureFlagsByFederatedGraphRequest) ProtoMessage() {} func (x *GetFeatureFlagsByFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[346] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[356] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23793,7 +23561,7 @@ func (x *GetFeatureFlagsByFederatedGraphRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use GetFeatureFlagsByFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*GetFeatureFlagsByFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{346} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{356} } func (x *GetFeatureFlagsByFederatedGraphRequest) GetFederatedGraphName() string { @@ -23832,22 +23600,19 @@ func (x *GetFeatureFlagsByFederatedGraphRequest) GetQuery() string { } type GetFeatureFlagsByFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FeatureFlags []*FeatureFlag `protobuf:"bytes,2,rep,name=feature_flags,json=featureFlags,proto3" json:"feature_flags,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - FeatureFlags []*FeatureFlag `protobuf:"bytes,2,rep,name=feature_flags,json=featureFlags,proto3" json:"feature_flags,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagsByFederatedGraphResponse) Reset() { *x = GetFeatureFlagsByFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[347] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[357] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagsByFederatedGraphResponse) String() string { @@ -23857,8 +23622,8 @@ func (x *GetFeatureFlagsByFederatedGraphResponse) String() string { func (*GetFeatureFlagsByFederatedGraphResponse) ProtoMessage() {} func (x *GetFeatureFlagsByFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[347] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[357] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23870,7 +23635,7 @@ func (x *GetFeatureFlagsByFederatedGraphResponse) ProtoReflect() protoreflect.Me // Deprecated: Use GetFeatureFlagsByFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*GetFeatureFlagsByFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{347} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{357} } func (x *GetFeatureFlagsByFederatedGraphResponse) GetResponse() *Response { @@ -23894,23 +23659,262 @@ func (x *GetFeatureFlagsByFederatedGraphResponse) GetTotalCount() int32 { return 0 } -type GetOrganizationWebhookHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type GetFeatureFlagsInLatestCompositionByFederatedGraphRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) Reset() { + *x = GetFeatureFlagsInLatestCompositionByFederatedGraphRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[358] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) ProtoMessage() {} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[358] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFeatureFlagsInLatestCompositionByFederatedGraphRequest.ProtoReflect.Descriptor instead. +func (*GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{358} +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) GetFederatedGraphName() string { + if x != nil { + return x.FederatedGraphName + } + return "" +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +type GetFeatureFlagsInLatestCompositionByFederatedGraphResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // feature flags that are part of the latest valid composition of the federated graph + FeatureFlags []*FeatureFlag `protobuf:"bytes,2,rep,name=feature_flags,json=featureFlags,proto3" json:"feature_flags,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` - DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3" json:"date_range,omitempty"` - FilterByType *string `protobuf:"bytes,3,opt,name=filter_by_type,json=filterByType,proto3,oneof" json:"filter_by_type,omitempty"` +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) Reset() { + *x = GetFeatureFlagsInLatestCompositionByFederatedGraphResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[359] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOrganizationWebhookHistoryRequest) Reset() { - *x = GetOrganizationWebhookHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[348] +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) ProtoMessage() {} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[359] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFeatureFlagsInLatestCompositionByFederatedGraphResponse.ProtoReflect.Descriptor instead. +func (*GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{359} +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetFeatureFlagsInLatestCompositionByFederatedGraphResponse) GetFeatureFlags() []*FeatureFlag { + if x != nil { + return x.FeatureFlags + } + return nil +} + +type GetFeatureSubgraphsByFederatedGraphRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federated_graph_name,json=federatedGraphName,proto3" json:"federated_graph_name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + Query *string `protobuf:"bytes,5,opt,name=query,proto3,oneof" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) Reset() { + *x = GetFeatureSubgraphsByFederatedGraphRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[360] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFeatureSubgraphsByFederatedGraphRequest) ProtoMessage() {} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[360] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFeatureSubgraphsByFederatedGraphRequest.ProtoReflect.Descriptor instead. +func (*GetFeatureSubgraphsByFederatedGraphRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{360} +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) GetFederatedGraphName() string { + if x != nil { + return x.FederatedGraphName + } + return "" +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *GetFeatureSubgraphsByFederatedGraphRequest) GetQuery() string { + if x != nil && x.Query != nil { + return *x.Query + } + return "" +} + +type GetFeatureSubgraphsByFederatedGraphResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // all unique feature subgraphs across all feature flags of the federated graph + FeatureSubgraphs []*Subgraph `protobuf:"bytes,2,rep,name=feature_subgraphs,json=featureSubgraphs,proto3" json:"feature_subgraphs,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) Reset() { + *x = GetFeatureSubgraphsByFederatedGraphResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[361] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFeatureSubgraphsByFederatedGraphResponse) ProtoMessage() {} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[361] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFeatureSubgraphsByFederatedGraphResponse.ProtoReflect.Descriptor instead. +func (*GetFeatureSubgraphsByFederatedGraphResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{361} +} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) GetFeatureSubgraphs() []*Subgraph { + if x != nil { + return x.FeatureSubgraphs + } + return nil +} + +func (x *GetFeatureSubgraphsByFederatedGraphResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount } + return 0 +} + +type GetOrganizationWebhookHistoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3" json:"date_range,omitempty"` + FilterByType *string `protobuf:"bytes,3,opt,name=filter_by_type,json=filterByType,proto3,oneof" json:"filter_by_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOrganizationWebhookHistoryRequest) Reset() { + *x = GetOrganizationWebhookHistoryRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[362] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookHistoryRequest) String() string { @@ -23920,8 +23924,8 @@ func (x *GetOrganizationWebhookHistoryRequest) String() string { func (*GetOrganizationWebhookHistoryRequest) ProtoMessage() {} func (x *GetOrganizationWebhookHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[348] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[362] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -23933,7 +23937,7 @@ func (x *GetOrganizationWebhookHistoryRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use GetOrganizationWebhookHistoryRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookHistoryRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{348} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{362} } func (x *GetOrganizationWebhookHistoryRequest) GetPagination() *Pagination { @@ -23958,35 +23962,32 @@ func (x *GetOrganizationWebhookHistoryRequest) GetFilterByType() string { } type WebhookDelivery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt string `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - CreatedBy *string `protobuf:"bytes,3,opt,name=created_by,json=createdBy,proto3,oneof" json:"created_by,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Endpoint string `protobuf:"bytes,5,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - EventName string `protobuf:"bytes,6,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"` - Payload string `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` - RequestHeaders string `protobuf:"bytes,8,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` - ResponseHeaders *string `protobuf:"bytes,9,opt,name=response_headers,json=responseHeaders,proto3,oneof" json:"response_headers,omitempty"` - ResponseStatusCode *int32 `protobuf:"varint,10,opt,name=response_status_code,json=responseStatusCode,proto3,oneof" json:"response_status_code,omitempty"` - ResponseErrorCode *string `protobuf:"bytes,11,opt,name=response_error_code,json=responseErrorCode,proto3,oneof" json:"response_error_code,omitempty"` - ErrorMessage *string `protobuf:"bytes,12,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` - ResponseBody *string `protobuf:"bytes,13,opt,name=response_body,json=responseBody,proto3,oneof" json:"response_body,omitempty"` - RetryCount int32 `protobuf:"varint,14,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` - Duration float32 `protobuf:"fixed32,15,opt,name=duration,proto3" json:"duration,omitempty"` - IsRedelivery bool `protobuf:"varint,16,opt,name=is_redelivery,json=isRedelivery,proto3" json:"is_redelivery,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt string `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedBy *string `protobuf:"bytes,3,opt,name=created_by,json=createdBy,proto3,oneof" json:"created_by,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Endpoint string `protobuf:"bytes,5,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + EventName string `protobuf:"bytes,6,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"` + Payload string `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` + RequestHeaders string `protobuf:"bytes,8,opt,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty"` + ResponseHeaders *string `protobuf:"bytes,9,opt,name=response_headers,json=responseHeaders,proto3,oneof" json:"response_headers,omitempty"` + ResponseStatusCode *int32 `protobuf:"varint,10,opt,name=response_status_code,json=responseStatusCode,proto3,oneof" json:"response_status_code,omitempty"` + ResponseErrorCode *string `protobuf:"bytes,11,opt,name=response_error_code,json=responseErrorCode,proto3,oneof" json:"response_error_code,omitempty"` + ErrorMessage *string `protobuf:"bytes,12,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + ResponseBody *string `protobuf:"bytes,13,opt,name=response_body,json=responseBody,proto3,oneof" json:"response_body,omitempty"` + RetryCount int32 `protobuf:"varint,14,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` + Duration float32 `protobuf:"fixed32,15,opt,name=duration,proto3" json:"duration,omitempty"` + IsRedelivery bool `protobuf:"varint,16,opt,name=is_redelivery,json=isRedelivery,proto3" json:"is_redelivery,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WebhookDelivery) Reset() { *x = WebhookDelivery{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[349] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[363] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WebhookDelivery) String() string { @@ -23996,8 +23997,8 @@ func (x *WebhookDelivery) String() string { func (*WebhookDelivery) ProtoMessage() {} func (x *WebhookDelivery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[349] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[363] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24009,7 +24010,7 @@ func (x *WebhookDelivery) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookDelivery.ProtoReflect.Descriptor instead. func (*WebhookDelivery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{349} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{363} } func (x *WebhookDelivery) GetId() string { @@ -24125,22 +24126,19 @@ func (x *WebhookDelivery) GetIsRedelivery() bool { } type GetOrganizationWebhookHistoryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Deliveries []*WebhookDelivery `protobuf:"bytes,2,rep,name=deliveries,proto3" json:"deliveries,omitempty"` + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Deliveries []*WebhookDelivery `protobuf:"bytes,2,rep,name=deliveries,proto3" json:"deliveries,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookHistoryResponse) Reset() { *x = GetOrganizationWebhookHistoryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[350] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[364] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookHistoryResponse) String() string { @@ -24150,8 +24148,8 @@ func (x *GetOrganizationWebhookHistoryResponse) String() string { func (*GetOrganizationWebhookHistoryResponse) ProtoMessage() {} func (x *GetOrganizationWebhookHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[350] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[364] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24163,7 +24161,7 @@ func (x *GetOrganizationWebhookHistoryResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use GetOrganizationWebhookHistoryResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookHistoryResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{350} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{364} } func (x *GetOrganizationWebhookHistoryResponse) GetResponse() *Response { @@ -24188,20 +24186,17 @@ func (x *GetOrganizationWebhookHistoryResponse) GetTotalCount() int32 { } type RedeliverWebhookRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RedeliverWebhookRequest) Reset() { *x = RedeliverWebhookRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[351] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[365] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedeliverWebhookRequest) String() string { @@ -24211,8 +24206,8 @@ func (x *RedeliverWebhookRequest) String() string { func (*RedeliverWebhookRequest) ProtoMessage() {} func (x *RedeliverWebhookRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[351] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[365] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24224,7 +24219,7 @@ func (x *RedeliverWebhookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RedeliverWebhookRequest.ProtoReflect.Descriptor instead. func (*RedeliverWebhookRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{351} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{365} } func (x *RedeliverWebhookRequest) GetId() string { @@ -24235,20 +24230,17 @@ func (x *RedeliverWebhookRequest) GetId() string { } type RedeliverWebhookResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RedeliverWebhookResponse) Reset() { *x = RedeliverWebhookResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[352] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[366] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RedeliverWebhookResponse) String() string { @@ -24258,8 +24250,8 @@ func (x *RedeliverWebhookResponse) String() string { func (*RedeliverWebhookResponse) ProtoMessage() {} func (x *RedeliverWebhookResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[352] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[366] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24271,7 +24263,7 @@ func (x *RedeliverWebhookResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RedeliverWebhookResponse.ProtoReflect.Descriptor instead. func (*RedeliverWebhookResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{352} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{366} } func (x *RedeliverWebhookResponse) GetResponse() *Response { @@ -24282,20 +24274,17 @@ func (x *RedeliverWebhookResponse) GetResponse() *Response { } type GetWebhookDeliveryDetailsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWebhookDeliveryDetailsRequest) Reset() { *x = GetWebhookDeliveryDetailsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[353] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[367] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWebhookDeliveryDetailsRequest) String() string { @@ -24305,8 +24294,8 @@ func (x *GetWebhookDeliveryDetailsRequest) String() string { func (*GetWebhookDeliveryDetailsRequest) ProtoMessage() {} func (x *GetWebhookDeliveryDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[353] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[367] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24318,7 +24307,7 @@ func (x *GetWebhookDeliveryDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWebhookDeliveryDetailsRequest.ProtoReflect.Descriptor instead. func (*GetWebhookDeliveryDetailsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{353} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{367} } func (x *GetWebhookDeliveryDetailsRequest) GetId() string { @@ -24329,21 +24318,18 @@ func (x *GetWebhookDeliveryDetailsRequest) GetId() string { } type GetWebhookDeliveryDetailsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Delivery *WebhookDelivery `protobuf:"bytes,2,opt,name=delivery,proto3" json:"delivery,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Delivery *WebhookDelivery `protobuf:"bytes,2,opt,name=delivery,proto3" json:"delivery,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWebhookDeliveryDetailsResponse) Reset() { *x = GetWebhookDeliveryDetailsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[354] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[368] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWebhookDeliveryDetailsResponse) String() string { @@ -24353,8 +24339,8 @@ func (x *GetWebhookDeliveryDetailsResponse) String() string { func (*GetWebhookDeliveryDetailsResponse) ProtoMessage() {} func (x *GetWebhookDeliveryDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[354] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[368] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24366,7 +24352,7 @@ func (x *GetWebhookDeliveryDetailsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetWebhookDeliveryDetailsResponse.ProtoReflect.Descriptor instead. func (*GetWebhookDeliveryDetailsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{354} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{368} } func (x *GetWebhookDeliveryDetailsResponse) GetResponse() *Response { @@ -24384,22 +24370,19 @@ func (x *GetWebhookDeliveryDetailsResponse) GetDelivery() *WebhookDelivery { } type CreatePlaygroundScriptRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` unknownFields protoimpl.UnknownFields - - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePlaygroundScriptRequest) Reset() { *x = CreatePlaygroundScriptRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[355] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[369] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePlaygroundScriptRequest) String() string { @@ -24409,8 +24392,8 @@ func (x *CreatePlaygroundScriptRequest) String() string { func (*CreatePlaygroundScriptRequest) ProtoMessage() {} func (x *CreatePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[355] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[369] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24422,7 +24405,7 @@ func (x *CreatePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePlaygroundScriptRequest.ProtoReflect.Descriptor instead. func (*CreatePlaygroundScriptRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{355} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{369} } func (x *CreatePlaygroundScriptRequest) GetTitle() string { @@ -24447,20 +24430,17 @@ func (x *CreatePlaygroundScriptRequest) GetContent() string { } type CreatePlaygroundScriptResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePlaygroundScriptResponse) Reset() { *x = CreatePlaygroundScriptResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[356] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[370] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePlaygroundScriptResponse) String() string { @@ -24470,8 +24450,8 @@ func (x *CreatePlaygroundScriptResponse) String() string { func (*CreatePlaygroundScriptResponse) ProtoMessage() {} func (x *CreatePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[356] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[370] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24483,7 +24463,7 @@ func (x *CreatePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePlaygroundScriptResponse.ProtoReflect.Descriptor instead. func (*CreatePlaygroundScriptResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{356} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{370} } func (x *CreatePlaygroundScriptResponse) GetResponse() *Response { @@ -24494,20 +24474,17 @@ func (x *CreatePlaygroundScriptResponse) GetResponse() *Response { } type DeletePlaygroundScriptRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePlaygroundScriptRequest) Reset() { *x = DeletePlaygroundScriptRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[357] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[371] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePlaygroundScriptRequest) String() string { @@ -24517,8 +24494,8 @@ func (x *DeletePlaygroundScriptRequest) String() string { func (*DeletePlaygroundScriptRequest) ProtoMessage() {} func (x *DeletePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[357] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[371] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24530,7 +24507,7 @@ func (x *DeletePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePlaygroundScriptRequest.ProtoReflect.Descriptor instead. func (*DeletePlaygroundScriptRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{357} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{371} } func (x *DeletePlaygroundScriptRequest) GetId() string { @@ -24541,20 +24518,17 @@ func (x *DeletePlaygroundScriptRequest) GetId() string { } type DeletePlaygroundScriptResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePlaygroundScriptResponse) Reset() { *x = DeletePlaygroundScriptResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[358] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[372] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePlaygroundScriptResponse) String() string { @@ -24564,8 +24538,8 @@ func (x *DeletePlaygroundScriptResponse) String() string { func (*DeletePlaygroundScriptResponse) ProtoMessage() {} func (x *DeletePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[358] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[372] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24577,7 +24551,7 @@ func (x *DeletePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePlaygroundScriptResponse.ProtoReflect.Descriptor instead. func (*DeletePlaygroundScriptResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{358} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{372} } func (x *DeletePlaygroundScriptResponse) GetResponse() *Response { @@ -24588,22 +24562,19 @@ func (x *DeletePlaygroundScriptResponse) GetResponse() *Response { } type UpdatePlaygroundScriptRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdatePlaygroundScriptRequest) Reset() { *x = UpdatePlaygroundScriptRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[359] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[373] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdatePlaygroundScriptRequest) String() string { @@ -24613,8 +24584,8 @@ func (x *UpdatePlaygroundScriptRequest) String() string { func (*UpdatePlaygroundScriptRequest) ProtoMessage() {} func (x *UpdatePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[359] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[373] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24626,7 +24597,7 @@ func (x *UpdatePlaygroundScriptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePlaygroundScriptRequest.ProtoReflect.Descriptor instead. func (*UpdatePlaygroundScriptRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{359} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{373} } func (x *UpdatePlaygroundScriptRequest) GetId() string { @@ -24651,20 +24622,17 @@ func (x *UpdatePlaygroundScriptRequest) GetContent() string { } type UpdatePlaygroundScriptResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdatePlaygroundScriptResponse) Reset() { *x = UpdatePlaygroundScriptResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[360] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[374] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdatePlaygroundScriptResponse) String() string { @@ -24674,8 +24642,8 @@ func (x *UpdatePlaygroundScriptResponse) String() string { func (*UpdatePlaygroundScriptResponse) ProtoMessage() {} func (x *UpdatePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[360] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[374] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24687,7 +24655,7 @@ func (x *UpdatePlaygroundScriptResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePlaygroundScriptResponse.ProtoReflect.Descriptor instead. func (*UpdatePlaygroundScriptResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{360} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{374} } func (x *UpdatePlaygroundScriptResponse) GetResponse() *Response { @@ -24698,20 +24666,17 @@ func (x *UpdatePlaygroundScriptResponse) GetResponse() *Response { } type GetPlaygroundScriptsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPlaygroundScriptsRequest) Reset() { *x = GetPlaygroundScriptsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[361] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[375] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPlaygroundScriptsRequest) String() string { @@ -24721,8 +24686,8 @@ func (x *GetPlaygroundScriptsRequest) String() string { func (*GetPlaygroundScriptsRequest) ProtoMessage() {} func (x *GetPlaygroundScriptsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[361] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[375] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24734,7 +24699,7 @@ func (x *GetPlaygroundScriptsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPlaygroundScriptsRequest.ProtoReflect.Descriptor instead. func (*GetPlaygroundScriptsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{361} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{375} } func (x *GetPlaygroundScriptsRequest) GetType() string { @@ -24745,23 +24710,20 @@ func (x *GetPlaygroundScriptsRequest) GetType() string { } type PlaygroundScript struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PlaygroundScript) Reset() { *x = PlaygroundScript{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[362] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[376] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PlaygroundScript) String() string { @@ -24771,8 +24733,8 @@ func (x *PlaygroundScript) String() string { func (*PlaygroundScript) ProtoMessage() {} func (x *PlaygroundScript) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[362] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[376] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24784,7 +24746,7 @@ func (x *PlaygroundScript) ProtoReflect() protoreflect.Message { // Deprecated: Use PlaygroundScript.ProtoReflect.Descriptor instead. func (*PlaygroundScript) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{362} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{376} } func (x *PlaygroundScript) GetId() string { @@ -24816,21 +24778,18 @@ func (x *PlaygroundScript) GetContent() string { } type GetPlaygroundScriptsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Scripts []*PlaygroundScript `protobuf:"bytes,2,rep,name=scripts,proto3" json:"scripts,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Scripts []*PlaygroundScript `protobuf:"bytes,2,rep,name=scripts,proto3" json:"scripts,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPlaygroundScriptsResponse) Reset() { *x = GetPlaygroundScriptsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[363] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[377] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPlaygroundScriptsResponse) String() string { @@ -24840,8 +24799,8 @@ func (x *GetPlaygroundScriptsResponse) String() string { func (*GetPlaygroundScriptsResponse) ProtoMessage() {} func (x *GetPlaygroundScriptsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[363] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[377] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24853,7 +24812,7 @@ func (x *GetPlaygroundScriptsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPlaygroundScriptsResponse.ProtoReflect.Descriptor instead. func (*GetPlaygroundScriptsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{363} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{377} } func (x *GetPlaygroundScriptsResponse) GetResponse() *Response { @@ -24871,21 +24830,18 @@ func (x *GetPlaygroundScriptsResponse) GetScripts() []*PlaygroundScript { } type GetFederatedGraphByIdRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - IncludeMetrics bool `protobuf:"varint,2,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + IncludeMetrics bool `protobuf:"varint,2,opt,name=includeMetrics,proto3" json:"includeMetrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphByIdRequest) Reset() { *x = GetFederatedGraphByIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[364] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[378] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphByIdRequest) String() string { @@ -24895,8 +24851,8 @@ func (x *GetFederatedGraphByIdRequest) String() string { func (*GetFederatedGraphByIdRequest) ProtoMessage() {} func (x *GetFederatedGraphByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[364] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[378] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24908,7 +24864,7 @@ func (x *GetFederatedGraphByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphByIdRequest.ProtoReflect.Descriptor instead. func (*GetFederatedGraphByIdRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{364} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{378} } func (x *GetFederatedGraphByIdRequest) GetId() string { @@ -24926,27 +24882,24 @@ func (x *GetFederatedGraphByIdRequest) GetIncludeMetrics() bool { } type GetFederatedGraphByIdResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graph *FederatedGraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - GraphRequestToken string `protobuf:"bytes,4,opt,name=graphRequestToken,proto3" json:"graphRequestToken,omitempty"` - FeatureFlagsInLatestValidComposition []*FeatureFlag `protobuf:"bytes,5,rep,name=featureFlagsInLatestValidComposition,proto3" json:"featureFlagsInLatestValidComposition,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graph *FederatedGraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + GraphRequestToken string `protobuf:"bytes,4,opt,name=graphRequestToken,proto3" json:"graphRequestToken,omitempty"` + FeatureFlagsInLatestValidComposition []*FeatureFlag `protobuf:"bytes,5,rep,name=featureFlagsInLatestValidComposition,proto3" json:"featureFlagsInLatestValidComposition,omitempty"` // includes all the feature subgraphs that are part of the federated graph; // even the ones that are not part of the latest composition FeatureSubgraphs []*Subgraph `protobuf:"bytes,6,rep,name=featureSubgraphs,proto3" json:"featureSubgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFederatedGraphByIdResponse) Reset() { *x = GetFederatedGraphByIdResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[365] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[379] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFederatedGraphByIdResponse) String() string { @@ -24956,8 +24909,8 @@ func (x *GetFederatedGraphByIdResponse) String() string { func (*GetFederatedGraphByIdResponse) ProtoMessage() {} func (x *GetFederatedGraphByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[365] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[379] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -24969,7 +24922,7 @@ func (x *GetFederatedGraphByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFederatedGraphByIdResponse.ProtoReflect.Descriptor instead. func (*GetFederatedGraphByIdResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{365} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{379} } func (x *GetFederatedGraphByIdResponse) GetResponse() *Response { @@ -25015,20 +24968,17 @@ func (x *GetFederatedGraphByIdResponse) GetFeatureSubgraphs() []*Subgraph { } type GetSubgraphByIdRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphByIdRequest) Reset() { *x = GetSubgraphByIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[366] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[380] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphByIdRequest) String() string { @@ -25038,8 +24988,8 @@ func (x *GetSubgraphByIdRequest) String() string { func (*GetSubgraphByIdRequest) ProtoMessage() {} func (x *GetSubgraphByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[366] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[380] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25051,7 +25001,7 @@ func (x *GetSubgraphByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphByIdRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphByIdRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{366} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{380} } func (x *GetSubgraphByIdRequest) GetId() string { @@ -25062,22 +25012,19 @@ func (x *GetSubgraphByIdRequest) GetId() string { } type GetSubgraphByIdResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Graph *Subgraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` + Members []*SubgraphMember `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Graph *Subgraph `protobuf:"bytes,2,opt,name=graph,proto3" json:"graph,omitempty"` - Members []*SubgraphMember `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphByIdResponse) Reset() { *x = GetSubgraphByIdResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[367] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[381] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphByIdResponse) String() string { @@ -25087,8 +25034,8 @@ func (x *GetSubgraphByIdResponse) String() string { func (*GetSubgraphByIdResponse) ProtoMessage() {} func (x *GetSubgraphByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[367] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[381] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25100,7 +25047,7 @@ func (x *GetSubgraphByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubgraphByIdResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphByIdResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{367} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{381} } func (x *GetSubgraphByIdResponse) GetResponse() *Response { @@ -25125,21 +25072,18 @@ func (x *GetSubgraphByIdResponse) GetMembers() []*SubgraphMember { } type GetNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceRequest) Reset() { *x = GetNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[368] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[382] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceRequest) String() string { @@ -25149,8 +25093,8 @@ func (x *GetNamespaceRequest) String() string { func (*GetNamespaceRequest) ProtoMessage() {} func (x *GetNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[368] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[382] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25162,7 +25106,7 @@ func (x *GetNamespaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespaceRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{368} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{382} } func (x *GetNamespaceRequest) GetName() string { @@ -25180,21 +25124,18 @@ func (x *GetNamespaceRequest) GetId() string { } type GetNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Namespace *Namespace `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Namespace *Namespace `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceResponse) Reset() { *x = GetNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[369] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[383] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceResponse) String() string { @@ -25204,8 +25145,8 @@ func (x *GetNamespaceResponse) String() string { func (*GetNamespaceResponse) ProtoMessage() {} func (x *GetNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[369] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[383] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25217,7 +25158,7 @@ func (x *GetNamespaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNamespaceResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{369} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{383} } func (x *GetNamespaceResponse) GetResponse() *Response { @@ -25235,22 +25176,19 @@ func (x *GetNamespaceResponse) GetNamespace() *Namespace { } type WorkspaceNamespace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Graphs []*WorkspaceFederatedGraph `protobuf:"bytes,3,rep,name=graphs,proto3" json:"graphs,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Graphs []*WorkspaceFederatedGraph `protobuf:"bytes,3,rep,name=graphs,proto3" json:"graphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkspaceNamespace) Reset() { *x = WorkspaceNamespace{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[370] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[384] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkspaceNamespace) String() string { @@ -25260,8 +25198,8 @@ func (x *WorkspaceNamespace) String() string { func (*WorkspaceNamespace) ProtoMessage() {} func (x *WorkspaceNamespace) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[370] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[384] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25273,7 +25211,7 @@ func (x *WorkspaceNamespace) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceNamespace.ProtoReflect.Descriptor instead. func (*WorkspaceNamespace) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{370} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{384} } func (x *WorkspaceNamespace) GetId() string { @@ -25298,24 +25236,21 @@ func (x *WorkspaceNamespace) GetGraphs() []*WorkspaceFederatedGraph { } type WorkspaceFederatedGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TargetId string `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + IsContract bool `protobuf:"varint,4,opt,name=isContract,proto3" json:"isContract,omitempty"` + Subgraphs []*WorkspaceSubgraph `protobuf:"bytes,5,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - TargetId string `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - IsContract bool `protobuf:"varint,4,opt,name=isContract,proto3" json:"isContract,omitempty"` - Subgraphs []*WorkspaceSubgraph `protobuf:"bytes,5,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkspaceFederatedGraph) Reset() { *x = WorkspaceFederatedGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[371] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[385] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkspaceFederatedGraph) String() string { @@ -25325,8 +25260,8 @@ func (x *WorkspaceFederatedGraph) String() string { func (*WorkspaceFederatedGraph) ProtoMessage() {} func (x *WorkspaceFederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[371] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[385] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25338,7 +25273,7 @@ func (x *WorkspaceFederatedGraph) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceFederatedGraph.ProtoReflect.Descriptor instead. func (*WorkspaceFederatedGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{371} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{385} } func (x *WorkspaceFederatedGraph) GetId() string { @@ -25377,22 +25312,19 @@ func (x *WorkspaceFederatedGraph) GetSubgraphs() []*WorkspaceSubgraph { } type WorkspaceSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TargetId string `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - TargetId string `protobuf:"bytes,2,opt,name=targetId,proto3" json:"targetId,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkspaceSubgraph) Reset() { *x = WorkspaceSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[372] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[386] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WorkspaceSubgraph) String() string { @@ -25402,8 +25334,8 @@ func (x *WorkspaceSubgraph) String() string { func (*WorkspaceSubgraph) ProtoMessage() {} func (x *WorkspaceSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[372] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[386] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25415,7 +25347,7 @@ func (x *WorkspaceSubgraph) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceSubgraph.ProtoReflect.Descriptor instead. func (*WorkspaceSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{372} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{386} } func (x *WorkspaceSubgraph) GetId() string { @@ -25440,18 +25372,16 @@ func (x *WorkspaceSubgraph) GetName() string { } type GetWorkspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetWorkspaceRequest) Reset() { *x = GetWorkspaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[373] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[387] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWorkspaceRequest) String() string { @@ -25461,8 +25391,8 @@ func (x *GetWorkspaceRequest) String() string { func (*GetWorkspaceRequest) ProtoMessage() {} func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[373] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[387] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25474,25 +25404,22 @@ func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkspaceRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{373} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{387} } type GetWorkspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Namespaces []*WorkspaceNamespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Namespaces []*WorkspaceNamespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWorkspaceResponse) Reset() { *x = GetWorkspaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[374] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[388] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetWorkspaceResponse) String() string { @@ -25502,8 +25429,8 @@ func (x *GetWorkspaceResponse) String() string { func (*GetWorkspaceResponse) ProtoMessage() {} func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[374] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[388] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25515,7 +25442,7 @@ func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkspaceResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{374} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{388} } func (x *GetWorkspaceResponse) GetResponse() *Response { @@ -25533,24 +25460,21 @@ func (x *GetWorkspaceResponse) GetNamespaces() []*WorkspaceNamespace { } type PushCacheWarmerOperationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - OperationContent string `protobuf:"bytes,2,opt,name=operationContent,proto3" json:"operationContent,omitempty"` - OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` - OperationPersistedId string `protobuf:"bytes,4,opt,name=operationPersistedId,proto3" json:"operationPersistedId,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + OperationContent string `protobuf:"bytes,2,opt,name=operationContent,proto3" json:"operationContent,omitempty"` + OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` + OperationPersistedId string `protobuf:"bytes,4,opt,name=operationPersistedId,proto3" json:"operationPersistedId,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PushCacheWarmerOperationRequest) Reset() { *x = PushCacheWarmerOperationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[375] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[389] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PushCacheWarmerOperationRequest) String() string { @@ -25560,8 +25484,8 @@ func (x *PushCacheWarmerOperationRequest) String() string { func (*PushCacheWarmerOperationRequest) ProtoMessage() {} func (x *PushCacheWarmerOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[375] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[389] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25573,7 +25497,7 @@ func (x *PushCacheWarmerOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PushCacheWarmerOperationRequest.ProtoReflect.Descriptor instead. func (*PushCacheWarmerOperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{375} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{389} } func (x *PushCacheWarmerOperationRequest) GetFederatedGraphName() string { @@ -25612,20 +25536,17 @@ func (x *PushCacheWarmerOperationRequest) GetNamespace() string { } type PushCacheWarmerOperationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PushCacheWarmerOperationResponse) Reset() { *x = PushCacheWarmerOperationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[376] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[390] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PushCacheWarmerOperationResponse) String() string { @@ -25635,8 +25556,8 @@ func (x *PushCacheWarmerOperationResponse) String() string { func (*PushCacheWarmerOperationResponse) ProtoMessage() {} func (x *PushCacheWarmerOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[376] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[390] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25648,7 +25569,7 @@ func (x *PushCacheWarmerOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PushCacheWarmerOperationResponse.ProtoReflect.Descriptor instead. func (*PushCacheWarmerOperationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{376} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{390} } func (x *PushCacheWarmerOperationResponse) GetResponse() *Response { @@ -25659,23 +25580,20 @@ func (x *PushCacheWarmerOperationResponse) GetResponse() *Response { } type GetCacheWarmerOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCacheWarmerOperationsRequest) Reset() { *x = GetCacheWarmerOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[377] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[391] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCacheWarmerOperationsRequest) String() string { @@ -25685,8 +25603,8 @@ func (x *GetCacheWarmerOperationsRequest) String() string { func (*GetCacheWarmerOperationsRequest) ProtoMessage() {} func (x *GetCacheWarmerOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[377] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[391] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25698,7 +25616,7 @@ func (x *GetCacheWarmerOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCacheWarmerOperationsRequest.ProtoReflect.Descriptor instead. func (*GetCacheWarmerOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{377} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{391} } func (x *GetCacheWarmerOperationsRequest) GetFederatedGraphName() string { @@ -25730,30 +25648,27 @@ func (x *GetCacheWarmerOperationsRequest) GetOffset() int32 { } type CacheWarmerOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OperationContent string `protobuf:"bytes,2,opt,name=operationContent,proto3" json:"operationContent,omitempty"` - OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` - OperationPersistedId string `protobuf:"bytes,4,opt,name=operationPersistedId,proto3" json:"operationPersistedId,omitempty"` - OperationHash string `protobuf:"bytes,5,opt,name=operationHash,proto3" json:"operationHash,omitempty"` - ClientName string `protobuf:"bytes,6,opt,name=clientName,proto3" json:"clientName,omitempty"` - ClientVersion string `protobuf:"bytes,7,opt,name=clientVersion,proto3" json:"clientVersion,omitempty"` - PlanningTime float32 `protobuf:"fixed32,8,opt,name=planningTime,proto3" json:"planningTime,omitempty"` - IsManuallyAdded bool `protobuf:"varint,9,opt,name=isManuallyAdded,proto3" json:"isManuallyAdded,omitempty"` - CreatedAt string `protobuf:"bytes,10,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - CreatedBy string `protobuf:"bytes,11,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OperationContent string `protobuf:"bytes,2,opt,name=operationContent,proto3" json:"operationContent,omitempty"` + OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` + OperationPersistedId string `protobuf:"bytes,4,opt,name=operationPersistedId,proto3" json:"operationPersistedId,omitempty"` + OperationHash string `protobuf:"bytes,5,opt,name=operationHash,proto3" json:"operationHash,omitempty"` + ClientName string `protobuf:"bytes,6,opt,name=clientName,proto3" json:"clientName,omitempty"` + ClientVersion string `protobuf:"bytes,7,opt,name=clientVersion,proto3" json:"clientVersion,omitempty"` + PlanningTime float32 `protobuf:"fixed32,8,opt,name=planningTime,proto3" json:"planningTime,omitempty"` + IsManuallyAdded bool `protobuf:"varint,9,opt,name=isManuallyAdded,proto3" json:"isManuallyAdded,omitempty"` + CreatedAt string `protobuf:"bytes,10,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + CreatedBy string `protobuf:"bytes,11,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CacheWarmerOperation) Reset() { *x = CacheWarmerOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[378] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[392] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CacheWarmerOperation) String() string { @@ -25763,8 +25678,8 @@ func (x *CacheWarmerOperation) String() string { func (*CacheWarmerOperation) ProtoMessage() {} func (x *CacheWarmerOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[378] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[392] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25776,7 +25691,7 @@ func (x *CacheWarmerOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperation.ProtoReflect.Descriptor instead. func (*CacheWarmerOperation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{378} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{392} } func (x *CacheWarmerOperation) GetId() string { @@ -25857,23 +25772,20 @@ func (x *CacheWarmerOperation) GetCreatedBy() string { } type GetCacheWarmerOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Operations []*CacheWarmerOperation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` IsCacheWarmerEnabled bool `protobuf:"varint,4,opt,name=isCacheWarmerEnabled,proto3" json:"isCacheWarmerEnabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCacheWarmerOperationsResponse) Reset() { *x = GetCacheWarmerOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[379] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[393] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCacheWarmerOperationsResponse) String() string { @@ -25883,8 +25795,8 @@ func (x *GetCacheWarmerOperationsResponse) String() string { func (*GetCacheWarmerOperationsResponse) ProtoMessage() {} func (x *GetCacheWarmerOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[379] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[393] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25896,7 +25808,7 @@ func (x *GetCacheWarmerOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCacheWarmerOperationsResponse.ProtoReflect.Descriptor instead. func (*GetCacheWarmerOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{379} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{393} } func (x *GetCacheWarmerOperationsResponse) GetResponse() *Response { @@ -25928,21 +25840,18 @@ func (x *GetCacheWarmerOperationsResponse) GetIsCacheWarmerEnabled() bool { } type ComputeCacheWarmerOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ComputeCacheWarmerOperationsRequest) Reset() { *x = ComputeCacheWarmerOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[380] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[394] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ComputeCacheWarmerOperationsRequest) String() string { @@ -25952,8 +25861,8 @@ func (x *ComputeCacheWarmerOperationsRequest) String() string { func (*ComputeCacheWarmerOperationsRequest) ProtoMessage() {} func (x *ComputeCacheWarmerOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[380] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[394] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -25965,7 +25874,7 @@ func (x *ComputeCacheWarmerOperationsRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ComputeCacheWarmerOperationsRequest.ProtoReflect.Descriptor instead. func (*ComputeCacheWarmerOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{380} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{394} } func (x *ComputeCacheWarmerOperationsRequest) GetFederatedGraphName() string { @@ -25983,20 +25892,17 @@ func (x *ComputeCacheWarmerOperationsRequest) GetNamespace() string { } type ComputeCacheWarmerOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ComputeCacheWarmerOperationsResponse) Reset() { *x = ComputeCacheWarmerOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[381] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[395] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ComputeCacheWarmerOperationsResponse) String() string { @@ -26006,8 +25912,8 @@ func (x *ComputeCacheWarmerOperationsResponse) String() string { func (*ComputeCacheWarmerOperationsResponse) ProtoMessage() {} func (x *ComputeCacheWarmerOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[381] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[395] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26019,7 +25925,7 @@ func (x *ComputeCacheWarmerOperationsResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ComputeCacheWarmerOperationsResponse.ProtoReflect.Descriptor instead. func (*ComputeCacheWarmerOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{381} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{395} } func (x *ComputeCacheWarmerOperationsResponse) GetResponse() *Response { @@ -26030,22 +25936,19 @@ func (x *ComputeCacheWarmerOperationsResponse) GetResponse() *Response { } type ConfigureCacheWarmerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - EnableCacheWarmer bool `protobuf:"varint,2,opt,name=enableCacheWarmer,proto3" json:"enableCacheWarmer,omitempty"` - MaxOperationsCount int32 `protobuf:"varint,3,opt,name=maxOperationsCount,proto3" json:"maxOperationsCount,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + EnableCacheWarmer bool `protobuf:"varint,2,opt,name=enableCacheWarmer,proto3" json:"enableCacheWarmer,omitempty"` + MaxOperationsCount int32 `protobuf:"varint,3,opt,name=maxOperationsCount,proto3" json:"maxOperationsCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConfigureCacheWarmerRequest) Reset() { *x = ConfigureCacheWarmerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[382] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[396] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureCacheWarmerRequest) String() string { @@ -26055,8 +25958,8 @@ func (x *ConfigureCacheWarmerRequest) String() string { func (*ConfigureCacheWarmerRequest) ProtoMessage() {} func (x *ConfigureCacheWarmerRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[382] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[396] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26068,7 +25971,7 @@ func (x *ConfigureCacheWarmerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureCacheWarmerRequest.ProtoReflect.Descriptor instead. func (*ConfigureCacheWarmerRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{382} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{396} } func (x *ConfigureCacheWarmerRequest) GetNamespace() string { @@ -26093,20 +25996,17 @@ func (x *ConfigureCacheWarmerRequest) GetMaxOperationsCount() int32 { } type ConfigureCacheWarmerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureCacheWarmerResponse) Reset() { *x = ConfigureCacheWarmerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[383] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[397] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureCacheWarmerResponse) String() string { @@ -26116,8 +26016,8 @@ func (x *ConfigureCacheWarmerResponse) String() string { func (*ConfigureCacheWarmerResponse) ProtoMessage() {} func (x *ConfigureCacheWarmerResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[383] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[397] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26129,7 +26029,7 @@ func (x *ConfigureCacheWarmerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureCacheWarmerResponse.ProtoReflect.Descriptor instead. func (*ConfigureCacheWarmerResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{383} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{397} } func (x *ConfigureCacheWarmerResponse) GetResponse() *Response { @@ -26140,20 +26040,17 @@ func (x *ConfigureCacheWarmerResponse) GetResponse() *Response { } type GetCacheWarmerConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCacheWarmerConfigRequest) Reset() { *x = GetCacheWarmerConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[384] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[398] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCacheWarmerConfigRequest) String() string { @@ -26163,8 +26060,8 @@ func (x *GetCacheWarmerConfigRequest) String() string { func (*GetCacheWarmerConfigRequest) ProtoMessage() {} func (x *GetCacheWarmerConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[384] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[398] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26176,7 +26073,7 @@ func (x *GetCacheWarmerConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCacheWarmerConfigRequest.ProtoReflect.Descriptor instead. func (*GetCacheWarmerConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{384} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{398} } func (x *GetCacheWarmerConfigRequest) GetNamespace() string { @@ -26187,22 +26084,19 @@ func (x *GetCacheWarmerConfigRequest) GetNamespace() string { } type GetCacheWarmerConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - IsCacheWarmerEnabled bool `protobuf:"varint,2,opt,name=isCacheWarmerEnabled,proto3" json:"isCacheWarmerEnabled,omitempty"` - MaxOperationsCount int32 `protobuf:"varint,3,opt,name=maxOperationsCount,proto3" json:"maxOperationsCount,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + IsCacheWarmerEnabled bool `protobuf:"varint,2,opt,name=isCacheWarmerEnabled,proto3" json:"isCacheWarmerEnabled,omitempty"` + MaxOperationsCount int32 `protobuf:"varint,3,opt,name=maxOperationsCount,proto3" json:"maxOperationsCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCacheWarmerConfigResponse) Reset() { *x = GetCacheWarmerConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[385] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[399] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCacheWarmerConfigResponse) String() string { @@ -26212,8 +26106,8 @@ func (x *GetCacheWarmerConfigResponse) String() string { func (*GetCacheWarmerConfigResponse) ProtoMessage() {} func (x *GetCacheWarmerConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[385] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[399] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26225,7 +26119,7 @@ func (x *GetCacheWarmerConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCacheWarmerConfigResponse.ProtoReflect.Descriptor instead. func (*GetCacheWarmerConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{385} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{399} } func (x *GetCacheWarmerConfigResponse) GetResponse() *Response { @@ -26250,20 +26144,17 @@ func (x *GetCacheWarmerConfigResponse) GetMaxOperationsCount() int32 { } type GetSubgraphCheckExtensionsConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphCheckExtensionsConfigRequest) Reset() { *x = GetSubgraphCheckExtensionsConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[386] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[400] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphCheckExtensionsConfigRequest) String() string { @@ -26273,8 +26164,8 @@ func (x *GetSubgraphCheckExtensionsConfigRequest) String() string { func (*GetSubgraphCheckExtensionsConfigRequest) ProtoMessage() {} func (x *GetSubgraphCheckExtensionsConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[386] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[400] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26286,7 +26177,7 @@ func (x *GetSubgraphCheckExtensionsConfigRequest) ProtoReflect() protoreflect.Me // Deprecated: Use GetSubgraphCheckExtensionsConfigRequest.ProtoReflect.Descriptor instead. func (*GetSubgraphCheckExtensionsConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{386} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{400} } func (x *GetSubgraphCheckExtensionsConfigRequest) GetNamespace() string { @@ -26297,30 +26188,27 @@ func (x *GetSubgraphCheckExtensionsConfigRequest) GetNamespace() string { } type GetSubgraphCheckExtensionsConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - IsEnabledForNamespace bool `protobuf:"varint,2,opt,name=isEnabledForNamespace,proto3" json:"isEnabledForNamespace,omitempty"` - IsLintingEnabledForNamespace bool `protobuf:"varint,3,opt,name=isLintingEnabledForNamespace,proto3" json:"isLintingEnabledForNamespace,omitempty"` - IsGraphPruningEnabledForNamespace bool `protobuf:"varint,4,opt,name=isGraphPruningEnabledForNamespace,proto3" json:"isGraphPruningEnabledForNamespace,omitempty"` - Endpoint string `protobuf:"bytes,5,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - IsSecretKeyAssigned bool `protobuf:"varint,6,opt,name=isSecretKeyAssigned,proto3" json:"isSecretKeyAssigned,omitempty"` - IncludeComposedSdl bool `protobuf:"varint,7,opt,name=includeComposedSdl,proto3" json:"includeComposedSdl,omitempty"` - IncludeLintingIssues bool `protobuf:"varint,8,opt,name=includeLintingIssues,proto3" json:"includeLintingIssues,omitempty"` - IncludePruningIssues bool `protobuf:"varint,9,opt,name=includePruningIssues,proto3" json:"includePruningIssues,omitempty"` - IncludeSchemaChanges bool `protobuf:"varint,10,opt,name=includeSchemaChanges,proto3" json:"includeSchemaChanges,omitempty"` - IncludeAffectedOperations bool `protobuf:"varint,11,opt,name=includeAffectedOperations,proto3" json:"includeAffectedOperations,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + IsEnabledForNamespace bool `protobuf:"varint,2,opt,name=isEnabledForNamespace,proto3" json:"isEnabledForNamespace,omitempty"` + IsLintingEnabledForNamespace bool `protobuf:"varint,3,opt,name=isLintingEnabledForNamespace,proto3" json:"isLintingEnabledForNamespace,omitempty"` + IsGraphPruningEnabledForNamespace bool `protobuf:"varint,4,opt,name=isGraphPruningEnabledForNamespace,proto3" json:"isGraphPruningEnabledForNamespace,omitempty"` + Endpoint string `protobuf:"bytes,5,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + IsSecretKeyAssigned bool `protobuf:"varint,6,opt,name=isSecretKeyAssigned,proto3" json:"isSecretKeyAssigned,omitempty"` + IncludeComposedSdl bool `protobuf:"varint,7,opt,name=includeComposedSdl,proto3" json:"includeComposedSdl,omitempty"` + IncludeLintingIssues bool `protobuf:"varint,8,opt,name=includeLintingIssues,proto3" json:"includeLintingIssues,omitempty"` + IncludePruningIssues bool `protobuf:"varint,9,opt,name=includePruningIssues,proto3" json:"includePruningIssues,omitempty"` + IncludeSchemaChanges bool `protobuf:"varint,10,opt,name=includeSchemaChanges,proto3" json:"includeSchemaChanges,omitempty"` + IncludeAffectedOperations bool `protobuf:"varint,11,opt,name=includeAffectedOperations,proto3" json:"includeAffectedOperations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSubgraphCheckExtensionsConfigResponse) Reset() { *x = GetSubgraphCheckExtensionsConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[387] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[401] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphCheckExtensionsConfigResponse) String() string { @@ -26330,8 +26218,8 @@ func (x *GetSubgraphCheckExtensionsConfigResponse) String() string { func (*GetSubgraphCheckExtensionsConfigResponse) ProtoMessage() {} func (x *GetSubgraphCheckExtensionsConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[387] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[401] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26343,7 +26231,7 @@ func (x *GetSubgraphCheckExtensionsConfigResponse) ProtoReflect() protoreflect.M // Deprecated: Use GetSubgraphCheckExtensionsConfigResponse.ProtoReflect.Descriptor instead. func (*GetSubgraphCheckExtensionsConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{387} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{401} } func (x *GetSubgraphCheckExtensionsConfigResponse) GetResponse() *Response { @@ -26424,28 +26312,25 @@ func (x *GetSubgraphCheckExtensionsConfigResponse) GetIncludeAffectedOperations( } type ConfigureSubgraphCheckExtensionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - EnableSubgraphCheckExtensions bool `protobuf:"varint,2,opt,name=enableSubgraphCheckExtensions,proto3" json:"enableSubgraphCheckExtensions,omitempty"` - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - SecretKey *string `protobuf:"bytes,4,opt,name=secretKey,proto3,oneof" json:"secretKey,omitempty"` - IncludeComposedSdl bool `protobuf:"varint,5,opt,name=includeComposedSdl,proto3" json:"includeComposedSdl,omitempty"` - IncludeLintingIssues bool `protobuf:"varint,6,opt,name=includeLintingIssues,proto3" json:"includeLintingIssues,omitempty"` - IncludePruningIssues bool `protobuf:"varint,7,opt,name=includePruningIssues,proto3" json:"includePruningIssues,omitempty"` - IncludeSchemaChanges bool `protobuf:"varint,8,opt,name=includeSchemaChanges,proto3" json:"includeSchemaChanges,omitempty"` - IncludeAffectedOperations bool `protobuf:"varint,9,opt,name=includeAffectedOperations,proto3" json:"includeAffectedOperations,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + EnableSubgraphCheckExtensions bool `protobuf:"varint,2,opt,name=enableSubgraphCheckExtensions,proto3" json:"enableSubgraphCheckExtensions,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + SecretKey *string `protobuf:"bytes,4,opt,name=secretKey,proto3,oneof" json:"secretKey,omitempty"` + IncludeComposedSdl bool `protobuf:"varint,5,opt,name=includeComposedSdl,proto3" json:"includeComposedSdl,omitempty"` + IncludeLintingIssues bool `protobuf:"varint,6,opt,name=includeLintingIssues,proto3" json:"includeLintingIssues,omitempty"` + IncludePruningIssues bool `protobuf:"varint,7,opt,name=includePruningIssues,proto3" json:"includePruningIssues,omitempty"` + IncludeSchemaChanges bool `protobuf:"varint,8,opt,name=includeSchemaChanges,proto3" json:"includeSchemaChanges,omitempty"` + IncludeAffectedOperations bool `protobuf:"varint,9,opt,name=includeAffectedOperations,proto3" json:"includeAffectedOperations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConfigureSubgraphCheckExtensionsRequest) Reset() { *x = ConfigureSubgraphCheckExtensionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[388] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[402] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureSubgraphCheckExtensionsRequest) String() string { @@ -26455,8 +26340,8 @@ func (x *ConfigureSubgraphCheckExtensionsRequest) String() string { func (*ConfigureSubgraphCheckExtensionsRequest) ProtoMessage() {} func (x *ConfigureSubgraphCheckExtensionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[388] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[402] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26468,7 +26353,7 @@ func (x *ConfigureSubgraphCheckExtensionsRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ConfigureSubgraphCheckExtensionsRequest.ProtoReflect.Descriptor instead. func (*ConfigureSubgraphCheckExtensionsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{388} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{402} } func (x *ConfigureSubgraphCheckExtensionsRequest) GetNamespace() string { @@ -26535,20 +26420,17 @@ func (x *ConfigureSubgraphCheckExtensionsRequest) GetIncludeAffectedOperations() } type ConfigureSubgraphCheckExtensionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureSubgraphCheckExtensionsResponse) Reset() { *x = ConfigureSubgraphCheckExtensionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[389] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[403] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureSubgraphCheckExtensionsResponse) String() string { @@ -26558,8 +26440,8 @@ func (x *ConfigureSubgraphCheckExtensionsResponse) String() string { func (*ConfigureSubgraphCheckExtensionsResponse) ProtoMessage() {} func (x *ConfigureSubgraphCheckExtensionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[389] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[403] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26571,7 +26453,7 @@ func (x *ConfigureSubgraphCheckExtensionsResponse) ProtoReflect() protoreflect.M // Deprecated: Use ConfigureSubgraphCheckExtensionsResponse.ProtoReflect.Descriptor instead. func (*ConfigureSubgraphCheckExtensionsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{389} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{403} } func (x *ConfigureSubgraphCheckExtensionsResponse) GetResponse() *Response { @@ -26582,22 +26464,19 @@ func (x *ConfigureSubgraphCheckExtensionsResponse) GetResponse() *Response { } type DeleteCacheWarmerOperationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCacheWarmerOperationRequest) Reset() { *x = DeleteCacheWarmerOperationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[390] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCacheWarmerOperationRequest) String() string { @@ -26607,8 +26486,8 @@ func (x *DeleteCacheWarmerOperationRequest) String() string { func (*DeleteCacheWarmerOperationRequest) ProtoMessage() {} func (x *DeleteCacheWarmerOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[390] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26620,7 +26499,7 @@ func (x *DeleteCacheWarmerOperationRequest) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteCacheWarmerOperationRequest.ProtoReflect.Descriptor instead. func (*DeleteCacheWarmerOperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{390} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{404} } func (x *DeleteCacheWarmerOperationRequest) GetId() string { @@ -26645,20 +26524,17 @@ func (x *DeleteCacheWarmerOperationRequest) GetNamespace() string { } type DeleteCacheWarmerOperationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteCacheWarmerOperationResponse) Reset() { *x = DeleteCacheWarmerOperationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[391] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteCacheWarmerOperationResponse) String() string { @@ -26668,8 +26544,8 @@ func (x *DeleteCacheWarmerOperationResponse) String() string { func (*DeleteCacheWarmerOperationResponse) ProtoMessage() {} func (x *DeleteCacheWarmerOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[391] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26681,7 +26557,7 @@ func (x *DeleteCacheWarmerOperationResponse) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteCacheWarmerOperationResponse.ProtoReflect.Descriptor instead. func (*DeleteCacheWarmerOperationResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{391} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{405} } func (x *DeleteCacheWarmerOperationResponse) GetResponse() *Response { @@ -26692,18 +26568,16 @@ func (x *DeleteCacheWarmerOperationResponse) GetResponse() *Response { } type ListRouterCompatibilityVersionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListRouterCompatibilityVersionsRequest) Reset() { *x = ListRouterCompatibilityVersionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[392] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListRouterCompatibilityVersionsRequest) String() string { @@ -26713,8 +26587,8 @@ func (x *ListRouterCompatibilityVersionsRequest) String() string { func (*ListRouterCompatibilityVersionsRequest) ProtoMessage() {} func (x *ListRouterCompatibilityVersionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[392] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26726,25 +26600,22 @@ func (x *ListRouterCompatibilityVersionsRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use ListRouterCompatibilityVersionsRequest.ProtoReflect.Descriptor instead. func (*ListRouterCompatibilityVersionsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{392} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{406} } type ListRouterCompatibilityVersionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Versions []string `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Versions []string `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListRouterCompatibilityVersionsResponse) Reset() { *x = ListRouterCompatibilityVersionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[393] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListRouterCompatibilityVersionsResponse) String() string { @@ -26754,8 +26625,8 @@ func (x *ListRouterCompatibilityVersionsResponse) String() string { func (*ListRouterCompatibilityVersionsResponse) ProtoMessage() {} func (x *ListRouterCompatibilityVersionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[393] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26767,7 +26638,7 @@ func (x *ListRouterCompatibilityVersionsResponse) ProtoReflect() protoreflect.Me // Deprecated: Use ListRouterCompatibilityVersionsResponse.ProtoReflect.Descriptor instead. func (*ListRouterCompatibilityVersionsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{393} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{407} } func (x *ListRouterCompatibilityVersionsResponse) GetResponse() *Response { @@ -26785,23 +26656,20 @@ func (x *ListRouterCompatibilityVersionsResponse) GetVersions() []string { } type SetGraphRouterCompatibilityVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,4,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetGraphRouterCompatibilityVersionRequest) Reset() { *x = SetGraphRouterCompatibilityVersionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[394] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetGraphRouterCompatibilityVersionRequest) String() string { @@ -26811,8 +26679,8 @@ func (x *SetGraphRouterCompatibilityVersionRequest) String() string { func (*SetGraphRouterCompatibilityVersionRequest) ProtoMessage() {} func (x *SetGraphRouterCompatibilityVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[394] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26824,7 +26692,7 @@ func (x *SetGraphRouterCompatibilityVersionRequest) ProtoReflect() protoreflect. // Deprecated: Use SetGraphRouterCompatibilityVersionRequest.ProtoReflect.Descriptor instead. func (*SetGraphRouterCompatibilityVersionRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{394} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{408} } func (x *SetGraphRouterCompatibilityVersionRequest) GetName() string { @@ -26856,25 +26724,22 @@ func (x *SetGraphRouterCompatibilityVersionRequest) GetDisableResolvabilityValid } type SetGraphRouterCompatibilityVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - PreviousVersion string `protobuf:"bytes,2,opt,name=previous_version,json=previousVersion,proto3" json:"previous_version,omitempty"` - NewVersion string `protobuf:"bytes,3,opt,name=new_version,json=newVersion,proto3" json:"new_version,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,4,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,5,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,6,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + PreviousVersion string `protobuf:"bytes,2,opt,name=previous_version,json=previousVersion,proto3" json:"previous_version,omitempty"` + NewVersion string `protobuf:"bytes,3,opt,name=new_version,json=newVersion,proto3" json:"new_version,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,4,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,5,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,6,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetGraphRouterCompatibilityVersionResponse) Reset() { *x = SetGraphRouterCompatibilityVersionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[395] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetGraphRouterCompatibilityVersionResponse) String() string { @@ -26884,8 +26749,8 @@ func (x *SetGraphRouterCompatibilityVersionResponse) String() string { func (*SetGraphRouterCompatibilityVersionResponse) ProtoMessage() {} func (x *SetGraphRouterCompatibilityVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[395] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26897,7 +26762,7 @@ func (x *SetGraphRouterCompatibilityVersionResponse) ProtoReflect() protoreflect // Deprecated: Use SetGraphRouterCompatibilityVersionResponse.ProtoReflect.Descriptor instead. func (*SetGraphRouterCompatibilityVersionResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{395} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{409} } func (x *SetGraphRouterCompatibilityVersionResponse) GetResponse() *Response { @@ -26943,22 +26808,19 @@ func (x *SetGraphRouterCompatibilityVersionResponse) GetCompositionWarnings() [] } type GetProposedSchemaOfCheckedSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CheckId string `protobuf:"bytes,1,opt,name=checkId,proto3" json:"checkId,omitempty"` - CheckedSubgraphId string `protobuf:"bytes,2,opt,name=checkedSubgraphId,proto3" json:"checkedSubgraphId,omitempty"` - SubgraphId string `protobuf:"bytes,3,opt,name=subgraphId,proto3" json:"subgraphId,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + CheckId string `protobuf:"bytes,1,opt,name=checkId,proto3" json:"checkId,omitempty"` + CheckedSubgraphId string `protobuf:"bytes,2,opt,name=checkedSubgraphId,proto3" json:"checkedSubgraphId,omitempty"` + SubgraphId string `protobuf:"bytes,3,opt,name=subgraphId,proto3" json:"subgraphId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposedSchemaOfCheckedSubgraphRequest) Reset() { *x = GetProposedSchemaOfCheckedSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[396] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposedSchemaOfCheckedSubgraphRequest) String() string { @@ -26968,8 +26830,8 @@ func (x *GetProposedSchemaOfCheckedSubgraphRequest) String() string { func (*GetProposedSchemaOfCheckedSubgraphRequest) ProtoMessage() {} func (x *GetProposedSchemaOfCheckedSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[396] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -26981,7 +26843,7 @@ func (x *GetProposedSchemaOfCheckedSubgraphRequest) ProtoReflect() protoreflect. // Deprecated: Use GetProposedSchemaOfCheckedSubgraphRequest.ProtoReflect.Descriptor instead. func (*GetProposedSchemaOfCheckedSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{396} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{410} } func (x *GetProposedSchemaOfCheckedSubgraphRequest) GetCheckId() string { @@ -27006,21 +26868,18 @@ func (x *GetProposedSchemaOfCheckedSubgraphRequest) GetSubgraphId() string { } type GetProposedSchemaOfCheckedSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - ProposedSchema string `protobuf:"bytes,2,opt,name=proposedSchema,proto3" json:"proposedSchema,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + ProposedSchema string `protobuf:"bytes,2,opt,name=proposedSchema,proto3" json:"proposedSchema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposedSchemaOfCheckedSubgraphResponse) Reset() { *x = GetProposedSchemaOfCheckedSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[397] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposedSchemaOfCheckedSubgraphResponse) String() string { @@ -27030,8 +26889,8 @@ func (x *GetProposedSchemaOfCheckedSubgraphResponse) String() string { func (*GetProposedSchemaOfCheckedSubgraphResponse) ProtoMessage() {} func (x *GetProposedSchemaOfCheckedSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[397] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27043,7 +26902,7 @@ func (x *GetProposedSchemaOfCheckedSubgraphResponse) ProtoReflect() protoreflect // Deprecated: Use GetProposedSchemaOfCheckedSubgraphResponse.ProtoReflect.Descriptor instead. func (*GetProposedSchemaOfCheckedSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{397} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{411} } func (x *GetProposedSchemaOfCheckedSubgraphResponse) GetResponse() *Response { @@ -27061,30 +26920,27 @@ func (x *GetProposedSchemaOfCheckedSubgraphResponse) GetProposedSchema() string } type Proposal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - CreatedByEmail string `protobuf:"bytes,4,opt,name=createdByEmail,proto3" json:"createdByEmail,omitempty"` - State string `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` - FederatedGraphId string `protobuf:"bytes,6,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` - FederatedGraphName string `protobuf:"bytes,7,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Subgraphs []*ProposalSubgraph `protobuf:"bytes,8,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - LatestCheckSuccess bool `protobuf:"varint,9,opt,name=latestCheckSuccess,proto3" json:"latestCheckSuccess,omitempty"` - LatestCheckId string `protobuf:"bytes,10,opt,name=latestCheckId,proto3" json:"latestCheckId,omitempty"` - Origin ProposalOrigin `protobuf:"varint,11,opt,name=origin,proto3,enum=wg.cosmo.platform.v1.ProposalOrigin" json:"origin,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + CreatedByEmail string `protobuf:"bytes,4,opt,name=createdByEmail,proto3" json:"createdByEmail,omitempty"` + State string `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` + FederatedGraphId string `protobuf:"bytes,6,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` + FederatedGraphName string `protobuf:"bytes,7,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Subgraphs []*ProposalSubgraph `protobuf:"bytes,8,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + LatestCheckSuccess bool `protobuf:"varint,9,opt,name=latestCheckSuccess,proto3" json:"latestCheckSuccess,omitempty"` + LatestCheckId string `protobuf:"bytes,10,opt,name=latestCheckId,proto3" json:"latestCheckId,omitempty"` + Origin ProposalOrigin `protobuf:"varint,11,opt,name=origin,proto3,enum=wg.cosmo.platform.v1.ProposalOrigin" json:"origin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Proposal) Reset() { *x = Proposal{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[398] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Proposal) String() string { @@ -27094,8 +26950,8 @@ func (x *Proposal) String() string { func (*Proposal) ProtoMessage() {} func (x *Proposal) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[398] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27107,7 +26963,7 @@ func (x *Proposal) ProtoReflect() protoreflect.Message { // Deprecated: Use Proposal.ProtoReflect.Descriptor instead. func (*Proposal) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{398} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412} } func (x *Proposal) GetId() string { @@ -27188,24 +27044,21 @@ func (x *Proposal) GetOrigin() ProposalOrigin { } type ProposalSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + SchemaSDL string `protobuf:"bytes,2,opt,name=schemaSDL,proto3" json:"schemaSDL,omitempty"` + IsDeleted bool `protobuf:"varint,3,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"` + IsNew bool `protobuf:"varint,4,opt,name=isNew,proto3" json:"isNew,omitempty"` + Labels []*Label `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - SchemaSDL string `protobuf:"bytes,2,opt,name=schemaSDL,proto3" json:"schemaSDL,omitempty"` - IsDeleted bool `protobuf:"varint,3,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"` - IsNew bool `protobuf:"varint,4,opt,name=isNew,proto3" json:"isNew,omitempty"` - Labels []*Label `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProposalSubgraph) Reset() { *x = ProposalSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[399] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProposalSubgraph) String() string { @@ -27215,8 +27068,8 @@ func (x *ProposalSubgraph) String() string { func (*ProposalSubgraph) ProtoMessage() {} func (x *ProposalSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[399] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27228,7 +27081,7 @@ func (x *ProposalSubgraph) ProtoReflect() protoreflect.Message { // Deprecated: Use ProposalSubgraph.ProtoReflect.Descriptor instead. func (*ProposalSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{399} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{413} } func (x *ProposalSubgraph) GetName() string { @@ -27267,25 +27120,22 @@ func (x *ProposalSubgraph) GetLabels() []*Label { } type CreateProposalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Subgraphs []*ProposalSubgraph `protobuf:"bytes,4,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` NamingConvention ProposalNamingConvention `protobuf:"varint,5,opt,name=namingConvention,proto3,enum=wg.cosmo.platform.v1.ProposalNamingConvention" json:"namingConvention,omitempty"` Origin ProposalOrigin `protobuf:"varint,6,opt,name=origin,proto3,enum=wg.cosmo.platform.v1.ProposalOrigin" json:"origin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateProposalRequest) Reset() { *x = CreateProposalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[400] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateProposalRequest) String() string { @@ -27295,8 +27145,8 @@ func (x *CreateProposalRequest) String() string { func (*CreateProposalRequest) ProtoMessage() {} func (x *CreateProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[400] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27308,7 +27158,7 @@ func (x *CreateProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProposalRequest.ProtoReflect.Descriptor instead. func (*CreateProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{400} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{414} } func (x *CreateProposalRequest) GetFederatedGraphName() string { @@ -27354,10 +27204,7 @@ func (x *CreateProposalRequest) GetOrigin() ProposalOrigin { } type CreateProposalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` ProposalId string `protobuf:"bytes,2,opt,name=proposalId,proto3" json:"proposalId,omitempty"` CheckId string `protobuf:"bytes,3,opt,name=checkId,proto3" json:"checkId,omitempty"` @@ -27381,15 +27228,15 @@ type CreateProposalResponse struct { IsLinkedPruningCheckFailed *bool `protobuf:"varint,19,opt,name=isLinkedPruningCheckFailed,proto3,oneof" json:"isLinkedPruningCheckFailed,omitempty"` HasLinkedSchemaChecks *bool `protobuf:"varint,20,opt,name=hasLinkedSchemaChecks,proto3,oneof" json:"hasLinkedSchemaChecks,omitempty"` ComposedSchemaBreakingChanges []*FederatedGraphSchemaChange `protobuf:"bytes,21,rep,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateProposalResponse) Reset() { *x = CreateProposalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[401] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateProposalResponse) String() string { @@ -27399,8 +27246,8 @@ func (x *CreateProposalResponse) String() string { func (*CreateProposalResponse) ProtoMessage() {} func (x *CreateProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[401] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27412,7 +27259,7 @@ func (x *CreateProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProposalResponse.ProtoReflect.Descriptor instead. func (*CreateProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{401} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{415} } func (x *CreateProposalResponse) GetResponse() *Response { @@ -27563,20 +27410,17 @@ func (x *CreateProposalResponse) GetComposedSchemaBreakingChanges() []*Federated } type GetProposalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` unknownFields protoimpl.UnknownFields - - ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetProposalRequest) Reset() { *x = GetProposalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[402] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalRequest) String() string { @@ -27586,8 +27430,8 @@ func (x *GetProposalRequest) String() string { func (*GetProposalRequest) ProtoMessage() {} func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[402] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27599,7 +27443,7 @@ func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalRequest.ProtoReflect.Descriptor instead. func (*GetProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{402} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{416} } func (x *GetProposalRequest) GetProposalId() string { @@ -27610,22 +27454,19 @@ func (x *GetProposalRequest) GetProposalId() string { } type GetProposalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` Proposal *Proposal `protobuf:"bytes,2,opt,name=proposal,proto3" json:"proposal,omitempty"` CurrentSubgraphs []*GetProposalResponse_CurrentSubgraph `protobuf:"bytes,3,rep,name=currentSubgraphs,proto3" json:"currentSubgraphs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposalResponse) Reset() { *x = GetProposalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[403] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalResponse) String() string { @@ -27635,8 +27476,8 @@ func (x *GetProposalResponse) String() string { func (*GetProposalResponse) ProtoMessage() {} func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[403] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27648,7 +27489,7 @@ func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalResponse.ProtoReflect.Descriptor instead. func (*GetProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{403} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} } func (x *GetProposalResponse) GetResponse() *Response { @@ -27673,25 +27514,22 @@ func (x *GetProposalResponse) GetCurrentSubgraphs() []*GetProposalResponse_Curre } type GetProposalsByFederatedGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - StartDate string `protobuf:"bytes,3,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,4,opt,name=endDate,proto3" json:"endDate,omitempty"` - Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + StartDate string `protobuf:"bytes,3,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,4,opt,name=endDate,proto3" json:"endDate,omitempty"` + Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposalsByFederatedGraphRequest) Reset() { *x = GetProposalsByFederatedGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalsByFederatedGraphRequest) String() string { @@ -27701,8 +27539,8 @@ func (x *GetProposalsByFederatedGraphRequest) String() string { func (*GetProposalsByFederatedGraphRequest) ProtoMessage() {} func (x *GetProposalsByFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27714,7 +27552,7 @@ func (x *GetProposalsByFederatedGraphRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetProposalsByFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*GetProposalsByFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{404} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} } func (x *GetProposalsByFederatedGraphRequest) GetFederatedGraphName() string { @@ -27760,22 +27598,19 @@ func (x *GetProposalsByFederatedGraphRequest) GetOffset() int32 { } type GetProposalsByFederatedGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Proposals []*Proposal `protobuf:"bytes,2,rep,name=proposals,proto3" json:"proposals,omitempty"` - IsProposalsEnabled bool `protobuf:"varint,3,opt,name=isProposalsEnabled,proto3" json:"isProposalsEnabled,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Proposals []*Proposal `protobuf:"bytes,2,rep,name=proposals,proto3" json:"proposals,omitempty"` + IsProposalsEnabled bool `protobuf:"varint,3,opt,name=isProposalsEnabled,proto3" json:"isProposalsEnabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposalsByFederatedGraphResponse) Reset() { *x = GetProposalsByFederatedGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalsByFederatedGraphResponse) String() string { @@ -27785,8 +27620,8 @@ func (x *GetProposalsByFederatedGraphResponse) String() string { func (*GetProposalsByFederatedGraphResponse) ProtoMessage() {} func (x *GetProposalsByFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27798,7 +27633,7 @@ func (x *GetProposalsByFederatedGraphResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetProposalsByFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*GetProposalsByFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{405} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} } func (x *GetProposalsByFederatedGraphResponse) GetResponse() *Response { @@ -27823,24 +27658,21 @@ func (x *GetProposalsByFederatedGraphResponse) GetIsProposalsEnabled() bool { } type GetProposalChecksRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` + EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` unknownFields protoimpl.UnknownFields - - ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - StartDate string `protobuf:"bytes,4,opt,name=startDate,proto3" json:"startDate,omitempty"` - EndDate string `protobuf:"bytes,5,opt,name=endDate,proto3" json:"endDate,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetProposalChecksRequest) Reset() { *x = GetProposalChecksRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalChecksRequest) String() string { @@ -27850,8 +27682,8 @@ func (x *GetProposalChecksRequest) String() string { func (*GetProposalChecksRequest) ProtoMessage() {} func (x *GetProposalChecksRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27863,7 +27695,7 @@ func (x *GetProposalChecksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalChecksRequest.ProtoReflect.Descriptor instead. func (*GetProposalChecksRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{406} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} } func (x *GetProposalChecksRequest) GetProposalId() string { @@ -27902,22 +27734,19 @@ func (x *GetProposalChecksRequest) GetEndDate() string { } type GetProposalChecksResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Checks []*SchemaCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` - TotalChecksCount int32 `protobuf:"varint,3,opt,name=totalChecksCount,proto3" json:"totalChecksCount,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Checks []*SchemaCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` + TotalChecksCount int32 `protobuf:"varint,3,opt,name=totalChecksCount,proto3" json:"totalChecksCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetProposalChecksResponse) Reset() { *x = GetProposalChecksResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalChecksResponse) String() string { @@ -27927,8 +27756,8 @@ func (x *GetProposalChecksResponse) String() string { func (*GetProposalChecksResponse) ProtoMessage() {} func (x *GetProposalChecksResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -27940,7 +27769,7 @@ func (x *GetProposalChecksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalChecksResponse.ProtoReflect.Descriptor instead. func (*GetProposalChecksResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{407} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} } func (x *GetProposalChecksResponse) GetResponse() *Response { @@ -27965,27 +27794,24 @@ func (x *GetProposalChecksResponse) GetTotalChecksCount() int32 { } type UpdateProposalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ProposalName string `protobuf:"bytes,1,opt,name=proposalName,proto3" json:"proposalName,omitempty"` - FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - // Types that are assignable to UpdateAction: + state protoimpl.MessageState `protogen:"open.v1"` + ProposalName string `protobuf:"bytes,1,opt,name=proposalName,proto3" json:"proposalName,omitempty"` + FederatedGraphName string `protobuf:"bytes,2,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + // Types that are valid to be assigned to UpdateAction: // // *UpdateProposalRequest_State // *UpdateProposalRequest_UpdatedSubgraphs - UpdateAction isUpdateProposalRequest_UpdateAction `protobuf_oneof:"update_action"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + UpdateAction isUpdateProposalRequest_UpdateAction `protobuf_oneof:"update_action"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateProposalRequest) Reset() { *x = UpdateProposalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateProposalRequest) String() string { @@ -27995,8 +27821,8 @@ func (x *UpdateProposalRequest) String() string { func (*UpdateProposalRequest) ProtoMessage() {} func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28008,7 +27834,7 @@ func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalRequest.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{408} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} } func (x *UpdateProposalRequest) GetProposalName() string { @@ -28025,23 +27851,27 @@ func (x *UpdateProposalRequest) GetFederatedGraphName() string { return "" } -func (m *UpdateProposalRequest) GetUpdateAction() isUpdateProposalRequest_UpdateAction { - if m != nil { - return m.UpdateAction +func (x *UpdateProposalRequest) GetUpdateAction() isUpdateProposalRequest_UpdateAction { + if x != nil { + return x.UpdateAction } return nil } func (x *UpdateProposalRequest) GetState() string { - if x, ok := x.GetUpdateAction().(*UpdateProposalRequest_State); ok { - return x.State + if x != nil { + if x, ok := x.UpdateAction.(*UpdateProposalRequest_State); ok { + return x.State + } } return "" } func (x *UpdateProposalRequest) GetUpdatedSubgraphs() *UpdateProposalRequest_UpdateProposalSubgraphs { - if x, ok := x.GetUpdateAction().(*UpdateProposalRequest_UpdatedSubgraphs); ok { - return x.UpdatedSubgraphs + if x != nil { + if x, ok := x.UpdateAction.(*UpdateProposalRequest_UpdatedSubgraphs); ok { + return x.UpdatedSubgraphs + } } return nil } @@ -28070,10 +27900,7 @@ func (*UpdateProposalRequest_State) isUpdateProposalRequest_UpdateAction() {} func (*UpdateProposalRequest_UpdatedSubgraphs) isUpdateProposalRequest_UpdateAction() {} type UpdateProposalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` CheckId string `protobuf:"bytes,2,opt,name=checkId,proto3" json:"checkId,omitempty"` BreakingChanges []*SchemaChange `protobuf:"bytes,3,rep,name=breakingChanges,proto3" json:"breakingChanges,omitempty"` @@ -28094,15 +27921,15 @@ type UpdateProposalResponse struct { IsLinkedPruningCheckFailed *bool `protobuf:"varint,16,opt,name=isLinkedPruningCheckFailed,proto3,oneof" json:"isLinkedPruningCheckFailed,omitempty"` HasLinkedSchemaChecks *bool `protobuf:"varint,17,opt,name=hasLinkedSchemaChecks,proto3,oneof" json:"hasLinkedSchemaChecks,omitempty"` ComposedSchemaBreakingChanges []*FederatedGraphSchemaChange `protobuf:"bytes,18,rep,name=composedSchemaBreakingChanges,proto3" json:"composedSchemaBreakingChanges,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateProposalResponse) Reset() { *x = UpdateProposalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateProposalResponse) String() string { @@ -28112,8 +27939,8 @@ func (x *UpdateProposalResponse) String() string { func (*UpdateProposalResponse) ProtoMessage() {} func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28125,7 +27952,7 @@ func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalResponse.ProtoReflect.Descriptor instead. func (*UpdateProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{409} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} } func (x *UpdateProposalResponse) GetResponse() *Response { @@ -28255,21 +28082,18 @@ func (x *UpdateProposalResponse) GetComposedSchemaBreakingChanges() []*Federated } type EnableProposalsForNamespaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - EnableProposals bool `protobuf:"varint,2,opt,name=enableProposals,proto3" json:"enableProposals,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + EnableProposals bool `protobuf:"varint,2,opt,name=enableProposals,proto3" json:"enableProposals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EnableProposalsForNamespaceRequest) Reset() { *x = EnableProposalsForNamespaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableProposalsForNamespaceRequest) String() string { @@ -28279,8 +28103,8 @@ func (x *EnableProposalsForNamespaceRequest) String() string { func (*EnableProposalsForNamespaceRequest) ProtoMessage() {} func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28292,7 +28116,7 @@ func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message // Deprecated: Use EnableProposalsForNamespaceRequest.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{410} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} } func (x *EnableProposalsForNamespaceRequest) GetNamespace() string { @@ -28310,20 +28134,17 @@ func (x *EnableProposalsForNamespaceRequest) GetEnableProposals() bool { } type EnableProposalsForNamespaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnableProposalsForNamespaceResponse) Reset() { *x = EnableProposalsForNamespaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnableProposalsForNamespaceResponse) String() string { @@ -28333,8 +28154,8 @@ func (x *EnableProposalsForNamespaceResponse) String() string { func (*EnableProposalsForNamespaceResponse) ProtoMessage() {} func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28346,7 +28167,7 @@ func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use EnableProposalsForNamespaceResponse.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{411} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} } func (x *EnableProposalsForNamespaceResponse) GetResponse() *Response { @@ -28357,22 +28178,19 @@ func (x *EnableProposalsForNamespaceResponse) GetResponse() *Response { } type ConfigureNamespaceProposalConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - CheckSeverityLevel LintSeverity `protobuf:"varint,2,opt,name=checkSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"checkSeverityLevel,omitempty"` - PublishSeverityLevel LintSeverity `protobuf:"varint,3,opt,name=publishSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"publishSeverityLevel,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + CheckSeverityLevel LintSeverity `protobuf:"varint,2,opt,name=checkSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"checkSeverityLevel,omitempty"` + PublishSeverityLevel LintSeverity `protobuf:"varint,3,opt,name=publishSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"publishSeverityLevel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceProposalConfigRequest) Reset() { *x = ConfigureNamespaceProposalConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceProposalConfigRequest) String() string { @@ -28382,8 +28200,8 @@ func (x *ConfigureNamespaceProposalConfigRequest) String() string { func (*ConfigureNamespaceProposalConfigRequest) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28395,7 +28213,7 @@ func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ConfigureNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} } func (x *ConfigureNamespaceProposalConfigRequest) GetNamespace() string { @@ -28420,20 +28238,17 @@ func (x *ConfigureNamespaceProposalConfigRequest) GetPublishSeverityLevel() Lint } type ConfigureNamespaceProposalConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConfigureNamespaceProposalConfigResponse) Reset() { *x = ConfigureNamespaceProposalConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConfigureNamespaceProposalConfigResponse) String() string { @@ -28443,8 +28258,8 @@ func (x *ConfigureNamespaceProposalConfigResponse) String() string { func (*ConfigureNamespaceProposalConfigResponse) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28456,7 +28271,7 @@ func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.M // Deprecated: Use ConfigureNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{413} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} } func (x *ConfigureNamespaceProposalConfigResponse) GetResponse() *Response { @@ -28467,20 +28282,17 @@ func (x *ConfigureNamespaceProposalConfigResponse) GetResponse() *Response { } type GetNamespaceProposalConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetNamespaceProposalConfigRequest) Reset() { *x = GetNamespaceProposalConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceProposalConfigRequest) String() string { @@ -28490,8 +28302,8 @@ func (x *GetNamespaceProposalConfigRequest) String() string { func (*GetNamespaceProposalConfigRequest) ProtoMessage() {} func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28503,7 +28315,7 @@ func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{414} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} } func (x *GetNamespaceProposalConfigRequest) GetNamespace() string { @@ -28514,23 +28326,20 @@ func (x *GetNamespaceProposalConfigRequest) GetNamespace() string { } type GetNamespaceProposalConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - CheckSeverityLevel LintSeverity `protobuf:"varint,3,opt,name=checkSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"checkSeverityLevel,omitempty"` - PublishSeverityLevel LintSeverity `protobuf:"varint,4,opt,name=publishSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"publishSeverityLevel,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + CheckSeverityLevel LintSeverity `protobuf:"varint,3,opt,name=checkSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"checkSeverityLevel,omitempty"` + PublishSeverityLevel LintSeverity `protobuf:"varint,4,opt,name=publishSeverityLevel,proto3,enum=wg.cosmo.platform.v1.LintSeverity" json:"publishSeverityLevel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetNamespaceProposalConfigResponse) Reset() { *x = GetNamespaceProposalConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNamespaceProposalConfigResponse) String() string { @@ -28540,8 +28349,8 @@ func (x *GetNamespaceProposalConfigResponse) String() string { func (*GetNamespaceProposalConfigResponse) ProtoMessage() {} func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28553,7 +28362,7 @@ func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{415} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} } func (x *GetNamespaceProposalConfigResponse) GetResponse() *Response { @@ -28584,45 +28393,33 @@ func (x *GetNamespaceProposalConfigResponse) GetPublishSeverityLevel() LintSever return LintSeverity_warn } -type GetOperationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ClientNames []string `protobuf:"bytes,3,rep,name=clientNames,proto3" json:"clientNames,omitempty"` // filter by client names - Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` - Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // pagination offset - IncludeHasDeprecatedFields *bool `protobuf:"varint,6,opt,name=includeHasDeprecatedFields,proto3,oneof" json:"includeHasDeprecatedFields,omitempty"` - FetchBasedOn *OperationsFetchBasedOn `protobuf:"varint,7,opt,name=fetchBasedOn,proto3,enum=wg.cosmo.platform.v1.OperationsFetchBasedOn,oneof" json:"fetchBasedOn,omitempty"` // determines which metric to fetch and sort by - IncludeContent *bool `protobuf:"varint,8,opt,name=includeContent,proto3,oneof" json:"includeContent,omitempty"` // defaults to false - Range *int32 `protobuf:"varint,9,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours - DateRange *DateRange `protobuf:"bytes,10,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` - SearchQuery *string `protobuf:"bytes,11,opt,name=searchQuery,proto3,oneof" json:"searchQuery,omitempty"` // search by operation name or hash - IncludeOperationsWithDeprecatedFieldsOnly *bool `protobuf:"varint,12,opt,name=includeOperationsWithDeprecatedFieldsOnly,proto3,oneof" json:"includeOperationsWithDeprecatedFieldsOnly,omitempty"` // defaults to false - SortDirection *SortDirection `protobuf:"varint,13,opt,name=sortDirection,proto3,enum=wg.cosmo.platform.v1.SortDirection,oneof" json:"sortDirection,omitempty"` // defaults to DESC - IncludeTotalCount *bool `protobuf:"varint,14,opt,name=includeTotalCount,proto3,oneof" json:"includeTotalCount,omitempty"` // defaults to false +type NamespaceLoginMethodMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + AllowedSsoProviderIds []string `protobuf:"bytes,2,rep,name=allowed_sso_provider_ids,json=allowedSsoProviderIds,proto3" json:"allowed_sso_provider_ids,omitempty"` + AllowPasswordLogin bool `protobuf:"varint,3,opt,name=allow_password_login,json=allowPasswordLogin,proto3" json:"allow_password_login,omitempty"` + AllowGoogleLogin bool `protobuf:"varint,4,opt,name=allow_google_login,json=allowGoogleLogin,proto3" json:"allow_google_login,omitempty"` + AllowGithubLogin bool `protobuf:"varint,5,opt,name=allow_github_login,json=allowGithubLogin,proto3" json:"allow_github_login,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetOperationsRequest) Reset() { - *x = GetOperationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *NamespaceLoginMethodMapping) Reset() { + *x = NamespaceLoginMethodMapping{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationsRequest) String() string { +func (x *NamespaceLoginMethodMapping) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationsRequest) ProtoMessage() {} +func (*NamespaceLoginMethodMapping) ProtoMessage() {} -func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] - if protoimpl.UnsafeEnabled && x != nil { +func (x *NamespaceLoginMethodMapping) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28632,137 +28429,113 @@ func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOperationsRequest.ProtoReflect.Descriptor instead. -func (*GetOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{416} -} - -func (x *GetOperationsRequest) GetFederatedGraphName() string { - if x != nil { - return x.FederatedGraphName - } - return "" +// Deprecated: Use NamespaceLoginMethodMapping.ProtoReflect.Descriptor instead. +func (*NamespaceLoginMethodMapping) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} } -func (x *GetOperationsRequest) GetNamespace() string { +func (x *NamespaceLoginMethodMapping) GetNamespaceId() string { if x != nil { - return x.Namespace + return x.NamespaceId } return "" } -func (x *GetOperationsRequest) GetClientNames() []string { +func (x *NamespaceLoginMethodMapping) GetAllowedSsoProviderIds() []string { if x != nil { - return x.ClientNames + return x.AllowedSsoProviderIds } return nil } -func (x *GetOperationsRequest) GetLimit() int32 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *NamespaceLoginMethodMapping) GetAllowPasswordLogin() bool { + if x != nil { + return x.AllowPasswordLogin } - return 0 + return false } -func (x *GetOperationsRequest) GetOffset() int32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *NamespaceLoginMethodMapping) GetAllowGoogleLogin() bool { + if x != nil { + return x.AllowGoogleLogin } - return 0 + return false } -func (x *GetOperationsRequest) GetIncludeHasDeprecatedFields() bool { - if x != nil && x.IncludeHasDeprecatedFields != nil { - return *x.IncludeHasDeprecatedFields +func (x *NamespaceLoginMethodMapping) GetAllowGithubLogin() bool { + if x != nil { + return x.AllowGithubLogin } return false } -func (x *GetOperationsRequest) GetFetchBasedOn() OperationsFetchBasedOn { - if x != nil && x.FetchBasedOn != nil { - return *x.FetchBasedOn - } - return OperationsFetchBasedOn_REQUESTS -} - -func (x *GetOperationsRequest) GetIncludeContent() bool { - if x != nil && x.IncludeContent != nil { - return *x.IncludeContent - } - return false +type UpdateNamespaceLoginMethodsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Mappings []*NamespaceLoginMethodMapping `protobuf:"bytes,1,rep,name=mappings,proto3" json:"mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetOperationsRequest) GetRange() int32 { - if x != nil && x.Range != nil { - return *x.Range - } - return 0 +func (x *UpdateNamespaceLoginMethodsRequest) Reset() { + *x = UpdateNamespaceLoginMethodsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationsRequest) GetDateRange() *DateRange { - if x != nil { - return x.DateRange - } - return nil +func (x *UpdateNamespaceLoginMethodsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *GetOperationsRequest) GetSearchQuery() string { - if x != nil && x.SearchQuery != nil { - return *x.SearchQuery - } - return "" -} +func (*UpdateNamespaceLoginMethodsRequest) ProtoMessage() {} -func (x *GetOperationsRequest) GetIncludeOperationsWithDeprecatedFieldsOnly() bool { - if x != nil && x.IncludeOperationsWithDeprecatedFieldsOnly != nil { - return *x.IncludeOperationsWithDeprecatedFieldsOnly +func (x *UpdateNamespaceLoginMethodsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *GetOperationsRequest) GetSortDirection() SortDirection { - if x != nil && x.SortDirection != nil { - return *x.SortDirection - } - return SortDirection_ASC +// Deprecated: Use UpdateNamespaceLoginMethodsRequest.ProtoReflect.Descriptor instead. +func (*UpdateNamespaceLoginMethodsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} } -func (x *GetOperationsRequest) GetIncludeTotalCount() bool { - if x != nil && x.IncludeTotalCount != nil { - return *x.IncludeTotalCount +func (x *UpdateNamespaceLoginMethodsRequest) GetMappings() []*NamespaceLoginMethodMapping { + if x != nil { + return x.Mappings } - return false + return nil } -type GetOperationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type UpdateNamespaceLoginMethodsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Operations []*GetOperationsResponse_Operation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` - TotalCount *int32 `protobuf:"varint,3,opt,name=totalCount,proto3,oneof" json:"totalCount,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *GetOperationsResponse) Reset() { - *x = GetOperationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UpdateNamespaceLoginMethodsResponse) Reset() { + *x = UpdateNamespaceLoginMethodsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationsResponse) String() string { +func (x *UpdateNamespaceLoginMethodsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationsResponse) ProtoMessage() {} +func (*UpdateNamespaceLoginMethodsResponse) ProtoMessage() {} -func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UpdateNamespaceLoginMethodsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28772,59 +28545,40 @@ func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOperationsResponse.ProtoReflect.Descriptor instead. -func (*GetOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} +// Deprecated: Use UpdateNamespaceLoginMethodsResponse.ProtoReflect.Descriptor instead. +func (*UpdateNamespaceLoginMethodsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} } -func (x *GetOperationsResponse) GetResponse() *Response { +func (x *UpdateNamespaceLoginMethodsResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *GetOperationsResponse) GetOperations() []*GetOperationsResponse_Operation { - if x != nil { - return x.Operations - } - return nil -} - -func (x *GetOperationsResponse) GetTotalCount() int32 { - if x != nil && x.TotalCount != nil { - return *x.TotalCount - } - return 0 -} - -type GetClientsFromAnalyticsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ListNamespaceLoginMethodsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *GetClientsFromAnalyticsRequest) Reset() { - *x = GetClientsFromAnalyticsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListNamespaceLoginMethodsRequest) Reset() { + *x = ListNamespaceLoginMethodsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetClientsFromAnalyticsRequest) String() string { +func (x *ListNamespaceLoginMethodsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClientsFromAnalyticsRequest) ProtoMessage() {} +func (*ListNamespaceLoginMethodsRequest) ProtoMessage() {} -func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListNamespaceLoginMethodsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28834,52 +28588,37 @@ func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClientsFromAnalyticsRequest.ProtoReflect.Descriptor instead. -func (*GetClientsFromAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} -} - -func (x *GetClientsFromAnalyticsRequest) GetFederatedGraphName() string { - if x != nil { - return x.FederatedGraphName - } - return "" -} - -func (x *GetClientsFromAnalyticsRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" +// Deprecated: Use ListNamespaceLoginMethodsRequest.ProtoReflect.Descriptor instead. +func (*ListNamespaceLoginMethodsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} } -type GetClientsFromAnalyticsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ListNamespaceLoginMethodsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // One entry per namespace that is restricted to specific login methods. + // Namespaces with no mapping (default-open) are omitted. + Mappings []*NamespaceLoginMethodMapping `protobuf:"bytes,2,rep,name=mappings,proto3" json:"mappings,omitempty"` unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Clients []*GetClientsFromAnalyticsResponse_Client `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *GetClientsFromAnalyticsResponse) Reset() { - *x = GetClientsFromAnalyticsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListNamespaceLoginMethodsResponse) Reset() { + *x = ListNamespaceLoginMethodsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetClientsFromAnalyticsResponse) String() string { +func (x *ListNamespaceLoginMethodsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClientsFromAnalyticsResponse) ProtoMessage() {} +func (*ListNamespaceLoginMethodsResponse) ProtoMessage() {} -func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListNamespaceLoginMethodsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28889,56 +28628,53 @@ func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClientsFromAnalyticsResponse.ProtoReflect.Descriptor instead. -func (*GetClientsFromAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} +// Deprecated: Use ListNamespaceLoginMethodsResponse.ProtoReflect.Descriptor instead. +func (*ListNamespaceLoginMethodsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} } -func (x *GetClientsFromAnalyticsResponse) GetResponse() *Response { +func (x *ListNamespaceLoginMethodsResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *GetClientsFromAnalyticsResponse) GetClients() []*GetClientsFromAnalyticsResponse_Client { +func (x *ListNamespaceLoginMethodsResponse) GetMappings() []*NamespaceLoginMethodMapping { if x != nil { - return x.Clients + return x.Mappings } return nil } -type GetOperationClientsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type OrganizationLoginMethods struct { + state protoimpl.MessageState `protogen:"open.v1"` + AllowedSsoProviderIds []string `protobuf:"bytes,1,rep,name=allowed_sso_provider_ids,json=allowedSsoProviderIds,proto3" json:"allowed_sso_provider_ids,omitempty"` + AllowPasswordLogin bool `protobuf:"varint,2,opt,name=allow_password_login,json=allowPasswordLogin,proto3" json:"allow_password_login,omitempty"` + AllowGoogleLogin bool `protobuf:"varint,3,opt,name=allow_google_login,json=allowGoogleLogin,proto3" json:"allow_google_login,omitempty"` + AllowGithubLogin bool `protobuf:"varint,4,opt,name=allow_github_login,json=allowGithubLogin,proto3" json:"allow_github_login,omitempty"` + // Output only. False when the org has no restriction configured (all methods allowed). + IsRestricted bool `protobuf:"varint,5,opt,name=is_restricted,json=isRestricted,proto3" json:"is_restricted,omitempty"` unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operationHash,proto3" json:"operationHash,omitempty"` - OperationName string `protobuf:"bytes,4,opt,name=operationName,proto3" json:"operationName,omitempty"` - Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours - DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *GetOperationClientsRequest) Reset() { - *x = GetOperationClientsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *OrganizationLoginMethods) Reset() { + *x = OrganizationLoginMethods{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationClientsRequest) String() string { +func (x *OrganizationLoginMethods) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationClientsRequest) ProtoMessage() {} +func (*OrganizationLoginMethods) ProtoMessage() {} -func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] - if protoimpl.UnsafeEnabled && x != nil { +func (x *OrganizationLoginMethods) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -28948,80 +28684,106 @@ func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOperationClientsRequest.ProtoReflect.Descriptor instead. -func (*GetOperationClientsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} +// Deprecated: Use OrganizationLoginMethods.ProtoReflect.Descriptor instead. +func (*OrganizationLoginMethods) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} } -func (x *GetOperationClientsRequest) GetFederatedGraphName() string { +func (x *OrganizationLoginMethods) GetAllowedSsoProviderIds() []string { if x != nil { - return x.FederatedGraphName + return x.AllowedSsoProviderIds } - return "" + return nil } -func (x *GetOperationClientsRequest) GetNamespace() string { +func (x *OrganizationLoginMethods) GetAllowPasswordLogin() bool { if x != nil { - return x.Namespace + return x.AllowPasswordLogin } - return "" + return false } -func (x *GetOperationClientsRequest) GetOperationHash() string { +func (x *OrganizationLoginMethods) GetAllowGoogleLogin() bool { if x != nil { - return x.OperationHash + return x.AllowGoogleLogin } - return "" + return false } -func (x *GetOperationClientsRequest) GetOperationName() string { +func (x *OrganizationLoginMethods) GetAllowGithubLogin() bool { if x != nil { - return x.OperationName - } - return "" -} - -func (x *GetOperationClientsRequest) GetRange() int32 { - if x != nil && x.Range != nil { - return *x.Range + return x.AllowGithubLogin } - return 0 + return false } -func (x *GetOperationClientsRequest) GetDateRange() *DateRange { +func (x *OrganizationLoginMethods) GetIsRestricted() bool { if x != nil { - return x.DateRange + return x.IsRestricted } - return nil + return false } -type GetOperationClientsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type GetOrganizationLoginMethodsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Clients []*GetOperationClientsResponse_Client `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` +func (x *GetOrganizationLoginMethodsRequest) Reset() { + *x = GetOrganizationLoginMethodsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationClientsResponse) Reset() { - *x = GetOperationClientsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] +func (x *GetOrganizationLoginMethodsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrganizationLoginMethodsRequest) ProtoMessage() {} + +func (x *GetOrganizationLoginMethodsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *GetOperationClientsResponse) String() string { +// Deprecated: Use GetOrganizationLoginMethodsRequest.ProtoReflect.Descriptor instead. +func (*GetOrganizationLoginMethodsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} +} + +type GetOrganizationLoginMethodsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + LoginMethods *OrganizationLoginMethods `protobuf:"bytes,2,opt,name=login_methods,json=loginMethods,proto3" json:"login_methods,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOrganizationLoginMethodsResponse) Reset() { + *x = GetOrganizationLoginMethodsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOrganizationLoginMethodsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationClientsResponse) ProtoMessage() {} +func (*GetOrganizationLoginMethodsResponse) ProtoMessage() {} -func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetOrganizationLoginMethodsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29031,56 +28793,55 @@ func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOperationClientsResponse.ProtoReflect.Descriptor instead. -func (*GetOperationClientsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} +// Deprecated: Use GetOrganizationLoginMethodsResponse.ProtoReflect.Descriptor instead. +func (*GetOrganizationLoginMethodsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} } -func (x *GetOperationClientsResponse) GetResponse() *Response { +func (x *GetOrganizationLoginMethodsResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *GetOperationClientsResponse) GetClients() []*GetOperationClientsResponse_Client { +func (x *GetOrganizationLoginMethodsResponse) GetLoginMethods() *OrganizationLoginMethods { if x != nil { - return x.Clients + return x.LoginMethods } return nil } -type GetOperationDeprecatedFieldsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - OperationHash string `protobuf:"bytes,3,opt,name=operationHash,proto3" json:"operationHash,omitempty"` - OperationName *string `protobuf:"bytes,4,opt,name=operationName,proto3,oneof" json:"operationName,omitempty"` - Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours - DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` +type UpdateOrganizationLoginMethodsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AllowedSsoProviderIds []string `protobuf:"bytes,1,rep,name=allowed_sso_provider_ids,json=allowedSsoProviderIds,proto3" json:"allowed_sso_provider_ids,omitempty"` + AllowPasswordLogin bool `protobuf:"varint,2,opt,name=allow_password_login,json=allowPasswordLogin,proto3" json:"allow_password_login,omitempty"` + AllowGoogleLogin bool `protobuf:"varint,3,opt,name=allow_google_login,json=allowGoogleLogin,proto3" json:"allow_google_login,omitempty"` + AllowGithubLogin bool `protobuf:"varint,4,opt,name=allow_github_login,json=allowGithubLogin,proto3" json:"allow_github_login,omitempty"` + // Set true to confirm that namespace mappings may be altered by this change. + // Left false (a preview), if the change would strip methods from existing + // namespace mappings the server returns requires_confirmation and makes no changes. + ConfirmNamespaceChanges bool `protobuf:"varint,5,opt,name=confirm_namespace_changes,json=confirmNamespaceChanges,proto3" json:"confirm_namespace_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetOperationDeprecatedFieldsRequest) Reset() { - *x = GetOperationDeprecatedFieldsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UpdateOrganizationLoginMethodsRequest) Reset() { + *x = UpdateOrganizationLoginMethodsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationDeprecatedFieldsRequest) String() string { +func (x *UpdateOrganizationLoginMethodsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationDeprecatedFieldsRequest) ProtoMessage() {} +func (*UpdateOrganizationLoginMethodsRequest) ProtoMessage() {} -func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UpdateOrganizationLoginMethodsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29090,80 +28851,73 @@ func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use GetOperationDeprecatedFieldsRequest.ProtoReflect.Descriptor instead. -func (*GetOperationDeprecatedFieldsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} +// Deprecated: Use UpdateOrganizationLoginMethodsRequest.ProtoReflect.Descriptor instead. +func (*UpdateOrganizationLoginMethodsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{438} } -func (x *GetOperationDeprecatedFieldsRequest) GetFederatedGraphName() string { +func (x *UpdateOrganizationLoginMethodsRequest) GetAllowedSsoProviderIds() []string { if x != nil { - return x.FederatedGraphName + return x.AllowedSsoProviderIds } - return "" + return nil } -func (x *GetOperationDeprecatedFieldsRequest) GetNamespace() string { +func (x *UpdateOrganizationLoginMethodsRequest) GetAllowPasswordLogin() bool { if x != nil { - return x.Namespace + return x.AllowPasswordLogin } - return "" + return false } -func (x *GetOperationDeprecatedFieldsRequest) GetOperationHash() string { +func (x *UpdateOrganizationLoginMethodsRequest) GetAllowGoogleLogin() bool { if x != nil { - return x.OperationHash - } - return "" -} - -func (x *GetOperationDeprecatedFieldsRequest) GetOperationName() string { - if x != nil && x.OperationName != nil { - return *x.OperationName + return x.AllowGoogleLogin } - return "" + return false } -func (x *GetOperationDeprecatedFieldsRequest) GetRange() int32 { - if x != nil && x.Range != nil { - return *x.Range +func (x *UpdateOrganizationLoginMethodsRequest) GetAllowGithubLogin() bool { + if x != nil { + return x.AllowGithubLogin } - return 0 + return false } -func (x *GetOperationDeprecatedFieldsRequest) GetDateRange() *DateRange { +func (x *UpdateOrganizationLoginMethodsRequest) GetConfirmNamespaceChanges() bool { if x != nil { - return x.DateRange + return x.ConfirmNamespaceChanges } - return nil + return false } -type GetOperationDeprecatedFieldsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - DeprecatedFields []*GetOperationDeprecatedFieldsResponse_DeprecatedField `protobuf:"bytes,2,rep,name=deprecatedFields,proto3" json:"deprecatedFields,omitempty"` +type UpdateOrganizationLoginMethodsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // True when the change needs confirmation because it would alter namespace + // mappings listed in affected_namespaces. No changes were made in this case. + RequiresConfirmation bool `protobuf:"varint,2,opt,name=requires_confirmation,json=requiresConfirmation,proto3" json:"requires_confirmation,omitempty"` + AffectedNamespaces []*Namespace `protobuf:"bytes,3,rep,name=affected_namespaces,json=affectedNamespaces,proto3" json:"affected_namespaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetOperationDeprecatedFieldsResponse) Reset() { - *x = GetOperationDeprecatedFieldsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *UpdateOrganizationLoginMethodsResponse) Reset() { + *x = UpdateOrganizationLoginMethodsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetOperationDeprecatedFieldsResponse) String() string { +func (x *UpdateOrganizationLoginMethodsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOperationDeprecatedFieldsResponse) ProtoMessage() {} +func (*UpdateOrganizationLoginMethodsResponse) ProtoMessage() {} -func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] - if protoimpl.UnsafeEnabled && x != nil { +func (x *UpdateOrganizationLoginMethodsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29173,53 +28927,68 @@ func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use GetOperationDeprecatedFieldsResponse.ProtoReflect.Descriptor instead. -func (*GetOperationDeprecatedFieldsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} +// Deprecated: Use UpdateOrganizationLoginMethodsResponse.ProtoReflect.Descriptor instead. +func (*UpdateOrganizationLoginMethodsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439} } -func (x *GetOperationDeprecatedFieldsResponse) GetResponse() *Response { +func (x *UpdateOrganizationLoginMethodsResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *GetOperationDeprecatedFieldsResponse) GetDeprecatedFields() []*GetOperationDeprecatedFieldsResponse_DeprecatedField { +func (x *UpdateOrganizationLoginMethodsResponse) GetRequiresConfirmation() bool { if x != nil { - return x.DeprecatedFields + return x.RequiresConfirmation } - return nil + return false } -type ValidateAndFetchPluginDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *UpdateOrganizationLoginMethodsResponse) GetAffectedNamespaces() []*Namespace { + if x != nil { + return x.AffectedNamespaces + } + return nil +} - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` +type GetOperationsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + ClientNames []string `protobuf:"bytes,3,rep,name=clientNames,proto3" json:"clientNames,omitempty"` // filter by client names + Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + Offset *int32 `protobuf:"varint,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // pagination offset + IncludeHasDeprecatedFields *bool `protobuf:"varint,6,opt,name=includeHasDeprecatedFields,proto3,oneof" json:"includeHasDeprecatedFields,omitempty"` + FetchBasedOn *OperationsFetchBasedOn `protobuf:"varint,7,opt,name=fetchBasedOn,proto3,enum=wg.cosmo.platform.v1.OperationsFetchBasedOn,oneof" json:"fetchBasedOn,omitempty"` // determines which metric to fetch and sort by + IncludeContent *bool `protobuf:"varint,8,opt,name=includeContent,proto3,oneof" json:"includeContent,omitempty"` // defaults to false + Range *int32 `protobuf:"varint,9,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours + DateRange *DateRange `protobuf:"bytes,10,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` + SearchQuery *string `protobuf:"bytes,11,opt,name=searchQuery,proto3,oneof" json:"searchQuery,omitempty"` // search by operation name or hash + IncludeOperationsWithDeprecatedFieldsOnly *bool `protobuf:"varint,12,opt,name=includeOperationsWithDeprecatedFieldsOnly,proto3,oneof" json:"includeOperationsWithDeprecatedFieldsOnly,omitempty"` // defaults to false + SortDirection *SortDirection `protobuf:"varint,13,opt,name=sortDirection,proto3,enum=wg.cosmo.platform.v1.SortDirection,oneof" json:"sortDirection,omitempty"` // defaults to DESC + IncludeTotalCount *bool `protobuf:"varint,14,opt,name=includeTotalCount,proto3,oneof" json:"includeTotalCount,omitempty"` // defaults to false + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ValidateAndFetchPluginDataRequest) Reset() { - *x = ValidateAndFetchPluginDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *GetOperationsRequest) Reset() { + *x = GetOperationsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ValidateAndFetchPluginDataRequest) String() string { +func (x *GetOperationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ValidateAndFetchPluginDataRequest) ProtoMessage() {} +func (*GetOperationsRequest) ProtoMessage() {} -func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29229,132 +28998,134 @@ func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ValidateAndFetchPluginDataRequest.ProtoReflect.Descriptor instead. -func (*ValidateAndFetchPluginDataRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} +// Deprecated: Use GetOperationsRequest.ProtoReflect.Descriptor instead. +func (*GetOperationsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{440} } -func (x *ValidateAndFetchPluginDataRequest) GetName() string { +func (x *GetOperationsRequest) GetFederatedGraphName() string { if x != nil { - return x.Name + return x.FederatedGraphName } return "" } -func (x *ValidateAndFetchPluginDataRequest) GetNamespace() string { +func (x *GetOperationsRequest) GetNamespace() string { if x != nil { return x.Namespace } return "" } -func (x *ValidateAndFetchPluginDataRequest) GetLabels() []*Label { +func (x *GetOperationsRequest) GetClientNames() []string { if x != nil { - return x.Labels + return x.ClientNames } return nil } -type ValidateAndFetchPluginDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - NewVersion string `protobuf:"bytes,2,opt,name=newVersion,proto3" json:"newVersion,omitempty"` - PushToken string `protobuf:"bytes,3,opt,name=pushToken,proto3" json:"pushToken,omitempty"` - Reference string `protobuf:"bytes,4,opt,name=reference,proto3" json:"reference,omitempty"` +func (x *GetOperationsRequest) GetLimit() int32 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 } -func (x *ValidateAndFetchPluginDataResponse) Reset() { - *x = ValidateAndFetchPluginDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetOperationsRequest) GetOffset() int32 { + if x != nil && x.Offset != nil { + return *x.Offset } + return 0 } -func (x *ValidateAndFetchPluginDataResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *GetOperationsRequest) GetIncludeHasDeprecatedFields() bool { + if x != nil && x.IncludeHasDeprecatedFields != nil { + return *x.IncludeHasDeprecatedFields + } + return false } -func (*ValidateAndFetchPluginDataResponse) ProtoMessage() {} +func (x *GetOperationsRequest) GetFetchBasedOn() OperationsFetchBasedOn { + if x != nil && x.FetchBasedOn != nil { + return *x.FetchBasedOn + } + return OperationsFetchBasedOn_REQUESTS +} -func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetOperationsRequest) GetIncludeContent() bool { + if x != nil && x.IncludeContent != nil { + return *x.IncludeContent } - return mi.MessageOf(x) + return false } -// Deprecated: Use ValidateAndFetchPluginDataResponse.ProtoReflect.Descriptor instead. -func (*ValidateAndFetchPluginDataResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} +func (x *GetOperationsRequest) GetRange() int32 { + if x != nil && x.Range != nil { + return *x.Range + } + return 0 } -func (x *ValidateAndFetchPluginDataResponse) GetResponse() *Response { +func (x *GetOperationsRequest) GetDateRange() *DateRange { if x != nil { - return x.Response + return x.DateRange } return nil } -func (x *ValidateAndFetchPluginDataResponse) GetNewVersion() string { - if x != nil { - return x.NewVersion +func (x *GetOperationsRequest) GetSearchQuery() string { + if x != nil && x.SearchQuery != nil { + return *x.SearchQuery } return "" } -func (x *ValidateAndFetchPluginDataResponse) GetPushToken() string { - if x != nil { - return x.PushToken +func (x *GetOperationsRequest) GetIncludeOperationsWithDeprecatedFieldsOnly() bool { + if x != nil && x.IncludeOperationsWithDeprecatedFieldsOnly != nil { + return *x.IncludeOperationsWithDeprecatedFieldsOnly } - return "" + return false } -func (x *ValidateAndFetchPluginDataResponse) GetReference() string { - if x != nil { - return x.Reference +func (x *GetOperationsRequest) GetSortDirection() SortDirection { + if x != nil && x.SortDirection != nil { + return *x.SortDirection } - return "" + return SortDirection_ASC } -type LinkSubgraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetOperationsRequest) GetIncludeTotalCount() bool { + if x != nil && x.IncludeTotalCount != nil { + return *x.IncludeTotalCount + } + return false +} - SourceSubgraphName string `protobuf:"bytes,1,opt,name=sourceSubgraphName,proto3" json:"sourceSubgraphName,omitempty"` - SourceSubgraphNamespace string `protobuf:"bytes,2,opt,name=sourceSubgraphNamespace,proto3" json:"sourceSubgraphNamespace,omitempty"` - TargetSubgraphName string `protobuf:"bytes,3,opt,name=targetSubgraphName,proto3" json:"targetSubgraphName,omitempty"` - TargetSubgraphNamespace string `protobuf:"bytes,4,opt,name=targetSubgraphNamespace,proto3" json:"targetSubgraphNamespace,omitempty"` +type GetOperationsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Operations []*GetOperationsResponse_Operation `protobuf:"bytes,2,rep,name=operations,proto3" json:"operations,omitempty"` + TotalCount *int32 `protobuf:"varint,3,opt,name=totalCount,proto3,oneof" json:"totalCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *LinkSubgraphRequest) Reset() { - *x = LinkSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *GetOperationsResponse) Reset() { + *x = GetOperationsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *LinkSubgraphRequest) String() string { +func (x *GetOperationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LinkSubgraphRequest) ProtoMessage() {} +func (*GetOperationsResponse) ProtoMessage() {} -func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29364,65 +29135,871 @@ func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LinkSubgraphRequest.ProtoReflect.Descriptor instead. -func (*LinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} -} - -func (x *LinkSubgraphRequest) GetSourceSubgraphName() string { - if x != nil { - return x.SourceSubgraphName - } - return "" +// Deprecated: Use GetOperationsResponse.ProtoReflect.Descriptor instead. +func (*GetOperationsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441} } -func (x *LinkSubgraphRequest) GetSourceSubgraphNamespace() string { +func (x *GetOperationsResponse) GetResponse() *Response { if x != nil { - return x.SourceSubgraphNamespace + return x.Response } - return "" + return nil } -func (x *LinkSubgraphRequest) GetTargetSubgraphName() string { +func (x *GetOperationsResponse) GetOperations() []*GetOperationsResponse_Operation { if x != nil { - return x.TargetSubgraphName + return x.Operations } - return "" + return nil } -func (x *LinkSubgraphRequest) GetTargetSubgraphNamespace() string { - if x != nil { - return x.TargetSubgraphNamespace +func (x *GetOperationsResponse) GetTotalCount() int32 { + if x != nil && x.TotalCount != nil { + return *x.TotalCount } - return "" + return 0 } -type LinkSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` +type GetClientsFromAnalyticsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *LinkSubgraphResponse) Reset() { - *x = LinkSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *GetClientsFromAnalyticsRequest) Reset() { + *x = GetClientsFromAnalyticsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *LinkSubgraphResponse) String() string { +func (x *GetClientsFromAnalyticsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LinkSubgraphResponse) ProtoMessage() {} +func (*GetClientsFromAnalyticsRequest) ProtoMessage() {} -func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetClientsFromAnalyticsRequest.ProtoReflect.Descriptor instead. +func (*GetClientsFromAnalyticsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{442} +} + +func (x *GetClientsFromAnalyticsRequest) GetFederatedGraphName() string { + if x != nil { + return x.FederatedGraphName + } + return "" +} + +func (x *GetClientsFromAnalyticsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +type GetClientsFromAnalyticsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Clients []*GetClientsFromAnalyticsResponse_Client `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetClientsFromAnalyticsResponse) Reset() { + *x = GetClientsFromAnalyticsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetClientsFromAnalyticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetClientsFromAnalyticsResponse) ProtoMessage() {} + +func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetClientsFromAnalyticsResponse.ProtoReflect.Descriptor instead. +func (*GetClientsFromAnalyticsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{443} +} + +func (x *GetClientsFromAnalyticsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetClientsFromAnalyticsResponse) GetClients() []*GetClientsFromAnalyticsResponse_Client { + if x != nil { + return x.Clients + } + return nil +} + +type GetOperationClientsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operationHash,proto3" json:"operationHash,omitempty"` + OperationName string `protobuf:"bytes,4,opt,name=operationName,proto3" json:"operationName,omitempty"` + Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours + DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOperationClientsRequest) Reset() { + *x = GetOperationClientsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOperationClientsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOperationClientsRequest) ProtoMessage() {} + +func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOperationClientsRequest.ProtoReflect.Descriptor instead. +func (*GetOperationClientsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444} +} + +func (x *GetOperationClientsRequest) GetFederatedGraphName() string { + if x != nil { + return x.FederatedGraphName + } + return "" +} + +func (x *GetOperationClientsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *GetOperationClientsRequest) GetOperationHash() string { + if x != nil { + return x.OperationHash + } + return "" +} + +func (x *GetOperationClientsRequest) GetOperationName() string { + if x != nil { + return x.OperationName + } + return "" +} + +func (x *GetOperationClientsRequest) GetRange() int32 { + if x != nil && x.Range != nil { + return *x.Range + } + return 0 +} + +func (x *GetOperationClientsRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +type GetOperationClientsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Clients []*GetOperationClientsResponse_Client `protobuf:"bytes,2,rep,name=clients,proto3" json:"clients,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOperationClientsResponse) Reset() { + *x = GetOperationClientsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOperationClientsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOperationClientsResponse) ProtoMessage() {} + +func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOperationClientsResponse.ProtoReflect.Descriptor instead. +func (*GetOperationClientsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{445} +} + +func (x *GetOperationClientsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetOperationClientsResponse) GetClients() []*GetOperationClientsResponse_Client { + if x != nil { + return x.Clients + } + return nil +} + +type GetOperationDeprecatedFieldsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + OperationHash string `protobuf:"bytes,3,opt,name=operationHash,proto3" json:"operationHash,omitempty"` + OperationName *string `protobuf:"bytes,4,opt,name=operationName,proto3,oneof" json:"operationName,omitempty"` + Range *int32 `protobuf:"varint,5,opt,name=range,proto3,oneof" json:"range,omitempty"` // range in hours + DateRange *DateRange `protobuf:"bytes,6,opt,name=dateRange,proto3,oneof" json:"dateRange,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOperationDeprecatedFieldsRequest) Reset() { + *x = GetOperationDeprecatedFieldsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOperationDeprecatedFieldsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOperationDeprecatedFieldsRequest) ProtoMessage() {} + +func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOperationDeprecatedFieldsRequest.ProtoReflect.Descriptor instead. +func (*GetOperationDeprecatedFieldsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{446} +} + +func (x *GetOperationDeprecatedFieldsRequest) GetFederatedGraphName() string { + if x != nil { + return x.FederatedGraphName + } + return "" +} + +func (x *GetOperationDeprecatedFieldsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *GetOperationDeprecatedFieldsRequest) GetOperationHash() string { + if x != nil { + return x.OperationHash + } + return "" +} + +func (x *GetOperationDeprecatedFieldsRequest) GetOperationName() string { + if x != nil && x.OperationName != nil { + return *x.OperationName + } + return "" +} + +func (x *GetOperationDeprecatedFieldsRequest) GetRange() int32 { + if x != nil && x.Range != nil { + return *x.Range + } + return 0 +} + +func (x *GetOperationDeprecatedFieldsRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +type GetOperationDeprecatedFieldsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + DeprecatedFields []*GetOperationDeprecatedFieldsResponse_DeprecatedField `protobuf:"bytes,2,rep,name=deprecatedFields,proto3" json:"deprecatedFields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOperationDeprecatedFieldsResponse) Reset() { + *x = GetOperationDeprecatedFieldsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOperationDeprecatedFieldsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOperationDeprecatedFieldsResponse) ProtoMessage() {} + +func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOperationDeprecatedFieldsResponse.ProtoReflect.Descriptor instead. +func (*GetOperationDeprecatedFieldsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{447} +} + +func (x *GetOperationDeprecatedFieldsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetOperationDeprecatedFieldsResponse) GetDeprecatedFields() []*GetOperationDeprecatedFieldsResponse_DeprecatedField { + if x != nil { + return x.DeprecatedFields + } + return nil +} + +type ValidateAndFetchPluginDataRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Labels []*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValidateAndFetchPluginDataRequest) Reset() { + *x = ValidateAndFetchPluginDataRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValidateAndFetchPluginDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateAndFetchPluginDataRequest) ProtoMessage() {} + +func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateAndFetchPluginDataRequest.ProtoReflect.Descriptor instead. +func (*ValidateAndFetchPluginDataRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{448} +} + +func (x *ValidateAndFetchPluginDataRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ValidateAndFetchPluginDataRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *ValidateAndFetchPluginDataRequest) GetLabels() []*Label { + if x != nil { + return x.Labels + } + return nil +} + +type ValidateAndFetchPluginDataResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + NewVersion string `protobuf:"bytes,2,opt,name=newVersion,proto3" json:"newVersion,omitempty"` + PushToken string `protobuf:"bytes,3,opt,name=pushToken,proto3" json:"pushToken,omitempty"` + Reference string `protobuf:"bytes,4,opt,name=reference,proto3" json:"reference,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValidateAndFetchPluginDataResponse) Reset() { + *x = ValidateAndFetchPluginDataResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValidateAndFetchPluginDataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateAndFetchPluginDataResponse) ProtoMessage() {} + +func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateAndFetchPluginDataResponse.ProtoReflect.Descriptor instead. +func (*ValidateAndFetchPluginDataResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{449} +} + +func (x *ValidateAndFetchPluginDataResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *ValidateAndFetchPluginDataResponse) GetNewVersion() string { + if x != nil { + return x.NewVersion + } + return "" +} + +func (x *ValidateAndFetchPluginDataResponse) GetPushToken() string { + if x != nil { + return x.PushToken + } + return "" +} + +func (x *ValidateAndFetchPluginDataResponse) GetReference() string { + if x != nil { + return x.Reference + } + return "" +} + +type LinkSubgraphRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SourceSubgraphName string `protobuf:"bytes,1,opt,name=sourceSubgraphName,proto3" json:"sourceSubgraphName,omitempty"` + SourceSubgraphNamespace string `protobuf:"bytes,2,opt,name=sourceSubgraphNamespace,proto3" json:"sourceSubgraphNamespace,omitempty"` + TargetSubgraphName string `protobuf:"bytes,3,opt,name=targetSubgraphName,proto3" json:"targetSubgraphName,omitempty"` + TargetSubgraphNamespace string `protobuf:"bytes,4,opt,name=targetSubgraphNamespace,proto3" json:"targetSubgraphNamespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LinkSubgraphRequest) Reset() { + *x = LinkSubgraphRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LinkSubgraphRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkSubgraphRequest) ProtoMessage() {} + +func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkSubgraphRequest.ProtoReflect.Descriptor instead. +func (*LinkSubgraphRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{450} +} + +func (x *LinkSubgraphRequest) GetSourceSubgraphName() string { + if x != nil { + return x.SourceSubgraphName + } + return "" +} + +func (x *LinkSubgraphRequest) GetSourceSubgraphNamespace() string { + if x != nil { + return x.SourceSubgraphNamespace + } + return "" +} + +func (x *LinkSubgraphRequest) GetTargetSubgraphName() string { + if x != nil { + return x.TargetSubgraphName + } + return "" +} + +func (x *LinkSubgraphRequest) GetTargetSubgraphNamespace() string { + if x != nil { + return x.TargetSubgraphNamespace + } + return "" +} + +type LinkSubgraphResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LinkSubgraphResponse) Reset() { + *x = LinkSubgraphResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LinkSubgraphResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkSubgraphResponse) ProtoMessage() {} + +func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkSubgraphResponse.ProtoReflect.Descriptor instead. +func (*LinkSubgraphResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{451} +} + +func (x *LinkSubgraphResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +type UnlinkSubgraphRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SourceSubgraphName string `protobuf:"bytes,1,opt,name=sourceSubgraphName,proto3" json:"sourceSubgraphName,omitempty"` + SourceSubgraphNamespace string `protobuf:"bytes,2,opt,name=sourceSubgraphNamespace,proto3" json:"sourceSubgraphNamespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnlinkSubgraphRequest) Reset() { + *x = UnlinkSubgraphRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnlinkSubgraphRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnlinkSubgraphRequest) ProtoMessage() {} + +func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnlinkSubgraphRequest.ProtoReflect.Descriptor instead. +func (*UnlinkSubgraphRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{452} +} + +func (x *UnlinkSubgraphRequest) GetSourceSubgraphName() string { + if x != nil { + return x.SourceSubgraphName + } + return "" +} + +func (x *UnlinkSubgraphRequest) GetSourceSubgraphNamespace() string { + if x != nil { + return x.SourceSubgraphNamespace + } + return "" +} + +type UnlinkSubgraphResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnlinkSubgraphResponse) Reset() { + *x = UnlinkSubgraphResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnlinkSubgraphResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnlinkSubgraphResponse) ProtoMessage() {} + +func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnlinkSubgraphResponse.ProtoReflect.Descriptor instead. +func (*UnlinkSubgraphResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{453} +} + +func (x *UnlinkSubgraphResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +type VerifyAPIKeyGraphAccessRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphId string `protobuf:"bytes,1,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifyAPIKeyGraphAccessRequest) Reset() { + *x = VerifyAPIKeyGraphAccessRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifyAPIKeyGraphAccessRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyAPIKeyGraphAccessRequest) ProtoMessage() {} + +func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyAPIKeyGraphAccessRequest.ProtoReflect.Descriptor instead. +func (*VerifyAPIKeyGraphAccessRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{454} +} + +func (x *VerifyAPIKeyGraphAccessRequest) GetFederatedGraphId() string { + if x != nil { + return x.FederatedGraphId + } + return "" +} + +type VerifyAPIKeyGraphAccessResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + HasOrganizationAdminOrDeveloperPermissions bool `protobuf:"varint,2,opt,name=hasOrganizationAdminOrDeveloperPermissions,proto3" json:"hasOrganizationAdminOrDeveloperPermissions,omitempty"` + HasWriteAccessToGraph bool `protobuf:"varint,3,opt,name=hasWriteAccessToGraph,proto3" json:"hasWriteAccessToGraph,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifyAPIKeyGraphAccessResponse) Reset() { + *x = VerifyAPIKeyGraphAccessResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifyAPIKeyGraphAccessResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyAPIKeyGraphAccessResponse) ProtoMessage() {} + +func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyAPIKeyGraphAccessResponse.ProtoReflect.Descriptor instead. +func (*VerifyAPIKeyGraphAccessResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{455} +} + +func (x *VerifyAPIKeyGraphAccessResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *VerifyAPIKeyGraphAccessResponse) GetHasOrganizationAdminOrDeveloperPermissions() bool { + if x != nil { + return x.HasOrganizationAdminOrDeveloperPermissions + } + return false +} + +func (x *VerifyAPIKeyGraphAccessResponse) GetHasWriteAccessToGraph() bool { + if x != nil { + return x.HasWriteAccessToGraph + } + return false +} + +type InitializeCosmoUserRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InitializeCosmoUserRequest) Reset() { + *x = InitializeCosmoUserRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InitializeCosmoUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InitializeCosmoUserRequest) ProtoMessage() {} + +func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29432,45 +30009,177 @@ func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LinkSubgraphResponse.ProtoReflect.Descriptor instead. -func (*LinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} +// Deprecated: Use InitializeCosmoUserRequest.ProtoReflect.Descriptor instead. +func (*InitializeCosmoUserRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{456} } -func (x *LinkSubgraphResponse) GetResponse() *Response { +func (x *InitializeCosmoUserRequest) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type InitializeCosmoUserResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InitializeCosmoUserResponse) Reset() { + *x = InitializeCosmoUserResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InitializeCosmoUserResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InitializeCosmoUserResponse) ProtoMessage() {} + +func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InitializeCosmoUserResponse.ProtoReflect.Descriptor instead. +func (*InitializeCosmoUserResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{457} +} + +func (x *InitializeCosmoUserResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -type UnlinkSubgraphRequest struct { - state protoimpl.MessageState +type ListOrganizationsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *ListOrganizationsRequest) Reset() { + *x = ListOrganizationsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListOrganizationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOrganizationsRequest) ProtoMessage() {} + +func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. +func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{458} +} + +type ListOrganizationsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Organizations []*ListOrganizationsResponse_OrganizationMembership `protobuf:"bytes,2,rep,name=organizations,proto3" json:"organizations,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - SourceSubgraphName string `protobuf:"bytes,1,opt,name=sourceSubgraphName,proto3" json:"sourceSubgraphName,omitempty"` - SourceSubgraphNamespace string `protobuf:"bytes,2,opt,name=sourceSubgraphNamespace,proto3" json:"sourceSubgraphNamespace,omitempty"` +func (x *ListOrganizationsResponse) Reset() { + *x = ListOrganizationsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *UnlinkSubgraphRequest) Reset() { - *x = UnlinkSubgraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] +func (x *ListOrganizationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOrganizationsResponse) ProtoMessage() {} + +func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *UnlinkSubgraphRequest) String() string { +// Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. +func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{459} +} + +func (x *ListOrganizationsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *ListOrganizationsResponse) GetOrganizations() []*ListOrganizationsResponse_OrganizationMembership { + if x != nil { + return x.Organizations + } + return nil +} + +type RecomposeGraphRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + IsMonograph bool `protobuf:"varint,3,opt,name=is_monograph,json=isMonograph,proto3" json:"is_monograph,omitempty"` + Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,5,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecomposeGraphRequest) Reset() { + *x = RecomposeGraphRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecomposeGraphRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnlinkSubgraphRequest) ProtoMessage() {} +func (*RecomposeGraphRequest) ProtoMessage() {} -func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] - if protoimpl.UnsafeEnabled && x != nil { +func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29480,51 +30189,73 @@ func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnlinkSubgraphRequest.ProtoReflect.Descriptor instead. -func (*UnlinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} +// Deprecated: Use RecomposeGraphRequest.ProtoReflect.Descriptor instead. +func (*RecomposeGraphRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{460} } -func (x *UnlinkSubgraphRequest) GetSourceSubgraphName() string { +func (x *RecomposeGraphRequest) GetName() string { if x != nil { - return x.SourceSubgraphName + return x.Name } return "" } -func (x *UnlinkSubgraphRequest) GetSourceSubgraphNamespace() string { +func (x *RecomposeGraphRequest) GetNamespace() string { if x != nil { - return x.SourceSubgraphNamespace + return x.Namespace } return "" } -type UnlinkSubgraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RecomposeGraphRequest) GetIsMonograph() bool { + if x != nil { + return x.IsMonograph + } + return false +} - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` +func (x *RecomposeGraphRequest) GetLimit() int32 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 } -func (x *UnlinkSubgraphResponse) Reset() { - *x = UnlinkSubgraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RecomposeGraphRequest) GetDisableResolvabilityValidation() bool { + if x != nil && x.DisableResolvabilityValidation != nil { + return *x.DisableResolvabilityValidation } + return false } -func (x *UnlinkSubgraphResponse) String() string { +type RecomposeGraphResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + ErrorCounts *SubgraphPublishStats `protobuf:"bytes,5,opt,name=errorCounts,proto3,oneof" json:"errorCounts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecomposeGraphResponse) Reset() { + *x = RecomposeGraphResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecomposeGraphResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnlinkSubgraphResponse) ProtoMessage() {} +func (*RecomposeGraphResponse) ProtoMessage() {} -func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] - if protoimpl.UnsafeEnabled && x != nil { +func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29534,44 +30265,72 @@ func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnlinkSubgraphResponse.ProtoReflect.Descriptor instead. -func (*UnlinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} +// Deprecated: Use RecomposeGraphResponse.ProtoReflect.Descriptor instead. +func (*RecomposeGraphResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{461} } -func (x *UnlinkSubgraphResponse) GetResponse() *Response { +func (x *RecomposeGraphResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -type VerifyAPIKeyGraphAccessRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RecomposeGraphResponse) GetCompositionErrors() []*CompositionError { + if x != nil { + return x.CompositionErrors + } + return nil +} - FederatedGraphId string `protobuf:"bytes,1,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` +func (x *RecomposeGraphResponse) GetDeploymentErrors() []*DeploymentError { + if x != nil { + return x.DeploymentErrors + } + return nil } -func (x *VerifyAPIKeyGraphAccessRequest) Reset() { - *x = VerifyAPIKeyGraphAccessRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RecomposeGraphResponse) GetCompositionWarnings() []*CompositionWarning { + if x != nil { + return x.CompositionWarnings + } + return nil +} + +func (x *RecomposeGraphResponse) GetErrorCounts() *SubgraphPublishStats { + if x != nil { + return x.ErrorCounts } + return nil } -func (x *VerifyAPIKeyGraphAccessRequest) String() string { +type RecomposeFeatureFlagRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Limit *int32 `protobuf:"varint,3,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + DisableResolvabilityValidation *bool `protobuf:"varint,5,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecomposeFeatureFlagRequest) Reset() { + *x = RecomposeFeatureFlagRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecomposeFeatureFlagRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VerifyAPIKeyGraphAccessRequest) ProtoMessage() {} +func (*RecomposeFeatureFlagRequest) ProtoMessage() {} -func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] - if protoimpl.UnsafeEnabled && x != nil { +func (x *RecomposeFeatureFlagRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29581,46 +30340,66 @@ func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VerifyAPIKeyGraphAccessRequest.ProtoReflect.Descriptor instead. -func (*VerifyAPIKeyGraphAccessRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} +// Deprecated: Use RecomposeFeatureFlagRequest.ProtoReflect.Descriptor instead. +func (*RecomposeFeatureFlagRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{462} } -func (x *VerifyAPIKeyGraphAccessRequest) GetFederatedGraphId() string { +func (x *RecomposeFeatureFlagRequest) GetName() string { if x != nil { - return x.FederatedGraphId + return x.Name } return "" } -type VerifyAPIKeyGraphAccessResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RecomposeFeatureFlagRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - HasOrganizationAdminOrDeveloperPermissions bool `protobuf:"varint,2,opt,name=hasOrganizationAdminOrDeveloperPermissions,proto3" json:"hasOrganizationAdminOrDeveloperPermissions,omitempty"` - HasWriteAccessToGraph bool `protobuf:"varint,3,opt,name=hasWriteAccessToGraph,proto3" json:"hasWriteAccessToGraph,omitempty"` +func (x *RecomposeFeatureFlagRequest) GetLimit() int32 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 } -func (x *VerifyAPIKeyGraphAccessResponse) Reset() { - *x = VerifyAPIKeyGraphAccessResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RecomposeFeatureFlagRequest) GetDisableResolvabilityValidation() bool { + if x != nil && x.DisableResolvabilityValidation != nil { + return *x.DisableResolvabilityValidation } + return false } -func (x *VerifyAPIKeyGraphAccessResponse) String() string { +type RecomposeFeatureFlagResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` + DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` + CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` + ErrorCounts *SubgraphPublishStats `protobuf:"bytes,5,opt,name=errorCounts,proto3,oneof" json:"errorCounts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecomposeFeatureFlagResponse) Reset() { + *x = RecomposeFeatureFlagResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecomposeFeatureFlagResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VerifyAPIKeyGraphAccessResponse) ProtoMessage() {} +func (*RecomposeFeatureFlagResponse) ProtoMessage() {} -func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] - if protoimpl.UnsafeEnabled && x != nil { +func (x *RecomposeFeatureFlagResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29630,58 +30409,68 @@ func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VerifyAPIKeyGraphAccessResponse.ProtoReflect.Descriptor instead. -func (*VerifyAPIKeyGraphAccessResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} +// Deprecated: Use RecomposeFeatureFlagResponse.ProtoReflect.Descriptor instead. +func (*RecomposeFeatureFlagResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{463} } -func (x *VerifyAPIKeyGraphAccessResponse) GetResponse() *Response { +func (x *RecomposeFeatureFlagResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *VerifyAPIKeyGraphAccessResponse) GetHasOrganizationAdminOrDeveloperPermissions() bool { +func (x *RecomposeFeatureFlagResponse) GetCompositionErrors() []*CompositionError { if x != nil { - return x.HasOrganizationAdminOrDeveloperPermissions + return x.CompositionErrors } - return false + return nil } -func (x *VerifyAPIKeyGraphAccessResponse) GetHasWriteAccessToGraph() bool { +func (x *RecomposeFeatureFlagResponse) GetDeploymentErrors() []*DeploymentError { if x != nil { - return x.HasWriteAccessToGraph + return x.DeploymentErrors } - return false + return nil } -type InitializeCosmoUserRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` +func (x *RecomposeFeatureFlagResponse) GetCompositionWarnings() []*CompositionWarning { + if x != nil { + return x.CompositionWarnings + } + return nil } -func (x *InitializeCosmoUserRequest) Reset() { - *x = InitializeCosmoUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RecomposeFeatureFlagResponse) GetErrorCounts() *SubgraphPublishStats { + if x != nil { + return x.ErrorCounts } + return nil } -func (x *InitializeCosmoUserRequest) String() string { +type GetOnboardingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetOnboardingRequest) Reset() { + *x = GetOnboardingRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetOnboardingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InitializeCosmoUserRequest) ProtoMessage() {} +func (*GetOnboardingRequest) ProtoMessage() {} -func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetOnboardingRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29691,44 +30480,37 @@ func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InitializeCosmoUserRequest.ProtoReflect.Descriptor instead. -func (*InitializeCosmoUserRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} -} - -func (x *InitializeCosmoUserRequest) GetToken() string { - if x != nil { - return x.Token - } - return "" +// Deprecated: Use GetOnboardingRequest.ProtoReflect.Descriptor instead. +func (*GetOnboardingRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{464} } -type InitializeCosmoUserResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` +type GetOnboardingResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FinishedAt *string `protobuf:"bytes,3,opt,name=finishedAt,proto3,oneof" json:"finishedAt,omitempty"` + FederatedGraphsCount int32 `protobuf:"varint,4,opt,name=federatedGraphsCount,proto3" json:"federatedGraphsCount,omitempty"` + Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *InitializeCosmoUserResponse) Reset() { - *x = InitializeCosmoUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *GetOnboardingResponse) Reset() { + *x = GetOnboardingResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *InitializeCosmoUserResponse) String() string { +func (x *GetOnboardingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InitializeCosmoUserResponse) ProtoMessage() {} +func (*GetOnboardingResponse) ProtoMessage() {} -func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetOnboardingResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29738,42 +30520,61 @@ func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InitializeCosmoUserResponse.ProtoReflect.Descriptor instead. -func (*InitializeCosmoUserResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} +// Deprecated: Use GetOnboardingResponse.ProtoReflect.Descriptor instead. +func (*GetOnboardingResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{465} } -func (x *InitializeCosmoUserResponse) GetResponse() *Response { +func (x *GetOnboardingResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -type ListOrganizationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetOnboardingResponse) GetFinishedAt() string { + if x != nil && x.FinishedAt != nil { + return *x.FinishedAt + } + return "" } -func (x *ListOrganizationsRequest) Reset() { - *x = ListOrganizationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetOnboardingResponse) GetFederatedGraphsCount() int32 { + if x != nil { + return x.FederatedGraphsCount } + return 0 } -func (x *ListOrganizationsRequest) String() string { +func (x *GetOnboardingResponse) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +type CreateOnboardingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateOnboardingRequest) Reset() { + *x = CreateOnboardingRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateOnboardingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOrganizationsRequest) ProtoMessage() {} +func (*CreateOnboardingRequest) ProtoMessage() {} -func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CreateOnboardingRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29783,38 +30584,36 @@ func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. -func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} +// Deprecated: Use CreateOnboardingRequest.ProtoReflect.Descriptor instead. +func (*CreateOnboardingRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{466} } -type ListOrganizationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - Organizations []*ListOrganizationsResponse_OrganizationMembership `protobuf:"bytes,2,rep,name=organizations,proto3" json:"organizations,omitempty"` +type CreateOnboardingResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FinishedAt *string `protobuf:"bytes,2,opt,name=finishedAt,proto3,oneof" json:"finishedAt,omitempty"` + FederatedGraphsCount int32 `protobuf:"varint,3,opt,name=federatedGraphsCount,proto3" json:"federatedGraphsCount,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListOrganizationsResponse) Reset() { - *x = ListOrganizationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *CreateOnboardingResponse) Reset() { + *x = CreateOnboardingResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListOrganizationsResponse) String() string { +func (x *CreateOnboardingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOrganizationsResponse) ProtoMessage() {} +func (*CreateOnboardingResponse) ProtoMessage() {} -func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CreateOnboardingResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29824,55 +30623,54 @@ func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. -func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} +// Deprecated: Use CreateOnboardingResponse.ProtoReflect.Descriptor instead. +func (*CreateOnboardingResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{467} } -func (x *ListOrganizationsResponse) GetResponse() *Response { +func (x *CreateOnboardingResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *ListOrganizationsResponse) GetOrganizations() []*ListOrganizationsResponse_OrganizationMembership { +func (x *CreateOnboardingResponse) GetFinishedAt() string { + if x != nil && x.FinishedAt != nil { + return *x.FinishedAt + } + return "" +} + +func (x *CreateOnboardingResponse) GetFederatedGraphsCount() int32 { if x != nil { - return x.Organizations + return x.FederatedGraphsCount } - return nil + return 0 } -type RecomposeGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type FinishOnboardingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - IsMonograph bool `protobuf:"varint,3,opt,name=is_monograph,json=isMonograph,proto3" json:"is_monograph,omitempty"` - Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` - DisableResolvabilityValidation *bool `protobuf:"varint,5,opt,name=disable_resolvability_validation,json=disableResolvabilityValidation,proto3,oneof" json:"disable_resolvability_validation,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *RecomposeGraphRequest) Reset() { - *x = RecomposeGraphRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *FinishOnboardingRequest) Reset() { + *x = FinishOnboardingRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *RecomposeGraphRequest) String() string { +func (x *FinishOnboardingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecomposeGraphRequest) ProtoMessage() {} +func (*FinishOnboardingRequest) ProtoMessage() {} -func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] - if protoimpl.UnsafeEnabled && x != nil { +func (x *FinishOnboardingRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29882,76 +30680,36 @@ func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecomposeGraphRequest.ProtoReflect.Descriptor instead. -func (*RecomposeGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} -} - -func (x *RecomposeGraphRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RecomposeGraphRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *RecomposeGraphRequest) GetIsMonograph() bool { - if x != nil { - return x.IsMonograph - } - return false -} - -func (x *RecomposeGraphRequest) GetLimit() int32 { - if x != nil && x.Limit != nil { - return *x.Limit - } - return 0 -} - -func (x *RecomposeGraphRequest) GetDisableResolvabilityValidation() bool { - if x != nil && x.DisableResolvabilityValidation != nil { - return *x.DisableResolvabilityValidation - } - return false +// Deprecated: Use FinishOnboardingRequest.ProtoReflect.Descriptor instead. +func (*FinishOnboardingRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{468} } -type RecomposeGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - CompositionErrors []*CompositionError `protobuf:"bytes,2,rep,name=compositionErrors,proto3" json:"compositionErrors,omitempty"` - DeploymentErrors []*DeploymentError `protobuf:"bytes,3,rep,name=deploymentErrors,proto3" json:"deploymentErrors,omitempty"` - CompositionWarnings []*CompositionWarning `protobuf:"bytes,4,rep,name=compositionWarnings,proto3" json:"compositionWarnings,omitempty"` - ErrorCounts *SubgraphPublishStats `protobuf:"bytes,5,opt,name=errorCounts,proto3,oneof" json:"errorCounts,omitempty"` +type FinishOnboardingResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + FederatedGraphsCount int32 `protobuf:"varint,2,opt,name=federatedGraphsCount,proto3" json:"federatedGraphsCount,omitempty"` + FinishedAt string `protobuf:"bytes,3,opt,name=finishedAt,proto3" json:"finishedAt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *RecomposeGraphResponse) Reset() { - *x = RecomposeGraphResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *FinishOnboardingResponse) Reset() { + *x = FinishOnboardingResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *RecomposeGraphResponse) String() string { +func (x *FinishOnboardingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecomposeGraphResponse) ProtoMessage() {} +func (*FinishOnboardingResponse) ProtoMessage() {} -func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] - if protoimpl.UnsafeEnabled && x != nil { +func (x *FinishOnboardingResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -29961,62 +30719,45 @@ func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecomposeGraphResponse.ProtoReflect.Descriptor instead. -func (*RecomposeGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} +// Deprecated: Use FinishOnboardingResponse.ProtoReflect.Descriptor instead. +func (*FinishOnboardingResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{469} } -func (x *RecomposeGraphResponse) GetResponse() *Response { +func (x *FinishOnboardingResponse) GetResponse() *Response { if x != nil { return x.Response } return nil } -func (x *RecomposeGraphResponse) GetCompositionErrors() []*CompositionError { - if x != nil { - return x.CompositionErrors - } - return nil -} - -func (x *RecomposeGraphResponse) GetDeploymentErrors() []*DeploymentError { - if x != nil { - return x.DeploymentErrors - } - return nil -} - -func (x *RecomposeGraphResponse) GetCompositionWarnings() []*CompositionWarning { +func (x *FinishOnboardingResponse) GetFederatedGraphsCount() int32 { if x != nil { - return x.CompositionWarnings + return x.FederatedGraphsCount } - return nil + return 0 } -func (x *RecomposeGraphResponse) GetErrorCounts() *SubgraphPublishStats { +func (x *FinishOnboardingResponse) GetFinishedAt() string { if x != nil { - return x.ErrorCounts + return x.FinishedAt } - return nil + return "" } type Subgraph_PluginData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms,omitempty"` unknownFields protoimpl.UnknownFields - - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Subgraph_PluginData) Reset() { *x = Subgraph_PluginData{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subgraph_PluginData) String() string { @@ -30026,8 +30767,8 @@ func (x *Subgraph_PluginData) String() string { func (*Subgraph_PluginData) ProtoMessage() {} func (x *Subgraph_PluginData) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30039,7 +30780,7 @@ func (x *Subgraph_PluginData) ProtoReflect() protoreflect.Message { // Deprecated: Use Subgraph_PluginData.ProtoReflect.Descriptor instead. func (*Subgraph_PluginData) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{45, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{48, 0} } func (x *Subgraph_PluginData) GetVersion() string { @@ -30057,22 +30798,19 @@ func (x *Subgraph_PluginData) GetPlatforms() []string { } type GetSubgraphByNameResponse_LinkedSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSubgraphByNameResponse_LinkedSubgraph) Reset() { *x = GetSubgraphByNameResponse_LinkedSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSubgraphByNameResponse_LinkedSubgraph) String() string { @@ -30082,8 +30820,8 @@ func (x *GetSubgraphByNameResponse_LinkedSubgraph) String() string { func (*GetSubgraphByNameResponse_LinkedSubgraph) ProtoMessage() {} func (x *GetSubgraphByNameResponse_LinkedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30095,7 +30833,7 @@ func (x *GetSubgraphByNameResponse_LinkedSubgraph) ProtoReflect() protoreflect.M // Deprecated: Use GetSubgraphByNameResponse_LinkedSubgraph.ProtoReflect.Descriptor instead. func (*GetSubgraphByNameResponse_LinkedSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{52, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{55, 0} } func (x *GetSubgraphByNameResponse_LinkedSubgraph) GetId() string { @@ -30120,22 +30858,19 @@ func (x *GetSubgraphByNameResponse_LinkedSubgraph) GetNamespace() string { } type SchemaCheck_GhDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommitSha string `protobuf:"bytes,1,opt,name=commitSha,proto3" json:"commitSha,omitempty"` - OwnerSlug string `protobuf:"bytes,2,opt,name=ownerSlug,proto3" json:"ownerSlug,omitempty"` - RepositorySlug string `protobuf:"bytes,3,opt,name=repositorySlug,proto3" json:"repositorySlug,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + CommitSha string `protobuf:"bytes,1,opt,name=commitSha,proto3" json:"commitSha,omitempty"` + OwnerSlug string `protobuf:"bytes,2,opt,name=ownerSlug,proto3" json:"ownerSlug,omitempty"` + RepositorySlug string `protobuf:"bytes,3,opt,name=repositorySlug,proto3" json:"repositorySlug,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaCheck_GhDetails) Reset() { *x = SchemaCheck_GhDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaCheck_GhDetails) String() string { @@ -30145,8 +30880,8 @@ func (x *SchemaCheck_GhDetails) String() string { func (*SchemaCheck_GhDetails) ProtoMessage() {} func (x *SchemaCheck_GhDetails) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30158,7 +30893,7 @@ func (x *SchemaCheck_GhDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaCheck_GhDetails.ProtoReflect.Descriptor instead. func (*SchemaCheck_GhDetails) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{59, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{62, 0} } func (x *SchemaCheck_GhDetails) GetCommitSha() string { @@ -30183,27 +30918,24 @@ func (x *SchemaCheck_GhDetails) GetRepositorySlug() string { } type SchemaCheck_CheckedSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // its the check subgraph id Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SubgraphName string `protobuf:"bytes,2,opt,name=subgraphName,proto3" json:"subgraphName,omitempty"` // its optional because the subgraph can be deleted - SubgraphId *string `protobuf:"bytes,3,opt,name=subgraphId,proto3,oneof" json:"subgraphId,omitempty"` - IsDeleted bool `protobuf:"varint,4,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"` - IsNew bool `protobuf:"varint,5,opt,name=isNew,proto3" json:"isNew,omitempty"` - Labels []*Label `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty"` + SubgraphId *string `protobuf:"bytes,3,opt,name=subgraphId,proto3,oneof" json:"subgraphId,omitempty"` + IsDeleted bool `protobuf:"varint,4,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"` + IsNew bool `protobuf:"varint,5,opt,name=isNew,proto3" json:"isNew,omitempty"` + Labels []*Label `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaCheck_CheckedSubgraph) Reset() { *x = SchemaCheck_CheckedSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaCheck_CheckedSubgraph) String() string { @@ -30213,8 +30945,8 @@ func (x *SchemaCheck_CheckedSubgraph) String() string { func (*SchemaCheck_CheckedSubgraph) ProtoMessage() {} func (x *SchemaCheck_CheckedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30226,7 +30958,7 @@ func (x *SchemaCheck_CheckedSubgraph) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaCheck_CheckedSubgraph.ProtoReflect.Descriptor instead. func (*SchemaCheck_CheckedSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{59, 1} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{62, 1} } func (x *SchemaCheck_CheckedSubgraph) GetId() string { @@ -30272,29 +31004,26 @@ func (x *SchemaCheck_CheckedSubgraph) GetLabels() []*Label { } type SchemaCheck_LinkedCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - AffectedGraphNames []string `protobuf:"bytes,2,rep,name=affectedGraphNames,proto3" json:"affectedGraphNames,omitempty"` - IsCheckSuccessful bool `protobuf:"varint,3,opt,name=isCheckSuccessful,proto3" json:"isCheckSuccessful,omitempty"` - HasClientTraffic bool `protobuf:"varint,4,opt,name=hasClientTraffic,proto3" json:"hasClientTraffic,omitempty"` - HasGraphPruningErrors bool `protobuf:"varint,5,opt,name=hasGraphPruningErrors,proto3" json:"hasGraphPruningErrors,omitempty"` - ClientTrafficCheckSkipped bool `protobuf:"varint,6,opt,name=clientTrafficCheckSkipped,proto3" json:"clientTrafficCheckSkipped,omitempty"` - GraphPruningCheckSkipped bool `protobuf:"varint,7,opt,name=graphPruningCheckSkipped,proto3" json:"graphPruningCheckSkipped,omitempty"` - SubgraphNames []string `protobuf:"bytes,8,rep,name=subgraphNames,proto3" json:"subgraphNames,omitempty"` - Namespace string `protobuf:"bytes,9,opt,name=namespace,proto3" json:"namespace,omitempty"` - IsForcedSuccess bool `protobuf:"varint,10,opt,name=isForcedSuccess,proto3" json:"isForcedSuccess,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AffectedGraphNames []string `protobuf:"bytes,2,rep,name=affectedGraphNames,proto3" json:"affectedGraphNames,omitempty"` + IsCheckSuccessful bool `protobuf:"varint,3,opt,name=isCheckSuccessful,proto3" json:"isCheckSuccessful,omitempty"` + HasClientTraffic bool `protobuf:"varint,4,opt,name=hasClientTraffic,proto3" json:"hasClientTraffic,omitempty"` + HasGraphPruningErrors bool `protobuf:"varint,5,opt,name=hasGraphPruningErrors,proto3" json:"hasGraphPruningErrors,omitempty"` + ClientTrafficCheckSkipped bool `protobuf:"varint,6,opt,name=clientTrafficCheckSkipped,proto3" json:"clientTrafficCheckSkipped,omitempty"` + GraphPruningCheckSkipped bool `protobuf:"varint,7,opt,name=graphPruningCheckSkipped,proto3" json:"graphPruningCheckSkipped,omitempty"` + SubgraphNames []string `protobuf:"bytes,8,rep,name=subgraphNames,proto3" json:"subgraphNames,omitempty"` + Namespace string `protobuf:"bytes,9,opt,name=namespace,proto3" json:"namespace,omitempty"` + IsForcedSuccess bool `protobuf:"varint,10,opt,name=isForcedSuccess,proto3" json:"isForcedSuccess,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaCheck_LinkedCheck) Reset() { *x = SchemaCheck_LinkedCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaCheck_LinkedCheck) String() string { @@ -30304,8 +31033,8 @@ func (x *SchemaCheck_LinkedCheck) String() string { func (*SchemaCheck_LinkedCheck) ProtoMessage() {} func (x *SchemaCheck_LinkedCheck) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30317,7 +31046,7 @@ func (x *SchemaCheck_LinkedCheck) ProtoReflect() protoreflect.Message { // Deprecated: Use SchemaCheck_LinkedCheck.ProtoReflect.Descriptor instead. func (*SchemaCheck_LinkedCheck) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{59, 2} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{62, 2} } func (x *SchemaCheck_LinkedCheck) GetId() string { @@ -30391,28 +31120,25 @@ func (x *SchemaCheck_LinkedCheck) GetIsForcedSuccess() bool { } type GetCheckSummaryResponse_AffectedGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - TrafficCheckDays int32 `protobuf:"varint,2,opt,name=traffic_check_days,json=trafficCheckDays,proto3" json:"traffic_check_days,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - IsCheckSuccessful bool `protobuf:"varint,4,opt,name=isCheckSuccessful,proto3" json:"isCheckSuccessful,omitempty"` - IsComposable bool `protobuf:"varint,5,opt,name=isComposable,proto3" json:"isComposable,omitempty"` - IsBreaking bool `protobuf:"varint,6,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` - HasClientTraffic bool `protobuf:"varint,7,opt,name=hasClientTraffic,proto3" json:"hasClientTraffic,omitempty"` - HasLintErrors bool `protobuf:"varint,8,opt,name=hasLintErrors,proto3" json:"hasLintErrors,omitempty"` - HasGraphPruningErrors bool `protobuf:"varint,9,opt,name=hasGraphPruningErrors,proto3" json:"hasGraphPruningErrors,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TrafficCheckDays int32 `protobuf:"varint,2,opt,name=traffic_check_days,json=trafficCheckDays,proto3" json:"traffic_check_days,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + IsCheckSuccessful bool `protobuf:"varint,4,opt,name=isCheckSuccessful,proto3" json:"isCheckSuccessful,omitempty"` + IsComposable bool `protobuf:"varint,5,opt,name=isComposable,proto3" json:"isComposable,omitempty"` + IsBreaking bool `protobuf:"varint,6,opt,name=isBreaking,proto3" json:"isBreaking,omitempty"` + HasClientTraffic bool `protobuf:"varint,7,opt,name=hasClientTraffic,proto3" json:"hasClientTraffic,omitempty"` + HasLintErrors bool `protobuf:"varint,8,opt,name=hasLintErrors,proto3" json:"hasLintErrors,omitempty"` + HasGraphPruningErrors bool `protobuf:"varint,9,opt,name=hasGraphPruningErrors,proto3" json:"hasGraphPruningErrors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCheckSummaryResponse_AffectedGraph) Reset() { *x = GetCheckSummaryResponse_AffectedGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckSummaryResponse_AffectedGraph) String() string { @@ -30422,8 +31148,8 @@ func (x *GetCheckSummaryResponse_AffectedGraph) String() string { func (*GetCheckSummaryResponse_AffectedGraph) ProtoMessage() {} func (x *GetCheckSummaryResponse_AffectedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30435,7 +31161,7 @@ func (x *GetCheckSummaryResponse_AffectedGraph) ProtoReflect() protoreflect.Mess // Deprecated: Use GetCheckSummaryResponse_AffectedGraph.ProtoReflect.Descriptor instead. func (*GetCheckSummaryResponse_AffectedGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{63, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{66, 0} } func (x *GetCheckSummaryResponse_AffectedGraph) GetId() string { @@ -30502,22 +31228,19 @@ func (x *GetCheckSummaryResponse_AffectedGraph) GetHasGraphPruningErrors() bool } type GetCheckSummaryResponse_ProposalSchemaMatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + ProposalName string `protobuf:"bytes,2,opt,name=proposalName,proto3" json:"proposalName,omitempty"` + ProposalMatch bool `protobuf:"varint,3,opt,name=proposalMatch,proto3" json:"proposalMatch,omitempty"` unknownFields protoimpl.UnknownFields - - ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` - ProposalName string `protobuf:"bytes,2,opt,name=proposalName,proto3" json:"proposalName,omitempty"` - ProposalMatch bool `protobuf:"varint,3,opt,name=proposalMatch,proto3" json:"proposalMatch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCheckSummaryResponse_ProposalSchemaMatch) Reset() { *x = GetCheckSummaryResponse_ProposalSchemaMatch{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckSummaryResponse_ProposalSchemaMatch) String() string { @@ -30527,8 +31250,8 @@ func (x *GetCheckSummaryResponse_ProposalSchemaMatch) String() string { func (*GetCheckSummaryResponse_ProposalSchemaMatch) ProtoMessage() {} func (x *GetCheckSummaryResponse_ProposalSchemaMatch) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30540,7 +31263,7 @@ func (x *GetCheckSummaryResponse_ProposalSchemaMatch) ProtoReflect() protoreflec // Deprecated: Use GetCheckSummaryResponse_ProposalSchemaMatch.ProtoReflect.Descriptor instead. func (*GetCheckSummaryResponse_ProposalSchemaMatch) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{63, 1} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{66, 1} } func (x *GetCheckSummaryResponse_ProposalSchemaMatch) GetProposalId() string { @@ -30565,27 +31288,24 @@ func (x *GetCheckSummaryResponse_ProposalSchemaMatch) GetProposalMatch() bool { } type GetCheckOperationsResponse_CheckOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - FirstSeenAt string `protobuf:"bytes,4,opt,name=first_seen_at,json=firstSeenAt,proto3" json:"first_seen_at,omitempty"` - LastSeenAt string `protobuf:"bytes,5,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` - ImpactingChanges []*SchemaChange `protobuf:"bytes,6,rep,name=impacting_changes,json=impactingChanges,proto3" json:"impacting_changes,omitempty"` - IsSafe bool `protobuf:"varint,7,opt,name=is_safe,json=isSafe,proto3" json:"is_safe,omitempty"` - HasIgnoreAllOverride bool `protobuf:"varint,8,opt,name=hasIgnoreAllOverride,proto3" json:"hasIgnoreAllOverride,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + FirstSeenAt string `protobuf:"bytes,4,opt,name=first_seen_at,json=firstSeenAt,proto3" json:"first_seen_at,omitempty"` + LastSeenAt string `protobuf:"bytes,5,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` + ImpactingChanges []*SchemaChange `protobuf:"bytes,6,rep,name=impacting_changes,json=impactingChanges,proto3" json:"impacting_changes,omitempty"` + IsSafe bool `protobuf:"varint,7,opt,name=is_safe,json=isSafe,proto3" json:"is_safe,omitempty"` + HasIgnoreAllOverride bool `protobuf:"varint,8,opt,name=hasIgnoreAllOverride,proto3" json:"hasIgnoreAllOverride,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCheckOperationsResponse_CheckOperation) Reset() { *x = GetCheckOperationsResponse_CheckOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCheckOperationsResponse_CheckOperation) String() string { @@ -30595,8 +31315,8 @@ func (x *GetCheckOperationsResponse_CheckOperation) String() string { func (*GetCheckOperationsResponse_CheckOperation) ProtoMessage() {} func (x *GetCheckOperationsResponse_CheckOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30608,7 +31328,7 @@ func (x *GetCheckOperationsResponse_CheckOperation) ProtoReflect() protoreflect. // Deprecated: Use GetCheckOperationsResponse_CheckOperation.ProtoReflect.Descriptor instead. func (*GetCheckOperationsResponse_CheckOperation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{65, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{68, 0} } func (x *GetCheckOperationsResponse_CheckOperation) GetHash() string { @@ -30668,22 +31388,19 @@ func (x *GetCheckOperationsResponse_CheckOperation) GetHasIgnoreAllOverride() bo } type GetOrganizationGroupMembersResponse_GroupMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupMembersResponse_GroupMember) Reset() { *x = GetOrganizationGroupMembersResponse_GroupMember{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupMembersResponse_GroupMember) String() string { @@ -30693,8 +31410,8 @@ func (x *GetOrganizationGroupMembersResponse_GroupMember) String() string { func (*GetOrganizationGroupMembersResponse_GroupMember) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupMember) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30706,7 +31423,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupMember) ProtoReflect() protore // Deprecated: Use GetOrganizationGroupMembersResponse_GroupMember.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupMembersResponse_GroupMember) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{109, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{112, 0} } func (x *GetOrganizationGroupMembersResponse_GroupMember) GetId() string { @@ -30731,22 +31448,19 @@ func (x *GetOrganizationGroupMembersResponse_GroupMember) GetCreatedAt() string } type GetOrganizationGroupMembersResponse_GroupApiKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationGroupMembersResponse_GroupApiKey) Reset() { *x = GetOrganizationGroupMembersResponse_GroupApiKey{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationGroupMembersResponse_GroupApiKey) String() string { @@ -30756,8 +31470,8 @@ func (x *GetOrganizationGroupMembersResponse_GroupApiKey) String() string { func (*GetOrganizationGroupMembersResponse_GroupApiKey) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupApiKey) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30769,7 +31483,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupApiKey) ProtoReflect() protore // Deprecated: Use GetOrganizationGroupMembersResponse_GroupApiKey.ProtoReflect.Descriptor instead. func (*GetOrganizationGroupMembersResponse_GroupApiKey) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{109, 1} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{112, 1} } func (x *GetOrganizationGroupMembersResponse_GroupApiKey) GetId() string { @@ -30794,22 +31508,19 @@ func (x *GetOrganizationGroupMembersResponse_GroupApiKey) GetCreatedAt() string } type UpdateOrganizationGroupRequest_GroupRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Namespaces []string `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + Resources []string `protobuf:"bytes,3,rep,name=resources,proto3" json:"resources,omitempty"` unknownFields protoimpl.UnknownFields - - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - Namespaces []string `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` - Resources []string `protobuf:"bytes,3,rep,name=resources,proto3" json:"resources,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateOrganizationGroupRequest_GroupRule) Reset() { *x = UpdateOrganizationGroupRequest_GroupRule{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateOrganizationGroupRequest_GroupRule) String() string { @@ -30819,8 +31530,8 @@ func (x *UpdateOrganizationGroupRequest_GroupRule) String() string { func (*UpdateOrganizationGroupRequest_GroupRule) ProtoMessage() {} func (x *UpdateOrganizationGroupRequest_GroupRule) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30832,7 +31543,7 @@ func (x *UpdateOrganizationGroupRequest_GroupRule) ProtoReflect() protoreflect.M // Deprecated: Use UpdateOrganizationGroupRequest_GroupRule.ProtoReflect.Descriptor instead. func (*UpdateOrganizationGroupRequest_GroupRule) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{110, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{113, 0} } func (x *UpdateOrganizationGroupRequest_GroupRule) GetRole() string { @@ -30857,21 +31568,18 @@ func (x *UpdateOrganizationGroupRequest_GroupRule) GetResources() []string { } type OrgMember_Group struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=groupId,proto3" json:"groupId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OrgMember_Group) Reset() { *x = OrgMember_Group{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[482] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OrgMember_Group) String() string { @@ -30881,8 +31589,8 @@ func (x *OrgMember_Group) String() string { func (*OrgMember_Group) ProtoMessage() {} func (x *OrgMember_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[482] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30894,7 +31602,7 @@ func (x *OrgMember_Group) ProtoReflect() protoreflect.Message { // Deprecated: Use OrgMember_Group.ProtoReflect.Descriptor instead. func (*OrgMember_Group) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{114, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{117, 0} } func (x *OrgMember_Group) GetGroupId() string { @@ -30912,21 +31620,18 @@ func (x *OrgMember_Group) GetName() string { } type APIKey_Group struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APIKey_Group) Reset() { *x = APIKey_Group{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[483] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *APIKey_Group) String() string { @@ -30936,8 +31641,8 @@ func (x *APIKey_Group) String() string { func (*APIKey_Group) ProtoMessage() {} func (x *APIKey_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[483] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -30949,7 +31654,7 @@ func (x *APIKey_Group) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKey_Group.ProtoReflect.Descriptor instead. func (*APIKey_Group) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{122, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{128, 0} } func (x *APIKey_Group) GetId() string { @@ -30967,23 +31672,20 @@ func (x *APIKey_Group) GetName() string { } type DeletePersistedOperationResponse_Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OperationId string `protobuf:"bytes,2,opt,name=operationId,proto3" json:"operationId,omitempty"` - ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` - OperationNames []string `protobuf:"bytes,4,rep,name=operationNames,proto3" json:"operationNames,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OperationId string `protobuf:"bytes,2,opt,name=operationId,proto3" json:"operationId,omitempty"` + ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` + OperationNames []string `protobuf:"bytes,4,rep,name=operationNames,proto3" json:"operationNames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeletePersistedOperationResponse_Operation) Reset() { *x = DeletePersistedOperationResponse_Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[485] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePersistedOperationResponse_Operation) String() string { @@ -30993,8 +31695,8 @@ func (x *DeletePersistedOperationResponse_Operation) String() string { func (*DeletePersistedOperationResponse_Operation) ProtoMessage() {} func (x *DeletePersistedOperationResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[485] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31006,7 +31708,7 @@ func (x *DeletePersistedOperationResponse_Operation) ProtoReflect() protoreflect // Deprecated: Use DeletePersistedOperationResponse_Operation.ProtoReflect.Descriptor instead. func (*DeletePersistedOperationResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{154, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{161, 0} } func (x *DeletePersistedOperationResponse_Operation) GetId() string { @@ -31038,24 +31740,21 @@ func (x *DeletePersistedOperationResponse_Operation) GetOperationNames() []strin } type CheckPersistedOperationTrafficResponse_Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OperationId string `protobuf:"bytes,2,opt,name=operationId,proto3" json:"operationId,omitempty"` - ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` - OperationNames []string `protobuf:"bytes,4,rep,name=operationNames,proto3" json:"operationNames,omitempty"` - HasTraffic bool `protobuf:"varint,5,opt,name=hasTraffic,proto3" json:"hasTraffic,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OperationId string `protobuf:"bytes,2,opt,name=operationId,proto3" json:"operationId,omitempty"` + ClientName string `protobuf:"bytes,3,opt,name=clientName,proto3" json:"clientName,omitempty"` + OperationNames []string `protobuf:"bytes,4,rep,name=operationNames,proto3" json:"operationNames,omitempty"` + HasTraffic bool `protobuf:"varint,5,opt,name=hasTraffic,proto3" json:"hasTraffic,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckPersistedOperationTrafficResponse_Operation) Reset() { *x = CheckPersistedOperationTrafficResponse_Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[486] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckPersistedOperationTrafficResponse_Operation) String() string { @@ -31065,8 +31764,8 @@ func (x *CheckPersistedOperationTrafficResponse_Operation) String() string { func (*CheckPersistedOperationTrafficResponse_Operation) ProtoMessage() {} func (x *CheckPersistedOperationTrafficResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[486] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31078,7 +31777,7 @@ func (x *CheckPersistedOperationTrafficResponse_Operation) ProtoReflect() protor // Deprecated: Use CheckPersistedOperationTrafficResponse_Operation.ProtoReflect.Descriptor instead. func (*CheckPersistedOperationTrafficResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{156, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{163, 0} } func (x *CheckPersistedOperationTrafficResponse_Operation) GetId() string { @@ -31117,24 +31816,21 @@ func (x *CheckPersistedOperationTrafficResponse_Operation) GetHasTraffic() bool } type GetPersistedOperationsResponse_Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Contents string `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - LastUpdatedAt string `protobuf:"bytes,4,opt,name=last_updated_at,json=lastUpdatedAt,proto3" json:"last_updated_at,omitempty"` - OperationNames []string `protobuf:"bytes,5,rep,name=operation_names,json=operationNames,proto3" json:"operation_names,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Contents string `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + LastUpdatedAt string `protobuf:"bytes,4,opt,name=last_updated_at,json=lastUpdatedAt,proto3" json:"last_updated_at,omitempty"` + OperationNames []string `protobuf:"bytes,5,rep,name=operation_names,json=operationNames,proto3" json:"operation_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPersistedOperationsResponse_Operation) Reset() { *x = GetPersistedOperationsResponse_Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[487] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPersistedOperationsResponse_Operation) String() string { @@ -31144,8 +31840,8 @@ func (x *GetPersistedOperationsResponse_Operation) String() string { func (*GetPersistedOperationsResponse_Operation) ProtoMessage() {} func (x *GetPersistedOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[487] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31157,7 +31853,7 @@ func (x *GetPersistedOperationsResponse_Operation) ProtoReflect() protoreflect.M // Deprecated: Use GetPersistedOperationsResponse_Operation.ProtoReflect.Descriptor instead. func (*GetPersistedOperationsResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{158, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{165, 0} } func (x *GetPersistedOperationsResponse_Operation) GetId() string { @@ -31196,22 +31892,19 @@ func (x *GetPersistedOperationsResponse_Operation) GetOperationNames() []string } type GetOrganizationWebhookConfigsResponse_Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - Events []string `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetOrganizationWebhookConfigsResponse_Config) Reset() { *x = GetOrganizationWebhookConfigsResponse_Config{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[488] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrganizationWebhookConfigsResponse_Config) String() string { @@ -31221,8 +31914,8 @@ func (x *GetOrganizationWebhookConfigsResponse_Config) String() string { func (*GetOrganizationWebhookConfigsResponse_Config) ProtoMessage() {} func (x *GetOrganizationWebhookConfigsResponse_Config) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[488] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31234,7 +31927,7 @@ func (x *GetOrganizationWebhookConfigsResponse_Config) ProtoReflect() protorefle // Deprecated: Use GetOrganizationWebhookConfigsResponse_Config.ProtoReflect.Descriptor instead. func (*GetOrganizationWebhookConfigsResponse_Config) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{163, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{170, 0} } func (x *GetOrganizationWebhookConfigsResponse_Config) GetId() string { @@ -31259,22 +31952,19 @@ func (x *GetOrganizationWebhookConfigsResponse_Config) GetEvents() []string { } type GetBillingPlansResponse_BillingPlanFeature struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Limit *int32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBillingPlansResponse_BillingPlanFeature) Reset() { *x = GetBillingPlansResponse_BillingPlanFeature{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[489] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBillingPlansResponse_BillingPlanFeature) String() string { @@ -31284,8 +31974,8 @@ func (x *GetBillingPlansResponse_BillingPlanFeature) String() string { func (*GetBillingPlansResponse_BillingPlanFeature) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlanFeature) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[489] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31297,7 +31987,7 @@ func (x *GetBillingPlansResponse_BillingPlanFeature) ProtoReflect() protoreflect // Deprecated: Use GetBillingPlansResponse_BillingPlanFeature.ProtoReflect.Descriptor instead. func (*GetBillingPlansResponse_BillingPlanFeature) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{197, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{204, 0} } func (x *GetBillingPlansResponse_BillingPlanFeature) GetId() string { @@ -31322,23 +32012,20 @@ func (x *GetBillingPlansResponse_BillingPlanFeature) GetLimit() int32 { } type GetBillingPlansResponse_BillingPlan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Price int32 `protobuf:"varint,3,opt,name=price,proto3" json:"price,omitempty"` + Features []*GetBillingPlansResponse_BillingPlanFeature `protobuf:"bytes,4,rep,name=features,proto3" json:"features,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Price int32 `protobuf:"varint,3,opt,name=price,proto3" json:"price,omitempty"` - Features []*GetBillingPlansResponse_BillingPlanFeature `protobuf:"bytes,4,rep,name=features,proto3" json:"features,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBillingPlansResponse_BillingPlan) Reset() { *x = GetBillingPlansResponse_BillingPlan{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[490] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBillingPlansResponse_BillingPlan) String() string { @@ -31348,8 +32035,8 @@ func (x *GetBillingPlansResponse_BillingPlan) String() string { func (*GetBillingPlansResponse_BillingPlan) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlan) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[490] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31361,7 +32048,7 @@ func (x *GetBillingPlansResponse_BillingPlan) ProtoReflect() protoreflect.Messag // Deprecated: Use GetBillingPlansResponse_BillingPlan.ProtoReflect.Descriptor instead. func (*GetBillingPlansResponse_BillingPlan) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{197, 1} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{204, 1} } func (x *GetBillingPlansResponse_BillingPlan) GetId() string { @@ -31393,24 +32080,21 @@ func (x *GetBillingPlansResponse_BillingPlan) GetFeatures() []*GetBillingPlansRe } type GetAllOverridesResponse_Override struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ChangesOverrideCount uint32 `protobuf:"varint,3,opt,name=changesOverrideCount,proto3" json:"changesOverrideCount,omitempty"` - HasIgnoreAllOverride bool `protobuf:"varint,4,opt,name=hasIgnoreAllOverride,proto3" json:"hasIgnoreAllOverride,omitempty"` - UpdatedAt string `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ChangesOverrideCount uint32 `protobuf:"varint,3,opt,name=changesOverrideCount,proto3" json:"changesOverrideCount,omitempty"` + HasIgnoreAllOverride bool `protobuf:"varint,4,opt,name=hasIgnoreAllOverride,proto3" json:"hasIgnoreAllOverride,omitempty"` + UpdatedAt string `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetAllOverridesResponse_Override) Reset() { *x = GetAllOverridesResponse_Override{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[491] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllOverridesResponse_Override) String() string { @@ -31420,8 +32104,8 @@ func (x *GetAllOverridesResponse_Override) String() string { func (*GetAllOverridesResponse_Override) ProtoMessage() {} func (x *GetAllOverridesResponse_Override) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[491] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31433,7 +32117,7 @@ func (x *GetAllOverridesResponse_Override) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllOverridesResponse_Override.ProtoReflect.Descriptor instead. func (*GetAllOverridesResponse_Override) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{235, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{242, 0} } func (x *GetAllOverridesResponse_Override) GetHash() string { @@ -31472,21 +32156,18 @@ func (x *GetAllOverridesResponse_Override) GetUpdatedAt() string { } type GetUserAccessibleResourcesResponse_Namespace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUserAccessibleResourcesResponse_Namespace) Reset() { *x = GetUserAccessibleResourcesResponse_Namespace{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[492] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessibleResourcesResponse_Namespace) String() string { @@ -31496,8 +32177,8 @@ func (x *GetUserAccessibleResourcesResponse_Namespace) String() string { func (*GetUserAccessibleResourcesResponse_Namespace) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_Namespace) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[492] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31509,7 +32190,7 @@ func (x *GetUserAccessibleResourcesResponse_Namespace) ProtoReflect() protorefle // Deprecated: Use GetUserAccessibleResourcesResponse_Namespace.ProtoReflect.Descriptor instead. func (*GetUserAccessibleResourcesResponse_Namespace) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{269, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{279, 0} } func (x *GetUserAccessibleResourcesResponse_Namespace) GetId() string { @@ -31527,22 +32208,19 @@ func (x *GetUserAccessibleResourcesResponse_Namespace) GetName() string { } type GetUserAccessibleResourcesResponse_FederatedGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TargetId string `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields - - TargetId string `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUserAccessibleResourcesResponse_FederatedGraph) Reset() { *x = GetUserAccessibleResourcesResponse_FederatedGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[493] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessibleResourcesResponse_FederatedGraph) String() string { @@ -31552,8 +32230,8 @@ func (x *GetUserAccessibleResourcesResponse_FederatedGraph) String() string { func (*GetUserAccessibleResourcesResponse_FederatedGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_FederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[493] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31565,7 +32243,7 @@ func (x *GetUserAccessibleResourcesResponse_FederatedGraph) ProtoReflect() proto // Deprecated: Use GetUserAccessibleResourcesResponse_FederatedGraph.ProtoReflect.Descriptor instead. func (*GetUserAccessibleResourcesResponse_FederatedGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{269, 1} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{279, 1} } func (x *GetUserAccessibleResourcesResponse_FederatedGraph) GetTargetId() string { @@ -31590,23 +32268,20 @@ func (x *GetUserAccessibleResourcesResponse_FederatedGraph) GetNamespace() strin } type GetUserAccessibleResourcesResponse_SubGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TargetId string `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - FederatedGraphId string `protobuf:"bytes,4,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TargetId string `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + FederatedGraphId string `protobuf:"bytes,4,opt,name=federatedGraphId,proto3" json:"federatedGraphId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetUserAccessibleResourcesResponse_SubGraph) Reset() { *x = GetUserAccessibleResourcesResponse_SubGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[494] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserAccessibleResourcesResponse_SubGraph) String() string { @@ -31616,8 +32291,8 @@ func (x *GetUserAccessibleResourcesResponse_SubGraph) String() string { func (*GetUserAccessibleResourcesResponse_SubGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_SubGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[494] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31629,7 +32304,7 @@ func (x *GetUserAccessibleResourcesResponse_SubGraph) ProtoReflect() protoreflec // Deprecated: Use GetUserAccessibleResourcesResponse_SubGraph.ProtoReflect.Descriptor instead. func (*GetUserAccessibleResourcesResponse_SubGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{269, 2} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{279, 2} } func (x *GetUserAccessibleResourcesResponse_SubGraph) GetTargetId() string { @@ -31661,22 +32336,19 @@ func (x *GetUserAccessibleResourcesResponse_SubGraph) GetFederatedGraphId() stri } type ClientWithOperations_Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClientWithOperations_Operation) Reset() { *x = ClientWithOperations_Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[495] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ClientWithOperations_Operation) String() string { @@ -31686,8 +32358,8 @@ func (x *ClientWithOperations_Operation) String() string { func (*ClientWithOperations_Operation) ProtoMessage() {} func (x *ClientWithOperations_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[495] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31699,7 +32371,7 @@ func (x *ClientWithOperations_Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientWithOperations_Operation.ProtoReflect.Descriptor instead. func (*ClientWithOperations_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{284, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{294, 0} } func (x *ClientWithOperations_Operation) GetHash() string { @@ -31724,21 +32396,18 @@ func (x *ClientWithOperations_Operation) GetCount() int32 { } type GetFeatureFlagByNameResponse_FfFederatedGraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FederatedGraph *FederatedGraph `protobuf:"bytes,1,opt,name=federated_graph,json=federatedGraph,proto3" json:"federated_graph,omitempty"` - IsConnected bool `protobuf:"varint,2,opt,name=is_connected,json=isConnected,proto3" json:"is_connected,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraph *FederatedGraph `protobuf:"bytes,1,opt,name=federated_graph,json=federatedGraph,proto3" json:"federated_graph,omitempty"` + IsConnected bool `protobuf:"varint,2,opt,name=is_connected,json=isConnected,proto3" json:"is_connected,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) Reset() { *x = GetFeatureFlagByNameResponse_FfFederatedGraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[496] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) String() string { @@ -31748,8 +32417,8 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) String() string { func (*GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoMessage() {} func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[496] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31761,7 +32430,7 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoReflect() protorefl // Deprecated: Use GetFeatureFlagByNameResponse_FfFederatedGraph.ProtoReflect.Descriptor instead. func (*GetFeatureFlagByNameResponse_FfFederatedGraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{341, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{351, 0} } func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) GetFederatedGraph() *FederatedGraph { @@ -31779,21 +32448,18 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) GetIsConnected() bool { } type GetProposalResponse_CurrentSubgraph struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + SchemaSDL string `protobuf:"bytes,2,opt,name=schemaSDL,proto3" json:"schemaSDL,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - SchemaSDL string `protobuf:"bytes,2,opt,name=schemaSDL,proto3" json:"schemaSDL,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetProposalResponse_CurrentSubgraph) Reset() { *x = GetProposalResponse_CurrentSubgraph{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[497] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetProposalResponse_CurrentSubgraph) String() string { @@ -31803,8 +32469,8 @@ func (x *GetProposalResponse_CurrentSubgraph) String() string { func (*GetProposalResponse_CurrentSubgraph) ProtoMessage() {} func (x *GetProposalResponse_CurrentSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[497] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31816,7 +32482,7 @@ func (x *GetProposalResponse_CurrentSubgraph) ProtoReflect() protoreflect.Messag // Deprecated: Use GetProposalResponse_CurrentSubgraph.ProtoReflect.Descriptor instead. func (*GetProposalResponse_CurrentSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{403, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417, 0} } func (x *GetProposalResponse_CurrentSubgraph) GetName() string { @@ -31834,20 +32500,17 @@ func (x *GetProposalResponse_CurrentSubgraph) GetSchemaSDL() string { } type UpdateProposalRequest_UpdateProposalSubgraphs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Subgraphs []*ProposalSubgraph `protobuf:"bytes,1,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` unknownFields protoimpl.UnknownFields - - Subgraphs []*ProposalSubgraph `protobuf:"bytes,1,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateProposalRequest_UpdateProposalSubgraphs) Reset() { *x = UpdateProposalRequest_UpdateProposalSubgraphs{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[498] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateProposalRequest_UpdateProposalSubgraphs) String() string { @@ -31857,8 +32520,8 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) String() string { func (*UpdateProposalRequest_UpdateProposalSubgraphs) ProtoMessage() {} func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[498] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31870,7 +32533,7 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protorefl // Deprecated: Use UpdateProposalRequest_UpdateProposalSubgraphs.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest_UpdateProposalSubgraphs) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{408, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422, 0} } func (x *UpdateProposalRequest_UpdateProposalSubgraphs) GetSubgraphs() []*ProposalSubgraph { @@ -31881,30 +32544,27 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) GetSubgraphs() []*Propos } type GetOperationsResponse_Operation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Content *string `protobuf:"bytes,3,opt,name=content,proto3,oneof" json:"content,omitempty"` Type GetOperationsResponse_OperationType `protobuf:"varint,4,opt,name=type,proto3,enum=wg.cosmo.platform.v1.GetOperationsResponse_OperationType" json:"type,omitempty"` HasDeprecatedFields *bool `protobuf:"varint,5,opt,name=hasDeprecatedFields,proto3,oneof" json:"hasDeprecatedFields,omitempty"` - // Types that are assignable to Metric: + // Types that are valid to be assigned to Metric: // // *GetOperationsResponse_Operation_Latency // *GetOperationsResponse_Operation_RequestCount // *GetOperationsResponse_Operation_ErrorPercentage - Metric isGetOperationsResponse_Operation_Metric `protobuf_oneof:"metric"` + Metric isGetOperationsResponse_Operation_Metric `protobuf_oneof:"metric"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOperationsResponse_Operation) Reset() { *x = GetOperationsResponse_Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[499] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationsResponse_Operation) String() string { @@ -31914,8 +32574,8 @@ func (x *GetOperationsResponse_Operation) String() string { func (*GetOperationsResponse_Operation) ProtoMessage() {} func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[499] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -31927,7 +32587,7 @@ func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsResponse_Operation.ProtoReflect.Descriptor instead. func (*GetOperationsResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441, 0} } func (x *GetOperationsResponse_Operation) GetHash() string { @@ -31965,30 +32625,36 @@ func (x *GetOperationsResponse_Operation) GetHasDeprecatedFields() bool { return false } -func (m *GetOperationsResponse_Operation) GetMetric() isGetOperationsResponse_Operation_Metric { - if m != nil { - return m.Metric +func (x *GetOperationsResponse_Operation) GetMetric() isGetOperationsResponse_Operation_Metric { + if x != nil { + return x.Metric } return nil } func (x *GetOperationsResponse_Operation) GetLatency() float32 { - if x, ok := x.GetMetric().(*GetOperationsResponse_Operation_Latency); ok { - return x.Latency + if x != nil { + if x, ok := x.Metric.(*GetOperationsResponse_Operation_Latency); ok { + return x.Latency + } } return 0 } func (x *GetOperationsResponse_Operation) GetRequestCount() int64 { - if x, ok := x.GetMetric().(*GetOperationsResponse_Operation_RequestCount); ok { - return x.RequestCount + if x != nil { + if x, ok := x.Metric.(*GetOperationsResponse_Operation_RequestCount); ok { + return x.RequestCount + } } return 0 } func (x *GetOperationsResponse_Operation) GetErrorPercentage() float32 { - if x, ok := x.GetMetric().(*GetOperationsResponse_Operation_ErrorPercentage); ok { - return x.ErrorPercentage + if x != nil { + if x, ok := x.Metric.(*GetOperationsResponse_Operation_ErrorPercentage); ok { + return x.ErrorPercentage + } } return 0 } @@ -32016,20 +32682,17 @@ func (*GetOperationsResponse_Operation_RequestCount) isGetOperationsResponse_Ope func (*GetOperationsResponse_Operation_ErrorPercentage) isGetOperationsResponse_Operation_Metric() {} type GetClientsFromAnalyticsResponse_Client struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetClientsFromAnalyticsResponse_Client) Reset() { *x = GetClientsFromAnalyticsResponse_Client{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[500] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetClientsFromAnalyticsResponse_Client) String() string { @@ -32039,8 +32702,8 @@ func (x *GetClientsFromAnalyticsResponse_Client) String() string { func (*GetClientsFromAnalyticsResponse_Client) ProtoMessage() {} func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[500] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -32052,7 +32715,7 @@ func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Mes // Deprecated: Use GetClientsFromAnalyticsResponse_Client.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{443, 0} } func (x *GetClientsFromAnalyticsResponse_Client) GetName() string { @@ -32063,23 +32726,20 @@ func (x *GetClientsFromAnalyticsResponse_Client) GetName() string { } type GetOperationClientsResponse_Client struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + RequestCount int64 `protobuf:"varint,3,opt,name=requestCount,proto3" json:"requestCount,omitempty"` + LastUsed string `protobuf:"bytes,4,opt,name=lastUsed,proto3" json:"lastUsed,omitempty"` // ISO 8601 timestamp unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - RequestCount int64 `protobuf:"varint,3,opt,name=requestCount,proto3" json:"requestCount,omitempty"` - LastUsed string `protobuf:"bytes,4,opt,name=lastUsed,proto3" json:"lastUsed,omitempty"` // ISO 8601 timestamp + sizeCache protoimpl.SizeCache } func (x *GetOperationClientsResponse_Client) Reset() { *x = GetOperationClientsResponse_Client{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[501] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationClientsResponse_Client) String() string { @@ -32089,8 +32749,8 @@ func (x *GetOperationClientsResponse_Client) String() string { func (*GetOperationClientsResponse_Client) ProtoMessage() {} func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[501] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -32102,7 +32762,7 @@ func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message // Deprecated: Use GetOperationClientsResponse_Client.ProtoReflect.Descriptor instead. func (*GetOperationClientsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{445, 0} } func (x *GetOperationClientsResponse_Client) GetName() string { @@ -32134,23 +32794,20 @@ func (x *GetOperationClientsResponse_Client) GetLastUsed() string { } type GetOperationDeprecatedFieldsResponse_DeprecatedField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FieldName string `protobuf:"bytes,1,opt,name=fieldName,proto3" json:"fieldName,omitempty"` - TypeName string `protobuf:"bytes,2,opt,name=typeName,proto3" json:"typeName,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - DeprecationReason string `protobuf:"bytes,4,opt,name=deprecationReason,proto3" json:"deprecationReason,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=fieldName,proto3" json:"fieldName,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=typeName,proto3" json:"typeName,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + DeprecationReason string `protobuf:"bytes,4,opt,name=deprecationReason,proto3" json:"deprecationReason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) Reset() { *x = GetOperationDeprecatedFieldsResponse_DeprecatedField{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[502] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) String() string { @@ -32160,8 +32817,8 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) String() string { func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[502] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -32173,7 +32830,7 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() pr // Deprecated: Use GetOperationDeprecatedFieldsResponse_DeprecatedField.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{447, 0} } func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) GetFieldName() string { @@ -32205,23 +32862,20 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) GetDeprecationRea } type ListOrganizationsResponse_OrganizationMembership struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Roles []string `protobuf:"bytes,4,rep,name=roles,proto3" json:"roles,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Roles []string `protobuf:"bytes,4,rep,name=roles,proto3" json:"roles,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListOrganizationsResponse_OrganizationMembership) Reset() { *x = ListOrganizationsResponse_OrganizationMembership{} - if protoimpl.UnsafeEnabled { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[503] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListOrganizationsResponse_OrganizationMembership) String() string { @@ -32231,8 +32885,8 @@ func (x *ListOrganizationsResponse_OrganizationMembership) String() string { func (*ListOrganizationsResponse_OrganizationMembership) ProtoMessage() {} func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[503] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -32244,7 +32898,7 @@ func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protor // Deprecated: Use ListOrganizationsResponse_OrganizationMembership.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse_OrganizationMembership) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{459, 0} } func (x *ListOrganizationsResponse_OrganizationMembership) GetId() string { @@ -32277,8671 +32931,4479 @@ func (x *ListOrganizationsResponse_OrganizationMembership) GetRoles() []string { var File_wg_cosmo_platform_v1_platform_proto protoreflect.FileDescriptor -var file_wg_cosmo_platform_v1_platform_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x77, 0x67, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x77, 0x67, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x77, 0x67, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, - 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x6a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x1d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3e, 0x0a, 0x0e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x22, 0xdb, 0x02, 0x0a, 0x18, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x6e, 0x6f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x8c, - 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdc, 0x07, - 0x0a, 0x1f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x24, 0x0a, - 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x66, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, - 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x01, 0x52, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x66, - 0x0a, 0x15, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x03, 0x52, 0x14, 0x77, - 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x11, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, - 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, 0x79, 0x70, 0x65, 0x48, - 0x07, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x08, 0x52, 0x05, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, - 0x72, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, - 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x69, 0x73, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xbd, 0x04, 0x0a, - 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x61, - 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x13, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x47, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x02, 0x52, 0x06, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x68, 0x61, - 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xa2, 0x01, 0x0a, - 0x14, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x1d, 0x0a, 0x0a, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, - 0x6c, 0x75, 0x67, 0x22, 0x5b, 0x0a, 0x0a, 0x56, 0x43, 0x53, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x22, 0xc6, 0x04, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x37, 0x0a, 0x07, - 0x67, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x69, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x31, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x10, - 0x73, 0x6b, 0x69, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0a, 0x76, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x43, 0x53, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x02, 0x52, 0x0a, 0x76, 0x63, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1e, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x74, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x76, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x18, 0x46, 0x69, - 0x78, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x05, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, - 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x55, 0x72, 0x6c, - 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x66, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x01, 0x52, - 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x12, 0x66, 0x0a, 0x15, 0x77, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, - 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x03, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x3b, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x04, 0x52, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, - 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x55, 0x0a, 0x17, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xbd, 0x03, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x64, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x12, 0x3b, 0x0a, 0x16, 0x61, - 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x16, 0x61, - 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x02, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x6d, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x23, 0x0a, - 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xcf, 0x06, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x66, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x48, 0x01, 0x52, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x77, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, - 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x04, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x36, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x6e, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, - 0x52, 0x12, 0x69, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x6e, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x11, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, - 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x69, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x6e, 0x5f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, - 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0x55, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x1e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, - 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, 0x0a, - 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x42, 0x72, - 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x68, - 0x61, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, - 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x61, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0xff, 0x01, 0x0a, 0x1a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x61, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, - 0x67, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x22, 0x79, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xae, 0x01, - 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, - 0x6e, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, - 0x65, 0x6e, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, - 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, - 0x73, 0x61, 0x66, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x87, - 0x01, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c, 0x75, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x96, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, - 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x6e, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x6e, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x64, 0x4c, - 0x69, 0x6e, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x22, 0xa3, 0x02, 0x0a, 0x09, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, - 0x27, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, - 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0c, - 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x69, 0x6e, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x11, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x32, 0x0a, - 0x14, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x53, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcf, 0x0d, - 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x62, 0x72, 0x65, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, - 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x12, 0x60, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x13, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x66, - 0x0a, 0x18, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x16, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x0c, 0x6c, - 0x69, 0x6e, 0x74, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x6c, - 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x12, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x52, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, - 0x75, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, - 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x1c, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x19, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x14, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x14, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1a, 0x69, 0x73, 0x4c, - 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x73, - 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, - 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x3d, 0x0a, 0x17, 0x69, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x04, 0x52, 0x17, 0x69, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, - 0x0a, 0x1a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x05, 0x52, 0x1a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x48, 0x06, 0x52, 0x06, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, - 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, - 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x73, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6b, - 0x69, 0x70, 0x70, 0x65, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, - 0xb3, 0x03, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x69, 0x6e, - 0x74, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, - 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x72, 0x65, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x2e, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x44, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x19, 0x46, 0x69, 0x78, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x22, 0xdf, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5d, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, 0x03, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, - 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5a, 0x0a, 0x1c, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, - 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0xa6, 0x06, 0x0a, 0x0e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x52, 0x4c, 0x12, 0x25, 0x0a, 0x0e, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, - 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, - 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x48, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x1c, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, - 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x96, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0x6d, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, - 0xc2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, - 0x0a, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x17, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x22, 0xcd, 0x07, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, - 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x55, 0x52, 0x4c, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, - 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, - 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, - 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x12, 0x21, 0x0a, 0x09, 0x69, 0x73, 0x56, 0x32, 0x47, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x09, 0x69, 0x73, 0x56, 0x32, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, - 0x72, 0x69, 0x76, 0x65, 0x6e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x12, 0x69, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x6e, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x12, 0x32, 0x0a, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2f, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x03, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x04, 0x52, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4e, 0x0a, 0x0a, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x05, 0x52, 0x0a, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x1a, 0x44, 0x0a, 0x0a, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, 0x56, 0x32, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x49, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7a, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0xc8, 0x03, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, - 0x3c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x2c, 0x0a, - 0x11, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x75, 0x0a, 0x24, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x49, 0x6e, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x24, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x49, 0x6e, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x10, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0x9c, - 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xee, 0x01, - 0x0a, 0x22, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x15, 0x0a, 0x03, 0x73, 0x64, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x03, 0x73, 0x64, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x64, 0x6c, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x4c, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xa1, 0x03, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x3e, 0x0a, 0x07, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x6b, 0x0a, 0x0e, - 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x1a, 0x52, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, - 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x22, 0x82, 0x01, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x53, 0x44, 0x4c, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x2b, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x64, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x03, 0x73, 0x64, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x73, 0x64, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0xac, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x64, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x03, 0x73, 0x64, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x73, 0x64, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x24, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x22, 0x83, 0x11, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x44, 0x88, - 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, - 0x10, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x46, - 0x6f, 0x72, 0x63, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x12, 0x4e, 0x0a, 0x09, 0x67, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x47, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x48, 0x02, 0x52, 0x09, 0x67, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x68, 0x61, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, - 0x1c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x19, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6c, 0x69, 0x6e, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, - 0x64, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x6b, - 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x76, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x43, 0x53, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x03, 0x52, 0x0a, 0x76, - 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x10, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, - 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x29, 0x0a, 0x0d, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x62, 0x72, 0x65, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, - 0x70, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x62, 0x72, 0x65, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, - 0x64, 0x12, 0x27, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x6c, 0x69, - 0x6e, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x42, 0x0a, - 0x1b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x06, 0x52, 0x18, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x1a, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x6f, 0x0a, 0x09, 0x47, 0x68, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x53, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x6c, 0x75, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x6c, - 0x75, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x53, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x1a, 0xe2, 0x01, 0x0a, 0x0f, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, - 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x33, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x1a, - 0xc5, 0x03, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x2e, 0x0a, 0x12, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x66, 0x75, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x2a, 0x0a, - 0x10, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x68, 0x61, 0x73, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x68, 0x61, 0x73, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x3c, 0x0a, 0x19, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x19, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x3a, 0x0a, - 0x18, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x18, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0d, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, - 0x0f, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x64, - 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x49, 0x44, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x68, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, - 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x4f, 0x6e, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x4f, - 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x70, 0x0a, 0x16, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x0c, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x0c, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x37, 0x0a, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x64, 0x0a, 0x0f, 0x61, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, - 0x41, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x88, - 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2c, - 0x0a, 0x12, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x64, 0x61, 0x79, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x61, 0x79, 0x73, 0x12, 0x3f, 0x0a, 0x0a, - 0x6c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x57, 0x0a, - 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x52, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, - 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x41, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x76, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x1d, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x1a, 0xdb, 0x02, 0x0a, 0x0d, - 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, - 0x12, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x64, - 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x61, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x66, 0x75, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x22, 0x0a, - 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x73, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x24, 0x0a, - 0x0d, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x15, 0x68, 0x61, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, - 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x7f, 0x0a, 0x13, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x06, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x22, 0xe6, 0x06, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5f, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x61, 0x79, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a, - 0x1c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x19, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x32, - 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x24, 0x64, 0x6f, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x61, 0x76, 0x65, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, - 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x24, 0x64, 0x6f, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x48, 0x61, 0x76, 0x65, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x62, 0x0a, 0x2c, 0x64, 0x6f, 0x41, 0x6c, 0x6c, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x61, 0x76, 0x65, 0x41, 0x6c, 0x6c, - 0x54, 0x68, 0x65, 0x69, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x64, 0x53, 0x61, 0x66, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x2c, 0x64, 0x6f, - 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x61, 0x76, - 0x65, 0x41, 0x6c, 0x6c, 0x54, 0x68, 0x65, 0x69, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x61, 0x66, 0x65, 0x1a, 0xb0, 0x02, 0x0a, 0x0e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x20, 0x0a, - 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, - 0x4f, 0x0a, 0x11, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10, - 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x61, 0x66, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x68, 0x61, 0x73, - 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x61, 0x73, 0x49, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xa2, 0x01, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x12, 0x30, 0x0a, 0x14, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, - 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xd6, 0x01, 0x0a, 0x21, - 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xdc, 0x01, 0x0a, 0x1d, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x6c, 0x6f, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, - 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x1d, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x1d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x4e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x4e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x12, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, - 0x44, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x22, 0xec, 0x05, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x66, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x01, 0x52, 0x14, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x73, 0x65, - 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x15, 0x77, 0x65, - 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x51, 0x4c, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x05, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x1e, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, - 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x02, 0x0a, 0x16, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x35, - 0x0a, 0x14, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x12, - 0x75, 0x6e, 0x73, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x16, - 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x16, - 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x55, 0x52, 0x4c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, - 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdf, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xa0, 0x05, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x55, 0x72, - 0x6c, 0x12, 0x66, 0x0a, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, - 0x52, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x61, - 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x15, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x57, - 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x48, 0x03, 0x52, 0x14, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, - 0x0a, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x13, 0x61, - 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, - 0x52, 0x4c, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, - 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x52, 0x4c, 0x42, 0x19, - 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x55, 0x0a, 0x17, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x8e, 0x02, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x44, 0x0a, - 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x3a, - 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x2a, 0x0a, 0x04, 0x53, 0x6f, - 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xb6, 0x02, 0x0a, 0x0f, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x72, - 0x74, 0x48, 0x01, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x22, - 0x8c, 0x01, 0x0a, 0x0f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x4d, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x33, - 0x0a, 0x09, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x65, 0x6e, 0x64, 0x22, 0xe8, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xf7, - 0x01, 0x0a, 0x13, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x04, 0x72, - 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x6f, - 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x70, 0x61, 0x67, 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x13, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, - 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x63, 0x74, 0x61, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x05, 0x69, 0x73, 0x43, 0x74, 0x61, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, - 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x73, 0x5f, - 0x63, 0x74, 0x61, 0x22, 0x86, 0x02, 0x0a, 0x19, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xab, 0x01, 0x0a, - 0x1f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x12, - 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x65, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x8a, 0x01, 0x0a, 0x15, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x52, 0x6f, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, - 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, - 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x95, 0x01, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x04, - 0x76, 0x69, 0x65, 0x77, 0x22, 0xbe, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, - 0x28, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x15, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, - 0x2a, 0x0a, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, - 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6c, 0x61, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x22, 0xc9, 0x03, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x17, 0x6d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x17, 0x6d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x61, 0x0a, 0x15, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x15, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, - 0x7c, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x75, 0x0a, - 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x69, 0x0a, 0x15, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, - 0xb0, 0x02, 0x0a, 0x11, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x12, - 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x4f, 0x69, 0x64, - 0x63, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x68, 0x61, 0x73, 0x4f, 0x69, 0x64, 0x63, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x22, - 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x1f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x3e, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0xc7, 0x03, 0x0a, 0x23, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x07, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x5f, 0x0a, - 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x51, - 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x1a, 0x4f, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x91, 0x02, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x54, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x09, 0x74, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x85, 0x02, 0x0a, 0x09, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, - 0x0b, 0x6f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x44, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, - 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x50, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, - 0x90, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x22, 0xe0, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x11, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, - 0x50, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xb8, 0x02, 0x0a, 0x06, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0x2b, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x41, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, - 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x39, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x6a, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x52, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x14, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x0a, - 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x5e, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x56, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x72, 0x0a, 0x18, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x70, - 0x6f, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x69, - 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, - 0x6f, 0x6d, 0x41, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0xdf, 0x03, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x70, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x70, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x70, 0x61, - 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, - 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x68, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x70, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x64, - 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x22, 0x80, - 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x30, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x05, 0x73, 0x70, 0x61, 0x6e, - 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, - 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x75, 0x67, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x73, 0x0a, 0x0b, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, - 0x5e, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, - 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0x6f, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x5a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x90, 0x01, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, - 0x7a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x21, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, - 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x48, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x12, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x22, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xa5, 0x01, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xc6, 0x02, 0x0a, 0x20, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x01, 0x0a, 0x09, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x22, 0xab, 0x01, 0x0a, 0x25, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0xf2, 0x02, 0x0a, 0x26, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa5, 0x01, 0x0a, - 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x54, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x63, 0x22, 0x8c, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0xe6, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0xa7, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x06, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, - 0x01, 0x0a, 0x26, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x42, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, - 0x65, 0x74, 0x61, 0x22, 0x91, 0x01, 0x0a, 0x27, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x77, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x26, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x8f, 0x02, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x1a, 0x4c, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0x33, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x22, 0xee, 0x01, - 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x42, - 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, - 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x65, - 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x65, 0x0a, 0x27, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x22, 0x57, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x34, 0x0a, 0x16, 0x53, 0x6c, 0x61, - 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, - 0xc0, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x66, 0x0a, 0x16, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x16, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x55, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x22, 0xa8, 0x01, 0x0a, - 0x23, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x45, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x42, - 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x22, 0x5d, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x57, 0x0a, - 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x58, 0x0a, 0x1a, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, - 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x57, 0x0a, 0x19, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x75, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x75, 0x67, 0x22, 0x5f, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x5a, 0x0a, 0x1c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, - 0xf9, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x70, - 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x70, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x72, 0x69, - 0x70, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0c, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x73, 0x6c, 0x75, 0x67, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, - 0x32, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, - 0x6c, 0x75, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xbb, 0x03, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4f, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, - 0x6e, 0x73, 0x1a, 0x6b, 0x0a, 0x12, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, - 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, - 0xa5, 0x01, 0x0a, 0x0b, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x79, 0x0a, 0x1d, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x22, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, - 0x74, 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x28, - 0x0a, 0x12, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x51, 0x0a, 0x13, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x16, - 0x47, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x09, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xac, 0x03, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x07, - 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6c, 0x61, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x12, 0x44, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x16, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x0d, 0x70, 0x72, - 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x03, 0x74, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x54, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x03, 0x74, 0x6f, 0x70, 0x12, 0x3f, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x70, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x54, 0x6f, 0x70, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x0d, - 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x70, 0x35, 0x30, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x70, 0x35, 0x30, 0x88, 0x01, 0x01, 0x12, 0x15, - 0x0a, 0x03, 0x70, 0x39, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x70, - 0x39, 0x30, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x70, 0x39, 0x39, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x03, 0x52, 0x03, 0x70, 0x39, 0x39, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x70, 0x35, 0x30, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x39, 0x30, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x70, 0x39, 0x39, 0x22, 0xe5, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x75, 0x6e, 0x69, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x20, - 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x01, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x1a, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x63, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x02, 0x52, 0x05, 0x69, 0x73, 0x43, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x74, 0x61, 0x22, 0x80, - 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, - 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7a, 0x0a, 0x1a, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3d, 0x0a, - 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x07, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xaf, 0x03, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x44, 0x0a, 0x06, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x12, 0x49, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xfc, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3d, - 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3f, 0x0a, - 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xdf, - 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0a, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x72, 0x0a, 0x18, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x01, - 0x0a, 0x2c, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, - 0x73, 0x61, 0x66, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x61, - 0x66, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x6b, 0x0a, 0x2d, 0x54, 0x6f, 0x67, 0x67, 0x6c, - 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x2c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, - 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x6b, 0x0a, 0x2d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, - 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x52, 0x0a, 0x0e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0xec, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x27, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, - 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x28, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x07, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x20, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8d, 0x01, 0x0a, - 0x27, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x66, 0x0a, 0x28, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0xba, 0x01, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x67, 0x6e, - 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x22, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe7, 0x02, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a, 0xb9, 0x01, 0x0a, 0x08, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x32, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, - 0x69, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x68, 0x61, 0x73, 0x49, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x14, 0x68, 0x61, 0x73, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x57, 0x0a, 0x1b, 0x49, 0x73, 0x47, 0x69, 0x74, - 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x69, 0x74, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x22, 0x7d, 0x0a, 0x1c, 0x49, 0x73, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x22, - 0x43, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x18, - 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x73, 0x6f, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x73, 0x6f, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x22, 0xdc, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, - 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x63, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x70, - 0x65, 0x72, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x49, - 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x55, 0x52, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x55, 0x52, 0x4c, 0x12, 0x1e, 0x0a, 0x0a, - 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x52, 0x4c, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, - 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0xbc, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, - 0x67, 0x69, 0x6e, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, - 0x67, 0x69, 0x6e, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x55, 0x52, 0x4c, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x55, 0x52, 0x4c, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x49, 0x44, 0x43, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, - 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x44, 0x50, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x22, 0x56, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x44, 0x50, 0x4d, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x78, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x29, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x21, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x42, - 0x79, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x64, 0x42, 0x79, 0x22, 0x7b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, - 0x65, 0x22, 0xcc, 0x03, 0x0a, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, - 0x0a, 0x10, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x75, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x14, 0x61, 0x75, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x3e, 0x0a, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x9c, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, - 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4a, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x0b, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x62, 0x0a, 0x20, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x72, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x26, 0x0a, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x22, - 0x5f, 0x0a, 0x21, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x72, 0x44, 0x65, 0x63, 0x6c, 0x69, - 0x6e, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xd9, 0x06, 0x0a, 0x10, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, - 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x31, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x42, 0x79, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x39, 0x0a, - 0x15, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x15, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x03, 0x52, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, - 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x1b, 0x68, 0x61, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x1b, 0x68, 0x61, 0x73, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x17, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x79, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x17, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x79, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x40, 0x0a, 0x1c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x68, 0x61, 0x73, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x42, 0x79, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x9b, 0x02, 0x0a, - 0x18, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x11, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x46, 0x0a, - 0x1e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, - 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x62, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0xdf, 0x04, 0x0a, 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, - 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x39, 0x0a, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x61, - 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x04, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, - 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb9, 0x03, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, - 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x14, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x65, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x64, 0x6c, 0x42, 0x79, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, - 0x53, 0x64, 0x6c, 0x42, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x4e, 0x0a, - 0x22, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x42, 0x79, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb4, 0x01, - 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x42, 0x79, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x6c, 0x6f, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x6c, 0x6f, 0x67, 0x22, 0x23, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x05, 0x0a, 0x22, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x42, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x12, 0x71, 0x0a, 0x0f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x0f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x12, 0x5f, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x53, 0x75, 0x62, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x73, 0x1a, 0x2f, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x5e, 0x0a, 0x0e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x84, 0x01, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x22, 0x73, 0x0a, 0x1c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, - 0x64, 0x22, 0x5b, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x6a, 0x0a, - 0x0e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, - 0x10, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x22, 0x68, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x64, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, - 0x0a, 0x11, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xce, 0x04, 0x0a, 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, - 0x0a, 0x13, 0x6f, 0x6e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6f, 0x6e, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x24, - 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x62, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x4d, 0x62, 0x12, 0x3a, 0x0a, 0x18, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x63, 0x70, 0x75, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x70, - 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x63, 0x70, 0x75, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x22, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0x55, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, - 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, - 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, - 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0a, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x49, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, - 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, - 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x22, 0xa3, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x38, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x2c, 0x0a, 0x16, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, - 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x16, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, - 0x17, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x94, 0x01, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x22, 0xdd, 0x01, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, - 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd4, 0x02, 0x0a, 0x11, 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x3d, 0x0a, 0x1d, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1e, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x3a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x46, 0x0a, 0x26, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, - 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x49, - 0x6e, 0x44, 0x61, 0x79, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x73, 0x0a, 0x29, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, - 0x69, 0x6d, 0x65, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x68, - 0x0a, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x23, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, - 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, - 0x69, 0x6e, 0x67, 0x22, 0x62, 0x0a, 0x24, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, - 0x74, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x73, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x7f, 0x0a, 0x23, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x62, 0x0a, 0x24, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x69, 0x0a, 0x19, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x58, 0x0a, 0x1a, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x67, - 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, - 0x12, 0x47, 0x0a, 0x1c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x88, 0x01, 0x01, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x2b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x2c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0xd8, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x4b, 0x0a, 0x17, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x18, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x25, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x69, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa6, 0x01, 0x0a, - 0x24, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, - 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x88, 0x04, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x32, - 0x0a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, - 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, - 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x54, 0x61, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, - 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x23, 0x0a, 0x21, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xd9, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, - 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x90, 0x04, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12, 0x24, - 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, - 0x18, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, - 0x72, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xd9, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x49, - 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x1c, 0x49, - 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x13, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xca, 0x02, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, - 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, - 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, - 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, - 0x69, 0x6e, 0x67, 0x73, 0x22, 0xce, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, - 0x0a, 0x0c, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x02, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x55, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, - 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x03, 0x0a, 0x19, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, - 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x0a, 0x68, 0x61, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, - 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, - 0x61, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x18, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x02, - 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x52, - 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x80, - 0x02, 0x0a, 0x0b, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x33, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0x89, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xbe, 0x01, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, - 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4f, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0xe4, 0x03, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x12, 0x6e, 0x0a, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x46, 0x66, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x52, 0x0f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x12, 0x4b, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x10, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x1a, - 0x84, 0x01, 0x0a, 0x10, 0x46, 0x66, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x12, 0x4d, 0x0a, 0x0f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x0e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x73, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, - 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x28, - 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, - 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x05, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, - 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0xcb, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xce, - 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, - 0x67, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xe6, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc1, 0x05, 0x0a, 0x0f, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x2e, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0f, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, - 0x02, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x11, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, - 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, - 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, - 0x65, 0x72, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xcb, 0x01, 0x0a, - 0x25, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x0a, 0x64, - 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x17, 0x52, 0x65, - 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x18, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, - 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, - 0x20, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, 0x76, - 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0xa2, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, - 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x22, 0x63, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x1e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x1e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x1e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x6c, - 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x10, 0x50, 0x6c, - 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x40, 0x0a, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x73, 0x22, 0x56, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xc6, 0x03, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, - 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x75, 0x0a, 0x24, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x49, - 0x6e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x52, 0x24, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x49, 0x6e, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xcb, 0x01, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x3e, 0x0a, 0x07, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x39, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x12, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x06, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x17, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x22, 0x53, 0x0a, - 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, - 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x1f, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, - 0x0a, 0x14, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x22, 0x5e, 0x0a, 0x20, 0x50, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, - 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x9d, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, - 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x22, 0xa2, 0x03, 0x0a, 0x14, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, - 0x6c, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x64, 0x64, - 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x4d, 0x61, 0x6e, 0x75, - 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x42, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0xff, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, - 0x72, 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x73, 0x0a, 0x23, 0x43, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, - 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x62, 0x0a, 0x24, - 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, - 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x99, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c, - 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, - 0x6d, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, - 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x1c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, - 0x72, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, - 0x6d, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0x86, 0x05, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x73, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x42, - 0x0a, 0x1c, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x21, 0x69, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x69, - 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, - 0x69, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x73, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x2e, - 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, - 0x64, 0x53, 0x64, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x64, 0x6c, 0x12, 0x32, - 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe4, 0x03, 0x0a, 0x27, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x44, 0x0a, 0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x64, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x65, 0x64, 0x53, 0x64, 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x69, - 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, - 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x22, - 0x66, 0x0a, 0x28, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, - 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x22, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x0a, - 0x26, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x29, - 0x53, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x03, 0x0a, 0x2a, 0x53, 0x65, - 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x66, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, - 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, - 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x2a, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4f, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xc0, - 0x03, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, - 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x2e, 0x0a, - 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x33, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x22, 0xd9, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, - 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x12, 0x5a, 0x0a, 0x10, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6e, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3c, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0xc9, 0x0b, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x4c, - 0x0a, 0x0f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0f, 0x62, 0x72, 0x65, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, - 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x6e, 0x6f, - 0x6e, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x74, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x10, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x57, 0x0a, - 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x52, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x60, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x74, - 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, - 0x12, 0x30, 0x0a, 0x13, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, - 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x55, 0x72, 0x6c, - 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, - 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1a, 0x69, 0x73, 0x4c, 0x69, - 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x73, 0x4c, - 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, - 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, - 0x0a, 0x15, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, - 0x15, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x34, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0xb9, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, - 0x65, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x1a, 0x43, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x44, 0x4c, 0x22, 0xd9, 0x01, 0x0a, 0x23, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x09, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0xbe, 0x01, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, - 0x03, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, - 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x71, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x5f, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x12, 0x44, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x09, 0x73, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x0a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x0f, 0x62, 0x72, 0x65, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x12, 0x6e, 0x6f, 0x6e, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x0a, - 0x6c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, - 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x74, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x10, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x12, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x60, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x13, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, - 0x70, 0x70, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x74, - 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, - 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x67, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, - 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x73, 0x4c, 0x69, - 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1a, - 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, - 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x01, 0x52, 0x1a, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x39, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x02, 0x52, 0x15, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, - 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, - 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x12, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, - 0x65, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, - 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, - 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x6c, 0x0a, - 0x22, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, - 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x61, 0x0a, 0x23, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x46, 0x6f, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf3, - 0x01, 0x0a, 0x27, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, - 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x56, 0x0a, 0x14, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x14, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x22, 0x66, 0x0a, 0x28, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x21, - 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, - 0xa6, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x12, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x12, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x56, 0x0a, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xc9, 0x07, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x1a, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x48, 0x61, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, - 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x61, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x55, - 0x0a, 0x0c, 0x66, 0x65, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x64, - 0x4f, 0x6e, 0x48, 0x03, 0x52, 0x0c, 0x66, 0x65, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x64, - 0x4f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, - 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x48, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x48, 0x06, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x29, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x57, 0x69, 0x74, - 0x68, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x29, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x0d, 0x73, - 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x11, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, - 0x61, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, - 0x64, 0x4f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x2c, - 0x0a, 0x2a, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x05, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0a, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, 0xf4, 0x02, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x68, 0x61, - 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x13, 0x68, 0x61, 0x73, 0x44, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x1a, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x02, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x24, 0x0a, - 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x61, 0x73, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x3a, 0x0a, - 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, - 0x0a, 0x05, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x55, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x55, 0x42, 0x53, 0x43, - 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6e, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, - 0x1a, 0x1c, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, - 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, - 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa5, - 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x76, - 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, - 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, - 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x22, 0xcd, 0x02, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, - 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x29, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x02, 0x52, 0x09, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xea, 0x02, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x10, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x21, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x6e, 0x64, 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x22, 0xbc, 0x01, 0x0a, 0x22, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, - 0xe9, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x38, 0x0a, 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x52, 0x0a, 0x14, 0x4c, - 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x81, 0x01, 0x0a, 0x15, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x54, 0x0a, 0x16, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x1e, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x47, 0x72, 0x61, 0x70, 0x68, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x66, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x1f, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x47, 0x72, 0x61, 0x70, 0x68, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x2a, 0x68, 0x61, 0x73, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4f, - 0x72, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x2a, 0x68, 0x61, 0x73, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x4f, 0x72, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x68, 0x61, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x32, 0x0a, - 0x1a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x59, 0x0a, 0x1b, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xad, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x66, 0x0a, 0x16, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x6e, 0x6f, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4d, 0x6f, - 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x1e, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x23, 0x0a, 0x21, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xbc, 0x03, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, - 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x51, 0x0a, 0x0b, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, - 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2a, - 0x23, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x08, 0x0a, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x10, 0x01, 0x2a, 0x3f, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, - 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x50, 0x4c, 0x55, 0x47, 0x49, - 0x4e, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x10, 0x02, 0x2a, 0x55, 0x0a, 0x16, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x03, 0x2a, 0x31, 0x0a, 0x0d, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x08, 0x0a, - 0x04, 0x54, 0x65, 0x78, 0x74, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x10, 0x02, 0x2a, - 0x8e, 0x01, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x61, 0x6e, - 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x6e, - 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, 0x64, 0x65, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x49, 0x44, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x10, 0x07, - 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x10, 0x08, - 0x2a, 0xfd, 0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, - 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, - 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x0d, - 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x19, 0x0a, - 0x15, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, - 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x53, 0x53, - 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x05, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x10, - 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x07, - 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x5f, - 0x49, 0x4e, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x45, 0x54, 0x57, 0x45, 0x45, 0x4e, 0x10, - 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x54, 0x57, 0x45, 0x45, 0x4e, - 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x53, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x0c, 0x12, - 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x0d, - 0x2a, 0x45, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x09, 0x0a, - 0x05, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, - 0x54, 0x59, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x58, - 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x53, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x4e, 0x45, - 0x5f, 0x59, 0x45, 0x41, 0x52, 0x10, 0x03, 0x2a, 0x45, 0x0a, 0x18, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, - 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x02, 0x2a, 0x1c, - 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x00, 0x2a, 0x25, 0x0a, 0x07, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x10, - 0x00, 0x12, 0x06, 0x0a, 0x02, 0x61, 0x69, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x63, 0x69, - 0x6d, 0x10, 0x02, 0x2a, 0x2c, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, - 0x01, 0x2a, 0x37, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4e, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, - 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x43, - 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x2a, 0x3f, 0x0a, 0x16, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, - 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x01, 0x12, - 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x02, 0x2a, 0x22, 0x0a, 0x0d, 0x53, - 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, - 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x32, - 0x97, 0xb7, 0x01, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, - 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, 0x0a, - 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, - 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, - 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, - 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x70, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x67, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6d, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x67, 0x0a, 0x12, 0x4d, 0x6f, 0x76, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, - 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0c, 0x4d, 0x6f, 0x76, 0x65, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0d, 0x4d, - 0x6f, 0x76, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x70, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, - 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x73, 0x0a, 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x6e, 0x6f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2c, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2d, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, - 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x6f, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x88, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x34, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x30, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0xa9, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x3f, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x4f, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x76, 0x0a, 0x11, 0x46, 0x69, 0x78, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x78, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x78, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, - 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x30, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x06, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x12, - 0x23, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x6f, 0x41, - 0x6d, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9d, 0x01, 0x0a, 0x1e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x3b, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x29, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, 0x49, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x30, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa9, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, - 0x79, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x3f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x40, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x91, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x53, 0x44, 0x4c, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x73, 0x12, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0xac, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x44, 0x4c, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x53, 0x44, 0x4c, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x12, 0x31, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x53, 0x44, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x9a, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, - 0x0a, 0x11, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, - 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, - 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb2, 0x01, 0x0a, 0x25, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, - 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x42, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x41, - 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, - 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb2, 0x01, 0x0a, 0x25, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7c, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x12, 0x37, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x32, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x53, 0x6c, 0x75, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x12, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x9a, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, - 0x49, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, - 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x61, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x12, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, - 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x35, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x76, 0x0a, 0x11, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, - 0x41, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x32, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x1b, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x88, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa0, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9a, 0x01, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x3a, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa0, 0x01, 0x0a, 0x1f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa0, 0x01, - 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x9a, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, - 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, - 0x69, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, - 0x0a, 0x10, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x12, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x69, - 0x76, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, - 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x76, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x49, - 0x73, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x65, 0x64, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x47, 0x69, 0x74, - 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, - 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x49, - 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x49, 0x44, - 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x49, - 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x44, - 0x50, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x44, 0x50, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x44, 0x50, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0a, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x6d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, - 0x01, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x72, 0x44, 0x65, 0x63, 0x6c, 0x69, - 0x6e, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x72, 0x44, 0x65, 0x63, 0x6c, - 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x4f, 0x72, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x32, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x64, - 0x6c, 0x42, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x64, 0x6c, 0x42, 0x79, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x64, 0x6c, 0x42, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x42, 0x79, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x42, - 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x42, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, - 0x64, 0x6d, 0x65, 0x12, 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x61, 0x64, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x76, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x76, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x76, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x12, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x91, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2c, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7f, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, - 0x7c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x97, 0x01, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x38, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x79, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, - 0x54, 0x68, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x39, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, - 0x67, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x54, - 0x68, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x85, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0xa2, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x12, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x2f, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0xaf, 0x01, 0x0a, 0x24, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, - 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x42, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, - 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9d, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x50, 0x72, - 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x3d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x42, 0x79, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa0, 0x01, 0x0a, - 0x1f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x12, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x12, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x50, 0x75, 0x73, 0x68, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, - 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x14, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, - 0x72, 0x6d, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, - 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, - 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, - 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x57, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, - 0x73, 0x12, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x82, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x28, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0xa0, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0xa9, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x2e, 0x77, 0x67, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, - 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x46, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x20, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x91, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, - 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x12, 0x39, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x42, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x12, 0x2e, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, - 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, 0x34, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x46, - 0x72, 0x6f, 0x6d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x1c, 0x47, - 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x39, 0x2e, 0x77, 0x67, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x91, 0x01, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x6e, 0x64, 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x37, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, - 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x29, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x53, - 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x12, 0x2b, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x53, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x75, - 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x88, 0x01, 0x0a, 0x17, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x47, 0x72, 0x61, 0x70, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x34, 0x2e, 0x77, - 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x47, 0x72, 0x61, 0x70, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x47, 0x72, 0x61, 0x70, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x52, - 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x2b, 0x2e, - 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x77, 0x67, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xef, 0x01, 0x0a, 0x18, 0x63, - 0x6f, 0x6d, 0x2e, 0x77, 0x67, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x77, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2d, 0x67, - 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x67, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, - 0x3b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x57, 0x43, - 0x50, 0xaa, 0x02, 0x14, 0x57, 0x67, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x2e, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x14, 0x57, 0x67, 0x5c, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x5c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x20, 0x57, 0x67, 0x5c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x5c, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x17, 0x57, 0x67, 0x3a, 0x3a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x3a, 0x3a, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} +const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + + "\n" + + "#wg/cosmo/platform/v1/platform.proto\x12\x14wg.cosmo.platform.v1\x1a\x1cwg/cosmo/common/common.proto\x1a#wg/cosmo/notifications/events.proto\"/\n" + + "\x05Label\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"j\n" + + "\bResponse\x123\n" + + "\x04code\x18\x01 \x01(\x0e2\x1f.wg.cosmo.common.EnumStatusCodeR\x04code\x12\x1d\n" + + "\adetails\x18\x02 \x01(\tH\x00R\adetails\x88\x01\x01B\n" + + "\n" + + "\b_details\">\n" + + "\x0eResponseStatus\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"c\n" + + "\x17PublishMonographRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x16\n" + + "\x06schema\x18\x03 \x01(\tR\x06schema\"\xdb\x02\n" + + "\x18PublishMonographResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\x8c\x01\n" + + "\n" + + "ProtoInput\x12\x16\n" + + "\x06schema\x18\x01 \x01(\tR\x06schema\x12\x1a\n" + + "\bmappings\x18\x02 \x01(\tR\bmappings\x12\x12\n" + + "\x04lock\x18\x03 \x01(\tR\x04lock\x12\x1c\n" + + "\tplatforms\x18\x04 \x03(\tR\tplatforms\x12\x18\n" + + "\aversion\x18\x05 \x01(\tR\aversion\"\xdc\a\n" + + "\x1fPublishFederatedSubgraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" + + "\x06schema\x18\x02 \x01(\tR\x06schema\x12$\n" + + "\vrouting_url\x18\x03 \x01(\tH\x00R\n" + + "routingUrl\x88\x01\x01\x123\n" + + "\x06labels\x18\x04 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12f\n" + + "\x15subscription_protocol\x18\x06 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x01R\x14subscriptionProtocol\x88\x01\x01\x12.\n" + + "\x10subscription_url\x18\a \x01(\tH\x02R\x0fsubscriptionUrl\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\b \x01(\tR\tnamespace\x12f\n" + + "\x15websocket_subprotocol\x18\t \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x03R\x14websocketSubprotocol\x88\x01\x01\x123\n" + + "\x13is_feature_subgraph\x18\n" + + " \x01(\bH\x04R\x11isFeatureSubgraph\x88\x01\x01\x121\n" + + "\x12base_subgraph_name\x18\v \x01(\tH\x05R\x10baseSubgraphName\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\f \x01(\bH\x06R\x1edisableResolvabilityValidation\x88\x01\x01\x12;\n" + + "\x04type\x18\r \x01(\x0e2\".wg.cosmo.platform.v1.SubgraphTypeH\aR\x04type\x88\x01\x01\x12;\n" + + "\x05proto\x18\x0e \x01(\v2 .wg.cosmo.platform.v1.ProtoInputH\bR\x05proto\x88\x01\x01\x12\x19\n" + + "\x05limit\x18\x0f \x01(\x05H\tR\x05limit\x88\x01\x01B\x0e\n" + + "\f_routing_urlB\x18\n" + + "\x16_subscription_protocolB\x13\n" + + "\x11_subscription_urlB\x18\n" + + "\x16_websocket_subprotocolB\x16\n" + + "\x14_is_feature_subgraphB\x15\n" + + "\x13_base_subgraph_nameB#\n" + + "!_disable_resolvability_validationB\a\n" + + "\x05_typeB\b\n" + + "\x06_protoB\b\n" + + "\x06_limit\"\xbd\x04\n" + + " PublishFederatedSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12#\n" + + "\n" + + "hasChanged\x18\x04 \x01(\bH\x00R\n" + + "hasChanged\x88\x01\x01\x12Z\n" + + "\x13compositionWarnings\x18\x05 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x127\n" + + "\x14proposalMatchMessage\x18\x06 \x01(\tH\x01R\x14proposalMatchMessage\x88\x01\x01\x12G\n" + + "\x06counts\x18\a \x01(\v2*.wg.cosmo.platform.v1.SubgraphPublishStatsH\x02R\x06counts\x88\x01\x01B\r\n" + + "\v_hasChangedB\x17\n" + + "\x15_proposalMatchMessageB\t\n" + + "\a_counts\"\xa2\x01\n" + + "\x14SubgraphPublishStats\x12,\n" + + "\x11compositionErrors\x18\x01 \x01(\x05R\x11compositionErrors\x120\n" + + "\x13compositionWarnings\x18\x02 \x01(\x05R\x13compositionWarnings\x12*\n" + + "\x10deploymentErrors\x18\x03 \x01(\x05R\x10deploymentErrors\"=\n" + + "\x0fPublishSubgraph\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" + + "\x06schema\x18\x02 \x01(\tR\x06schema\"\x9e\x02\n" + + " PublishFederatedSubgraphsRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12C\n" + + "\tsubgraphs\x18\x02 \x03(\v2%.wg.cosmo.platform.v1.PublishSubgraphR\tsubgraphs\x12M\n" + + " disable_resolvability_validation\x18\x03 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01\x12\x19\n" + + "\x05limit\x18\x04 \x01(\x05H\x01R\x05limit\x88\x01\x01B#\n" + + "!_disable_resolvability_validationB\b\n" + + "\x06_limit\"\xec\x03\n" + + "!PublishFederatedSubgraphsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12G\n" + + "\x06counts\x18\x05 \x01(\v2*.wg.cosmo.platform.v1.SubgraphPublishStatsH\x00R\x06counts\x88\x01\x01\x122\n" + + "\x14updatedSubgraphNames\x18\x06 \x03(\tR\x14updatedSubgraphNamesB\t\n" + + "\a_counts\"\x8f\x01\n" + + "\aGitInfo\x12\x1d\n" + + "\n" + + "commit_sha\x18\x01 \x01(\tR\tcommitSha\x12\x1d\n" + + "\n" + + "account_id\x18\x02 \x01(\tR\taccountId\x12\x1d\n" + + "\n" + + "owner_slug\x18\x03 \x01(\tR\townerSlug\x12'\n" + + "\x0frepository_slug\x18\x04 \x01(\tR\x0erepositorySlug\"[\n" + + "\n" + + "VCSContext\x12\x16\n" + + "\x06author\x18\x01 \x01(\tR\x06author\x12\x1d\n" + + "\n" + + "commit_sha\x18\x02 \x01(\tR\tcommitSha\x12\x16\n" + + "\x06branch\x18\x03 \x01(\tR\x06branch\"\xc6\x04\n" + + "\x1aCheckSubgraphSchemaRequest\x12#\n" + + "\rsubgraph_name\x18\x01 \x01(\tR\fsubgraphName\x12\x16\n" + + "\x06schema\x18\x02 \x01(\fR\x06schema\x127\n" + + "\agitInfo\x18\x03 \x01(\v2\x1d.wg.cosmo.platform.v1.GitInfoR\agitInfo\x12\x1b\n" + + "\x06delete\x18\x04 \x01(\bH\x00R\x06delete\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x121\n" + + "\x12skip_traffic_check\x18\x06 \x01(\bH\x01R\x10skipTrafficCheck\x88\x01\x01\x12E\n" + + "\n" + + "vcsContext\x18\a \x01(\v2 .wg.cosmo.platform.v1.VCSContextH\x02R\n" + + "vcsContext\x88\x01\x01\x123\n" + + "\x06labels\x18\b \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12M\n" + + " disable_resolvability_validation\x18\t \x01(\bH\x03R\x1edisableResolvabilityValidation\x88\x01\x01\x12\x19\n" + + "\x05limit\x18\n" + + " \x01(\x05H\x04R\x05limit\x88\x01\x01B\t\n" + + "\a_deleteB\x15\n" + + "\x13_skip_traffic_checkB\r\n" + + "\v_vcsContextB#\n" + + "!_disable_resolvability_validationB\b\n" + + "\x06_limit\"\xe9\x01\n" + + "\x18FixSubgraphSchemaRequest\x12#\n" + + "\rsubgraph_name\x18\x01 \x01(\tR\fsubgraphName\x12\x16\n" + + "\x06schema\x18\x02 \x01(\tR\x06schema\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12M\n" + + " disable_resolvability_validation\x18\x04 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\x83\x05\n" + + "\x16CreateMonographRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1f\n" + + "\vrouting_url\x18\x03 \x01(\tR\n" + + "routingUrl\x12\x1b\n" + + "\tgraph_url\x18\x04 \x01(\tR\bgraphUrl\x12.\n" + + "\x10subscription_url\x18\x05 \x01(\tH\x00R\x0fsubscriptionUrl\x88\x01\x01\x12f\n" + + "\x15subscription_protocol\x18\x06 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x01R\x14subscriptionProtocol\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x02R\x06readme\x88\x01\x01\x120\n" + + "\x13admissionWebhookURL\x18\b \x01(\tR\x13admissionWebhookURL\x12f\n" + + "\x15websocket_subprotocol\x18\t \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x03R\x14websocketSubprotocol\x88\x01\x01\x12;\n" + + "\x16admissionWebhookSecret\x18\n" + + " \x01(\tH\x04R\x16admissionWebhookSecret\x88\x01\x01B\x13\n" + + "\x11_subscription_urlB\x18\n" + + "\x16_subscription_protocolB\t\n" + + "\a_readmeB\x18\n" + + "\x16_websocket_subprotocolB\x19\n" + + "\x17_admissionWebhookSecret\"U\n" + + "\x17CreateMonographResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xbd\x03\n" + + "\x1bCreateFederatedGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + + "\vrouting_url\x18\x02 \x01(\tR\n" + + "routingUrl\x12%\n" + + "\x0elabel_matchers\x18\x03 \x03(\tR\rlabelMatchers\x12\x1b\n" + + "\x06readme\x18\x04 \x01(\tH\x00R\x06readme\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x120\n" + + "\x13admissionWebhookURL\x18\x06 \x01(\tR\x13admissionWebhookURL\x12;\n" + + "\x16admissionWebhookSecret\x18\a \x01(\tH\x01R\x16admissionWebhookSecret\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\b \x01(\bH\x02R\x1edisableResolvabilityValidation\x88\x01\x01B\t\n" + + "\a_readmeB\x19\n" + + "\x17_admissionWebhookSecretB#\n" + + "!_disable_resolvability_validation\"\xcf\x06\n" + + "\x1eCreateFederatedSubgraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12$\n" + + "\vrouting_url\x18\x02 \x01(\tH\x00R\n" + + "routingUrl\x88\x01\x01\x123\n" + + "\x06labels\x18\x03 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12f\n" + + "\x15subscription_protocol\x18\x05 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x01R\x14subscriptionProtocol\x88\x01\x01\x12.\n" + + "\x10subscription_url\x18\x06 \x01(\tH\x02R\x0fsubscriptionUrl\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x03R\x06readme\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\b \x01(\tR\tnamespace\x12f\n" + + "\x15websocket_subprotocol\x18\t \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x04R\x14websocketSubprotocol\x88\x01\x01\x126\n" + + "\x15is_event_driven_graph\x18\n" + + " \x01(\bH\x05R\x12isEventDrivenGraph\x88\x01\x01\x123\n" + + "\x13is_feature_subgraph\x18\v \x01(\bH\x06R\x11isFeatureSubgraph\x88\x01\x01\x121\n" + + "\x12base_subgraph_name\x18\f \x01(\tH\aR\x10baseSubgraphName\x88\x01\x01\x126\n" + + "\x04type\x18\r \x01(\x0e2\".wg.cosmo.platform.v1.SubgraphTypeR\x04typeB\x0e\n" + + "\f_routing_urlB\x18\n" + + "\x16_subscription_protocolB\x13\n" + + "\x11_subscription_urlB\t\n" + + "\a_readmeB\x18\n" + + "\x16_websocket_subprotocolB\x18\n" + + "\x16_is_event_driven_graphB\x16\n" + + "\x14_is_feature_subgraphB\x15\n" + + "\x13_base_subgraph_name\"O\n" + + "\x1bDeleteFederatedGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"J\n" + + "\x16DeleteMonographRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"U\n" + + "\x17DeleteMonographResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xd7\x01\n" + + "\x1eDeleteFederatedSubgraphRequest\x12#\n" + + "\rsubgraph_name\x18\x01 \x01(\tR\fsubgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12M\n" + + " disable_resolvability_validation\x18\x03 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xfb\x01\n" + + "\fSchemaChange\x12\x18\n" + + "\amessage\x18\x01 \x01(\tR\amessage\x12\x1e\n" + + "\n" + + "changeType\x18\x02 \x01(\tR\n" + + "changeType\x12\x17\n" + + "\x04path\x18\x03 \x01(\tH\x00R\x04path\x88\x01\x01\x12\x1e\n" + + "\n" + + "isBreaking\x18\x04 \x01(\bR\n" + + "isBreaking\x12%\n" + + "\vhasOverride\x18\x05 \x01(\bH\x01R\vhasOverride\x88\x01\x01\x12'\n" + + "\fsubgraphName\x18\x06 \x01(\tH\x02R\fsubgraphName\x88\x01\x01B\a\n" + + "\x05_pathB\x0e\n" + + "\f_hasOverrideB\x0f\n" + + "\r_subgraphName\"\xff\x01\n" + + "\x1aFederatedGraphSchemaChange\x12\x18\n" + + "\amessage\x18\x01 \x01(\tR\amessage\x12\x1e\n" + + "\n" + + "changeType\x18\x02 \x01(\tR\n" + + "changeType\x12\x17\n" + + "\x04path\x18\x03 \x01(\tH\x00R\x04path\x88\x01\x01\x12\x1e\n" + + "\n" + + "isBreaking\x18\x04 \x01(\bR\n" + + "isBreaking\x12.\n" + + "\x12federatedGraphName\x18\x05 \x01(\tR\x12federatedGraphName\x12%\n" + + "\vhasOverride\x18\x06 \x01(\bH\x01R\vhasOverride\x88\x01\x01B\a\n" + + "\x05_pathB\x0e\n" + + "\f_hasOverride\"\x9c\x01\n" + + "\x10CompositionError\x12\x18\n" + + "\amessage\x18\x01 \x01(\tR\amessage\x12.\n" + + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12 \n" + + "\vfeatureFlag\x18\x04 \x01(\tR\vfeatureFlag\"\x9e\x01\n" + + "\x12CompositionWarning\x12\x18\n" + + "\amessage\x18\x01 \x01(\tR\amessage\x12.\n" + + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12 \n" + + "\vfeatureFlag\x18\x04 \x01(\tR\vfeatureFlag\"y\n" + + "\x0fDeploymentError\x12\x18\n" + + "\amessage\x18\x01 \x01(\tR\amessage\x12.\n" + + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"\xae\x01\n" + + "\x18CheckOperationUsageStats\x12(\n" + + "\x0ftotalOperations\x18\x01 \x01(\rR\x0ftotalOperations\x12 \n" + + "\vfirstSeenAt\x18\x02 \x01(\tR\vfirstSeenAt\x12\x1e\n" + + "\n" + + "lastSeenAt\x18\x03 \x01(\tR\n" + + "lastSeenAt\x12&\n" + + "\x0esafeOperations\x18\x04 \x01(\rR\x0esafeOperations\"\x87\x01\n" + + "\x16CheckedFederatedGraphs\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12+\n" + + "\x11organization_slug\x18\x04 \x01(\tR\x10organizationSlug\"\x96\x01\n" + + "\fLintLocation\x12\x12\n" + + "\x04line\x18\x01 \x01(\rR\x04line\x12\x16\n" + + "\x06column\x18\x02 \x01(\rR\x06column\x12\x1d\n" + + "\aendLine\x18\x03 \x01(\rH\x00R\aendLine\x88\x01\x01\x12!\n" + + "\tendColumn\x18\x04 \x01(\rH\x01R\tendColumn\x88\x01\x01B\n" + + "\n" + + "\b_endLineB\f\n" + + "\n" + + "_endColumn\"\xa3\x02\n" + + "\tLintIssue\x12'\n" + + "\flintRuleType\x18\x01 \x01(\tH\x00R\flintRuleType\x88\x01\x01\x12>\n" + + "\bseverity\x18\x02 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\bseverity\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12H\n" + + "\rissueLocation\x18\x04 \x01(\v2\".wg.cosmo.platform.v1.LintLocationR\rissueLocation\x12'\n" + + "\fsubgraphName\x18\x05 \x01(\tH\x01R\fsubgraphName\x88\x01\x01B\x0f\n" + + "\r_lintRuleTypeB\x0f\n" + + "\r_subgraphName\"\xf3\x02\n" + + "\x11GraphPruningIssue\x122\n" + + "\x14graphPruningRuleType\x18\x01 \x01(\tR\x14graphPruningRuleType\x12>\n" + + "\bseverity\x18\x02 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\bseverity\x12\x1c\n" + + "\tfieldPath\x18\x03 \x01(\tR\tfieldPath\x12\x18\n" + + "\amessage\x18\x04 \x01(\tR\amessage\x12H\n" + + "\rissueLocation\x18\x05 \x01(\v2\".wg.cosmo.platform.v1.LintLocationR\rissueLocation\x12.\n" + + "\x12federatedGraphName\x18\x06 \x01(\tR\x12federatedGraphName\x12'\n" + + "\fsubgraphName\x18\a \x01(\tH\x00R\fsubgraphName\x88\x01\x01B\x0f\n" + + "\r_subgraphName\"\xcf\r\n" + + "\x1bCheckSubgraphSchemaResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12L\n" + + "\x0fbreakingChanges\x18\x02 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x0fbreakingChanges\x12R\n" + + "\x12nonBreakingChanges\x18\x03 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x12nonBreakingChanges\x12T\n" + + "\x11compositionErrors\x18\x04 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12`\n" + + "\x13operationUsageStats\x18\x05 \x01(\v2..wg.cosmo.platform.v1.CheckOperationUsageStatsR\x13operationUsageStats\x12\x19\n" + + "\bcheck_id\x18\x06 \x01(\tR\acheckId\x12f\n" + + "\x18checked_federated_graphs\x18\a \x03(\v2,.wg.cosmo.platform.v1.CheckedFederatedGraphsR\x16checkedFederatedGraphs\x12C\n" + + "\flintWarnings\x18\b \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\flintWarnings\x12?\n" + + "\n" + + "lintErrors\x18\t \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\n" + + "lintErrors\x12W\n" + + "\x12graphPruneWarnings\x18\n" + + " \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x12graphPruneWarnings\x12S\n" + + "\x10graphPruneErrors\x18\v \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x10graphPruneErrors\x12D\n" + + "\x1cclient_traffic_check_skipped\x18\f \x01(\bH\x00R\x19clientTrafficCheckSkipped\x88\x01\x01\x12Z\n" + + "\x13compositionWarnings\x18\r \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x127\n" + + "\x14proposalMatchMessage\x18\x0e \x01(\tH\x01R\x14proposalMatchMessage\x88\x01\x01\x12C\n" + + "\x1aisLinkedTrafficCheckFailed\x18\x0f \x01(\bH\x02R\x1aisLinkedTrafficCheckFailed\x88\x01\x01\x12C\n" + + "\x1aisLinkedPruningCheckFailed\x18\x10 \x01(\bH\x03R\x1aisLinkedPruningCheckFailed\x88\x01\x01\x12=\n" + + "\x17isCheckExtensionSkipped\x18\x11 \x01(\bH\x04R\x17isCheckExtensionSkipped\x88\x01\x01\x12C\n" + + "\x1acheckExtensionErrorMessage\x18\x12 \x01(\tH\x05R\x1acheckExtensionErrorMessage\x88\x01\x01\x12D\n" + + "\x06counts\x18\x13 \x01(\v2'.wg.cosmo.platform.v1.SchemaCheckCountsH\x06R\x06counts\x88\x01\x01\x12v\n" + + "\x1dcomposedSchemaBreakingChanges\x18\x14 \x03(\v20.wg.cosmo.platform.v1.FederatedGraphSchemaChangeR\x1dcomposedSchemaBreakingChangesB\x1f\n" + + "\x1d_client_traffic_check_skippedB\x17\n" + + "\x15_proposalMatchMessageB\x1d\n" + + "\x1b_isLinkedTrafficCheckFailedB\x1d\n" + + "\x1b_isLinkedPruningCheckFailedB\x1a\n" + + "\x18_isCheckExtensionSkippedB\x1d\n" + + "\x1b_checkExtensionErrorMessageB\t\n" + + "\a_counts\"\xb3\x03\n" + + "\x11SchemaCheckCounts\x12\"\n" + + "\flintWarnings\x18\x01 \x01(\x05R\flintWarnings\x12\x1e\n" + + "\n" + + "lintErrors\x18\x02 \x01(\x05R\n" + + "lintErrors\x12(\n" + + "\x0fbreakingChanges\x18\x03 \x01(\x05R\x0fbreakingChanges\x12.\n" + + "\x12nonBreakingChanges\x18\x04 \x01(\x05R\x12nonBreakingChanges\x12,\n" + + "\x11compositionErrors\x18\x05 \x01(\x05R\x11compositionErrors\x120\n" + + "\x13compositionWarnings\x18\x06 \x01(\x05R\x13compositionWarnings\x12*\n" + + "\x10graphPruneErrors\x18\a \x01(\x05R\x10graphPruneErrors\x12.\n" + + "\x12graphPruneWarnings\x18\b \x01(\x05R\x12graphPruneWarnings\x12D\n" + + "\x1dcomposedSchemaBreakingChanges\x18\t \x01(\x05R\x1dcomposedSchemaBreakingChanges\"\x8b\x01\n" + + "\x19FixSubgraphSchemaResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1a\n" + + "\bmodified\x18\x02 \x01(\bR\bmodified\x12\x16\n" + + "\x06schema\x18\x03 \x01(\tR\x06schema\"\xdf\x02\n" + + "\x1cCreateFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"]\n" + + "\x1fCreateFederatedSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xb4\x03\n" + + "\x1fDeleteFederatedSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x127\n" + + "\x14proposalMatchMessage\x18\x05 \x01(\tH\x00R\x14proposalMatchMessage\x88\x01\x01B\x17\n" + + "\x15_proposalMatchMessage\"Z\n" + + "\x1cDeleteFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xdd\x01\n" + + "\x19GetFederatedGraphsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12&\n" + + "\x0eincludeMetrics\x18\x03 \x01(\bR\x0eincludeMetrics\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\x124\n" + + "\x13supports_federation\x18\x05 \x01(\bH\x00R\x12supportsFederation\x88\x01\x01B\x16\n" + + "\x14_supports_federation\"\x9b\x01\n" + + "\bContract\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x129\n" + + "\x19source_federated_graph_id\x18\x02 \x01(\tR\x16sourceFederatedGraphId\x12!\n" + + "\fexclude_tags\x18\x03 \x03(\tR\vexcludeTags\x12!\n" + + "\finclude_tags\x18\x04 \x03(\tR\vincludeTags\"\xa6\x06\n" + + "\x0eFederatedGraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1e\n" + + "\n" + + "routingURL\x18\x03 \x01(\tR\n" + + "routingURL\x12%\n" + + "\x0elabel_matchers\x18\x04 \x03(\tR\rlabelMatchers\x12$\n" + + "\rlastUpdatedAt\x18\x05 \x01(\tR\rlastUpdatedAt\x12\"\n" + + "\fisComposable\x18\x06 \x01(\bR\fisComposable\x12,\n" + + "\x11compositionErrors\x18\a \x01(\tR\x11compositionErrors\x12.\n" + + "\x12connectedSubgraphs\x18\b \x01(\x05R\x12connectedSubgraphs\x12M\n" + + "\rrequestSeries\x18\t \x03(\v2'.wg.cosmo.platform.v1.RequestSeriesItemR\rrequestSeries\x12\x1b\n" + + "\x06readme\x18\n" + + " \x01(\tH\x00R\x06readme\x88\x01\x01\x12\x1b\n" + + "\ttarget_id\x18\v \x01(\tR\btargetId\x12\x1c\n" + + "\tnamespace\x18\f \x01(\tR\tnamespace\x12)\n" + + "\rcompositionId\x18\r \x01(\tH\x01R\rcompositionId\x88\x01\x01\x12/\n" + + "\x13supports_federation\x18\x0e \x01(\bR\x12supportsFederation\x12?\n" + + "\bcontract\x18\x0f \x01(\v2\x1e.wg.cosmo.platform.v1.ContractH\x02R\bcontract\x88\x01\x01\x127\n" + + "\x15admission_webhook_url\x18\x10 \x01(\tH\x03R\x13admissionWebhookUrl\x88\x01\x01\x12@\n" + + "\x1crouter_compatibility_version\x18\x11 \x01(\tR\x1arouterCompatibilityVersionB\t\n" + + "\a_readmeB\x10\n" + + "\x0e_compositionIdB\v\n" + + "\t_contractB\x18\n" + + "\x16_admission_webhook_url\"\x96\x01\n" + + "\x1aGetFederatedGraphsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12<\n" + + "\x06graphs\x18\x02 \x03(\v2$.wg.cosmo.platform.v1.FederatedGraphR\x06graphs\"m\n" + + ")GetFederatedGraphsBySubgraphLabelsRequest\x12\"\n" + + "\fsubgraphName\x18\x01 \x01(\tR\fsubgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xa6\x01\n" + + "*GetFederatedGraphsBySubgraphLabelsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12<\n" + + "\x06graphs\x18\x02 \x03(\v2$.wg.cosmo.platform.v1.FederatedGraphR\x06graphs\"\xc2\x01\n" + + "\x13GetSubgraphsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x19\n" + + "\x05query\x18\x04 \x01(\tH\x00R\x05query\x88\x01\x01\x12:\n" + + "\x19exclude_feature_subgraphs\x18\x05 \x01(\bR\x17excludeFeatureSubgraphsB\b\n" + + "\x06_query\"\xcd\a\n" + + "\bSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1e\n" + + "\n" + + "routingURL\x18\x03 \x01(\tR\n" + + "routingURL\x12$\n" + + "\rlastUpdatedAt\x18\x04 \x01(\tR\rlastUpdatedAt\x123\n" + + "\x06labels\x18\x05 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12)\n" + + "\rcreatorUserId\x18\x06 \x01(\tH\x00R\rcreatorUserId\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x01R\x06readme\x88\x01\x01\x12(\n" + + "\x0fsubscriptionUrl\x18\b \x01(\tR\x0fsubscriptionUrl\x12\x1b\n" + + "\ttarget_id\x18\t \x01(\tR\btargetId\x12\x1c\n" + + "\tnamespace\x18\n" + + " \x01(\tR\tnamespace\x122\n" + + "\x14subscriptionProtocol\x18\v \x01(\tR\x14subscriptionProtocol\x12!\n" + + "\tisV2Graph\x18\f \x01(\bH\x02R\tisV2Graph\x88\x01\x01\x12.\n" + + "\x12isEventDrivenGraph\x18\r \x01(\bR\x12isEventDrivenGraph\x122\n" + + "\x14websocketSubprotocol\x18\x0e \x01(\tR\x14websocketSubprotocol\x12,\n" + + "\x11isFeatureSubgraph\x18\x0f \x01(\bR\x11isFeatureSubgraph\x12/\n" + + "\x10baseSubgraphName\x18\x10 \x01(\tH\x03R\x10baseSubgraphName\x88\x01\x01\x12+\n" + + "\x0ebaseSubgraphId\x18\x11 \x01(\tH\x04R\x0ebaseSubgraphId\x88\x01\x01\x126\n" + + "\x04type\x18\x12 \x01(\x0e2\".wg.cosmo.platform.v1.SubgraphTypeR\x04type\x12N\n" + + "\n" + + "pluginData\x18\x13 \x01(\v2).wg.cosmo.platform.v1.Subgraph.PluginDataH\x05R\n" + + "pluginData\x88\x01\x01\x1aD\n" + + "\n" + + "PluginData\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\x12\x1c\n" + + "\tplatforms\x18\x02 \x03(\tR\tplatformsB\x10\n" + + "\x0e_creatorUserIdB\t\n" + + "\a_readmeB\f\n" + + "\n" + + "_isV2GraphB\x13\n" + + "\x11_baseSubgraphNameB\x11\n" + + "\x0f_baseSubgraphIdB\r\n" + + "\v_pluginData\"\xa0\x01\n" + + "\x14GetSubgraphsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x126\n" + + "\x06graphs\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x06graphs\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"z\n" + + "\x1eGetFederatedGraphByNameRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12&\n" + + "\x0eincludeMetrics\x18\x02 \x01(\bR\x0eincludeMetrics\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"\x85\x02\n" + + "\x1fGetFederatedGraphByNameResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12:\n" + + "\x05graph\x18\x02 \x01(\v2$.wg.cosmo.platform.v1.FederatedGraphR\x05graph\x12<\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\tsubgraphs\x12,\n" + + "\x11graphRequestToken\x18\x04 \x01(\tR\x11graphRequestToken\"\x9c\x01\n" + + "!GetFederatedGraphSDLByNameRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12/\n" + + "\x11feature_flag_name\x18\x03 \x01(\tH\x00R\x0ffeatureFlagName\x88\x01\x01B\x14\n" + + "\x12_feature_flag_name\"\xee\x01\n" + + "\"GetFederatedGraphSDLByNameResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x15\n" + + "\x03sdl\x18\x02 \x01(\tH\x00R\x03sdl\x88\x01\x01\x12\"\n" + + "\n" + + "version_id\x18\x03 \x01(\tH\x01R\tversionId\x88\x01\x01\x12(\n" + + "\rclient_schema\x18\x04 \x01(\tH\x02R\fclientSchema\x88\x01\x01B\x06\n" + + "\x04_sdlB\r\n" + + "\v_version_idB\x10\n" + + "\x0e_client_schema\"L\n" + + "\x18GetSubgraphByNameRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xa1\x03\n" + + "\x19GetSubgraphByNameResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x124\n" + + "\x05graph\x18\x02 \x01(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x05graph\x12>\n" + + "\amembers\x18\x03 \x03(\v2$.wg.cosmo.platform.v1.SubgraphMemberR\amembers\x12k\n" + + "\x0elinkedSubgraph\x18\x04 \x01(\v2>.wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraphH\x00R\x0elinkedSubgraph\x88\x01\x01\x1aR\n" + + "\x0eLinkedSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespaceB\x11\n" + + "\x0f_linkedSubgraph\"\x82\x01\n" + + "*GetSubgraphSDLFromLatestCompositionRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\"\n" + + "\ffedGraphName\x18\x02 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"\xbb\x01\n" + + "+GetSubgraphSDLFromLatestCompositionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x15\n" + + "\x03sdl\x18\x02 \x01(\tH\x00R\x03sdl\x88\x01\x01\x12\"\n" + + "\n" + + "version_id\x18\x03 \x01(\tH\x01R\tversionId\x88\x01\x01B\x06\n" + + "\x04_sdlB\r\n" + + "\v_version_id\"O\n" + + "\x1bGetLatestSubgraphSDLRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xac\x01\n" + + "\x1cGetLatestSubgraphSDLResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x15\n" + + "\x03sdl\x18\x02 \x01(\tH\x00R\x03sdl\x88\x01\x01\x12\"\n" + + "\n" + + "version_id\x18\x03 \x01(\tH\x01R\tversionId\x88\x01\x01B\x06\n" + + "\x04_sdlB\r\n" + + "\v_version_id\"D\n" + + "$GetChecksByFederatedGraphNameFilters\x12\x1c\n" + + "\tsubgraphs\x18\x01 \x03(\tR\tsubgraphs\"\xa5\x02\n" + + "$GetChecksByFederatedGraphNameRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x12\x1c\n" + + "\tstartDate\x18\x04 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x05 \x01(\tR\aendDate\x12\x1c\n" + + "\tnamespace\x18\x06 \x01(\tR\tnamespace\x12Y\n" + + "\afilters\x18\a \x01(\v2:.wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFiltersH\x00R\afilters\x88\x01\x01B\n" + + "\n" + + "\b_filters\"\x83\x11\n" + + "\vSchemaCheck\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\btargetID\x18\x02 \x01(\tH\x00R\btargetID\x88\x01\x01\x12'\n" + + "\fsubgraphName\x18\x03 \x01(\tH\x01R\fsubgraphName\x88\x01\x01\x12\x1c\n" + + "\ttimestamp\x18\x04 \x01(\tR\ttimestamp\x12\"\n" + + "\fisComposable\x18\x05 \x01(\bR\fisComposable\x12\x1e\n" + + "\n" + + "isBreaking\x18\x06 \x01(\bR\n" + + "isBreaking\x12*\n" + + "\x10hasClientTraffic\x18\a \x01(\bR\x10hasClientTraffic\x12(\n" + + "\x0fisForcedSuccess\x18\b \x01(\bR\x0fisForcedSuccess\x12\x1c\n" + + "\tisDeleted\x18\t \x01(\bR\tisDeleted\x12N\n" + + "\tghDetails\x18\n" + + " \x01(\v2+.wg.cosmo.platform.v1.SchemaCheck.GhDetailsH\x02R\tghDetails\x88\x01\x01\x12$\n" + + "\rhasLintErrors\x18\v \x01(\bR\rhasLintErrors\x124\n" + + "\x15hasGraphPruningErrors\x18\f \x01(\bR\x15hasGraphPruningErrors\x12?\n" + + "\x1cclient_traffic_check_skipped\x18\r \x01(\bR\x19clientTrafficCheckSkipped\x12!\n" + + "\flint_skipped\x18\x0e \x01(\bR\vlintSkipped\x122\n" + + "\x15graph_pruning_skipped\x18\x0f \x01(\bR\x13graphPruningSkipped\x12E\n" + + "\n" + + "vcsContext\x18\x10 \x01(\v2 .wg.cosmo.platform.v1.VCSContextH\x03R\n" + + "vcsContext\x88\x01\x01\x12]\n" + + "\x10checkedSubgraphs\x18\x11 \x03(\v21.wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraphR\x10checkedSubgraphs\x12)\n" + + "\rproposalMatch\x18\x12 \x01(\tH\x04R\rproposalMatch\x88\x01\x01\x12/\n" + + "\x13composition_skipped\x18\x13 \x01(\bR\x12compositionSkipped\x128\n" + + "\x18breaking_changes_skipped\x18\x14 \x01(\bR\x16breakingChangesSkipped\x12'\n" + + "\ferrorMessage\x18\x15 \x01(\tH\x05R\ferrorMessage\x88\x01\x01\x12Q\n" + + "\flinkedChecks\x18\x16 \x03(\v2-.wg.cosmo.platform.v1.SchemaCheck.LinkedCheckR\flinkedChecks\x12B\n" + + "\x1bcheck_extension_delivery_id\x18\x17 \x01(\tH\x06R\x18checkExtensionDeliveryId\x88\x01\x01\x12F\n" + + "\x1dcheck_extension_error_message\x18\x18 \x01(\tH\aR\x1acheckExtensionErrorMessage\x88\x01\x01\x1ao\n" + + "\tGhDetails\x12\x1c\n" + + "\tcommitSha\x18\x01 \x01(\tR\tcommitSha\x12\x1c\n" + + "\townerSlug\x18\x02 \x01(\tR\townerSlug\x12&\n" + + "\x0erepositorySlug\x18\x03 \x01(\tR\x0erepositorySlug\x1a\xe2\x01\n" + + "\x0fCheckedSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\"\n" + + "\fsubgraphName\x18\x02 \x01(\tR\fsubgraphName\x12#\n" + + "\n" + + "subgraphId\x18\x03 \x01(\tH\x00R\n" + + "subgraphId\x88\x01\x01\x12\x1c\n" + + "\tisDeleted\x18\x04 \x01(\bR\tisDeleted\x12\x14\n" + + "\x05isNew\x18\x05 \x01(\bR\x05isNew\x123\n" + + "\x06labels\x18\x06 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labelsB\r\n" + + "\v_subgraphId\x1a\xc5\x03\n" + + "\vLinkedCheck\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + + "\x12affectedGraphNames\x18\x02 \x03(\tR\x12affectedGraphNames\x12,\n" + + "\x11isCheckSuccessful\x18\x03 \x01(\bR\x11isCheckSuccessful\x12*\n" + + "\x10hasClientTraffic\x18\x04 \x01(\bR\x10hasClientTraffic\x124\n" + + "\x15hasGraphPruningErrors\x18\x05 \x01(\bR\x15hasGraphPruningErrors\x12<\n" + + "\x19clientTrafficCheckSkipped\x18\x06 \x01(\bR\x19clientTrafficCheckSkipped\x12:\n" + + "\x18graphPruningCheckSkipped\x18\a \x01(\bR\x18graphPruningCheckSkipped\x12$\n" + + "\rsubgraphNames\x18\b \x03(\tR\rsubgraphNames\x12\x1c\n" + + "\tnamespace\x18\t \x01(\tR\tnamespace\x12(\n" + + "\x0fisForcedSuccess\x18\n" + + " \x01(\bR\x0fisForcedSuccessB\v\n" + + "\t_targetIDB\x0f\n" + + "\r_subgraphNameB\f\n" + + "\n" + + "_ghDetailsB\r\n" + + "\v_vcsContextB\x10\n" + + "\x0e_proposalMatchB\x0f\n" + + "\r_errorMessageB\x1e\n" + + "\x1c_check_extension_delivery_idB \n" + + "\x1e_check_extension_error_message\"\xe0\x01\n" + + "%GetChecksByFederatedGraphNameResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x129\n" + + "\x06checks\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.SchemaCheckR\x06checks\x12@\n" + + "\x1bchecksCountBasedOnDateRange\x18\x03 \x01(\x05R\x1bchecksCountBasedOnDateRange\"p\n" + + "\x16GetCheckSummaryRequest\x12\x19\n" + + "\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x1d\n" + + "\n" + + "graph_name\x18\x02 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"J\n" + + "\fChangeCounts\x12\x1c\n" + + "\tadditions\x18\x01 \x01(\x05R\tadditions\x12\x1c\n" + + "\tdeletions\x18\x02 \x01(\x05R\tdeletions\"\x9d\f\n" + + "\x17GetCheckSummaryResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x127\n" + + "\x05check\x18\x02 \x01(\v2!.wg.cosmo.platform.v1.SchemaCheckR\x05check\x12d\n" + + "\x0faffected_graphs\x18\x03 \x03(\v2;.wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraphR\x0eaffectedGraphs\x12A\n" + + "\x19proposedSubgraphSchemaSDL\x18\x04 \x01(\tH\x00R\x19proposedSubgraphSchemaSDL\x88\x01\x01\x12<\n" + + "\achanges\x18\x06 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\achanges\x12,\n" + + "\x11compositionErrors\x18\a \x03(\tR\x11compositionErrors\x12,\n" + + "\x12traffic_check_days\x18\b \x01(\x05R\x10trafficCheckDays\x12?\n" + + "\n" + + "lintIssues\x18\t \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\n" + + "lintIssues\x12W\n" + + "\x12graphPruningIssues\x18\n" + + " \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x12graphPruningIssues\x120\n" + + "\x13compositionWarnings\x18\v \x03(\tR\x13compositionWarnings\x12#\n" + + "\n" + + "proposalId\x18\f \x01(\tH\x01R\n" + + "proposalId\x88\x01\x01\x12'\n" + + "\fproposalName\x18\r \x01(\tH\x02R\fproposalName\x88\x01\x01\x12k\n" + + "\x0fproposalMatches\x18\x0e \x03(\v2A.wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatchR\x0fproposalMatches\x12.\n" + + "\x12isProposalsEnabled\x18\x0f \x01(\bR\x12isProposalsEnabled\x12v\n" + + "\x1dcomposedSchemaBreakingChanges\x18\x10 \x03(\v20.wg.cosmo.platform.v1.FederatedGraphSchemaChangeR\x1dcomposedSchemaBreakingChanges\x1a\xdb\x02\n" + + "\rAffectedGraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12,\n" + + "\x12traffic_check_days\x18\x02 \x01(\x05R\x10trafficCheckDays\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12,\n" + + "\x11isCheckSuccessful\x18\x04 \x01(\bR\x11isCheckSuccessful\x12\"\n" + + "\fisComposable\x18\x05 \x01(\bR\fisComposable\x12\x1e\n" + + "\n" + + "isBreaking\x18\x06 \x01(\bR\n" + + "isBreaking\x12*\n" + + "\x10hasClientTraffic\x18\a \x01(\bR\x10hasClientTraffic\x12$\n" + + "\rhasLintErrors\x18\b \x01(\bR\rhasLintErrors\x124\n" + + "\x15hasGraphPruningErrors\x18\t \x01(\bR\x15hasGraphPruningErrors\x1a\x7f\n" + + "\x13ProposalSchemaMatch\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\x12\"\n" + + "\fproposalName\x18\x02 \x01(\tR\fproposalName\x12$\n" + + "\rproposalMatch\x18\x03 \x01(\bR\rproposalMatchB\x1c\n" + + "\x1a_proposedSubgraphSchemaSDLB\r\n" + + "\v_proposalIdB\x0f\n" + + "\r_proposalName\"\xc9\x01\n" + + "\x19GetCheckOperationsRequest\x12\x19\n" + + "\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x1d\n" + + "\n" + + "graph_name\x18\x02 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x14\n" + + "\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x05 \x01(\x05R\x06offset\x12\x1b\n" + + "\x06search\x18\x06 \x01(\tH\x00R\x06search\x88\x01\x01B\t\n" + + "\a_search\"\xe6\x06\n" + + "\x1aGetCheckOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12_\n" + + "\n" + + "operations\x18\x02 \x03(\v2?.wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperationR\n" + + "operations\x12,\n" + + "\x12traffic_check_days\x18\x03 \x01(\x05R\x10trafficCheckDays\x12\x1d\n" + + "\n" + + "created_at\x18\x04 \x01(\tR\tcreatedAt\x12?\n" + + "\x1cclient_traffic_check_skipped\x18\x05 \x01(\bR\x19clientTrafficCheckSkipped\x122\n" + + "\x14totalOperationsCount\x18\x06 \x01(\x05R\x14totalOperationsCount\x12R\n" + + "$doAllOperationsHaveIgnoreAllOverride\x18\a \x01(\bR$doAllOperationsHaveIgnoreAllOverride\x12b\n" + + ",doAllOperationsHaveAllTheirChangesMarkedSafe\x18\b \x01(\bR,doAllOperationsHaveAllTheirChangesMarkedSafe\x1a\xb0\x02\n" + + "\x0eCheckOperation\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\x12\"\n" + + "\rfirst_seen_at\x18\x04 \x01(\tR\vfirstSeenAt\x12 \n" + + "\flast_seen_at\x18\x05 \x01(\tR\n" + + "lastSeenAt\x12O\n" + + "\x11impacting_changes\x18\x06 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x10impactingChanges\x12\x17\n" + + "\ais_safe\x18\a \x01(\bR\x06isSafe\x122\n" + + "\x14hasIgnoreAllOverride\x18\b \x01(\bR\x14hasIgnoreAllOverride\"\xa2\x01\n" + + "\x1aGetOperationContentRequest\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x120\n" + + "\x14federated_graph_name\x18\x02 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x17\n" + + "\x04name\x18\x04 \x01(\tH\x00R\x04name\x88\x01\x01B\a\n" + + "\x05_name\"\x86\x01\n" + + "\x1bGetOperationContentResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12+\n" + + "\x11operation_content\x18\x02 \x01(\tR\x10operationContent\"\xd6\x01\n" + + "!GetFederatedGraphChangelogRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12@\n" + + "\n" + + "pagination\x18\x02 \x01(\v2 .wg.cosmo.platform.v1.PaginationR\n" + + "pagination\x12=\n" + + "\tdateRange\x18\x03 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\"\xa1\x01\n" + + "\x17FederatedGraphChangelog\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04path\x18\x02 \x01(\tR\x04path\x12\x1e\n" + + "\n" + + "changeType\x18\x03 \x01(\tR\n" + + "changeType\x12$\n" + + "\rchangeMessage\x18\x04 \x01(\tR\rchangeMessage\x12\x1c\n" + + "\tcreatedAt\x18\x05 \x01(\tR\tcreatedAt\"\xdc\x01\n" + + "\x1dFederatedGraphChangelogOutput\x12\x1c\n" + + "\tcreatedAt\x18\x01 \x01(\tR\tcreatedAt\x12(\n" + + "\x0fschemaVersionId\x18\x02 \x01(\tR\x0fschemaVersionId\x12M\n" + + "\n" + + "changelogs\x18\x03 \x03(\v2-.wg.cosmo.platform.v1.FederatedGraphChangelogR\n" + + "changelogs\x12$\n" + + "\rcompositionId\x18\x04 \x01(\tR\rcompositionId\"\xfd\x01\n" + + "\"GetFederatedGraphChangelogResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12y\n" + + "\x1dfederatedGraphChangelogOutput\x18\x02 \x03(\v23.wg.cosmo.platform.v1.FederatedGraphChangelogOutputR\x1dfederatedGraphChangelogOutput\x12 \n" + + "\vhasNextPage\x18\x03 \x01(\bR\vhasNextPage\"\x82\x01\n" + + "\x14GetFederatedResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12.\n" + + "\x12FederatedSchemaSDL\x18\x02 \x01(\tR\x12FederatedSchemaSDL\"\xec\x05\n" + + "\x15UpdateSubgraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12$\n" + + "\vrouting_url\x18\x02 \x01(\tH\x00R\n" + + "routingUrl\x88\x01\x01\x123\n" + + "\x06labels\x18\x03 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12\x18\n" + + "\aheaders\x18\x04 \x03(\tR\aheaders\x12f\n" + + "\x15subscription_protocol\x18\x05 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x01R\x14subscriptionProtocol\x88\x01\x01\x12.\n" + + "\x10subscription_url\x18\x06 \x01(\tH\x02R\x0fsubscriptionUrl\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x03R\x06readme\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\b \x01(\tR\tnamespace\x12&\n" + + "\funset_labels\x18\t \x01(\bH\x04R\vunsetLabels\x88\x01\x01\x12f\n" + + "\x15websocket_subprotocol\x18\n" + + " \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x05R\x14websocketSubprotocol\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\v \x01(\bH\x06R\x1edisableResolvabilityValidation\x88\x01\x01B\x0e\n" + + "\f_routing_urlB\x18\n" + + "\x16_subscription_protocolB\x13\n" + + "\x11_subscription_urlB\t\n" + + "\a_readmeB\x0f\n" + + "\r_unset_labelsB\x18\n" + + "\x16_websocket_subprotocolB#\n" + + "!_disable_resolvability_validation\"\xd9\x02\n" + + "\x16UpdateSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\xaa\x04\n" + + "\x1bUpdateFederatedGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + + "\vrouting_url\x18\x02 \x01(\tR\n" + + "routingUrl\x12%\n" + + "\x0elabel_matchers\x18\x03 \x03(\tR\rlabelMatchers\x12\x1b\n" + + "\x06readme\x18\x04 \x01(\tH\x00R\x06readme\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x125\n" + + "\x14unset_label_matchers\x18\x06 \x01(\bH\x01R\x12unsetLabelMatchers\x88\x01\x01\x125\n" + + "\x13admissionWebhookURL\x18\a \x01(\tH\x02R\x13admissionWebhookURL\x88\x01\x01\x12;\n" + + "\x16admissionWebhookSecret\x18\b \x01(\tH\x03R\x16admissionWebhookSecret\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\t \x01(\bH\x04R\x1edisableResolvabilityValidation\x88\x01\x01B\t\n" + + "\a_readmeB\x17\n" + + "\x15_unset_label_matchersB\x16\n" + + "\x14_admissionWebhookURLB\x19\n" + + "\x17_admissionWebhookSecretB#\n" + + "!_disable_resolvability_validation\"\xdf\x02\n" + + "\x1cUpdateFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\xa0\x05\n" + + "\x16UpdateMonographRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1f\n" + + "\vrouting_url\x18\x03 \x01(\tR\n" + + "routingUrl\x12\x1b\n" + + "\tgraph_url\x18\x04 \x01(\tR\bgraphUrl\x12f\n" + + "\x15subscription_protocol\x18\x05 \x01(\x0e2,.wg.cosmo.common.GraphQLSubscriptionProtocolH\x00R\x14subscriptionProtocol\x88\x01\x01\x12.\n" + + "\x10subscription_url\x18\x06 \x01(\tH\x01R\x0fsubscriptionUrl\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x02R\x06readme\x88\x01\x01\x12f\n" + + "\x15websocket_subprotocol\x18\b \x01(\x0e2,.wg.cosmo.common.GraphQLWebsocketSubprotocolH\x03R\x14websocketSubprotocol\x88\x01\x01\x125\n" + + "\x13admissionWebhookURL\x18\t \x01(\tH\x04R\x13admissionWebhookURL\x88\x01\x01\x12;\n" + + "\x16admissionWebhookSecret\x18\n" + + " \x01(\tH\x05R\x16admissionWebhookSecret\x88\x01\x01B\x18\n" + + "\x16_subscription_protocolB\x13\n" + + "\x11_subscription_urlB\t\n" + + "\a_readmeB\x18\n" + + "\x16_websocket_subprotocolB\x16\n" + + "\x14_admissionWebhookURLB\x19\n" + + "\x17_admissionWebhookSecret\"U\n" + + "\x17UpdateMonographResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x8e\x02\n" + + "\x1aCheckFederatedGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12%\n" + + "\x0elabel_matchers\x18\x02 \x03(\tR\rlabelMatchers\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12M\n" + + " disable_resolvability_validation\x18\x04 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01\x12\x19\n" + + "\x05limit\x18\x05 \x01(\x05H\x01R\x05limit\x88\x01\x01B#\n" + + "!_disable_resolvability_validationB\b\n" + + "\x06_limit\"\x9a\x03\n" + + "\x1bCheckFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12<\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\tsubgraphs\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12D\n" + + "\x06counts\x18\x05 \x01(\v2'.wg.cosmo.platform.v1.SchemaCheckCountsH\x00R\x06counts\x88\x01\x01B\t\n" + + "\a_counts\":\n" + + "\n" + + "Pagination\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\"*\n" + + "\x04Sort\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04desc\x18\x02 \x01(\bR\x04desc\"\xb6\x02\n" + + "\x0fAnalyticsConfig\x12=\n" + + "\tdateRange\x18\x01 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12\x19\n" + + "\x05range\x18\x02 \x01(\x05H\x00R\x05range\x88\x01\x01\x12?\n" + + "\afilters\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.AnalyticsFilterR\afilters\x12@\n" + + "\n" + + "pagination\x18\x04 \x01(\v2 .wg.cosmo.platform.v1.PaginationR\n" + + "pagination\x123\n" + + "\x04sort\x18\x05 \x01(\v2\x1a.wg.cosmo.platform.v1.SortH\x01R\x04sort\x88\x01\x01B\b\n" + + "\x06_rangeB\a\n" + + "\x05_sort\"\x8c\x01\n" + + "\x0fAnalyticsFilter\x12\x14\n" + + "\x05field\x18\x01 \x01(\tR\x05field\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\x12M\n" + + "\boperator\x18\x03 \x01(\x0e21.wg.cosmo.platform.v1.AnalyticsViewFilterOperatorR\boperator\"3\n" + + "\tDateRange\x12\x14\n" + + "\x05start\x18\x01 \x01(\tR\x05start\x12\x10\n" + + "\x03end\x18\x02 \x01(\tR\x03end\"\xe8\x01\n" + + "\x17GetAnalyticsViewRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12@\n" + + "\x04name\x18\x02 \x01(\x0e2,.wg.cosmo.platform.v1.AnalyticsViewGroupNameR\x04name\x12=\n" + + "\x06config\x18\x03 \x01(\v2%.wg.cosmo.platform.v1.AnalyticsConfigR\x06config\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\"\xf7\x01\n" + + "\x13AnalyticsViewResult\x12C\n" + + "\acolumns\x18\x01 \x03(\v2).wg.cosmo.platform.v1.AnalyticsViewColumnR\acolumns\x12:\n" + + "\x04rows\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.AnalyticsViewRowR\x04rows\x12I\n" + + "\afilters\x18\x03 \x03(\v2/.wg.cosmo.platform.v1.AnalyticsViewResultFilterR\afilters\x12\x14\n" + + "\x05pages\x18\x04 \x01(\x05R\x05pages\"\xe8\x01\n" + + "\x13AnalyticsViewColumn\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\x123\n" + + "\x04unit\x18\x04 \x01(\x0e2\x1a.wg.cosmo.platform.v1.UnitH\x00R\x04unit\x88\x01\x01\x12 \n" + + "\tis_hidden\x18\x05 \x01(\bH\x01R\bisHidden\x88\x01\x01\x12\x1a\n" + + "\x06is_cta\x18\x06 \x01(\bH\x02R\x05isCta\x88\x01\x01B\a\n" + + "\x05_unitB\f\n" + + "\n" + + "_is_hiddenB\t\n" + + "\a_is_cta\"\x86\x02\n" + + "\x19AnalyticsViewResultFilter\x12\x1e\n" + + "\n" + + "columnName\x18\x01 \x01(\tR\n" + + "columnName\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12O\n" + + "\aoptions\x18\x03 \x03(\v25.wg.cosmo.platform.v1.AnalyticsViewResultFilterOptionR\aoptions\x12O\n" + + "\x0ecustom_options\x18\x04 \x01(\x0e2#.wg.cosmo.platform.v1.CustomOptionsH\x00R\rcustomOptions\x88\x01\x01B\x11\n" + + "\x0f_custom_options\"\xab\x01\n" + + "\x1fAnalyticsViewResultFilterOption\x12\x14\n" + + "\x05label\x18\x01 \x01(\tR\x05label\x12\x19\n" + + "\x05value\x18\x02 \x01(\tH\x00R\x05value\x88\x01\x01\x12M\n" + + "\boperator\x18\x03 \x01(\x0e21.wg.cosmo.platform.v1.AnalyticsViewFilterOperatorR\boperatorB\b\n" + + "\x06_value\"\xc2\x01\n" + + "\x10AnalyticsViewRow\x12G\n" + + "\x05value\x18\x01 \x03(\v21.wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntryR\x05value\x1ae\n" + + "\n" + + "ValueEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12A\n" + + "\x05value\x18\x02 \x01(\v2+.wg.cosmo.platform.v1.AnalyticsViewRowValueR\x05value:\x028\x01\"\x8a\x01\n" + + "\x15AnalyticsViewRowValue\x12#\n" + + "\fnumber_value\x18\x01 \x01(\x01H\x00R\vnumberValue\x12#\n" + + "\fstring_value\x18\x02 \x01(\tH\x00R\vstringValue\x12\x1f\n" + + "\n" + + "bool_value\x18\x03 \x01(\bH\x00R\tboolValueB\x06\n" + + "\x04kind\"\x95\x01\n" + + "\x18GetAnalyticsViewResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12=\n" + + "\x04view\x18\x02 \x01(\v2).wg.cosmo.platform.v1.AnalyticsViewResultR\x04view\"\xbe\x01\n" + + " GetDashboardAnalyticsViewRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tstartDate\x18\x02 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x03 \x01(\tR\aendDate\x12\x14\n" + + "\x05range\x18\x04 \x01(\x05R\x05range\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\"\x81\x01\n" + + "\x11RequestSeriesItem\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\tR\ttimestamp\x12$\n" + + "\rtotalRequests\x18\x02 \x01(\x05R\rtotalRequests\x12(\n" + + "\x0ferroredRequests\x18\x03 \x01(\x05R\x0ferroredRequests\"\x89\x01\n" + + "\x15OperationRequestCount\x12$\n" + + "\roperationHash\x18\x01 \x01(\tR\roperationHash\x12$\n" + + "\roperationName\x18\x02 \x01(\tR\roperationName\x12$\n" + + "\rtotalRequests\x18\x03 \x01(\x05R\rtotalRequests\"\x9d\x01\n" + + "\x15FederatedGraphMetrics\x12*\n" + + "\x10federatedGraphID\x18\x01 \x01(\tR\x10federatedGraphID\x12 \n" + + "\vrequestRate\x18\x02 \x01(\x02R\vrequestRate\x12\x1c\n" + + "\terrorRate\x18\x03 \x01(\x02R\terrorRate\x12\x18\n" + + "\alatency\x18\x04 \x01(\x02R\alatency\"\x8b\x01\n" + + "\x0fSubgraphMetrics\x12\x1e\n" + + "\n" + + "subgraphID\x18\x01 \x01(\tR\n" + + "subgraphID\x12 \n" + + "\vrequestRate\x18\x02 \x01(\x02R\vrequestRate\x12\x1c\n" + + "\terrorRate\x18\x03 \x01(\x02R\terrorRate\x12\x18\n" + + "\alatency\x18\x04 \x01(\x02R\alatency\"\xc9\x03\n" + + "!GetDashboardAnalyticsViewResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12M\n" + + "\rrequestSeries\x18\x02 \x03(\v2'.wg.cosmo.platform.v1.RequestSeriesItemR\rrequestSeries\x12e\n" + + "\x17mostRequestedOperations\x18\x03 \x03(\v2+.wg.cosmo.platform.v1.OperationRequestCountR\x17mostRequestedOperations\x12O\n" + + "\x0fsubgraphMetrics\x18\x04 \x03(\v2%.wg.cosmo.platform.v1.SubgraphMetricsR\x0fsubgraphMetrics\x12a\n" + + "\x15federatedGraphMetrics\x18\x05 \x01(\v2+.wg.cosmo.platform.v1.FederatedGraphMetricsR\x15federatedGraphMetrics\"|\n" + + " CreateFederatedGraphTokenRequest\x12\x1c\n" + + "\tgraphName\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\ttokenName\x18\x02 \x01(\tR\ttokenName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"u\n" + + "!CreateFederatedGraphTokenResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\"i\n" + + "\x15OrganizationGroupRule\x12\x12\n" + + "\x04role\x18\x01 \x01(\tR\x04role\x12\x1e\n" + + "\n" + + "namespaces\x18\x02 \x03(\tR\n" + + "namespaces\x12\x1c\n" + + "\tresources\x18\x03 \x03(\tR\tresources\"\xb0\x02\n" + + "\x11OrganizationGroup\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" + + "\abuiltin\x18\x04 \x01(\bR\abuiltin\x12\"\n" + + "\fmembersCount\x18\x05 \x01(\x05R\fmembersCount\x12A\n" + + "\x05rules\x18\x06 \x03(\v2+.wg.cosmo.platform.v1.OrganizationGroupRuleR\x05rules\x12&\n" + + "\x0ehasOidcMappers\x18\a \x01(\bR\x0ehasOidcMappers\x12\"\n" + + "\fapiKeysCount\x18\b \x01(\x05R\fapiKeysCount\"V\n" + + "\x1eCreateOrganizationGroupRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\"\x9c\x01\n" + + "\x1fCreateOrganizationGroupResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12=\n" + + "\x05group\x18\x02 \x01(\v2'.wg.cosmo.platform.v1.OrganizationGroupR\x05group\"\x1e\n" + + "\x1cGetOrganizationGroupsRequest\"\x9c\x01\n" + + "\x1dGetOrganizationGroupsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12?\n" + + "\x06groups\x18\x02 \x03(\v2'.wg.cosmo.platform.v1.OrganizationGroupR\x06groups\">\n" + + "\"GetOrganizationGroupMembersRequest\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\"\xc7\x03\n" + + "#GetOrganizationGroupMembersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12_\n" + + "\amembers\x18\x02 \x03(\v2E.wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMemberR\amembers\x12_\n" + + "\aapiKeys\x18\x03 \x03(\v2E.wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKeyR\aapiKeys\x1aQ\n" + + "\vGroupMember\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05email\x18\x02 \x01(\tR\x05email\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x1aO\n" + + "\vGroupApiKey\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\"\x91\x02\n" + + "\x1eUpdateOrganizationGroupRequest\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12T\n" + + "\x05rules\x18\x03 \x03(\v2>.wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRuleR\x05rules\x1a]\n" + + "\tGroupRule\x12\x12\n" + + "\x04role\x18\x01 \x01(\tR\x04role\x12\x1e\n" + + "\n" + + "namespaces\x18\x02 \x03(\tR\n" + + "namespaces\x12\x1c\n" + + "\tresources\x18\x03 \x03(\tR\tresources\"]\n" + + "\x1fUpdateOrganizationGroupResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"k\n" + + "\x1eDeleteOrganizationGroupRequest\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\x12!\n" + + "\ttoGroupId\x18\x02 \x01(\tH\x00R\ttoGroupId\x88\x01\x01B\f\n" + + "\n" + + "_toGroupId\"]\n" + + "\x1fDeleteOrganizationGroupResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x85\x02\n" + + "\tOrgMember\x12\x16\n" + + "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x14\n" + + "\x05email\x18\x02 \x01(\tR\x05email\x12 \n" + + "\vorgMemberID\x18\x03 \x01(\tR\vorgMemberID\x12\x16\n" + + "\x06active\x18\x04 \x01(\bR\x06active\x12\x1a\n" + + "\bjoinedAt\x18\x05 \x01(\tR\bjoinedAt\x12=\n" + + "\x06groups\x18\x06 \x03(\v2%.wg.cosmo.platform.v1.OrgMember.GroupR\x06groups\x1a5\n" + + "\x05Group\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"D\n" + + "\x14PendingOrgInvitation\x12\x16\n" + + "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x14\n" + + "\x05email\x18\x02 \x01(\tR\x05email\"\x90\x01\n" + + "$GetPendingOrganizationMembersRequest\x12@\n" + + "\n" + + "pagination\x18\x01 \x01(\v2 .wg.cosmo.platform.v1.PaginationR\n" + + "pagination\x12\x1b\n" + + "\x06search\x18\x02 \x01(\tH\x00R\x06search\x88\x01\x01B\t\n" + + "\a_search\"\xe0\x01\n" + + "%GetPendingOrganizationMembersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12Z\n" + + "\x12pendingInvitations\x18\x02 \x03(\v2*.wg.cosmo.platform.v1.PendingOrgInvitationR\x12pendingInvitations\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"\x89\x01\n" + + "\x1dGetOrganizationMembersRequest\x12@\n" + + "\n" + + "pagination\x18\x01 \x01(\v2 .wg.cosmo.platform.v1.PaginationR\n" + + "pagination\x12\x1b\n" + + "\x06search\x18\x02 \x01(\tH\x00R\x06search\x88\x01\x01B\t\n" + + "\a_search\"\xb8\x01\n" + + "\x1eGetOrganizationMembersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x129\n" + + "\amembers\x18\x02 \x03(\v2\x1f.wg.cosmo.platform.v1.OrgMemberR\amembers\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"A\n" + + "\x11InviteUserRequest\x12\x14\n" + + "\x05email\x18\x01 \x01(\tR\x05email\x12\x16\n" + + "\x06groups\x18\x02 \x03(\tR\x06groups\"P\n" + + "\x12InviteUserResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"D\n" + + "\x12InviteUsersRequest\x12\x16\n" + + "\x06emails\x18\x01 \x03(\tR\x06emails\x12\x16\n" + + "\x06groups\x18\x02 \x03(\tR\x06groups\"H\n" + + "\x1aInviteUsersInvitationError\x12\x14\n" + + "\x05email\x18\x01 \x01(\tR\x05email\x12\x14\n" + + "\x05error\x18\x02 \x01(\tR\x05error\"\xaf\x01\n" + + "\x13InviteUsersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\\\n" + + "\x10invitationErrors\x18\x02 \x03(\v20.wg.cosmo.platform.v1.InviteUsersInvitationErrorR\x10invitationErrors\"\xb8\x02\n" + + "\x06APIKey\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tcreatedBy\x18\x03 \x01(\tR\tcreatedBy\x12\x1c\n" + + "\tcreatedAt\x18\x04 \x01(\tR\tcreatedAt\x12\x1e\n" + + "\n" + + "lastUsedAt\x18\x05 \x01(\tR\n" + + "lastUsedAt\x12\x1c\n" + + "\texpiresAt\x18\x06 \x01(\tR\texpiresAt\x12=\n" + + "\x05group\x18\a \x01(\v2\".wg.cosmo.platform.v1.APIKey.GroupH\x00R\x05group\x88\x01\x01\x12\x1a\n" + + "\bexternal\x18\b \x01(\bR\bexternal\x1a+\n" + + "\x05Group\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04nameB\b\n" + + "\x06_group\"A\n" + + "\x11GetAPIKeysRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\"\x9e\x01\n" + + "\x12GetAPIKeysResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x126\n" + + "\aapiKeys\x18\x02 \x03(\v2\x1c.wg.cosmo.platform.v1.APIKeyR\aapiKeys\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"\xe6\x01\n" + + "\x13CreateAPIKeyRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" + + "\x06userID\x18\x02 \x01(\tR\x06userID\x129\n" + + "\aexpires\x18\x03 \x01(\x0e2\x1f.wg.cosmo.platform.v1.ExpiresAtR\aexpires\x12\x18\n" + + "\agroupId\x18\x04 \x01(\tR\agroupId\x12 \n" + + "\vpermissions\x18\x05 \x03(\tR\vpermissions\x12\x1f\n" + + "\bexternal\x18\x06 \x01(\bH\x00R\bexternal\x88\x01\x01B\v\n" + + "\t_external\"j\n" + + "\x14CreateAPIKeyResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x16\n" + + "\x06apiKey\x18\x02 \x01(\tR\x06apiKey\")\n" + + "\x13DeleteAPIKeyRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"R\n" + + "\x14DeleteAPIKeyResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"C\n" + + "\x13UpdateAPIKeyRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\agroupId\x18\x02 \x01(\tR\agroupId\"R\n" + + "\x14UpdateAPIKeyResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"7\n" + + "\x1fRemoveOrganizationMemberRequest\x12\x14\n" + + "\x05email\x18\x01 \x01(\tR\x05email\"^\n" + + " RemoveOrganizationMemberResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"/\n" + + "\x17RemoveInvitationRequest\x12\x14\n" + + "\x05email\x18\x01 \x01(\tR\x05email\"V\n" + + "\x18RemoveInvitationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"r\n" + + "\x18MigrateFromApolloRequest\x12\x16\n" + + "\x06apiKey\x18\x01 \x01(\tR\x06apiKey\x12 \n" + + "\vvariantName\x18\x02 \x01(\tR\vvariantName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"m\n" + + "\x19MigrateFromApolloResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\"\xdf\x03\n" + + "\x04Span\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x1c\n" + + "\tscopeName\x18\x02 \x01(\tR\tscopeName\x12\x18\n" + + "\atraceID\x18\x03 \x01(\tR\atraceID\x12\x16\n" + + "\x06spanID\x18\x04 \x01(\tR\x06spanID\x12\"\n" + + "\fparentSpanID\x18\x05 \x01(\tR\fparentSpanID\x12\x1a\n" + + "\bspanName\x18\x06 \x01(\tR\bspanName\x12\x1a\n" + + "\bspanKind\x18\a \x01(\tR\bspanKind\x12\x1a\n" + + "\bduration\x18\b \x01(\x03R\bduration\x12 \n" + + "\vserviceName\x18\t \x01(\tR\vserviceName\x12\x1e\n" + + "\n" + + "statusCode\x18\n" + + " \x01(\tR\n" + + "statusCode\x12$\n" + + "\rstatusMessage\x18\v \x01(\tR\rstatusMessage\x12J\n" + + "\n" + + "attributes\x18\f \x03(\v2*.wg.cosmo.platform.v1.Span.AttributesEntryR\n" + + "attributes\x1a=\n" + + "\x0fAttributesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"h\n" + + "\x0fGetTraceRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" + + "\aspan_id\x18\x02 \x01(\tR\x06spanId\x12,\n" + + "\x12federated_graph_id\x18\x03 \x01(\tR\x10federatedGraphId\"\x80\x01\n" + + "\x10GetTraceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x120\n" + + "\x05spans\x18\x02 \x03(\v2\x1a.wg.cosmo.platform.v1.SpanR\x05spans\"\x0f\n" + + "\rWhoAmIRequest\"\xc3\x02\n" + + "\x0eWhoAmIResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12*\n" + + "\x10organizationName\x18\x02 \x01(\tR\x10organizationName\x12!\n" + + "\tuserEmail\x18\x03 \x01(\tH\x00R\tuserEmail\x88\x01\x01\x12*\n" + + "\x10organizationSlug\x18\x04 \x01(\tR\x10organizationSlug\x12&\n" + + "\x0eorganizationId\x18\x05 \x01(\tR\x0eorganizationId\x12D\n" + + "\flogin_method\x18\x06 \x01(\v2!.wg.cosmo.platform.v1.LoginMethodR\vloginMethodB\f\n" + + "\n" + + "_userEmail\"\x8d\x02\n" + + "\vLoginMethod\x129\n" + + "\x04type\x18\x01 \x01(\x0e2%.wg.cosmo.platform.v1.LoginMethodTypeR\x04type\x12&\n" + + "\x0fsso_provider_id\x18\x02 \x01(\tR\rssoProviderId\x12*\n" + + "\x11sso_provider_name\x18\x03 \x01(\tR\x0fssoProviderName\x12\x1b\n" + + "\tsso_alias\x18\x04 \x01(\tR\bssoAlias\x12R\n" + + "\x0fsocial_provider\x18\x05 \x01(\x0e2).wg.cosmo.platform.v1.SocialLoginProviderR\x0esocialProvider\"s\n" + + "\vRouterToken\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x12\"\n" + + "\fcreatorEmail\x18\x05 \x01(\tR\fcreatorEmail\"^\n" + + "\x1aGenerateRouterTokenRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"o\n" + + "\x1bGenerateRouterTokenResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\"Z\n" + + "\x16GetRouterTokensRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x90\x01\n" + + "\x17GetRouterTokensResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x129\n" + + "\x06tokens\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.RouterTokenR\x06tokens\"z\n" + + "\x18DeleteRouterTokenRequest\x12\x1c\n" + + "\ttokenName\x18\x01 \x01(\tR\ttokenName\x12\"\n" + + "\ffedGraphName\x18\x02 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"W\n" + + "\x19DeleteRouterTokenResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"@\n" + + "\x12PersistedOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bcontents\x18\x02 \x01(\tR\bcontents\"\xcf\x01\n" + + "!PublishPersistedOperationsRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1e\n" + + "\n" + + "clientName\x18\x02 \x01(\tR\n" + + "clientName\x12H\n" + + "\n" + + "operations\x18\x03 \x03(\v2(.wg.cosmo.platform.v1.PersistedOperationR\n" + + "operations\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\"\xa8\x01\n" + + "\x12PublishedOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04hash\x18\x02 \x01(\tR\x04hash\x12F\n" + + "\x06status\x18\x03 \x01(\x0e2..wg.cosmo.platform.v1.PublishedOperationStatusR\x06status\x12&\n" + + "\x0eoperationNames\x18\x04 \x03(\tR\x0eoperationNames\"\xaa\x01\n" + + "\"PublishPersistedOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\n" + + "operations\x18\x02 \x03(\v2(.wg.cosmo.platform.v1.PublishedOperationR\n" + + "operations\"\xa5\x01\n" + + "\x1fDeletePersistedOperationRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1e\n" + + "\n" + + "clientName\x18\x03 \x01(\tR\n" + + "clientName\x12 \n" + + "\voperationId\x18\x04 \x01(\tR\voperationId\"\xc6\x02\n" + + " DeletePersistedOperationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12^\n" + + "\toperation\x18\x02 \x01(\v2@.wg.cosmo.platform.v1.DeletePersistedOperationResponse.OperationR\toperation\x1a\x85\x01\n" + + "\tOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12 \n" + + "\voperationId\x18\x02 \x01(\tR\voperationId\x12\x1e\n" + + "\n" + + "clientName\x18\x03 \x01(\tR\n" + + "clientName\x12&\n" + + "\x0eoperationNames\x18\x04 \x03(\tR\x0eoperationNames\"\xab\x01\n" + + "%CheckPersistedOperationTrafficRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12 \n" + + "\voperationId\x18\x03 \x01(\tR\voperationId\x12\x1e\n" + + "\n" + + "clientName\x18\x04 \x01(\tR\n" + + "clientName\"\xf2\x02\n" + + "&CheckPersistedOperationTrafficResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12d\n" + + "\toperation\x18\x02 \x01(\v2F.wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.OperationR\toperation\x1a\xa5\x01\n" + + "\tOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12 \n" + + "\voperationId\x18\x02 \x01(\tR\voperationId\x12\x1e\n" + + "\n" + + "clientName\x18\x03 \x01(\tR\n" + + "clientName\x12&\n" + + "\x0eoperationNames\x18\x04 \x03(\tR\x0eoperationNames\x12\x1e\n" + + "\n" + + "hasTraffic\x18\x05 \x01(\bR\n" + + "hasTraffic\"\x8c\x01\n" + + "\x1dGetPersistedOperationsRequest\x120\n" + + "\x14federated_graph_name\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1b\n" + + "\tclient_id\x18\x02 \x01(\tR\bclientId\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"\xe6\x02\n" + + "\x1eGetPersistedOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12^\n" + + "\n" + + "operations\x18\x02 \x03(\v2>.wg.cosmo.platform.v1.GetPersistedOperationsResponse.OperationR\n" + + "operations\x1a\xa7\x01\n" + + "\tOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bcontents\x18\x02 \x01(\tR\bcontents\x12\x1d\n" + + "\n" + + "created_at\x18\x03 \x01(\tR\tcreatedAt\x12&\n" + + "\x0flast_updated_at\x18\x04 \x01(\tR\rlastUpdatedAt\x12'\n" + + "\x0foperation_names\x18\x05 \x03(\tR\x0eoperationNames\"0\n" + + "\x06Header\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"\xb2\x01\n" + + "&CreateOrganizationWebhookConfigRequest\x12\x1a\n" + + "\bendpoint\x18\x01 \x01(\tR\bendpoint\x12\x10\n" + + "\x03key\x18\x02 \x01(\tR\x03key\x12\x16\n" + + "\x06events\x18\x03 \x03(\tR\x06events\x12B\n" + + "\vevents_meta\x18\x04 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\"\x91\x01\n" + + "'CreateOrganizationWebhookConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12*\n" + + "\x11webhook_config_id\x18\x02 \x01(\tR\x0fwebhookConfigId\"&\n" + + "$GetOrganizationWebhookConfigsRequest\"\x8f\x02\n" + + "%GetOrganizationWebhookConfigsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\\\n" + + "\aconfigs\x18\x02 \x03(\v2B.wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.ConfigR\aconfigs\x1aL\n" + + "\x06Config\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bendpoint\x18\x02 \x01(\tR\bendpoint\x12\x16\n" + + "\x06events\x18\x03 \x03(\tR\x06events\"3\n" + + "!GetOrganizationWebhookMetaRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xa4\x01\n" + + "\"GetOrganizationWebhookMetaResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12B\n" + + "\vevents_meta\x18\x02 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\"\xee\x01\n" + + "&UpdateOrganizationWebhookConfigRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bendpoint\x18\x02 \x01(\tR\bendpoint\x12\x10\n" + + "\x03key\x18\x03 \x01(\tR\x03key\x12\x16\n" + + "\x06events\x18\x04 \x03(\tR\x06events\x12B\n" + + "\vevents_meta\x18\x05 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\x12*\n" + + "\x11should_update_key\x18\x06 \x01(\bR\x0fshouldUpdateKey\"e\n" + + "'UpdateOrganizationWebhookConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"8\n" + + "&DeleteOrganizationWebhookConfigRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"e\n" + + "'DeleteOrganizationWebhookConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xb1\x01\n" + + "\x18CreateIntegrationRequest\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04code\x18\x03 \x01(\tR\x04code\x12\x16\n" + + "\x06events\x18\x04 \x03(\tR\x06events\x12A\n" + + "\n" + + "eventsMeta\x18\x05 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\"W\n" + + "\x19CreateIntegrationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"$\n" + + "\"GetOrganizationIntegrationsRequest\"4\n" + + "\x16SlackIntegrationConfig\x12\x1a\n" + + "\bendpoint\x18\x01 \x01(\tR\bendpoint\"\xc0\x01\n" + + "\x11IntegrationConfig\x129\n" + + "\x04type\x18\x01 \x01(\x0e2%.wg.cosmo.platform.v1.IntegrationTypeR\x04type\x12f\n" + + "\x16slackIntegrationConfig\x18\x02 \x01(\v2,.wg.cosmo.platform.v1.SlackIntegrationConfigH\x00R\x16slackIntegrationConfigB\b\n" + + "\x06config\"\xf7\x01\n" + + "\vIntegration\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\x12\x16\n" + + "\x06events\x18\x04 \x03(\tR\x06events\x12U\n" + + "\x11integrationConfig\x18\x05 \x01(\v2'.wg.cosmo.platform.v1.IntegrationConfigR\x11integrationConfig\x12A\n" + + "\n" + + "eventsMeta\x18\x06 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\"\xa8\x01\n" + + "#GetOrganizationIntegrationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12E\n" + + "\fintegrations\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.IntegrationR\fintegrations\"\xa8\x01\n" + + "\x1eUpdateIntegrationConfigRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bendpoint\x18\x02 \x01(\tR\bendpoint\x12\x16\n" + + "\x06events\x18\x03 \x03(\tR\x06events\x12B\n" + + "\vevents_meta\x18\x04 \x03(\v2!.wg.cosmo.notifications.EventMetaR\n" + + "eventsMeta\"]\n" + + "\x1fUpdateIntegrationConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"*\n" + + "\x18DeleteIntegrationRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"W\n" + + "\x19DeleteIntegrationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"3\n" + + "\x19DeleteOrganizationRequest\x12\x16\n" + + "\x06userID\x18\x01 \x01(\tR\x06userID\"X\n" + + "\x1aDeleteOrganizationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x1c\n" + + "\x1aRestoreOrganizationRequest\"Y\n" + + "\x1bRestoreOrganizationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x1a\n" + + "\x18LeaveOrganizationRequest\"W\n" + + "\x19LeaveOrganizationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x92\x01\n" + + " UpdateOrganizationDetailsRequest\x12\x16\n" + + "\x06userID\x18\x01 \x01(\tR\x06userID\x12*\n" + + "\x10organizationName\x18\x02 \x01(\tR\x10organizationName\x12*\n" + + "\x10organizationSlug\x18\x03 \x01(\tR\x10organizationSlug\"_\n" + + "!UpdateOrganizationDetailsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"_\n" + + "\x1bUpdateOrgMemberGroupRequest\x12(\n" + + "\x0forgMemberUserID\x18\x01 \x01(\tR\x0forgMemberUserID\x12\x16\n" + + "\x06groups\x18\x02 \x03(\tR\x06groups\"Z\n" + + "\x1cUpdateOrgMemberGroupResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"W\n" + + "\x19CreateOrganizationRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + + "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x12\n" + + "\x04plan\x18\x03 \x01(\tR\x04plan\"\xf9\x01\n" + + "\x1aCreateOrganizationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12K\n" + + "\forganization\x18\x02 \x01(\v2\".wg.cosmo.platform.v1.OrganizationH\x00R\forganization\x88\x01\x01\x12-\n" + + "\x0fstripeSessionId\x18\x03 \x01(\tH\x01R\x0fstripeSessionId\x88\x01\x01B\x0f\n" + + "\r_organizationB\x12\n" + + "\x10_stripeSessionId\"\xa1\x01\n" + + "\fOrganization\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04slug\x18\x03 \x01(\tR\x04slug\x12)\n" + + "\rcreatorUserId\x18\x04 \x01(\tH\x00R\rcreatorUserId\x88\x01\x01\x12\x1c\n" + + "\tcreatedAt\x18\x05 \x01(\tR\tcreatedAtB\x10\n" + + "\x0e_creatorUserId\"2\n" + + "\x1cGetOrganizationBySlugRequest\x12\x12\n" + + "\x04slug\x18\x01 \x01(\tR\x04slug\"\xb9\x01\n" + + "\x1dGetOrganizationBySlugResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12K\n" + + "\forganization\x18\x02 \x01(\v2\".wg.cosmo.platform.v1.OrganizationH\x00R\forganization\x88\x01\x01B\x0f\n" + + "\r_organization\"\x18\n" + + "\x16GetBillingPlansRequest\"\xbb\x03\n" + + "\x17GetBillingPlansResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12O\n" + + "\x05plans\x18\x02 \x03(\v29.wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanR\x05plans\x1ak\n" + + "\x12BillingPlanFeature\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x19\n" + + "\x05limit\x18\x04 \x01(\x05H\x00R\x05limit\x88\x01\x01B\b\n" + + "\x06_limit\x1a\xa5\x01\n" + + "\vBillingPlan\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + + "\x05price\x18\x03 \x01(\x05R\x05price\x12\\\n" + + "\bfeatures\x18\x04 \x03(\v2@.wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeatureR\bfeatures\"2\n" + + "\x1cCreateCheckoutSessionRequest\x12\x12\n" + + "\x04plan\x18\x01 \x01(\tR\x04plan\"y\n" + + "\x1dCreateCheckoutSessionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1c\n" + + "\tsessionId\x18\x02 \x01(\tR\tsessionId\"#\n" + + "!CreateBillingPortalSessionRequest\"\x90\x01\n" + + "\"CreateBillingPortalSessionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1c\n" + + "\tsessionId\x18\x02 \x01(\tR\tsessionId\x12\x10\n" + + "\x03url\x18\x03 \x01(\tR\x03url\"(\n" + + "\x12UpgradePlanRequest\x12\x12\n" + + "\x04plan\x18\x01 \x01(\tR\x04plan\"Q\n" + + "\x13UpgradePlanResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xfc\x01\n" + + "\x16GetGraphMetricsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x14\n" + + "\x05range\x18\x02 \x01(\x05R\x05range\x12=\n" + + "\tdateRange\x18\x03 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12?\n" + + "\afilters\x18\x04 \x03(\v2%.wg.cosmo.platform.v1.AnalyticsFilterR\afilters\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\"\xac\x03\n" + + "\x17GetGraphMetricsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\brequests\x18\x02 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\brequests\x12F\n" + + "\alatency\x18\x03 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\alatency\x12D\n" + + "\x06errors\x18\x04 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\x06errors\x12I\n" + + "\afilters\x18\x05 \x03(\v2/.wg.cosmo.platform.v1.AnalyticsViewResultFilterR\afilters\x12#\n" + + "\n" + + "resolution\x18\x06 \x01(\tH\x00R\n" + + "resolution\x88\x01\x01B\r\n" + + "\v_resolution\"\xe4\x01\n" + + "\x16MetricsDashboardMetric\x12\x14\n" + + "\x05value\x18\x01 \x01(\tR\x05value\x12)\n" + + "\rpreviousValue\x18\x02 \x01(\tH\x00R\rpreviousValue\x88\x01\x01\x126\n" + + "\x03top\x18\x03 \x03(\v2$.wg.cosmo.platform.v1.MetricsTopItemR\x03top\x12?\n" + + "\x06series\x18\x04 \x03(\v2'.wg.cosmo.platform.v1.MetricsSeriesItemR\x06seriesB\x10\n" + + "\x0e_previousValue\"p\n" + + "\x0eMetricsTopItem\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + + "\x05value\x18\x03 \x01(\tR\x05value\x12 \n" + + "\visPersisted\x18\x04 \x01(\bR\visPersisted\"\xe1\x01\n" + + "\x11MetricsSeriesItem\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\tR\ttimestamp\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\x12)\n" + + "\rpreviousValue\x18\x03 \x01(\tH\x00R\rpreviousValue\x88\x01\x01\x12\x15\n" + + "\x03p50\x18\x04 \x01(\tH\x01R\x03p50\x88\x01\x01\x12\x15\n" + + "\x03p90\x18\x05 \x01(\tH\x02R\x03p90\x88\x01\x01\x12\x15\n" + + "\x03p99\x18\x06 \x01(\tH\x03R\x03p99\x88\x01\x01B\x10\n" + + "\x0e_previousValueB\x06\n" + + "\x04_p50B\x06\n" + + "\x04_p90B\x06\n" + + "\x04_p99\"\xe5\x01\n" + + "\x10MetricsDashboard\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\x123\n" + + "\x04unit\x18\x04 \x01(\x0e2\x1a.wg.cosmo.platform.v1.UnitH\x00R\x04unit\x88\x01\x01\x12 \n" + + "\tis_hidden\x18\x05 \x01(\bH\x01R\bisHidden\x88\x01\x01\x12\x1a\n" + + "\x06is_cta\x18\x06 \x01(\bH\x02R\x05isCta\x88\x01\x01B\a\n" + + "\x05_unitB\f\n" + + "\n" + + "_is_hiddenB\t\n" + + "\a_is_cta\"\x80\x02\n" + + "\x1aGetMetricsErrorRateRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x14\n" + + "\x05range\x18\x02 \x01(\x05R\x05range\x12=\n" + + "\tdateRange\x18\x03 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12?\n" + + "\afilters\x18\x04 \x03(\v2%.wg.cosmo.platform.v1.AnalyticsFilterR\afilters\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\"\xd7\x01\n" + + "\x1bGetMetricsErrorRateResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\x06series\x18\x02 \x03(\v20.wg.cosmo.platform.v1.MetricsErrorRateSeriesItemR\x06series\x12#\n" + + "\n" + + "resolution\x18\x03 \x01(\tH\x00R\n" + + "resolution\x88\x01\x01B\r\n" + + "\v_resolution\"z\n" + + "\x1aMetricsErrorRateSeriesItem\x12\x1c\n" + + "\ttimestamp\x18\x01 \x01(\tR\ttimestamp\x12 \n" + + "\vrequestRate\x18\x02 \x01(\x02R\vrequestRate\x12\x1c\n" + + "\terrorRate\x18\x03 \x01(\x02R\terrorRate\"\xf3\x01\n" + + "\x19GetSubgraphMetricsRequest\x12\"\n" + + "\fsubgraphName\x18\x01 \x01(\tR\fsubgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x14\n" + + "\x05range\x18\x04 \x01(\x05R\x05range\x12=\n" + + "\tdateRange\x18\x05 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12?\n" + + "\afilters\x18\x06 \x03(\v2%.wg.cosmo.platform.v1.AnalyticsFilterR\afilters\"\xaf\x03\n" + + "\x1aGetSubgraphMetricsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\brequests\x18\x02 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\brequests\x12F\n" + + "\alatency\x18\x03 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\alatency\x12D\n" + + "\x06errors\x18\x04 \x01(\v2,.wg.cosmo.platform.v1.MetricsDashboardMetricR\x06errors\x12I\n" + + "\afilters\x18\x05 \x03(\v2/.wg.cosmo.platform.v1.AnalyticsViewResultFilterR\afilters\x12#\n" + + "\n" + + "resolution\x18\x06 \x01(\tH\x00R\n" + + "resolution\x88\x01\x01B\r\n" + + "\v_resolution\"\xfc\x01\n" + + "\"GetSubgraphMetricsErrorRateRequest\x12\"\n" + + "\fsubgraphName\x18\x01 \x01(\tR\fsubgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x14\n" + + "\x05range\x18\x04 \x01(\x05R\x05range\x12=\n" + + "\tdateRange\x18\x05 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12?\n" + + "\afilters\x18\x06 \x03(\v2%.wg.cosmo.platform.v1.AnalyticsFilterR\afilters\"\xdf\x01\n" + + "#GetSubgraphMetricsErrorRateResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\x06series\x18\x02 \x03(\v20.wg.cosmo.platform.v1.MetricsErrorRateSeriesItemR\x06series\x12#\n" + + "\n" + + "resolution\x18\x03 \x01(\tH\x00R\n" + + "resolution\x88\x01\x01B\r\n" + + "\v_resolution\"r\n" + + "\x18ForceCheckSuccessRequest\x12\x19\n" + + "\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x1d\n" + + "\n" + + "graph_name\x18\x02 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"W\n" + + "\x19ForceCheckSuccessResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xc7\x01\n" + + ",ToggleChangeOverridesForAllOperationsRequest\x12\x19\n" + + "\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x17\n" + + "\ais_safe\x18\x02 \x01(\bR\x06isSafe\x12\x1d\n" + + "\n" + + "graph_name\x18\x03 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\x12\x1b\n" + + "\x06search\x18\x05 \x01(\tH\x00R\x06search\x88\x01\x01B\t\n" + + "\a_search\"k\n" + + "-ToggleChangeOverridesForAllOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xae\x01\n" + + ",CreateIgnoreOverridesForAllOperationsRequest\x12\x19\n" + + "\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x1d\n" + + "\n" + + "graph_name\x18\x02 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x1b\n" + + "\x06search\x18\x04 \x01(\tH\x00R\x06search\x88\x01\x01B\t\n" + + "\a_search\"k\n" + + "-CreateIgnoreOverridesForAllOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"R\n" + + "\x0eOverrideChange\x12\x1e\n" + + "\n" + + "changeType\x18\x01 \x01(\tR\n" + + "changeType\x12\x17\n" + + "\x04path\x18\x02 \x01(\tH\x00R\x04path\x88\x01\x01B\a\n" + + "\x05_path\"\xec\x01\n" + + "\x1fCreateOperationOverridesRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12%\n" + + "\x0eoperation_hash\x18\x03 \x01(\tR\roperationHash\x12%\n" + + "\x0eoperation_name\x18\x04 \x01(\tR\roperationName\x12>\n" + + "\achanges\x18\x05 \x03(\v2$.wg.cosmo.platform.v1.OverrideChangeR\achanges\"^\n" + + " CreateOperationOverridesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xb4\x01\n" + + "'CreateOperationIgnoreAllOverrideRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12%\n" + + "\x0eoperation_hash\x18\x03 \x01(\tR\roperationHash\x12%\n" + + "\x0eoperation_name\x18\x04 \x01(\tR\roperationName\"f\n" + + "(CreateOperationIgnoreAllOverrideResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xc5\x01\n" + + "\x1fRemoveOperationOverridesRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12%\n" + + "\x0eoperation_hash\x18\x03 \x01(\tR\roperationHash\x12>\n" + + "\achanges\x18\x04 \x03(\v2$.wg.cosmo.platform.v1.OverrideChangeR\achanges\"^\n" + + " RemoveOperationOverridesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x8d\x01\n" + + "'RemoveOperationIgnoreAllOverrideRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12%\n" + + "\x0eoperation_hash\x18\x03 \x01(\tR\roperationHash\"f\n" + + "(RemoveOperationIgnoreAllOverrideResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x82\x01\n" + + "\x1cGetOperationOverridesRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12%\n" + + "\x0eoperation_hash\x18\x03 \x01(\tR\roperationHash\"\xba\x01\n" + + "\x1dGetOperationOverridesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12>\n" + + "\achanges\x18\x02 \x03(\v2$.wg.cosmo.platform.v1.OverrideChangeR\achanges\x12\x1d\n" + + "\n" + + "ignore_all\x18\x03 \x01(\bR\tignoreAll\"\x83\x01\n" + + "\x16GetAllOverridesRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\"\x88\x03\n" + + "\x17GetAllOverridesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\toverrides\x18\x02 \x03(\v26.wg.cosmo.platform.v1.GetAllOverridesResponse.OverrideR\toverrides\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\x1a\xb9\x01\n" + + "\bOverride\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x122\n" + + "\x14changesOverrideCount\x18\x03 \x01(\rR\x14changesOverrideCount\x122\n" + + "\x14hasIgnoreAllOverride\x18\x04 \x01(\bR\x14hasIgnoreAllOverride\x12\x1d\n" + + "\n" + + "updated_at\x18\x05 \x01(\tR\tupdatedAt\"W\n" + + "\x1bIsGitHubAppInstalledRequest\x128\n" + + "\bgit_info\x18\x01 \x01(\v2\x1d.wg.cosmo.platform.v1.GitInfoR\agitInfo\"}\n" + + "\x1cIsGitHubAppInstalledResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12!\n" + + "\fis_installed\x18\x02 \x01(\bR\visInstalled\"C\n" + + "\vGroupMapper\x12\x18\n" + + "\agroupId\x18\x01 \x01(\tR\agroupId\x12\x1a\n" + + "\bssoGroup\x18\x02 \x01(\tR\bssoGroup\"\xda\x01\n" + + "\x19CreateOIDCProviderRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12,\n" + + "\x11discoveryEndpoint\x18\x02 \x01(\tR\x11discoveryEndpoint\x12\x1a\n" + + "\bclientID\x18\x03 \x01(\tR\bclientID\x12\"\n" + + "\fclientSecret\x18\x04 \x01(\tR\fclientSecret\x12;\n" + + "\amappers\x18\x05 \x03(\v2!.wg.cosmo.platform.v1.GroupMapperR\amappers\"\xb2\x01\n" + + "\x1aCreateOIDCProviderResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1c\n" + + "\tsignInURL\x18\x02 \x01(\tR\tsignInURL\x12\x1e\n" + + "\n" + + "signOutURL\x18\x03 \x01(\tR\n" + + "signOutURL\x12\x1a\n" + + "\bloginURL\x18\x04 \x01(\tR\bloginURL\"\x83\x02\n" + + "\fOIDCProvider\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + + "\x05alias\x18\x03 \x01(\tR\x05alias\x12\x1a\n" + + "\bendpoint\x18\x04 \x01(\tR\bendpoint\x12\x1b\n" + + "\tlogin_url\x18\x05 \x01(\tR\bloginUrl\x12/\n" + + "\x14sign_in_redirect_url\x18\x06 \x01(\tR\x11signInRedirectUrl\x121\n" + + "\x15sign_out_redirect_url\x18\a \x01(\tR\x12signOutRedirectUrl\x12\x1c\n" + + "\tcreatedAt\x18\b \x01(\tR\tcreatedAt\"\x1a\n" + + "\x18ListOIDCProvidersRequest\"\x99\x01\n" + + "\x19ListOIDCProvidersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12@\n" + + "\tproviders\x18\x02 \x03(\v2\".wg.cosmo.platform.v1.OIDCProviderR\tproviders\"(\n" + + "\x16GetOIDCProviderRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xbc\x02\n" + + "\x17GetOIDCProviderResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + + "\bendpoint\x18\x03 \x01(\tR\bendpoint\x12\x1a\n" + + "\bloginURL\x18\x04 \x01(\tR\bloginURL\x12,\n" + + "\x11signInRedirectURL\x18\x05 \x01(\tR\x11signInRedirectURL\x12.\n" + + "\x12signOutRedirectURL\x18\x06 \x01(\tR\x12signOutRedirectURL\x12;\n" + + "\amappers\x18\a \x03(\v2!.wg.cosmo.platform.v1.GroupMapperR\amappers\"+\n" + + "\x19DeleteOIDCProviderRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"X\n" + + "\x1aDeleteOIDCProviderResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"f\n" + + "\x17UpdateIDPMappersRequest\x12;\n" + + "\amappers\x18\x01 \x03(\v2!.wg.cosmo.platform.v1.GroupMapperR\amappers\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\"V\n" + + "\x18UpdateIDPMappersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"%\n" + + "#GetOrganizationRequestsCountRequest\"x\n" + + "$GetOrganizationRequestsCountResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count\"\xd8\x01\n" + + "\x12OrganizationInvite\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04slug\x18\x03 \x01(\tR\x04slug\x12)\n" + + "\rcreatorUserId\x18\x04 \x01(\tH\x00R\rcreatorUserId\x88\x01\x01\x12\x1c\n" + + "\tcreatedAt\x18\x05 \x01(\tR\tcreatedAt\x12!\n" + + "\tinvitedBy\x18\x06 \x01(\tH\x01R\tinvitedBy\x88\x01\x01B\x10\n" + + "\x0e_creatorUserIdB\f\n" + + "\n" + + "_invitedBy\"{\n" + + "\x13GetAuditLogsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x1c\n" + + "\tstartDate\x18\x03 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x04 \x01(\tR\aendDate\"\xcc\x03\n" + + "\bAuditLog\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + + "\x10actorDisplayName\x18\x02 \x01(\tR\x10actorDisplayName\x12\x16\n" + + "\x06action\x18\x03 \x01(\tR\x06action\x12\x1c\n" + + "\tactorType\x18\x04 \x01(\tR\tactorType\x12 \n" + + "\vauditAction\x18\x05 \x01(\tR\vauditAction\x122\n" + + "\x14auditableDisplayName\x18\x06 \x01(\tR\x14auditableDisplayName\x12,\n" + + "\x11targetDisplayName\x18\a \x01(\tR\x11targetDisplayName\x12\x1e\n" + + "\n" + + "targetType\x18\b \x01(\tR\n" + + "targetType\x12\x1c\n" + + "\tcreatedAt\x18\t \x01(\tR\tcreatedAt\x12,\n" + + "\x11targetNamespaceId\x18\n" + + " \x01(\tR\x11targetNamespaceId\x12>\n" + + "\x1atargetNamespaceDisplayName\x18\v \x01(\tR\x1atargetNamespaceDisplayName\x12\x1e\n" + + "\n" + + "apiKeyName\x18\f \x01(\tR\n" + + "apiKeyName\"\x9c\x01\n" + + "\x14GetAuditLogsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x122\n" + + "\x04logs\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.AuditLogR\x04logs\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"\x17\n" + + "\x15GetInvitationsRequest\"\xa0\x01\n" + + "\x16GetInvitationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12J\n" + + "\vinvitations\x18\x02 \x03(\v2(.wg.cosmo.platform.v1.OrganizationInviteR\vinvitations\"b\n" + + " AcceptOrDeclineInvitationRequest\x12&\n" + + "\x0eorganizationId\x18\x01 \x01(\tR\x0eorganizationId\x12\x16\n" + + "\x06accept\x18\x02 \x01(\bR\x06accept\"_\n" + + "!AcceptOrDeclineInvitationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xd9\x06\n" + + "\x10GraphComposition\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12(\n" + + "\x0fschemaVersionId\x18\x02 \x01(\tR\x0fschemaVersionId\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x12\"\n" + + "\fisComposable\x18\x04 \x01(\bR\fisComposable\x121\n" + + "\x11compositionErrors\x18\x05 \x01(\tH\x00R\x11compositionErrors\x88\x01\x01\x12!\n" + + "\tcreatedBy\x18\x06 \x01(\tH\x01R\tcreatedBy\x88\x01\x01\x12$\n" + + "\risLatestValid\x18\a \x01(\bR\risLatestValid\x129\n" + + "\x15routerConfigSignature\x18\b \x01(\tH\x02R\x15routerConfigSignature\x88\x01\x01\x12+\n" + + "\x0eadmissionError\x18\t \x01(\tH\x03R\x0eadmissionError\x88\x01\x01\x12-\n" + + "\x0fdeploymentError\x18\n" + + " \x01(\tH\x04R\x0fdeploymentError\x88\x01\x01\x12E\n" + + "\x1bhasMultipleChangedSubgraphs\x18\v \x01(\bH\x05R\x1bhasMultipleChangedSubgraphs\x88\x01\x01\x12=\n" + + "\x17triggeredBySubgraphName\x18\f \x01(\tH\x06R\x17triggeredBySubgraphName\x88\x01\x01\x125\n" + + "\x13compositionWarnings\x18\r \x01(\tH\aR\x13compositionWarnings\x88\x01\x01\x12@\n" + + "\x1crouter_compatibility_version\x18\x0e \x01(\tR\x1arouterCompatibilityVersionB\x14\n" + + "\x12_compositionErrorsB\f\n" + + "\n" + + "_createdByB\x18\n" + + "\x16_routerConfigSignatureB\x11\n" + + "\x0f_admissionErrorB\x12\n" + + "\x10_deploymentErrorB\x1e\n" + + "\x1c_hasMultipleChangedSubgraphsB\x1a\n" + + "\x18_triggeredBySubgraphNameB\x16\n" + + "\x14_compositionWarnings\"\x9b\x02\n" + + "\x18GraphCompositionSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12(\n" + + "\x0fschemaVersionId\x18\x02 \x01(\tR\x0fschemaVersionId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x1b\n" + + "\ttarget_id\x18\x04 \x01(\tR\btargetId\x12,\n" + + "\x11isFeatureSubgraph\x18\x05 \x01(\bR\x11isFeatureSubgraph\x12\x1e\n" + + "\n" + + "changeType\x18\x06 \x01(\tR\n" + + "changeType\x12F\n" + + "\fsubgraphType\x18\a \x01(\x0e2\".wg.cosmo.platform.v1.SubgraphTypeR\fsubgraphType\"\x88\x02\n" + + "\x16GetCompositionsRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x12\x1c\n" + + "\tstartDate\x18\x04 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x05 \x01(\tR\aendDate\x12\x1c\n" + + "\tnamespace\x18\x06 \x01(\tR\tnamespace\x12F\n" + + "\x1eexcludeFeatureFlagCompositions\x18\a \x01(\bR\x1eexcludeFeatureFlagCompositions\"\xb7\x01\n" + + "\x17GetCompositionsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12J\n" + + "\fcompositions\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.GraphCompositionR\fcompositions\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"b\n" + + "\x1cGetCompositionDetailsRequest\x12$\n" + + "\rcompositionId\x18\x01 \x01(\tR\rcompositionId\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xdf\x04\n" + + "\x16FeatureFlagComposition\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12(\n" + + "\x0fschemaVersionId\x18\x02 \x01(\tR\x0fschemaVersionId\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x12\"\n" + + "\fisComposable\x18\x04 \x01(\bR\fisComposable\x121\n" + + "\x11compositionErrors\x18\x05 \x01(\tH\x00R\x11compositionErrors\x88\x01\x01\x12!\n" + + "\tcreatedBy\x18\x06 \x01(\tH\x01R\tcreatedBy\x88\x01\x01\x129\n" + + "\x15routerConfigSignature\x18\a \x01(\tH\x02R\x15routerConfigSignature\x88\x01\x01\x12+\n" + + "\x0eadmissionError\x18\b \x01(\tH\x03R\x0eadmissionError\x88\x01\x01\x12-\n" + + "\x0fdeploymentError\x18\t \x01(\tH\x04R\x0fdeploymentError\x88\x01\x01\x12(\n" + + "\x0ffeatureFlagName\x18\n" + + " \x01(\tR\x0ffeatureFlagName\x125\n" + + "\x13compositionWarnings\x18\v \x01(\tH\x05R\x13compositionWarnings\x88\x01\x01B\x14\n" + + "\x12_compositionErrorsB\f\n" + + "\n" + + "_createdByB\x18\n" + + "\x16_routerConfigSignatureB\x11\n" + + "\x0f_admissionErrorB\x12\n" + + "\x10_deploymentErrorB\x16\n" + + "\x14_compositionWarnings\"\xb9\x03\n" + + "\x1dGetCompositionDetailsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\vcomposition\x18\x02 \x01(\v2&.wg.cosmo.platform.v1.GraphCompositionR\vcomposition\x12b\n" + + "\x14compositionSubgraphs\x18\x03 \x03(\v2..wg.cosmo.platform.v1.GraphCompositionSubgraphR\x14compositionSubgraphs\x12F\n" + + "\fchangeCounts\x18\x04 \x01(\v2\".wg.cosmo.platform.v1.ChangeCountsR\fchangeCounts\x12f\n" + + "\x17featureFlagCompositions\x18\x05 \x03(\v2,.wg.cosmo.platform.v1.FeatureFlagCompositionR\x17featureFlagCompositions\"e\n" + + "\x1cGetSdlBySchemaVersionRequest\x12(\n" + + "\x0fschemaVersionId\x18\x01 \x01(\tR\x0fschemaVersionId\x12\x1b\n" + + "\ttarget_id\x18\x02 \x01(\tR\btargetId\"\x92\x01\n" + + "\x1dGetSdlBySchemaVersionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x10\n" + + "\x03sdl\x18\x02 \x01(\tR\x03sdl\x12#\n" + + "\rclient_schema\x18\x03 \x01(\tR\fclientSchema\"N\n" + + "\"GetChangelogBySchemaVersionRequest\x12(\n" + + "\x0fschemaVersionId\x18\x01 \x01(\tR\x0fschemaVersionId\"\xb4\x01\n" + + "#GetChangelogBySchemaVersionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12Q\n" + + "\tchangelog\x18\x02 \x01(\v23.wg.cosmo.platform.v1.FederatedGraphChangelogOutputR\tchangelog\"#\n" + + "!GetUserAccessibleResourcesRequest\"\xb0\x05\n" + + "\"GetUserAccessibleResourcesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12b\n" + + "\n" + + "namespaces\x18\x02 \x03(\v2B.wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.NamespaceR\n" + + "namespaces\x12q\n" + + "\x0ffederatedGraphs\x18\x03 \x03(\v2G.wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraphR\x0ffederatedGraphs\x12_\n" + + "\tsubgraphs\x18\x04 \x03(\v2A.wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraphR\tsubgraphs\x1a/\n" + + "\tNamespace\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x1a^\n" + + "\x0eFederatedGraph\x12\x1a\n" + + "\btargetId\x18\x01 \x01(\tR\btargetId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x1a\x84\x01\n" + + "\bSubGraph\x12\x1a\n" + + "\btargetId\x18\x01 \x01(\tR\btargetId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12*\n" + + "\x10federatedGraphId\x18\x04 \x01(\tR\x10federatedGraphId\"s\n" + + "\x1cUpdateFeatureSettingsRequest\x12\x16\n" + + "\x06enable\x18\x01 \x01(\bR\x06enable\x12;\n" + + "\tfeatureId\x18\x02 \x01(\x0e2\x1d.wg.cosmo.platform.v1.FeatureR\tfeatureId\"[\n" + + "\x1dUpdateFeatureSettingsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"]\n" + + "\x19GetSubgraphMembersRequest\x12\"\n" + + "\fsubgraphName\x18\x01 \x01(\tR\fsubgraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"j\n" + + "\x0eSubgraphMember\x12\x16\n" + + "\x06userId\x18\x01 \x01(\tR\x06userId\x12\x14\n" + + "\x05email\x18\x02 \x01(\tR\x05email\x12*\n" + + "\x10subgraphMemberId\x18\x04 \x01(\tR\x10subgraphMemberId\"\x98\x01\n" + + "\x1aGetSubgraphMembersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12>\n" + + "\amembers\x18\x02 \x03(\v2$.wg.cosmo.platform.v1.SubgraphMemberR\amembers\"h\n" + + "\x10AddReadmeRequest\x12\x1e\n" + + "\n" + + "targetName\x18\x01 \x01(\tR\n" + + "targetName\x12\x16\n" + + "\x06readme\x18\x02 \x01(\tR\x06readme\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"O\n" + + "\x11AddReadmeResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xce\x04\n" + + "\x06Router\x12\x1a\n" + + "\bhostname\x18\x01 \x01(\tR\bhostname\x12 \n" + + "\vclusterName\x18\x02 \x01(\tR\vclusterName\x12 \n" + + "\vserviceName\x18\x03 \x01(\tR\vserviceName\x12&\n" + + "\x0eserviceVersion\x18\x04 \x01(\tR\x0eserviceVersion\x12,\n" + + "\x11serviceInstanceId\x18\x05 \x01(\tR\x11serviceInstanceId\x12$\n" + + "\ruptimeSeconds\x18\x06 \x01(\tR\ruptimeSeconds\x120\n" + + "\x13serverUptimeSeconds\x18\a \x01(\tR\x13serverUptimeSeconds\x12$\n" + + "\rcompositionId\x18\b \x01(\tR\rcompositionId\x120\n" + + "\x13onLatestComposition\x18\t \x01(\bR\x13onLatestComposition\x12\x1c\n" + + "\tprocessId\x18\n" + + " \x01(\tR\tprocessId\x12$\n" + + "\rmemoryUsageMb\x18\v \x01(\x02R\rmemoryUsageMb\x12:\n" + + "\x18memoryUsageChangePercent\x18\f \x01(\x02R\x18memoryUsageChangePercent\x12(\n" + + "\x0fcpuUsagePercent\x18\r \x01(\x02R\x0fcpuUsagePercent\x124\n" + + "\x15cpuUsageChangePercent\x18\x0e \x01(\x02R\x15cpuUsageChangePercent\"U\n" + + "\x11GetRoutersRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x88\x01\n" + + "\x12GetRoutersResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x126\n" + + "\arouters\x18\x02 \x03(\v2\x1c.wg.cosmo.platform.v1.RouterR\arouters\"\xb8\x01\n" + + "\n" + + "ClientInfo\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x12$\n" + + "\rlastUpdatedAt\x18\x04 \x01(\tR\rlastUpdatedAt\x12\x1c\n" + + "\tcreatedBy\x18\x05 \x01(\tR\tcreatedBy\x12$\n" + + "\rlastUpdatedBy\x18\x06 \x01(\tR\rlastUpdatedBy\"U\n" + + "\x11GetClientsRequest\x12\"\n" + + "\ffedGraphName\x18\x01 \x01(\tR\ffedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x8c\x01\n" + + "\x12GetClientsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12:\n" + + "\aclients\x18\x02 \x03(\v2 .wg.cosmo.platform.v1.ClientInfoR\aclients\"\xbe\x03\n" + + "\x14GetFieldUsageRequest\x12\x1d\n" + + "\n" + + "graph_name\x18\x01 \x01(\tR\tgraphName\x12!\n" + + "\tnamedType\x18\x02 \x01(\tH\x00R\tnamedType\x88\x01\x01\x12\x1f\n" + + "\btypename\x18\x03 \x01(\tH\x01R\btypename\x88\x01\x01\x12\x19\n" + + "\x05field\x18\x04 \x01(\tH\x02R\x05field\x88\x01\x01\x12\x19\n" + + "\x05range\x18\x05 \x01(\x05H\x03R\x05range\x88\x01\x01\x12=\n" + + "\tdateRange\x18\x06 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12\x1c\n" + + "\tnamespace\x18\a \x01(\tR\tnamespace\x12/\n" + + "\x11feature_flag_name\x18\b \x01(\tH\x04R\x0ffeatureFlagName\x88\x01\x01\x12\x1f\n" + + "\vis_argument\x18\t \x01(\bR\n" + + "isArgument\x12\x19\n" + + "\bis_input\x18\n" + + " \x01(\bR\aisInputB\f\n" + + "\n" + + "_namedTypeB\v\n" + + "\t_typenameB\b\n" + + "\x06_fieldB\b\n" + + "\x06_rangeB\x14\n" + + "\x12_feature_flag_name\"\xe5\x01\n" + + "\x14ClientWithOperations\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12T\n" + + "\n" + + "operations\x18\x03 \x03(\v24.wg.cosmo.platform.v1.ClientWithOperations.OperationR\n" + + "operations\x1aI\n" + + "\tOperation\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"\x95\x01\n" + + "\x0eFieldUsageMeta\x12!\n" + + "\fsubgraph_ids\x18\x01 \x03(\tR\vsubgraphIds\x12.\n" + + "\x12firstSeenTimestamp\x18\x02 \x01(\tR\x12firstSeenTimestamp\x120\n" + + "\x13latestSeenTimestamp\x18\x03 \x01(\tR\x13latestSeenTimestamp\"\xa3\x02\n" + + "\x15GetFieldUsageResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12N\n" + + "\x0erequest_series\x18\x02 \x03(\v2'.wg.cosmo.platform.v1.RequestSeriesItemR\rrequestSeries\x12D\n" + + "\aclients\x18\x03 \x03(\v2*.wg.cosmo.platform.v1.ClientWithOperationsR\aclients\x128\n" + + "\x04meta\x18\x04 \x01(\v2$.wg.cosmo.platform.v1.FieldUsageMetaR\x04meta\",\n" + + "\x16CreateNamespaceRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"U\n" + + "\x17CreateNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\",\n" + + "\x16DeleteNamespaceRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"U\n" + + "\x17DeleteNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"G\n" + + "\x16RenameNamespaceRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x19\n" + + "\bnew_name\x18\x02 \x01(\tR\anewName\"U\n" + + "\x17RenameNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"/\n" + + "\tNamespace\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\x16\n" + + "\x14GetNamespacesRequest\"\x94\x01\n" + + "\x15GetNamespacesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12?\n" + + "\n" + + "namespaces\x18\x02 \x03(\v2\x1f.wg.cosmo.platform.v1.NamespaceR\n" + + "namespaces\"\xdd\x01\n" + + "\x10MoveGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12#\n" + + "\rnew_namespace\x18\x03 \x01(\tR\fnewNamespace\x12M\n" + + " disable_resolvability_validation\x18\x04 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xd4\x02\n" + + "\x11MoveGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"=\n" + + "\x1dGetNamespaceLintConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\xbe\x01\n" + + "\x1eGetNamespaceLintConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12$\n" + + "\rlinterEnabled\x18\x02 \x01(\bR\rlinterEnabled\x12:\n" + + "\aconfigs\x18\x03 \x03(\v2 .wg.cosmo.platform.v1.LintConfigR\aconfigs\"F\n" + + "&GetNamespaceChecksConfigurationRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\xc3\x01\n" + + "'GetNamespaceChecksConfigurationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12(\n" + + "\x0ftimeframeInDays\x18\x02 \x01(\x05R\x0ftimeframeInDays\x122\n" + + "\x14timeframeLimitInDays\x18\x03 \x01(\x05R\x14timeframeLimitInDays\"s\n" + + ")UpdateNamespaceChecksConfigurationRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12(\n" + + "\x0ftimeframeInDays\x18\x02 \x01(\x05R\x0ftimeframeInDays\"h\n" + + "*UpdateNamespaceChecksConfigurationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"i\n" + + "#EnableLintingForTheNamespaceRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12$\n" + + "\renableLinting\x18\x02 \x01(\bR\renableLinting\"b\n" + + "$EnableLintingForTheNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"r\n" + + "\n" + + "LintConfig\x12\x1a\n" + + "\bruleName\x18\x01 \x01(\tR\bruleName\x12H\n" + + "\rseverityLevel\x18\x02 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\rseverityLevel\"\x7f\n" + + "#ConfigureNamespaceLintConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12:\n" + + "\aconfigs\x18\x02 \x03(\v2 .wg.cosmo.platform.v1.LintConfigR\aconfigs\"b\n" + + "$ConfigureNamespaceLintConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"i\n" + + "\x19EnableGraphPruningRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12.\n" + + "\x12enableGraphPruning\x18\x02 \x01(\bR\x12enableGraphPruning\"X\n" + + "\x1aEnableGraphPruningResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x92\x02\n" + + "\x12GraphPruningConfig\x12\x1a\n" + + "\bruleName\x18\x01 \x01(\tR\bruleName\x12H\n" + + "\rseverityLevel\x18\x02 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\rseverityLevel\x12,\n" + + "\x11gracePeriodInDays\x18\x03 \x01(\x05R\x11gracePeriodInDays\x12G\n" + + "\x1cschemaUsageCheckPeriodInDays\x18\x04 \x01(\x05H\x00R\x1cschemaUsageCheckPeriodInDays\x88\x01\x01B\x1f\n" + + "\x1d_schemaUsageCheckPeriodInDays\"\x8f\x01\n" + + "+ConfigureNamespaceGraphPruningConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12B\n" + + "\aconfigs\x18\x02 \x03(\v2(.wg.cosmo.platform.v1.GraphPruningConfigR\aconfigs\"j\n" + + ",ConfigureNamespaceGraphPruningConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"E\n" + + "%GetNamespaceGraphPruningConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\xd8\x01\n" + + "&GetNamespaceGraphPruningConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12.\n" + + "\x12graphPrunerEnabled\x18\x02 \x01(\bR\x12graphPrunerEnabled\x12B\n" + + "\aconfigs\x18\x03 \x03(\v2(.wg.cosmo.platform.v1.GraphPruningConfigR\aconfigs\"K\n" + + "\x17MigrateMonographRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"V\n" + + "\x18MigrateMonographResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"%\n" + + "#GetUserAccessiblePermissionsRequest\"D\n" + + "\n" + + "Permission\x12 \n" + + "\vdisplayName\x18\x01 \x01(\tR\vdisplayName\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"\xa6\x01\n" + + "$GetUserAccessiblePermissionsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12B\n" + + "\vpermissions\x18\x02 \x03(\v2 .wg.cosmo.platform.v1.PermissionR\vpermissions\"\x88\x04\n" + + "\x15CreateContractRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12*\n" + + "\x11source_graph_name\x18\x03 \x01(\tR\x0fsourceGraphName\x12\x1f\n" + + "\vrouting_url\x18\x04 \x01(\tR\n" + + "routingUrl\x122\n" + + "\x15admission_webhook_url\x18\x05 \x01(\tR\x13admissionWebhookUrl\x12!\n" + + "\fexclude_tags\x18\x06 \x03(\tR\vexcludeTags\x12\x1b\n" + + "\x06readme\x18\a \x01(\tH\x00R\x06readme\x88\x01\x01\x12=\n" + + "\x18admission_webhook_secret\x18\b \x01(\tH\x01R\x16admissionWebhookSecret\x88\x01\x01\x12!\n" + + "\finclude_tags\x18\t \x03(\tR\vincludeTags\x12M\n" + + " disable_resolvability_validation\x18\n" + + " \x01(\bH\x02R\x1edisableResolvabilityValidation\x88\x01\x01B\t\n" + + "\a_readmeB\x1b\n" + + "\x19_admission_webhook_secretB#\n" + + "!_disable_resolvability_validation\"\xd9\x02\n" + + "\x16CreateContractResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\x90\x04\n" + + "\x15UpdateContractRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12!\n" + + "\fexclude_tags\x18\x03 \x03(\tR\vexcludeTags\x12!\n" + + "\finclude_tags\x18\x04 \x03(\tR\vincludeTags\x12$\n" + + "\vrouting_url\x18\x05 \x01(\tH\x00R\n" + + "routingUrl\x88\x01\x01\x127\n" + + "\x15admission_webhook_url\x18\x06 \x01(\tH\x01R\x13admissionWebhookUrl\x88\x01\x01\x12=\n" + + "\x18admission_webhook_secret\x18\a \x01(\tH\x02R\x16admissionWebhookSecret\x88\x01\x01\x12\x1b\n" + + "\x06readme\x18\b \x01(\tH\x03R\x06readme\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\t \x01(\bH\x04R\x1edisableResolvabilityValidation\x88\x01\x01B\x0e\n" + + "\f_routing_urlB\x18\n" + + "\x16_admission_webhook_urlB\x1b\n" + + "\x19_admission_webhook_secretB\t\n" + + "\a_readmeB#\n" + + "!_disable_resolvability_validation\"\xd9\x02\n" + + "\x16UpdateContractResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\x1d\n" + + "\x1bIsMemberLimitReachedRequest\"\xa2\x01\n" + + "\x1cIsMemberLimitReachedResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12#\n" + + "\rlimit_reached\x18\x02 \x01(\bR\flimitReached\x12!\n" + + "\fmember_count\x18\x03 \x01(\x05R\vmemberCount\"\x13\n" + + "\x11DeleteUserRequest\"P\n" + + "\x12DeleteUserResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xca\x02\n" + + "\x18CreateFeatureFlagRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x123\n" + + "\x06labels\x18\x03 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x124\n" + + "\x16feature_subgraph_names\x18\x04 \x03(\tR\x14featureSubgraphNames\x12\x1d\n" + + "\n" + + "is_enabled\x18\x05 \x01(\bR\tisEnabled\x12M\n" + + " disable_resolvability_validation\x18\x06 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xde\x02\n" + + "\x19CreateFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12U\n" + + "\x12composition_errors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12R\n" + + "\x11deployment_errors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\xce\x02\n" + + "\x18UpdateFeatureFlagRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x123\n" + + "\x06labels\x18\x03 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x124\n" + + "\x16feature_subgraph_names\x18\x04 \x03(\tR\x14featureSubgraphNames\x12!\n" + + "\funset_labels\x18\x05 \x01(\bR\vunsetLabels\x12M\n" + + " disable_resolvability_validation\x18\x06 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xde\x02\n" + + "\x19UpdateFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12U\n" + + "\x12composition_errors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12R\n" + + "\x11deployment_errors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\xda\x01\n" + + "\x18EnableFeatureFlagRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x18\n" + + "\aenabled\x18\x03 \x01(\bR\aenabled\x12M\n" + + " disable_resolvability_validation\x18\x04 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\x94\x03\n" + + "\x19EnableFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12U\n" + + "\x12composition_errors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12R\n" + + "\x11deployment_errors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12$\n" + + "\vhas_changed\x18\x04 \x01(\bH\x00R\n" + + "hasChanged\x88\x01\x01\x12Z\n" + + "\x13compositionWarnings\x18\x05 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarningsB\x0e\n" + + "\f_has_changed\"\xc0\x01\n" + + "\x18DeleteFeatureFlagRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12M\n" + + " disable_resolvability_validation\x18\x03 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xde\x02\n" + + "\x19DeleteFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12U\n" + + "\x12composition_errors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12R\n" + + "\x11deployment_errors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\x80\x02\n" + + "\vFeatureFlag\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x123\n" + + "\x06labels\x18\x04 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\x12\x1d\n" + + "\n" + + "is_enabled\x18\x05 \x01(\bR\tisEnabled\x12\x1d\n" + + "\n" + + "created_by\x18\x06 \x01(\tR\tcreatedBy\x12\x1d\n" + + "\n" + + "created_at\x18\a \x01(\tR\tcreatedAt\x12\x1d\n" + + "\n" + + "updated_at\x18\b \x01(\tR\tupdatedAt\"\x89\x01\n" + + "\x16GetFeatureFlagsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x19\n" + + "\x05query\x18\x04 \x01(\tH\x00R\x05query\x88\x01\x01B\b\n" + + "\x06_query\"\xbe\x01\n" + + "\x17GetFeatureFlagsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12F\n" + + "\rfeature_flags\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.FeatureFlagR\ffeatureFlags\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"O\n" + + "\x1bGetFeatureFlagByNameRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xe4\x03\n" + + "\x1cGetFeatureFlagByNameResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12D\n" + + "\ffeature_flag\x18\x02 \x01(\v2!.wg.cosmo.platform.v1.FeatureFlagR\vfeatureFlag\x12n\n" + + "\x10federated_graphs\x18\x03 \x03(\v2C.wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraphR\x0ffederatedGraphs\x12K\n" + + "\x11feature_subgraphs\x18\x04 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x10featureSubgraphs\x1a\x84\x01\n" + + "\x10FfFederatedGraph\x12M\n" + + "\x0ffederated_graph\x18\x01 \x01(\v2$.wg.cosmo.platform.v1.FederatedGraphR\x0efederatedGraph\x12!\n" + + "\fis_connected\x18\x02 \x01(\bR\visConnected\"s\n" + + "'GetFeatureSubgraphsByFeatureFlagRequest\x12*\n" + + "\x11feature_flag_name\x18\x01 \x01(\tR\x0ffeatureFlagName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xb3\x01\n" + + "(GetFeatureSubgraphsByFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12K\n" + + "\x11feature_subgraphs\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x10featureSubgraphs\"\x8d\x01\n" + + "\x1aGetFeatureSubgraphsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\x12\x19\n" + + "\x05query\x18\x04 \x01(\tH\x00R\x05query\x88\x01\x01B\b\n" + + "\x06_query\"\xbc\x01\n" + + "\x1bGetFeatureSubgraphsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12K\n" + + "\x11feature_subgraphs\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x10featureSubgraphs\x12\x14\n" + + "\x05count\x18\x03 \x01(\x05R\x05count\"\xcb\x01\n" + + "&GetFeatureFlagsByFederatedGraphRequest\x120\n" + + "\x14federated_graph_name\x18\x01 \x01(\tR\x12federatedGraphName\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\x12\x19\n" + + "\x05query\x18\x05 \x01(\tH\x00R\x05query\x88\x01\x01B\b\n" + + "\x06_query\"\xce\x01\n" + + "'GetFeatureFlagsByFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12F\n" + + "\rfeature_flags\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.FeatureFlagR\ffeatureFlags\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"\x8b\x01\n" + + "9GetFeatureFlagsInLatestCompositionByFederatedGraphRequest\x120\n" + + "\x14federated_graph_name\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xc0\x01\n" + + ":GetFeatureFlagsInLatestCompositionByFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12F\n" + + "\rfeature_flags\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.FeatureFlagR\ffeatureFlags\"\xcf\x01\n" + + "*GetFeatureSubgraphsByFederatedGraphRequest\x120\n" + + "\x14federated_graph_name\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\x12\x19\n" + + "\x05query\x18\x05 \x01(\tH\x00R\x05query\x88\x01\x01B\b\n" + + "\x06_query\"\xd7\x01\n" + + "+GetFeatureSubgraphsByFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12K\n" + + "\x11feature_subgraphs\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x10featureSubgraphs\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\"\xe6\x01\n" + + "$GetOrganizationWebhookHistoryRequest\x12@\n" + + "\n" + + "pagination\x18\x01 \x01(\v2 .wg.cosmo.platform.v1.PaginationR\n" + + "pagination\x12>\n" + + "\n" + + "date_range\x18\x02 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeR\tdateRange\x12)\n" + + "\x0efilter_by_type\x18\x03 \x01(\tH\x00R\ffilterByType\x88\x01\x01B\x11\n" + + "\x0f_filter_by_type\"\xc1\x05\n" + + "\x0fWebhookDelivery\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + + "\n" + + "created_at\x18\x02 \x01(\tR\tcreatedAt\x12\"\n" + + "\n" + + "created_by\x18\x03 \x01(\tH\x00R\tcreatedBy\x88\x01\x01\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12\x1a\n" + + "\bendpoint\x18\x05 \x01(\tR\bendpoint\x12\x1d\n" + + "\n" + + "event_name\x18\x06 \x01(\tR\teventName\x12\x18\n" + + "\apayload\x18\a \x01(\tR\apayload\x12'\n" + + "\x0frequest_headers\x18\b \x01(\tR\x0erequestHeaders\x12.\n" + + "\x10response_headers\x18\t \x01(\tH\x01R\x0fresponseHeaders\x88\x01\x01\x125\n" + + "\x14response_status_code\x18\n" + + " \x01(\x05H\x02R\x12responseStatusCode\x88\x01\x01\x123\n" + + "\x13response_error_code\x18\v \x01(\tH\x03R\x11responseErrorCode\x88\x01\x01\x12(\n" + + "\rerror_message\x18\f \x01(\tH\x04R\ferrorMessage\x88\x01\x01\x12(\n" + + "\rresponse_body\x18\r \x01(\tH\x05R\fresponseBody\x88\x01\x01\x12\x1f\n" + + "\vretry_count\x18\x0e \x01(\x05R\n" + + "retryCount\x12\x1a\n" + + "\bduration\x18\x0f \x01(\x02R\bduration\x12#\n" + + "\ris_redelivery\x18\x10 \x01(\bR\fisRedeliveryB\r\n" + + "\v_created_byB\x13\n" + + "\x11_response_headersB\x17\n" + + "\x15_response_status_codeB\x16\n" + + "\x14_response_error_codeB\x10\n" + + "\x0e_error_messageB\x10\n" + + "\x0e_response_body\"\xcb\x01\n" + + "%GetOrganizationWebhookHistoryResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12E\n" + + "\n" + + "deliveries\x18\x02 \x03(\v2%.wg.cosmo.platform.v1.WebhookDeliveryR\n" + + "deliveries\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\")\n" + + "\x17RedeliverWebhookRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"V\n" + + "\x18RedeliverWebhookResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"2\n" + + " GetWebhookDeliveryDetailsRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xa2\x01\n" + + "!GetWebhookDeliveryDetailsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12A\n" + + "\bdelivery\x18\x02 \x01(\v2%.wg.cosmo.platform.v1.WebhookDeliveryR\bdelivery\"c\n" + + "\x1dCreatePlaygroundScriptRequest\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12\x12\n" + + "\x04type\x18\x02 \x01(\tR\x04type\x12\x18\n" + + "\acontent\x18\x03 \x01(\tR\acontent\"\\\n" + + "\x1eCreatePlaygroundScriptResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"/\n" + + "\x1dDeletePlaygroundScriptRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\\\n" + + "\x1eDeletePlaygroundScriptResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"_\n" + + "\x1dUpdatePlaygroundScriptRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" + + "\acontent\x18\x03 \x01(\tR\acontent\"\\\n" + + "\x1eUpdatePlaygroundScriptResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"1\n" + + "\x1bGetPlaygroundScriptsRequest\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\"f\n" + + "\x10PlaygroundScript\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04type\x18\x02 \x01(\tR\x04type\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12\x18\n" + + "\acontent\x18\x04 \x01(\tR\acontent\"\x9c\x01\n" + + "\x1cGetPlaygroundScriptsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12@\n" + + "\ascripts\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.PlaygroundScriptR\ascripts\"V\n" + + "\x1cGetFederatedGraphByIdRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12&\n" + + "\x0eincludeMetrics\x18\x02 \x01(\bR\x0eincludeMetrics\"\xc6\x03\n" + + "\x1dGetFederatedGraphByIdResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12:\n" + + "\x05graph\x18\x02 \x01(\v2$.wg.cosmo.platform.v1.FederatedGraphR\x05graph\x12<\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\tsubgraphs\x12,\n" + + "\x11graphRequestToken\x18\x04 \x01(\tR\x11graphRequestToken\x12u\n" + + "$featureFlagsInLatestValidComposition\x18\x05 \x03(\v2!.wg.cosmo.platform.v1.FeatureFlagR$featureFlagsInLatestValidComposition\x12J\n" + + "\x10featureSubgraphs\x18\x06 \x03(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x10featureSubgraphs\"(\n" + + "\x16GetSubgraphByIdRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xcb\x01\n" + + "\x17GetSubgraphByIdResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x124\n" + + "\x05graph\x18\x02 \x01(\v2\x1e.wg.cosmo.platform.v1.SubgraphR\x05graph\x12>\n" + + "\amembers\x18\x03 \x03(\v2$.wg.cosmo.platform.v1.SubgraphMemberR\amembers\"9\n" + + "\x13GetNamespaceRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\"\x91\x01\n" + + "\x14GetNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12=\n" + + "\tnamespace\x18\x02 \x01(\v2\x1f.wg.cosmo.platform.v1.NamespaceR\tnamespace\"\x7f\n" + + "\x12WorkspaceNamespace\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12E\n" + + "\x06graphs\x18\x03 \x03(\v2-.wg.cosmo.platform.v1.WorkspaceFederatedGraphR\x06graphs\"\xc0\x01\n" + + "\x17WorkspaceFederatedGraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\btargetId\x18\x02 \x01(\tR\btargetId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x1e\n" + + "\n" + + "isContract\x18\x04 \x01(\bR\n" + + "isContract\x12E\n" + + "\tsubgraphs\x18\x05 \x03(\v2'.wg.cosmo.platform.v1.WorkspaceSubgraphR\tsubgraphs\"S\n" + + "\x11WorkspaceSubgraph\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\btargetId\x18\x02 \x01(\tR\btargetId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\"\x15\n" + + "\x13GetWorkspaceRequest\"\x9c\x01\n" + + "\x14GetWorkspaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12H\n" + + "\n" + + "namespaces\x18\x02 \x03(\v2(.wg.cosmo.platform.v1.WorkspaceNamespaceR\n" + + "namespaces\"\xf5\x01\n" + + "\x1fPushCacheWarmerOperationRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12*\n" + + "\x10operationContent\x18\x02 \x01(\tR\x10operationContent\x12$\n" + + "\roperationName\x18\x03 \x01(\tR\roperationName\x122\n" + + "\x14operationPersistedId\x18\x04 \x01(\tR\x14operationPersistedId\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\"^\n" + + " PushCacheWarmerOperationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x9d\x01\n" + + "\x1fGetCacheWarmerOperationsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\"\xa2\x03\n" + + "\x14CacheWarmerOperation\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + + "\x10operationContent\x18\x02 \x01(\tR\x10operationContent\x12$\n" + + "\roperationName\x18\x03 \x01(\tR\roperationName\x122\n" + + "\x14operationPersistedId\x18\x04 \x01(\tR\x14operationPersistedId\x12$\n" + + "\roperationHash\x18\x05 \x01(\tR\roperationHash\x12\x1e\n" + + "\n" + + "clientName\x18\x06 \x01(\tR\n" + + "clientName\x12$\n" + + "\rclientVersion\x18\a \x01(\tR\rclientVersion\x12\"\n" + + "\fplanningTime\x18\b \x01(\x02R\fplanningTime\x12(\n" + + "\x0fisManuallyAdded\x18\t \x01(\bR\x0fisManuallyAdded\x12\x1c\n" + + "\tcreatedAt\x18\n" + + " \x01(\tR\tcreatedAt\x12\x1c\n" + + "\tcreatedBy\x18\v \x01(\tR\tcreatedBy\"\xff\x01\n" + + " GetCacheWarmerOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12J\n" + + "\n" + + "operations\x18\x02 \x03(\v2*.wg.cosmo.platform.v1.CacheWarmerOperationR\n" + + "operations\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\x122\n" + + "\x14isCacheWarmerEnabled\x18\x04 \x01(\bR\x14isCacheWarmerEnabled\"s\n" + + "#ComputeCacheWarmerOperationsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"b\n" + + "$ComputeCacheWarmerOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x99\x01\n" + + "\x1bConfigureCacheWarmerRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12,\n" + + "\x11enableCacheWarmer\x18\x02 \x01(\bR\x11enableCacheWarmer\x12.\n" + + "\x12maxOperationsCount\x18\x03 \x01(\x05R\x12maxOperationsCount\"Z\n" + + "\x1cConfigureCacheWarmerResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\";\n" + + "\x1bGetCacheWarmerConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\xbe\x01\n" + + "\x1cGetCacheWarmerConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x122\n" + + "\x14isCacheWarmerEnabled\x18\x02 \x01(\bR\x14isCacheWarmerEnabled\x12.\n" + + "\x12maxOperationsCount\x18\x03 \x01(\x05R\x12maxOperationsCount\"G\n" + + "'GetSubgraphCheckExtensionsConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\x86\x05\n" + + "(GetSubgraphCheckExtensionsConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x124\n" + + "\x15isEnabledForNamespace\x18\x02 \x01(\bR\x15isEnabledForNamespace\x12B\n" + + "\x1cisLintingEnabledForNamespace\x18\x03 \x01(\bR\x1cisLintingEnabledForNamespace\x12L\n" + + "!isGraphPruningEnabledForNamespace\x18\x04 \x01(\bR!isGraphPruningEnabledForNamespace\x12\x1a\n" + + "\bendpoint\x18\x05 \x01(\tR\bendpoint\x120\n" + + "\x13isSecretKeyAssigned\x18\x06 \x01(\bR\x13isSecretKeyAssigned\x12.\n" + + "\x12includeComposedSdl\x18\a \x01(\bR\x12includeComposedSdl\x122\n" + + "\x14includeLintingIssues\x18\b \x01(\bR\x14includeLintingIssues\x122\n" + + "\x14includePruningIssues\x18\t \x01(\bR\x14includePruningIssues\x122\n" + + "\x14includeSchemaChanges\x18\n" + + " \x01(\bR\x14includeSchemaChanges\x12<\n" + + "\x19includeAffectedOperations\x18\v \x01(\bR\x19includeAffectedOperations\"\xe4\x03\n" + + "'ConfigureSubgraphCheckExtensionsRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12D\n" + + "\x1denableSubgraphCheckExtensions\x18\x02 \x01(\bR\x1denableSubgraphCheckExtensions\x12\x1a\n" + + "\bendpoint\x18\x03 \x01(\tR\bendpoint\x12!\n" + + "\tsecretKey\x18\x04 \x01(\tH\x00R\tsecretKey\x88\x01\x01\x12.\n" + + "\x12includeComposedSdl\x18\x05 \x01(\bR\x12includeComposedSdl\x122\n" + + "\x14includeLintingIssues\x18\x06 \x01(\bR\x14includeLintingIssues\x122\n" + + "\x14includePruningIssues\x18\a \x01(\bR\x14includePruningIssues\x122\n" + + "\x14includeSchemaChanges\x18\b \x01(\bR\x14includeSchemaChanges\x12<\n" + + "\x19includeAffectedOperations\x18\t \x01(\bR\x19includeAffectedOperationsB\f\n" + + "\n" + + "_secretKey\"f\n" + + "(ConfigureSubgraphCheckExtensionsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x81\x01\n" + + "!DeleteCacheWarmerOperationRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespace\"`\n" + + "\"DeleteCacheWarmerOperationResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"(\n" + + "&ListRouterCompatibilityVersionsRequest\"\x81\x01\n" + + "'ListRouterCompatibilityVersionsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1a\n" + + "\bversions\x18\x02 \x03(\tR\bversions\"\xeb\x01\n" + + ")SetGraphRouterCompatibilityVersionRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12M\n" + + " disable_resolvability_validation\x18\x04 \x01(\bH\x00R\x1edisableResolvabilityValidation\x88\x01\x01B#\n" + + "!_disable_resolvability_validation\"\xb9\x03\n" + + "*SetGraphRouterCompatibilityVersionResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12)\n" + + "\x10previous_version\x18\x02 \x01(\tR\x0fpreviousVersion\x12\x1f\n" + + "\vnew_version\x18\x03 \x01(\tR\n" + + "newVersion\x12T\n" + + "\x11compositionErrors\x18\x04 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x05 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x06 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\"\x93\x01\n" + + ")GetProposedSchemaOfCheckedSubgraphRequest\x12\x18\n" + + "\acheckId\x18\x01 \x01(\tR\acheckId\x12,\n" + + "\x11checkedSubgraphId\x18\x02 \x01(\tR\x11checkedSubgraphId\x12\x1e\n" + + "\n" + + "subgraphId\x18\x03 \x01(\tR\n" + + "subgraphId\"\x90\x01\n" + + "*GetProposedSchemaOfCheckedSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12&\n" + + "\x0eproposedSchema\x18\x02 \x01(\tR\x0eproposedSchema\"\xc0\x03\n" + + "\bProposal\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + + "\tcreatedAt\x18\x03 \x01(\tR\tcreatedAt\x12&\n" + + "\x0ecreatedByEmail\x18\x04 \x01(\tR\x0ecreatedByEmail\x12\x14\n" + + "\x05state\x18\x05 \x01(\tR\x05state\x12*\n" + + "\x10federatedGraphId\x18\x06 \x01(\tR\x10federatedGraphId\x12.\n" + + "\x12federatedGraphName\x18\a \x01(\tR\x12federatedGraphName\x12D\n" + + "\tsubgraphs\x18\b \x03(\v2&.wg.cosmo.platform.v1.ProposalSubgraphR\tsubgraphs\x12.\n" + + "\x12latestCheckSuccess\x18\t \x01(\bR\x12latestCheckSuccess\x12$\n" + + "\rlatestCheckId\x18\n" + + " \x01(\tR\rlatestCheckId\x12<\n" + + "\x06origin\x18\v \x01(\x0e2$.wg.cosmo.platform.v1.ProposalOriginR\x06origin\"\xad\x01\n" + + "\x10ProposalSubgraph\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tschemaSDL\x18\x02 \x01(\tR\tschemaSDL\x12\x1c\n" + + "\tisDeleted\x18\x03 \x01(\bR\tisDeleted\x12\x14\n" + + "\x05isNew\x18\x04 \x01(\bR\x05isNew\x123\n" + + "\x06labels\x18\x05 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\"\xd9\x02\n" + + "\x15CreateProposalRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12D\n" + + "\tsubgraphs\x18\x04 \x03(\v2&.wg.cosmo.platform.v1.ProposalSubgraphR\tsubgraphs\x12Z\n" + + "\x10namingConvention\x18\x05 \x01(\x0e2..wg.cosmo.platform.v1.ProposalNamingConventionR\x10namingConvention\x12<\n" + + "\x06origin\x18\x06 \x01(\x0e2$.wg.cosmo.platform.v1.ProposalOriginR\x06origin\"\xc9\v\n" + + "\x16CreateProposalResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1e\n" + + "\n" + + "proposalId\x18\x02 \x01(\tR\n" + + "proposalId\x12\x18\n" + + "\acheckId\x18\x03 \x01(\tR\acheckId\x12L\n" + + "\x0fbreakingChanges\x18\x04 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x0fbreakingChanges\x12R\n" + + "\x12nonBreakingChanges\x18\x05 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x12nonBreakingChanges\x12T\n" + + "\x11compositionErrors\x18\x06 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Z\n" + + "\x13compositionWarnings\x18\a \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12?\n" + + "\n" + + "lintErrors\x18\b \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\n" + + "lintErrors\x12C\n" + + "\flintWarnings\x18\t \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\flintWarnings\x12S\n" + + "\x10graphPruneErrors\x18\n" + + " \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x10graphPruneErrors\x12W\n" + + "\x12graphPruneWarnings\x18\v \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x12graphPruneWarnings\x12`\n" + + "\x13operationUsageStats\x18\f \x01(\v2..wg.cosmo.platform.v1.CheckOperationUsageStatsR\x13operationUsageStats\x12&\n" + + "\x0elintingSkipped\x18\r \x01(\bR\x0elintingSkipped\x120\n" + + "\x13graphPruningSkipped\x18\x0e \x01(\bR\x13graphPruningSkipped\x12\x1a\n" + + "\bcheckUrl\x18\x0f \x01(\tR\bcheckUrl\x12 \n" + + "\vproposalUrl\x18\x10 \x01(\tR\vproposalUrl\x12\"\n" + + "\fproposalName\x18\x11 \x01(\tR\fproposalName\x12C\n" + + "\x1aisLinkedTrafficCheckFailed\x18\x12 \x01(\bH\x00R\x1aisLinkedTrafficCheckFailed\x88\x01\x01\x12C\n" + + "\x1aisLinkedPruningCheckFailed\x18\x13 \x01(\bH\x01R\x1aisLinkedPruningCheckFailed\x88\x01\x01\x129\n" + + "\x15hasLinkedSchemaChecks\x18\x14 \x01(\bH\x02R\x15hasLinkedSchemaChecks\x88\x01\x01\x12v\n" + + "\x1dcomposedSchemaBreakingChanges\x18\x15 \x03(\v20.wg.cosmo.platform.v1.FederatedGraphSchemaChangeR\x1dcomposedSchemaBreakingChangesB\x1d\n" + + "\x1b_isLinkedTrafficCheckFailedB\x1d\n" + + "\x1b_isLinkedPruningCheckFailedB\x18\n" + + "\x16_hasLinkedSchemaChecks\"4\n" + + "\x12GetProposalRequest\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\"\xb9\x02\n" + + "\x13GetProposalResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12:\n" + + "\bproposal\x18\x02 \x01(\v2\x1e.wg.cosmo.platform.v1.ProposalR\bproposal\x12e\n" + + "\x10currentSubgraphs\x18\x03 \x03(\v29.wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraphR\x10currentSubgraphs\x1aC\n" + + "\x0fCurrentSubgraph\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tschemaSDL\x18\x02 \x01(\tR\tschemaSDL\"\xd9\x01\n" + + "#GetProposalsByFederatedGraphRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1c\n" + + "\tstartDate\x18\x03 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x04 \x01(\tR\aendDate\x12\x14\n" + + "\x05limit\x18\x05 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x06 \x01(\x05R\x06offset\"\xd0\x01\n" + + "$GetProposalsByFederatedGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12<\n" + + "\tproposals\x18\x02 \x03(\v2\x1e.wg.cosmo.platform.v1.ProposalR\tproposals\x12.\n" + + "\x12isProposalsEnabled\x18\x03 \x01(\bR\x12isProposalsEnabled\"\xa0\x01\n" + + "\x18GetProposalChecksRequest\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x12\x1c\n" + + "\tstartDate\x18\x04 \x01(\tR\tstartDate\x12\x18\n" + + "\aendDate\x18\x05 \x01(\tR\aendDate\"\xbe\x01\n" + + "\x19GetProposalChecksResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x129\n" + + "\x06checks\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.SchemaCheckR\x06checks\x12*\n" + + "\x10totalChecksCount\x18\x03 \x01(\x05R\x10totalChecksCount\"\x86\x03\n" + + "\x15UpdateProposalRequest\x12\"\n" + + "\fproposalName\x18\x01 \x01(\tR\fproposalName\x12.\n" + + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x16\n" + + "\x05state\x18\x03 \x01(\tH\x00R\x05state\x12q\n" + + "\x10updatedSubgraphs\x18\x04 \x01(\v2C.wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphsH\x00R\x10updatedSubgraphs\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x1a_\n" + + "\x17UpdateProposalSubgraphs\x12D\n" + + "\tsubgraphs\x18\x01 \x03(\v2&.wg.cosmo.platform.v1.ProposalSubgraphR\tsubgraphsB\x0f\n" + + "\rupdate_action\"\xe3\n" + + "\n" + + "\x16UpdateProposalResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x18\n" + + "\acheckId\x18\x02 \x01(\tR\acheckId\x12L\n" + + "\x0fbreakingChanges\x18\x03 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x0fbreakingChanges\x12R\n" + + "\x12nonBreakingChanges\x18\x04 \x03(\v2\".wg.cosmo.platform.v1.SchemaChangeR\x12nonBreakingChanges\x12T\n" + + "\x11compositionErrors\x18\x05 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Z\n" + + "\x13compositionWarnings\x18\x06 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12?\n" + + "\n" + + "lintErrors\x18\a \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\n" + + "lintErrors\x12C\n" + + "\flintWarnings\x18\b \x03(\v2\x1f.wg.cosmo.platform.v1.LintIssueR\flintWarnings\x12S\n" + + "\x10graphPruneErrors\x18\t \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x10graphPruneErrors\x12W\n" + + "\x12graphPruneWarnings\x18\n" + + " \x03(\v2'.wg.cosmo.platform.v1.GraphPruningIssueR\x12graphPruneWarnings\x12`\n" + + "\x13operationUsageStats\x18\v \x01(\v2..wg.cosmo.platform.v1.CheckOperationUsageStatsR\x13operationUsageStats\x12&\n" + + "\x0elintingSkipped\x18\f \x01(\bR\x0elintingSkipped\x120\n" + + "\x13graphPruningSkipped\x18\r \x01(\bR\x13graphPruningSkipped\x12\x1a\n" + + "\bcheckUrl\x18\x0e \x01(\tR\bcheckUrl\x12C\n" + + "\x1aisLinkedTrafficCheckFailed\x18\x0f \x01(\bH\x00R\x1aisLinkedTrafficCheckFailed\x88\x01\x01\x12C\n" + + "\x1aisLinkedPruningCheckFailed\x18\x10 \x01(\bH\x01R\x1aisLinkedPruningCheckFailed\x88\x01\x01\x129\n" + + "\x15hasLinkedSchemaChecks\x18\x11 \x01(\bH\x02R\x15hasLinkedSchemaChecks\x88\x01\x01\x12v\n" + + "\x1dcomposedSchemaBreakingChanges\x18\x12 \x03(\v20.wg.cosmo.platform.v1.FederatedGraphSchemaChangeR\x1dcomposedSchemaBreakingChangesB\x1d\n" + + "\x1b_isLinkedTrafficCheckFailedB\x1d\n" + + "\x1b_isLinkedPruningCheckFailedB\x18\n" + + "\x16_hasLinkedSchemaChecks\"l\n" + + "\"EnableProposalsForNamespaceRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12(\n" + + "\x0fenableProposals\x18\x02 \x01(\bR\x0fenableProposals\"a\n" + + "#EnableProposalsForNamespaceResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xf3\x01\n" + + "'ConfigureNamespaceProposalConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12R\n" + + "\x12checkSeverityLevel\x18\x02 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\x12checkSeverityLevel\x12V\n" + + "\x14publishSeverityLevel\x18\x03 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\x14publishSeverityLevel\"f\n" + + "(ConfigureNamespaceProposalConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"A\n" + + "!GetNamespaceProposalConfigRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\"\xa6\x02\n" + + "\"GetNamespaceProposalConfigResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x18\n" + + "\aenabled\x18\x02 \x01(\bR\aenabled\x12R\n" + + "\x12checkSeverityLevel\x18\x03 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\x12checkSeverityLevel\x12V\n" + + "\x14publishSeverityLevel\x18\x04 \x01(\x0e2\".wg.cosmo.platform.v1.LintSeverityR\x14publishSeverityLevel\"\x87\x02\n" + + "\x1bNamespaceLoginMethodMapping\x12!\n" + + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x127\n" + + "\x18allowed_sso_provider_ids\x18\x02 \x03(\tR\x15allowedSsoProviderIds\x120\n" + + "\x14allow_password_login\x18\x03 \x01(\bR\x12allowPasswordLogin\x12,\n" + + "\x12allow_google_login\x18\x04 \x01(\bR\x10allowGoogleLogin\x12,\n" + + "\x12allow_github_login\x18\x05 \x01(\bR\x10allowGithubLogin\"s\n" + + "\"UpdateNamespaceLoginMethodsRequest\x12M\n" + + "\bmappings\x18\x01 \x03(\v21.wg.cosmo.platform.v1.NamespaceLoginMethodMappingR\bmappings\"a\n" + + "#UpdateNamespaceLoginMethodsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\"\n" + + " ListNamespaceLoginMethodsRequest\"\xae\x01\n" + + "!ListNamespaceLoginMethodsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12M\n" + + "\bmappings\x18\x02 \x03(\v21.wg.cosmo.platform.v1.NamespaceLoginMethodMappingR\bmappings\"\x86\x02\n" + + "\x18OrganizationLoginMethods\x127\n" + + "\x18allowed_sso_provider_ids\x18\x01 \x03(\tR\x15allowedSsoProviderIds\x120\n" + + "\x14allow_password_login\x18\x02 \x01(\bR\x12allowPasswordLogin\x12,\n" + + "\x12allow_google_login\x18\x03 \x01(\bR\x10allowGoogleLogin\x12,\n" + + "\x12allow_github_login\x18\x04 \x01(\bR\x10allowGithubLogin\x12#\n" + + "\ris_restricted\x18\x05 \x01(\bR\fisRestricted\"$\n" + + "\"GetOrganizationLoginMethodsRequest\"\xb6\x01\n" + + "#GetOrganizationLoginMethodsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12S\n" + + "\rlogin_methods\x18\x02 \x01(\v2..wg.cosmo.platform.v1.OrganizationLoginMethodsR\floginMethods\"\xaa\x02\n" + + "%UpdateOrganizationLoginMethodsRequest\x127\n" + + "\x18allowed_sso_provider_ids\x18\x01 \x03(\tR\x15allowedSsoProviderIds\x120\n" + + "\x14allow_password_login\x18\x02 \x01(\bR\x12allowPasswordLogin\x12,\n" + + "\x12allow_google_login\x18\x03 \x01(\bR\x10allowGoogleLogin\x12,\n" + + "\x12allow_github_login\x18\x04 \x01(\bR\x10allowGithubLogin\x12:\n" + + "\x19confirm_namespace_changes\x18\x05 \x01(\bR\x17confirmNamespaceChanges\"\xeb\x01\n" + + "&UpdateOrganizationLoginMethodsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x123\n" + + "\x15requires_confirmation\x18\x02 \x01(\bR\x14requiresConfirmation\x12P\n" + + "\x13affected_namespaces\x18\x03 \x03(\v2\x1f.wg.cosmo.platform.v1.NamespaceR\x12affectedNamespaces\"\xc9\a\n" + + "\x14GetOperationsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12 \n" + + "\vclientNames\x18\x03 \x03(\tR\vclientNames\x12\x19\n" + + "\x05limit\x18\x04 \x01(\x05H\x00R\x05limit\x88\x01\x01\x12\x1b\n" + + "\x06offset\x18\x05 \x01(\x05H\x01R\x06offset\x88\x01\x01\x12C\n" + + "\x1aincludeHasDeprecatedFields\x18\x06 \x01(\bH\x02R\x1aincludeHasDeprecatedFields\x88\x01\x01\x12U\n" + + "\ffetchBasedOn\x18\a \x01(\x0e2,.wg.cosmo.platform.v1.OperationsFetchBasedOnH\x03R\ffetchBasedOn\x88\x01\x01\x12+\n" + + "\x0eincludeContent\x18\b \x01(\bH\x04R\x0eincludeContent\x88\x01\x01\x12\x19\n" + + "\x05range\x18\t \x01(\x05H\x05R\x05range\x88\x01\x01\x12B\n" + + "\tdateRange\x18\n" + + " \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeH\x06R\tdateRange\x88\x01\x01\x12%\n" + + "\vsearchQuery\x18\v \x01(\tH\aR\vsearchQuery\x88\x01\x01\x12a\n" + + ")includeOperationsWithDeprecatedFieldsOnly\x18\f \x01(\bH\bR)includeOperationsWithDeprecatedFieldsOnly\x88\x01\x01\x12N\n" + + "\rsortDirection\x18\r \x01(\x0e2#.wg.cosmo.platform.v1.SortDirectionH\tR\rsortDirection\x88\x01\x01\x121\n" + + "\x11includeTotalCount\x18\x0e \x01(\bH\n" + + "R\x11includeTotalCount\x88\x01\x01B\b\n" + + "\x06_limitB\t\n" + + "\a_offsetB\x1d\n" + + "\x1b_includeHasDeprecatedFieldsB\x0f\n" + + "\r_fetchBasedOnB\x11\n" + + "\x0f_includeContentB\b\n" + + "\x06_rangeB\f\n" + + "\n" + + "_dateRangeB\x0e\n" + + "\f_searchQueryB,\n" + + "*_includeOperationsWithDeprecatedFieldsOnlyB\x10\n" + + "\x0e_sortDirectionB\x14\n" + + "\x12_includeTotalCount\"\x91\x05\n" + + "\x15GetOperationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12U\n" + + "\n" + + "operations\x18\x02 \x03(\v25.wg.cosmo.platform.v1.GetOperationsResponse.OperationR\n" + + "operations\x12#\n" + + "\n" + + "totalCount\x18\x03 \x01(\x05H\x00R\n" + + "totalCount\x88\x01\x01\x1a\xf4\x02\n" + + "\tOperation\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n" + + "\acontent\x18\x03 \x01(\tH\x01R\acontent\x88\x01\x01\x12M\n" + + "\x04type\x18\x04 \x01(\x0e29.wg.cosmo.platform.v1.GetOperationsResponse.OperationTypeR\x04type\x125\n" + + "\x13hasDeprecatedFields\x18\x05 \x01(\bH\x02R\x13hasDeprecatedFields\x88\x01\x01\x12\x1a\n" + + "\alatency\x18\x06 \x01(\x02H\x00R\alatency\x12$\n" + + "\frequestCount\x18\a \x01(\x03H\x00R\frequestCount\x12*\n" + + "\x0ferrorPercentage\x18\b \x01(\x02H\x00R\x0ferrorPercentageB\b\n" + + "\x06metricB\n" + + "\n" + + "\b_contentB\x16\n" + + "\x14_hasDeprecatedFields\":\n" + + "\rOperationType\x12\t\n" + + "\x05QUERY\x10\x00\x12\f\n" + + "\bMUTATION\x10\x01\x12\x10\n" + + "\fSUBSCRIPTION\x10\x02B\r\n" + + "\v_totalCount\"n\n" + + "\x1eGetClientsFromAnalyticsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\"\xd3\x01\n" + + "\x1fGetClientsFromAnalyticsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12V\n" + + "\aclients\x18\x02 \x03(\v2<.wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.ClientR\aclients\x1a\x1c\n" + + "\x06Client\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\xad\x02\n" + + "\x1aGetOperationClientsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12$\n" + + "\roperationHash\x18\x03 \x01(\tR\roperationHash\x12$\n" + + "\roperationName\x18\x04 \x01(\tR\roperationName\x12\x19\n" + + "\x05range\x18\x05 \x01(\x05H\x00R\x05range\x88\x01\x01\x12B\n" + + "\tdateRange\x18\x06 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeH\x01R\tdateRange\x88\x01\x01B\b\n" + + "\x06_rangeB\f\n" + + "\n" + + "_dateRange\"\xa5\x02\n" + + "\x1bGetOperationClientsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12R\n" + + "\aclients\x18\x02 \x03(\v28.wg.cosmo.platform.v1.GetOperationClientsResponse.ClientR\aclients\x1av\n" + + "\x06Client\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\"\n" + + "\frequestCount\x18\x03 \x01(\x03R\frequestCount\x12\x1a\n" + + "\blastUsed\x18\x04 \x01(\tR\blastUsed\"\xcd\x02\n" + + "#GetOperationDeprecatedFieldsRequest\x12.\n" + + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12$\n" + + "\roperationHash\x18\x03 \x01(\tR\roperationHash\x12)\n" + + "\roperationName\x18\x04 \x01(\tH\x00R\roperationName\x88\x01\x01\x12\x19\n" + + "\x05range\x18\x05 \x01(\x05H\x01R\x05range\x88\x01\x01\x12B\n" + + "\tdateRange\x18\x06 \x01(\v2\x1f.wg.cosmo.platform.v1.DateRangeH\x02R\tdateRange\x88\x01\x01B\x10\n" + + "\x0e_operationNameB\b\n" + + "\x06_rangeB\f\n" + + "\n" + + "_dateRange\"\xea\x02\n" + + "$GetOperationDeprecatedFieldsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12v\n" + + "\x10deprecatedFields\x18\x02 \x03(\v2J.wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedFieldR\x10deprecatedFields\x1a\x8d\x01\n" + + "\x0fDeprecatedField\x12\x1c\n" + + "\tfieldName\x18\x01 \x01(\tR\tfieldName\x12\x1a\n" + + "\btypeName\x18\x02 \x01(\tR\btypeName\x12\x12\n" + + "\x04path\x18\x03 \x01(\tR\x04path\x12,\n" + + "\x11deprecationReason\x18\x04 \x01(\tR\x11deprecationReason\"\x8a\x01\n" + + "!ValidateAndFetchPluginDataRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x123\n" + + "\x06labels\x18\x03 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\"\xbc\x01\n" + + "\"ValidateAndFetchPluginDataResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12\x1e\n" + + "\n" + + "newVersion\x18\x02 \x01(\tR\n" + + "newVersion\x12\x1c\n" + + "\tpushToken\x18\x03 \x01(\tR\tpushToken\x12\x1c\n" + + "\treference\x18\x04 \x01(\tR\treference\"\xe9\x01\n" + + "\x13LinkSubgraphRequest\x12.\n" + + "\x12sourceSubgraphName\x18\x01 \x01(\tR\x12sourceSubgraphName\x128\n" + + "\x17sourceSubgraphNamespace\x18\x02 \x01(\tR\x17sourceSubgraphNamespace\x12.\n" + + "\x12targetSubgraphName\x18\x03 \x01(\tR\x12targetSubgraphName\x128\n" + + "\x17targetSubgraphNamespace\x18\x04 \x01(\tR\x17targetSubgraphNamespace\"R\n" + + "\x14LinkSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x81\x01\n" + + "\x15UnlinkSubgraphRequest\x12.\n" + + "\x12sourceSubgraphName\x18\x01 \x01(\tR\x12sourceSubgraphName\x128\n" + + "\x17sourceSubgraphNamespace\x18\x02 \x01(\tR\x17sourceSubgraphNamespace\"T\n" + + "\x16UnlinkSubgraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"L\n" + + "\x1eVerifyAPIKeyGraphAccessRequest\x12*\n" + + "\x10federatedGraphId\x18\x01 \x01(\tR\x10federatedGraphId\"\xf3\x01\n" + + "\x1fVerifyAPIKeyGraphAccessResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12^\n" + + "*hasOrganizationAdminOrDeveloperPermissions\x18\x02 \x01(\bR*hasOrganizationAdminOrDeveloperPermissions\x124\n" + + "\x15hasWriteAccessToGraph\x18\x03 \x01(\bR\x15hasWriteAccessToGraph\"2\n" + + "\x1aInitializeCosmoUserRequest\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\"Y\n" + + "\x1bInitializeCosmoUserResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\x1a\n" + + "\x18ListOrganizationsRequest\"\xad\x02\n" + + "\x19ListOrganizationsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12l\n" + + "\rorganizations\x18\x02 \x03(\v2F.wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembershipR\rorganizations\x1af\n" + + "\x16OrganizationMembership\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x14\n" + + "\x05roles\x18\x04 \x03(\tR\x05roles\"\x85\x02\n" + + "\x15RecomposeGraphRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12!\n" + + "\fis_monograph\x18\x03 \x01(\bR\visMonograph\x12\x19\n" + + "\x05limit\x18\x04 \x01(\x05H\x00R\x05limit\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\x05 \x01(\bH\x01R\x1edisableResolvabilityValidation\x88\x01\x01B\b\n" + + "\x06_limitB#\n" + + "!_disable_resolvability_validation\"\xbc\x03\n" + + "\x16RecomposeGraphResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12Q\n" + + "\verrorCounts\x18\x05 \x01(\v2*.wg.cosmo.platform.v1.SubgraphPublishStatsH\x00R\verrorCounts\x88\x01\x01B\x0e\n" + + "\f_errorCounts\"\xe8\x01\n" + + "\x1bRecomposeFeatureFlagRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x19\n" + + "\x05limit\x18\x03 \x01(\x05H\x00R\x05limit\x88\x01\x01\x12M\n" + + " disable_resolvability_validation\x18\x05 \x01(\bH\x01R\x1edisableResolvabilityValidation\x88\x01\x01B\b\n" + + "\x06_limitB#\n" + + "!_disable_resolvability_validation\"\xc2\x03\n" + + "\x1cRecomposeFeatureFlagResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12T\n" + + "\x11compositionErrors\x18\x02 \x03(\v2&.wg.cosmo.platform.v1.CompositionErrorR\x11compositionErrors\x12Q\n" + + "\x10deploymentErrors\x18\x03 \x03(\v2%.wg.cosmo.platform.v1.DeploymentErrorR\x10deploymentErrors\x12Z\n" + + "\x13compositionWarnings\x18\x04 \x03(\v2(.wg.cosmo.platform.v1.CompositionWarningR\x13compositionWarnings\x12Q\n" + + "\verrorCounts\x18\x05 \x01(\v2*.wg.cosmo.platform.v1.SubgraphPublishStatsH\x00R\verrorCounts\x88\x01\x01B\x0e\n" + + "\f_errorCounts\"\x16\n" + + "\x14GetOnboardingRequest\"\xd5\x01\n" + + "\x15GetOnboardingResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12#\n" + + "\n" + + "finishedAt\x18\x03 \x01(\tH\x00R\n" + + "finishedAt\x88\x01\x01\x122\n" + + "\x14federatedGraphsCount\x18\x04 \x01(\x05R\x14federatedGraphsCount\x12\x18\n" + + "\aenabled\x18\x05 \x01(\bR\aenabledB\r\n" + + "\v_finishedAt\"\x19\n" + + "\x17CreateOnboardingRequest\"\xbe\x01\n" + + "\x18CreateOnboardingResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12#\n" + + "\n" + + "finishedAt\x18\x02 \x01(\tH\x00R\n" + + "finishedAt\x88\x01\x01\x122\n" + + "\x14federatedGraphsCount\x18\x03 \x01(\x05R\x14federatedGraphsCountB\r\n" + + "\v_finishedAt\"\x19\n" + + "\x17FinishOnboardingRequest\"\xaa\x01\n" + + "\x18FinishOnboardingResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x122\n" + + "\x14federatedGraphsCount\x18\x02 \x01(\x05R\x14federatedGraphsCount\x12\x1e\n" + + "\n" + + "finishedAt\x18\x03 \x01(\tR\n" + + "finishedAt*#\n" + + "\fLintSeverity\x12\b\n" + + "\x04warn\x10\x00\x12\t\n" + + "\x05error\x10\x01*?\n" + + "\fSubgraphType\x12\f\n" + + "\bSTANDARD\x10\x00\x12\x0f\n" + + "\vGRPC_PLUGIN\x10\x01\x12\x10\n" + + "\fGRPC_SERVICE\x10\x02*U\n" + + "\x16AnalyticsViewGroupName\x12\b\n" + + "\x04None\x10\x00\x12\x11\n" + + "\rOperationName\x10\x01\x12\n" + + "\n" + + "\x06Client\x10\x02\x12\x12\n" + + "\x0eHttpStatusCode\x10\x03*1\n" + + "\rCustomOptions\x12\b\n" + + "\x04Text\x10\x00\x12\t\n" + + "\x05Range\x10\x01\x12\v\n" + + "\aBoolean\x10\x02*\x8e\x01\n" + + "\x04Unit\x12\x0f\n" + + "\vUnspecified\x10\x00\x12\x0f\n" + + "\vNanoseconds\x10\x01\x12\x11\n" + + "\rUnixTimestamp\x10\x02\x12\t\n" + + "\x05Bytes\x10\x03\x12\r\n" + + "\tCodeBlock\x10\x04\x12\x0e\n" + + "\n" + + "StatusCode\x10\x05\x12\v\n" + + "\aTraceID\x10\x06\x12\n" + + "\n" + + "\x06SpanID\x10\a\x12\x0e\n" + + "\n" + + "Percentage\x10\b*\xfd\x01\n" + + "\x1bAnalyticsViewFilterOperator\x12\n" + + "\n" + + "\x06EQUALS\x10\x00\x12\x0e\n" + + "\n" + + "NOT_EQUALS\x10\x01\x12\x10\n" + + "\fGREATER_THAN\x10\x02\x12\r\n" + + "\tLESS_THAN\x10\x03\x12\x19\n" + + "\x15GREATER_THAN_OR_EQUAL\x10\x04\x12\x16\n" + + "\x12LESS_THAN_OR_EQUAL\x10\x05\x12\f\n" + + "\bCONTAINS\x10\x06\x12\x10\n" + + "\fNOT_CONTAINS\x10\a\x12\x06\n" + + "\x02IN\x10\b\x12\n" + + "\n" + + "\x06NOT_IN\x10\t\x12\v\n" + + "\aBETWEEN\x10\n" + + "\x12\x0f\n" + + "\vNOT_BETWEEN\x10\v\x12\v\n" + + "\aIS_NULL\x10\f\x12\x0f\n" + + "\vIS_NOT_NULL\x10\r*E\n" + + "\tExpiresAt\x12\t\n" + + "\x05NEVER\x10\x00\x12\x0f\n" + + "\vTHIRTY_DAYS\x10\x01\x12\x0e\n" + + "\n" + + "SIX_MONTHS\x10\x02\x12\f\n" + + "\bONE_YEAR\x10\x03*\xac\x01\n" + + "\x0fLoginMethodType\x12!\n" + + "\x1dLOGIN_METHOD_TYPE_UNSPECIFIED\x10\x00\x12\x19\n" + + "\x15LOGIN_METHOD_TYPE_SSO\x10\x01\x12\x1e\n" + + "\x1aLOGIN_METHOD_TYPE_PASSWORD\x10\x02\x12\x1d\n" + + "\x19LOGIN_METHOD_TYPE_API_KEY\x10\x03\x12\x1c\n" + + "\x18LOGIN_METHOD_TYPE_SOCIAL\x10\x04*\x80\x01\n" + + "\x13SocialLoginProvider\x12%\n" + + "!SOCIAL_LOGIN_PROVIDER_UNSPECIFIED\x10\x00\x12 \n" + + "\x1cSOCIAL_LOGIN_PROVIDER_GOOGLE\x10\x01\x12 \n" + + "\x1cSOCIAL_LOGIN_PROVIDER_GITHUB\x10\x02*E\n" + + "\x18PublishedOperationStatus\x12\x0e\n" + + "\n" + + "UP_TO_DATE\x10\x00\x12\v\n" + + "\aCREATED\x10\x01\x12\f\n" + + "\bCONFLICT\x10\x02*\x1c\n" + + "\x0fIntegrationType\x12\t\n" + + "\x05SLACK\x10\x00*%\n" + + "\aFeature\x12\b\n" + + "\x04rbac\x10\x00\x12\x06\n" + + "\x02ai\x10\x01\x12\b\n" + + "\x04scim\x10\x02*,\n" + + "\x0eProposalOrigin\x12\f\n" + + "\bINTERNAL\x10\x00\x12\f\n" + + "\bEXTERNAL\x10\x01*7\n" + + "\x18ProposalNamingConvention\x12\n" + + "\n" + + "\x06NORMAL\x10\x00\x12\x0f\n" + + "\vINCREMENTAL\x10\x01*?\n" + + "\x16OperationsFetchBasedOn\x12\f\n" + + "\bREQUESTS\x10\x00\x12\v\n" + + "\aLATENCY\x10\x01\x12\n" + + "\n" + + "\x06ERRORS\x10\x02*\"\n" + + "\rSortDirection\x12\a\n" + + "\x03ASC\x10\x00\x12\b\n" + + "\x04DESC\x10\x012\xc7\xc5\x01\n" + + "\x0fPlatformService\x12\x85\x01\n" + + "\x16CreatePlaygroundScript\x123.wg.cosmo.platform.v1.CreatePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.CreatePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + + "\x16DeletePlaygroundScript\x123.wg.cosmo.platform.v1.DeletePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.DeletePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + + "\x16UpdatePlaygroundScript\x123.wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse\"\x00\x12\x7f\n" + + "\x14GetPlaygroundScripts\x121.wg.cosmo.platform.v1.GetPlaygroundScriptsRequest\x1a2.wg.cosmo.platform.v1.GetPlaygroundScriptsResponse\"\x00\x12p\n" + + "\x0fCreateNamespace\x12,.wg.cosmo.platform.v1.CreateNamespaceRequest\x1a-.wg.cosmo.platform.v1.CreateNamespaceResponse\"\x00\x12p\n" + + "\x0fDeleteNamespace\x12,.wg.cosmo.platform.v1.DeleteNamespaceRequest\x1a-.wg.cosmo.platform.v1.DeleteNamespaceResponse\"\x00\x12p\n" + + "\x0fRenameNamespace\x12,.wg.cosmo.platform.v1.RenameNamespaceRequest\x1a-.wg.cosmo.platform.v1.RenameNamespaceResponse\"\x00\x12j\n" + + "\rGetNamespaces\x12*.wg.cosmo.platform.v1.GetNamespacesRequest\x1a+.wg.cosmo.platform.v1.GetNamespacesResponse\"\x00\x12g\n" + + "\fGetNamespace\x12).wg.cosmo.platform.v1.GetNamespaceRequest\x1a*.wg.cosmo.platform.v1.GetNamespaceResponse\"\x00\x12g\n" + + "\fGetWorkspace\x12).wg.cosmo.platform.v1.GetWorkspaceRequest\x1a*.wg.cosmo.platform.v1.GetWorkspaceResponse\"\x00\x12m\n" + + "\x0eCreateContract\x12+.wg.cosmo.platform.v1.CreateContractRequest\x1a,.wg.cosmo.platform.v1.CreateContractResponse\"\x00\x12m\n" + + "\x0eUpdateContract\x12+.wg.cosmo.platform.v1.UpdateContractRequest\x1a,.wg.cosmo.platform.v1.UpdateContractResponse\"\x00\x12g\n" + + "\x12MoveFederatedGraph\x12&.wg.cosmo.platform.v1.MoveGraphRequest\x1a'.wg.cosmo.platform.v1.MoveGraphResponse\"\x00\x12a\n" + + "\fMoveSubgraph\x12&.wg.cosmo.platform.v1.MoveGraphRequest\x1a'.wg.cosmo.platform.v1.MoveGraphResponse\"\x00\x12b\n" + + "\rMoveMonograph\x12&.wg.cosmo.platform.v1.MoveGraphRequest\x1a'.wg.cosmo.platform.v1.MoveGraphResponse\"\x00\x12p\n" + + "\x0fCreateMonograph\x12,.wg.cosmo.platform.v1.CreateMonographRequest\x1a-.wg.cosmo.platform.v1.CreateMonographResponse\"\x00\x12s\n" + + "\x10PublishMonograph\x12-.wg.cosmo.platform.v1.PublishMonographRequest\x1a..wg.cosmo.platform.v1.PublishMonographResponse\"\x00\x12p\n" + + "\x0fDeleteMonograph\x12,.wg.cosmo.platform.v1.DeleteMonographRequest\x1a-.wg.cosmo.platform.v1.DeleteMonographResponse\"\x00\x12p\n" + + "\x0fUpdateMonograph\x12,.wg.cosmo.platform.v1.UpdateMonographRequest\x1a-.wg.cosmo.platform.v1.UpdateMonographResponse\"\x00\x12s\n" + + "\x10MigrateMonograph\x12-.wg.cosmo.platform.v1.MigrateMonographRequest\x1a..wg.cosmo.platform.v1.MigrateMonographResponse\"\x00\x12\x88\x01\n" + + "\x17CreateFederatedSubgraph\x124.wg.cosmo.platform.v1.CreateFederatedSubgraphRequest\x1a5.wg.cosmo.platform.v1.CreateFederatedSubgraphResponse\"\x00\x12\x8b\x01\n" + + "\x18PublishFederatedSubgraph\x125.wg.cosmo.platform.v1.PublishFederatedSubgraphRequest\x1a6.wg.cosmo.platform.v1.PublishFederatedSubgraphResponse\"\x00\x12\x8e\x01\n" + + "\x19PublishFederatedSubgraphs\x126.wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest\x1a7.wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse\"\x00\x12\x7f\n" + + "\x14CreateFederatedGraph\x121.wg.cosmo.platform.v1.CreateFederatedGraphRequest\x1a2.wg.cosmo.platform.v1.CreateFederatedGraphResponse\"\x00\x12\x7f\n" + + "\x14DeleteFederatedGraph\x121.wg.cosmo.platform.v1.DeleteFederatedGraphRequest\x1a2.wg.cosmo.platform.v1.DeleteFederatedGraphResponse\"\x00\x12\x88\x01\n" + + "\x17DeleteFederatedSubgraph\x124.wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest\x1a5.wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse\"\x00\x12|\n" + + "\x13CheckSubgraphSchema\x120.wg.cosmo.platform.v1.CheckSubgraphSchemaRequest\x1a1.wg.cosmo.platform.v1.CheckSubgraphSchemaResponse\"\x00\x12\xa9\x01\n" + + "\"GetProposedSchemaOfCheckedSubgraph\x12?.wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest\x1a@.wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse\"\x00\x12v\n" + + "\x11FixSubgraphSchema\x12..wg.cosmo.platform.v1.FixSubgraphSchemaRequest\x1a/.wg.cosmo.platform.v1.FixSubgraphSchemaResponse\"\x00\x12\x7f\n" + + "\x14UpdateFederatedGraph\x121.wg.cosmo.platform.v1.UpdateFederatedGraphRequest\x1a2.wg.cosmo.platform.v1.UpdateFederatedGraphResponse\"\x00\x12m\n" + + "\x0eUpdateSubgraph\x12+.wg.cosmo.platform.v1.UpdateSubgraphRequest\x1a,.wg.cosmo.platform.v1.UpdateSubgraphResponse\"\x00\x12|\n" + + "\x13CheckFederatedGraph\x120.wg.cosmo.platform.v1.CheckFederatedGraphRequest\x1a1.wg.cosmo.platform.v1.CheckFederatedGraphResponse\"\x00\x12U\n" + + "\x06WhoAmI\x12#.wg.cosmo.platform.v1.WhoAmIRequest\x1a$.wg.cosmo.platform.v1.WhoAmIResponse\"\x00\x12|\n" + + "\x13GenerateRouterToken\x120.wg.cosmo.platform.v1.GenerateRouterTokenRequest\x1a1.wg.cosmo.platform.v1.GenerateRouterTokenResponse\"\x00\x12p\n" + + "\x0fGetRouterTokens\x12,.wg.cosmo.platform.v1.GetRouterTokensRequest\x1a-.wg.cosmo.platform.v1.GetRouterTokensResponse\"\x00\x12v\n" + + "\x11DeleteRouterToken\x12..wg.cosmo.platform.v1.DeleteRouterTokenRequest\x1a/.wg.cosmo.platform.v1.DeleteRouterTokenResponse\"\x00\x12\x91\x01\n" + + "\x1aPublishPersistedOperations\x127.wg.cosmo.platform.v1.PublishPersistedOperationsRequest\x1a8.wg.cosmo.platform.v1.PublishPersistedOperationsResponse\"\x00\x12\x9d\x01\n" + + "\x1eCheckPersistedOperationTraffic\x12;.wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest\x1a<.wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse\"\x00\x12\x8b\x01\n" + + "\x18DeletePersistedOperation\x125.wg.cosmo.platform.v1.DeletePersistedOperationRequest\x1a6.wg.cosmo.platform.v1.DeletePersistedOperationResponse\"\x00\x12\x85\x01\n" + + "\x16GetPersistedOperations\x123.wg.cosmo.platform.v1.GetPersistedOperationsRequest\x1a4.wg.cosmo.platform.v1.GetPersistedOperationsResponse\"\x00\x12g\n" + + "\fGetAuditLogs\x12).wg.cosmo.platform.v1.GetAuditLogsRequest\x1a*.wg.cosmo.platform.v1.GetAuditLogsResponse\"\x00\x12|\n" + + "\x13InitializeCosmoUser\x120.wg.cosmo.platform.v1.InitializeCosmoUserRequest\x1a1.wg.cosmo.platform.v1.InitializeCosmoUserResponse\"\x00\x12v\n" + + "\x11ListOrganizations\x12..wg.cosmo.platform.v1.ListOrganizationsRequest\x1a/.wg.cosmo.platform.v1.ListOrganizationsResponse\"\x00\x12y\n" + + "\x12GetFederatedGraphs\x12/.wg.cosmo.platform.v1.GetFederatedGraphsRequest\x1a0.wg.cosmo.platform.v1.GetFederatedGraphsResponse\"\x00\x12\xa9\x01\n" + + "\"GetFederatedGraphsBySubgraphLabels\x12?.wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest\x1a@.wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse\"\x00\x12\x88\x01\n" + + "\x17GetFederatedGraphByName\x124.wg.cosmo.platform.v1.GetFederatedGraphByNameRequest\x1a5.wg.cosmo.platform.v1.GetFederatedGraphByNameResponse\"\x00\x12\x91\x01\n" + + "\x1aGetFederatedGraphSDLByName\x127.wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest\x1a8.wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse\"\x00\x12g\n" + + "\fGetSubgraphs\x12).wg.cosmo.platform.v1.GetSubgraphsRequest\x1a*.wg.cosmo.platform.v1.GetSubgraphsResponse\"\x00\x12v\n" + + "\x11GetSubgraphByName\x12..wg.cosmo.platform.v1.GetSubgraphByNameRequest\x1a/.wg.cosmo.platform.v1.GetSubgraphByNameResponse\"\x00\x12\xac\x01\n" + + "#GetSubgraphSDLFromLatestComposition\x12@.wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest\x1aA.wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse\"\x00\x12\x7f\n" + + "\x14GetLatestSubgraphSDL\x121.wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest\x1a2.wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse\"\x00\x12\x9a\x01\n" + + "\x1dGetChecksByFederatedGraphName\x12:.wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest\x1a;.wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse\"\x00\x12p\n" + + "\x0fGetCheckSummary\x12,.wg.cosmo.platform.v1.GetCheckSummaryRequest\x1a-.wg.cosmo.platform.v1.GetCheckSummaryResponse\"\x00\x12y\n" + + "\x12GetCheckOperations\x12/.wg.cosmo.platform.v1.GetCheckOperationsRequest\x1a0.wg.cosmo.platform.v1.GetCheckOperationsResponse\"\x00\x12v\n" + + "\x11ForceCheckSuccess\x12..wg.cosmo.platform.v1.ForceCheckSuccessRequest\x1a/.wg.cosmo.platform.v1.ForceCheckSuccessResponse\"\x00\x12\x8b\x01\n" + + "\x18CreateOperationOverrides\x125.wg.cosmo.platform.v1.CreateOperationOverridesRequest\x1a6.wg.cosmo.platform.v1.CreateOperationOverridesResponse\"\x00\x12\x8b\x01\n" + + "\x18RemoveOperationOverrides\x125.wg.cosmo.platform.v1.RemoveOperationOverridesRequest\x1a6.wg.cosmo.platform.v1.RemoveOperationOverridesResponse\"\x00\x12\xa3\x01\n" + + " CreateOperationIgnoreAllOverride\x12=.wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest\x1a>.wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse\"\x00\x12\xa3\x01\n" + + " RemoveOperationIgnoreAllOverride\x12=.wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest\x1a>.wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse\"\x00\x12\x82\x01\n" + + "\x15GetOperationOverrides\x122.wg.cosmo.platform.v1.GetOperationOverridesRequest\x1a3.wg.cosmo.platform.v1.GetOperationOverridesResponse\"\x00\x12p\n" + + "\x0fGetAllOverrides\x12,.wg.cosmo.platform.v1.GetAllOverridesRequest\x1a-.wg.cosmo.platform.v1.GetAllOverridesResponse\"\x00\x12\xb2\x01\n" + + "%ToggleChangeOverridesForAllOperations\x12B.wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest\x1aC.wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse\"\x00\x12\xb2\x01\n" + + "%CreateIgnoreOverridesForAllOperations\x12B.wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest\x1aC.wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse\"\x00\x12|\n" + + "\x13GetOperationContent\x120.wg.cosmo.platform.v1.GetOperationContentRequest\x1a1.wg.cosmo.platform.v1.GetOperationContentResponse\"\x00\x12\x91\x01\n" + + "\x1aGetFederatedGraphChangelog\x127.wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest\x1a8.wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse\"\x00\x12\x8e\x01\n" + + "\x19CreateFederatedGraphToken\x126.wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest\x1a7.wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse\"\x00\x12\x82\x01\n" + + "\x15GetOrganizationBySlug\x122.wg.cosmo.platform.v1.GetOrganizationBySlugRequest\x1a3.wg.cosmo.platform.v1.GetOrganizationBySlugResponse\"\x00\x12\x85\x01\n" + + "\x16GetOrganizationMembers\x123.wg.cosmo.platform.v1.GetOrganizationMembersRequest\x1a4.wg.cosmo.platform.v1.GetOrganizationMembersResponse\"\x00\x12\x9a\x01\n" + + "\x1dGetPendingOrganizationMembers\x12:.wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest\x1a;.wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse\"\x00\x12\x7f\n" + + "\x14IsMemberLimitReached\x121.wg.cosmo.platform.v1.IsMemberLimitReachedRequest\x1a2.wg.cosmo.platform.v1.IsMemberLimitReachedResponse\"\x00\x12a\n" + + "\n" + + "InviteUser\x12'.wg.cosmo.platform.v1.InviteUserRequest\x1a(.wg.cosmo.platform.v1.InviteUserResponse\"\x00\x12d\n" + + "\vInviteUsers\x12(.wg.cosmo.platform.v1.InviteUsersRequest\x1a).wg.cosmo.platform.v1.InviteUsersResponse\"\x00\x12a\n" + + "\n" + + "GetAPIKeys\x12'.wg.cosmo.platform.v1.GetAPIKeysRequest\x1a(.wg.cosmo.platform.v1.GetAPIKeysResponse\"\x00\x12g\n" + + "\fCreateAPIKey\x12).wg.cosmo.platform.v1.CreateAPIKeyRequest\x1a*.wg.cosmo.platform.v1.CreateAPIKeyResponse\"\x00\x12g\n" + + "\fUpdateAPIKey\x12).wg.cosmo.platform.v1.UpdateAPIKeyRequest\x1a*.wg.cosmo.platform.v1.UpdateAPIKeyResponse\"\x00\x12g\n" + + "\fDeleteAPIKey\x12).wg.cosmo.platform.v1.DeleteAPIKeyRequest\x1a*.wg.cosmo.platform.v1.DeleteAPIKeyResponse\"\x00\x12\x8b\x01\n" + + "\x18RemoveOrganizationMember\x125.wg.cosmo.platform.v1.RemoveOrganizationMemberRequest\x1a6.wg.cosmo.platform.v1.RemoveOrganizationMemberResponse\"\x00\x12s\n" + + "\x10RemoveInvitation\x12-.wg.cosmo.platform.v1.RemoveInvitationRequest\x1a..wg.cosmo.platform.v1.RemoveInvitationResponse\"\x00\x12v\n" + + "\x11MigrateFromApollo\x12..wg.cosmo.platform.v1.MigrateFromApolloRequest\x1a/.wg.cosmo.platform.v1.MigrateFromApolloResponse\"\x00\x12\x88\x01\n" + + "\x17CreateOrganizationGroup\x124.wg.cosmo.platform.v1.CreateOrganizationGroupRequest\x1a5.wg.cosmo.platform.v1.CreateOrganizationGroupResponse\"\x00\x12\x82\x01\n" + + "\x15GetOrganizationGroups\x122.wg.cosmo.platform.v1.GetOrganizationGroupsRequest\x1a3.wg.cosmo.platform.v1.GetOrganizationGroupsResponse\"\x00\x12\x94\x01\n" + + "\x1bGetOrganizationGroupMembers\x128.wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest\x1a9.wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse\"\x00\x12\x88\x01\n" + + "\x17UpdateOrganizationGroup\x124.wg.cosmo.platform.v1.UpdateOrganizationGroupRequest\x1a5.wg.cosmo.platform.v1.UpdateOrganizationGroupResponse\"\x00\x12\x88\x01\n" + + "\x17DeleteOrganizationGroup\x124.wg.cosmo.platform.v1.DeleteOrganizationGroupRequest\x1a5.wg.cosmo.platform.v1.DeleteOrganizationGroupResponse\"\x00\x12\xa0\x01\n" + + "\x1fCreateOrganizationWebhookConfig\x12<.wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest\x1a=.wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse\"\x00\x12\x9a\x01\n" + + "\x1dGetOrganizationWebhookConfigs\x12:.wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest\x1a;.wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse\"\x00\x12\x91\x01\n" + + "\x1aGetOrganizationWebhookMeta\x127.wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest\x1a8.wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse\"\x00\x12\xa0\x01\n" + + "\x1fUpdateOrganizationWebhookConfig\x12<.wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest\x1a=.wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse\"\x00\x12\xa0\x01\n" + + "\x1fDeleteOrganizationWebhookConfig\x12<.wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest\x1a=.wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse\"\x00\x12\x9a\x01\n" + + "\x1dGetOrganizationWebhookHistory\x12:.wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest\x1a;.wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse\"\x00\x12\x8e\x01\n" + + "\x19GetWebhookDeliveryDetails\x126.wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest\x1a7.wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse\"\x00\x12s\n" + + "\x10RedeliverWebhook\x12-.wg.cosmo.platform.v1.RedeliverWebhookRequest\x1a..wg.cosmo.platform.v1.RedeliverWebhookResponse\"\x00\x12v\n" + + "\x11CreateIntegration\x12..wg.cosmo.platform.v1.CreateIntegrationRequest\x1a/.wg.cosmo.platform.v1.CreateIntegrationResponse\"\x00\x12\x94\x01\n" + + "\x1bGetOrganizationIntegrations\x128.wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest\x1a9.wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse\"\x00\x12\x88\x01\n" + + "\x17UpdateIntegrationConfig\x124.wg.cosmo.platform.v1.UpdateIntegrationConfigRequest\x1a5.wg.cosmo.platform.v1.UpdateIntegrationConfigResponse\"\x00\x12v\n" + + "\x11DeleteIntegration\x12..wg.cosmo.platform.v1.DeleteIntegrationRequest\x1a/.wg.cosmo.platform.v1.DeleteIntegrationResponse\"\x00\x12a\n" + + "\n" + + "DeleteUser\x12'.wg.cosmo.platform.v1.DeleteUserRequest\x1a(.wg.cosmo.platform.v1.DeleteUserResponse\"\x00\x12y\n" + + "\x12DeleteOrganization\x12/.wg.cosmo.platform.v1.DeleteOrganizationRequest\x1a0.wg.cosmo.platform.v1.DeleteOrganizationResponse\"\x00\x12|\n" + + "\x13RestoreOrganization\x120.wg.cosmo.platform.v1.RestoreOrganizationRequest\x1a1.wg.cosmo.platform.v1.RestoreOrganizationResponse\"\x00\x12v\n" + + "\x11LeaveOrganization\x12..wg.cosmo.platform.v1.LeaveOrganizationRequest\x1a/.wg.cosmo.platform.v1.LeaveOrganizationResponse\"\x00\x12\x8e\x01\n" + + "\x19UpdateOrganizationDetails\x126.wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest\x1a7.wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse\"\x00\x12\x7f\n" + + "\x14UpdateOrgMemberGroup\x121.wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest\x1a2.wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse\"\x00\x12\x7f\n" + + "\x14IsGitHubAppInstalled\x121.wg.cosmo.platform.v1.IsGitHubAppInstalledRequest\x1a2.wg.cosmo.platform.v1.IsGitHubAppInstalledResponse\"\x00\x12y\n" + + "\x12CreateOIDCProvider\x12/.wg.cosmo.platform.v1.CreateOIDCProviderRequest\x1a0.wg.cosmo.platform.v1.CreateOIDCProviderResponse\"\x00\x12p\n" + + "\x0fGetOIDCProvider\x12,.wg.cosmo.platform.v1.GetOIDCProviderRequest\x1a-.wg.cosmo.platform.v1.GetOIDCProviderResponse\"\x00\x12v\n" + + "\x11ListOIDCProviders\x12..wg.cosmo.platform.v1.ListOIDCProvidersRequest\x1a/.wg.cosmo.platform.v1.ListOIDCProvidersResponse\"\x00\x12y\n" + + "\x12DeleteOIDCProvider\x12/.wg.cosmo.platform.v1.DeleteOIDCProviderRequest\x1a0.wg.cosmo.platform.v1.DeleteOIDCProviderResponse\"\x00\x12s\n" + + "\x10UpdateIDPMappers\x12-.wg.cosmo.platform.v1.UpdateIDPMappersRequest\x1a..wg.cosmo.platform.v1.UpdateIDPMappersResponse\"\x00\x12a\n" + + "\n" + + "GetClients\x12'.wg.cosmo.platform.v1.GetClientsRequest\x1a(.wg.cosmo.platform.v1.GetClientsResponse\"\x00\x12a\n" + + "\n" + + "GetRouters\x12'.wg.cosmo.platform.v1.GetRoutersRequest\x1a(.wg.cosmo.platform.v1.GetRoutersResponse\"\x00\x12m\n" + + "\x0eGetInvitations\x12+.wg.cosmo.platform.v1.GetInvitationsRequest\x1a,.wg.cosmo.platform.v1.GetInvitationsResponse\"\x00\x12\x8e\x01\n" + + "\x19AcceptOrDeclineInvitation\x126.wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest\x1a7.wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse\"\x00\x12p\n" + + "\x0fGetCompositions\x12,.wg.cosmo.platform.v1.GetCompositionsRequest\x1a-.wg.cosmo.platform.v1.GetCompositionsResponse\"\x00\x12\x82\x01\n" + + "\x15GetCompositionDetails\x122.wg.cosmo.platform.v1.GetCompositionDetailsRequest\x1a3.wg.cosmo.platform.v1.GetCompositionDetailsResponse\"\x00\x12\x82\x01\n" + + "\x15GetSdlBySchemaVersion\x122.wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest\x1a3.wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse\"\x00\x12\x94\x01\n" + + "\x1bGetChangelogBySchemaVersion\x128.wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest\x1a9.wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse\"\x00\x12\x91\x01\n" + + "\x1aGetUserAccessibleResources\x127.wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest\x1a8.wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse\"\x00\x12\x82\x01\n" + + "\x15UpdateFeatureSettings\x122.wg.cosmo.platform.v1.UpdateFeatureSettingsRequest\x1a3.wg.cosmo.platform.v1.UpdateFeatureSettingsResponse\"\x00\x12y\n" + + "\x12GetSubgraphMembers\x12/.wg.cosmo.platform.v1.GetSubgraphMembersRequest\x1a0.wg.cosmo.platform.v1.GetSubgraphMembersResponse\"\x00\x12^\n" + + "\tAddReadme\x12&.wg.cosmo.platform.v1.AddReadmeRequest\x1a'.wg.cosmo.platform.v1.AddReadmeResponse\"\x00\x12\x97\x01\n" + + "\x1cGetUserAccessiblePermissions\x129.wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest\x1a:.wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse\"\x00\x12v\n" + + "\x11CreateFeatureFlag\x12..wg.cosmo.platform.v1.CreateFeatureFlagRequest\x1a/.wg.cosmo.platform.v1.CreateFeatureFlagResponse\"\x00\x12v\n" + + "\x11DeleteFeatureFlag\x12..wg.cosmo.platform.v1.DeleteFeatureFlagRequest\x1a/.wg.cosmo.platform.v1.DeleteFeatureFlagResponse\"\x00\x12v\n" + + "\x11UpdateFeatureFlag\x12..wg.cosmo.platform.v1.UpdateFeatureFlagRequest\x1a/.wg.cosmo.platform.v1.UpdateFeatureFlagResponse\"\x00\x12v\n" + + "\x11EnableFeatureFlag\x12..wg.cosmo.platform.v1.EnableFeatureFlagRequest\x1a/.wg.cosmo.platform.v1.EnableFeatureFlagResponse\"\x00\x12v\n" + + "\x10GetAnalyticsView\x12-.wg.cosmo.platform.v1.GetAnalyticsViewRequest\x1a..wg.cosmo.platform.v1.GetAnalyticsViewResponse\"\x03\x90\x02\x01\x12\x91\x01\n" + + "\x19GetDashboardAnalyticsView\x126.wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest\x1a7.wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse\"\x03\x90\x02\x01\x12[\n" + + "\bGetTrace\x12%.wg.cosmo.platform.v1.GetTraceRequest\x1a&.wg.cosmo.platform.v1.GetTraceResponse\"\x00\x12s\n" + + "\x0fGetGraphMetrics\x12,.wg.cosmo.platform.v1.GetGraphMetricsRequest\x1a-.wg.cosmo.platform.v1.GetGraphMetricsResponse\"\x03\x90\x02\x01\x12\x7f\n" + + "\x13GetMetricsErrorRate\x120.wg.cosmo.platform.v1.GetMetricsErrorRateRequest\x1a1.wg.cosmo.platform.v1.GetMetricsErrorRateResponse\"\x03\x90\x02\x01\x12|\n" + + "\x12GetSubgraphMetrics\x12/.wg.cosmo.platform.v1.GetSubgraphMetricsRequest\x1a0.wg.cosmo.platform.v1.GetSubgraphMetricsResponse\"\x03\x90\x02\x01\x12\x97\x01\n" + + "\x1bGetSubgraphMetricsErrorRate\x128.wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest\x1a9.wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse\"\x03\x90\x02\x01\x12m\n" + + "\rGetFieldUsage\x12*.wg.cosmo.platform.v1.GetFieldUsageRequest\x1a+.wg.cosmo.platform.v1.GetFieldUsageResponse\"\x03\x90\x02\x01\x12\x97\x01\n" + + "\x1cGetOrganizationRequestsCount\x129.wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest\x1a:.wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse\"\x00\x12y\n" + + "\x12CreateOrganization\x12/.wg.cosmo.platform.v1.CreateOrganizationRequest\x1a0.wg.cosmo.platform.v1.CreateOrganizationResponse\"\x00\x12\x97\x01\n" + + "\x1cEnableLintingForTheNamespace\x129.wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest\x1a:.wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse\"\x00\x12\x97\x01\n" + + "\x1cConfigureNamespaceLintConfig\x129.wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest\x1a:.wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse\"\x00\x12\x85\x01\n" + + "\x16GetNamespaceLintConfig\x123.wg.cosmo.platform.v1.GetNamespaceLintConfigRequest\x1a4.wg.cosmo.platform.v1.GetNamespaceLintConfigResponse\"\x00\x12\x99\x01\n" + + "\x18GetNamespaceChecksConfig\x12<.wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest\x1a=.wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse\"\x00\x12\xa2\x01\n" + + "\x1bUpdateNamespaceChecksConfig\x12?.wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest\x1a@.wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse\"\x00\x12y\n" + + "\x12EnableGraphPruning\x12/.wg.cosmo.platform.v1.EnableGraphPruningRequest\x1a0.wg.cosmo.platform.v1.EnableGraphPruningResponse\"\x00\x12\xaf\x01\n" + + "$ConfigureNamespaceGraphPruningConfig\x12A.wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest\x1aB.wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse\"\x00\x12\x9d\x01\n" + + "\x1eGetNamespaceGraphPruningConfig\x12;.wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest\x1a<.wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse\"\x00\x12p\n" + + "\x0fGetFeatureFlags\x12,.wg.cosmo.platform.v1.GetFeatureFlagsRequest\x1a-.wg.cosmo.platform.v1.GetFeatureFlagsResponse\"\x00\x12\x7f\n" + + "\x14GetFeatureFlagByName\x121.wg.cosmo.platform.v1.GetFeatureFlagByNameRequest\x1a2.wg.cosmo.platform.v1.GetFeatureFlagByNameResponse\"\x00\x12\xa3\x01\n" + + " GetFeatureSubgraphsByFeatureFlag\x12=.wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest\x1a>.wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse\"\x00\x12|\n" + + "\x13GetFeatureSubgraphs\x120.wg.cosmo.platform.v1.GetFeatureSubgraphsRequest\x1a1.wg.cosmo.platform.v1.GetFeatureSubgraphsResponse\"\x00\x12\xa0\x01\n" + + "\x1fGetFeatureFlagsByFederatedGraph\x12<.wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest\x1a=.wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse\"\x00\x12\xd9\x01\n" + + "2GetFeatureFlagsInLatestCompositionByFederatedGraph\x12O.wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest\x1aP.wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse\"\x00\x12\xac\x01\n" + + "#GetFeatureSubgraphsByFederatedGraph\x12@.wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest\x1aA.wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse\"\x00\x12\x82\x01\n" + + "\x15GetFederatedGraphById\x122.wg.cosmo.platform.v1.GetFederatedGraphByIdRequest\x1a3.wg.cosmo.platform.v1.GetFederatedGraphByIdResponse\"\x00\x12p\n" + + "\x0fGetSubgraphById\x12,.wg.cosmo.platform.v1.GetSubgraphByIdRequest\x1a-.wg.cosmo.platform.v1.GetSubgraphByIdResponse\"\x00\x12\x8b\x01\n" + + "\x18PushCacheWarmerOperation\x125.wg.cosmo.platform.v1.PushCacheWarmerOperationRequest\x1a6.wg.cosmo.platform.v1.PushCacheWarmerOperationResponse\"\x00\x12\x8b\x01\n" + + "\x18GetCacheWarmerOperations\x125.wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest\x1a6.wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse\"\x00\x12\x97\x01\n" + + "\x1cComputeCacheWarmerOperations\x129.wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest\x1a:.wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse\"\x00\x12\x7f\n" + + "\x14ConfigureCacheWarmer\x121.wg.cosmo.platform.v1.ConfigureCacheWarmerRequest\x1a2.wg.cosmo.platform.v1.ConfigureCacheWarmerResponse\"\x00\x12\x7f\n" + + "\x14GetCacheWarmerConfig\x121.wg.cosmo.platform.v1.GetCacheWarmerConfigRequest\x1a2.wg.cosmo.platform.v1.GetCacheWarmerConfigResponse\"\x00\x12\x91\x01\n" + + "\x1aDeleteCacheWarmerOperation\x127.wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest\x1a8.wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse\"\x00\x12\xa3\x01\n" + + " GetSubgraphCheckExtensionsConfig\x12=.wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest\x1a>.wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse\"\x00\x12\xa3\x01\n" + + " ConfigureSubgraphCheckExtensions\x12=.wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest\x1a>.wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse\"\x00\x12p\n" + + "\x0fGetBillingPlans\x12,.wg.cosmo.platform.v1.GetBillingPlansRequest\x1a-.wg.cosmo.platform.v1.GetBillingPlansResponse\"\x00\x12\x82\x01\n" + + "\x15CreateCheckoutSession\x122.wg.cosmo.platform.v1.CreateCheckoutSessionRequest\x1a3.wg.cosmo.platform.v1.CreateCheckoutSessionResponse\"\x00\x12\x91\x01\n" + + "\x1aCreateBillingPortalSession\x127.wg.cosmo.platform.v1.CreateBillingPortalSessionRequest\x1a8.wg.cosmo.platform.v1.CreateBillingPortalSessionResponse\"\x00\x12d\n" + + "\vUpgradePlan\x12(.wg.cosmo.platform.v1.UpgradePlanRequest\x1a).wg.cosmo.platform.v1.UpgradePlanResponse\"\x00\x12\xa0\x01\n" + + "\x1fListRouterCompatibilityVersions\x12<.wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest\x1a=.wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse\"\x00\x12\xa9\x01\n" + + "\"SetGraphRouterCompatibilityVersion\x12?.wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest\x1a@.wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse\"\x00\x12m\n" + + "\x0eCreateProposal\x12+.wg.cosmo.platform.v1.CreateProposalRequest\x1a,.wg.cosmo.platform.v1.CreateProposalResponse\"\x00\x12d\n" + + "\vGetProposal\x12(.wg.cosmo.platform.v1.GetProposalRequest\x1a).wg.cosmo.platform.v1.GetProposalResponse\"\x00\x12m\n" + + "\x0eUpdateProposal\x12+.wg.cosmo.platform.v1.UpdateProposalRequest\x1a,.wg.cosmo.platform.v1.UpdateProposalResponse\"\x00\x12\x94\x01\n" + + "\x1bEnableProposalsForNamespace\x128.wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest\x1a9.wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse\"\x00\x12\xa3\x01\n" + + " ConfigureNamespaceProposalConfig\x12=.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest\x1a>.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse\"\x00\x12\x91\x01\n" + + "\x1aGetNamespaceProposalConfig\x127.wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest\x1a8.wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse\"\x00\x12\x94\x01\n" + + "\x1bUpdateNamespaceLoginMethods\x128.wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest\x1a9.wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse\"\x00\x12\x8e\x01\n" + + "\x19ListNamespaceLoginMethods\x126.wg.cosmo.platform.v1.ListNamespaceLoginMethodsRequest\x1a7.wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse\"\x00\x12\x94\x01\n" + + "\x1bGetOrganizationLoginMethods\x128.wg.cosmo.platform.v1.GetOrganizationLoginMethodsRequest\x1a9.wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse\"\x00\x12\x9d\x01\n" + + "\x1eUpdateOrganizationLoginMethods\x12;.wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsRequest\x1a<.wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse\"\x00\x12\x97\x01\n" + + "\x1cGetProposalsByFederatedGraph\x129.wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest\x1a:.wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse\"\x00\x12v\n" + + "\x11GetProposalChecks\x12..wg.cosmo.platform.v1.GetProposalChecksRequest\x1a/.wg.cosmo.platform.v1.GetProposalChecksResponse\"\x00\x12j\n" + + "\rGetOperations\x12*.wg.cosmo.platform.v1.GetOperationsRequest\x1a+.wg.cosmo.platform.v1.GetOperationsResponse\"\x00\x12\x88\x01\n" + + "\x17GetClientsFromAnalytics\x124.wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest\x1a5.wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse\"\x00\x12|\n" + + "\x13GetOperationClients\x120.wg.cosmo.platform.v1.GetOperationClientsRequest\x1a1.wg.cosmo.platform.v1.GetOperationClientsResponse\"\x00\x12\x97\x01\n" + + "\x1cGetOperationDeprecatedFields\x129.wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest\x1a:.wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse\"\x00\x12\x91\x01\n" + + "\x1aValidateAndFetchPluginData\x127.wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest\x1a8.wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse\"\x00\x12g\n" + + "\fLinkSubgraph\x12).wg.cosmo.platform.v1.LinkSubgraphRequest\x1a*.wg.cosmo.platform.v1.LinkSubgraphResponse\"\x00\x12m\n" + + "\x0eUnlinkSubgraph\x12+.wg.cosmo.platform.v1.UnlinkSubgraphRequest\x1a,.wg.cosmo.platform.v1.UnlinkSubgraphResponse\"\x00\x12\x88\x01\n" + + "\x17VerifyAPIKeyGraphAccess\x124.wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest\x1a5.wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse\"\x00\x12m\n" + + "\x0eRecomposeGraph\x12+.wg.cosmo.platform.v1.RecomposeGraphRequest\x1a,.wg.cosmo.platform.v1.RecomposeGraphResponse\"\x00\x12\x7f\n" + + "\x14RecomposeFeatureFlag\x121.wg.cosmo.platform.v1.RecomposeFeatureFlagRequest\x1a2.wg.cosmo.platform.v1.RecomposeFeatureFlagResponse\"\x00\x12j\n" + + "\rGetOnboarding\x12*.wg.cosmo.platform.v1.GetOnboardingRequest\x1a+.wg.cosmo.platform.v1.GetOnboardingResponse\"\x00\x12s\n" + + "\x10CreateOnboarding\x12-.wg.cosmo.platform.v1.CreateOnboardingRequest\x1a..wg.cosmo.platform.v1.CreateOnboardingResponse\"\x00\x12s\n" + + "\x10FinishOnboarding\x12-.wg.cosmo.platform.v1.FinishOnboardingRequest\x1a..wg.cosmo.platform.v1.FinishOnboardingResponse\"\x00B\xef\x01\n" + + "\x18com.wg.cosmo.platform.v1B\rPlatformProtoP\x01ZQgithub.com/wundergraph/cosmo/connect-go/gen/proto/wg/cosmo/platform/v1;platformv1\xa2\x02\x03WCP\xaa\x02\x14Wg.Cosmo.Platform.V1\xca\x02\x14Wg\\Cosmo\\Platform\\V1\xe2\x02 Wg\\Cosmo\\Platform\\V1\\GPBMetadata\xea\x02\x17Wg::Cosmo::Platform::V1b\x06proto3" var ( file_wg_cosmo_platform_v1_platform_proto_rawDescOnce sync.Once - file_wg_cosmo_platform_v1_platform_proto_rawDescData = file_wg_cosmo_platform_v1_platform_proto_rawDesc + file_wg_cosmo_platform_v1_platform_proto_rawDescData []byte ) func file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP() []byte { file_wg_cosmo_platform_v1_platform_proto_rawDescOnce.Do(func() { - file_wg_cosmo_platform_v1_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_wg_cosmo_platform_v1_platform_proto_rawDescData) + file_wg_cosmo_platform_v1_platform_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_wg_cosmo_platform_v1_platform_proto_rawDesc), len(file_wg_cosmo_platform_v1_platform_proto_rawDesc))) }) return file_wg_cosmo_platform_v1_platform_proto_rawDescData } -var file_wg_cosmo_platform_v1_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 15) -var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 472) +var file_wg_cosmo_platform_v1_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 504) var file_wg_cosmo_platform_v1_platform_proto_goTypes = []any{ - (LintSeverity)(0), // 0: wg.cosmo.platform.v1.LintSeverity - (SubgraphType)(0), // 1: wg.cosmo.platform.v1.SubgraphType - (AnalyticsViewGroupName)(0), // 2: wg.cosmo.platform.v1.AnalyticsViewGroupName - (CustomOptions)(0), // 3: wg.cosmo.platform.v1.CustomOptions - (Unit)(0), // 4: wg.cosmo.platform.v1.Unit - (AnalyticsViewFilterOperator)(0), // 5: wg.cosmo.platform.v1.AnalyticsViewFilterOperator - (ExpiresAt)(0), // 6: wg.cosmo.platform.v1.ExpiresAt - (PublishedOperationStatus)(0), // 7: wg.cosmo.platform.v1.PublishedOperationStatus - (IntegrationType)(0), // 8: wg.cosmo.platform.v1.IntegrationType - (Feature)(0), // 9: wg.cosmo.platform.v1.Feature - (ProposalOrigin)(0), // 10: wg.cosmo.platform.v1.ProposalOrigin - (ProposalNamingConvention)(0), // 11: wg.cosmo.platform.v1.ProposalNamingConvention - (OperationsFetchBasedOn)(0), // 12: wg.cosmo.platform.v1.OperationsFetchBasedOn - (SortDirection)(0), // 13: wg.cosmo.platform.v1.SortDirection - (GetOperationsResponse_OperationType)(0), // 14: wg.cosmo.platform.v1.GetOperationsResponse.OperationType - (*Label)(nil), // 15: wg.cosmo.platform.v1.Label - (*Response)(nil), // 16: wg.cosmo.platform.v1.Response - (*ResponseStatus)(nil), // 17: wg.cosmo.platform.v1.ResponseStatus - (*PublishMonographRequest)(nil), // 18: wg.cosmo.platform.v1.PublishMonographRequest - (*PublishMonographResponse)(nil), // 19: wg.cosmo.platform.v1.PublishMonographResponse - (*ProtoInput)(nil), // 20: wg.cosmo.platform.v1.ProtoInput - (*PublishFederatedSubgraphRequest)(nil), // 21: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest - (*PublishFederatedSubgraphResponse)(nil), // 22: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse - (*SubgraphPublishStats)(nil), // 23: wg.cosmo.platform.v1.SubgraphPublishStats - (*GitInfo)(nil), // 24: wg.cosmo.platform.v1.GitInfo - (*VCSContext)(nil), // 25: wg.cosmo.platform.v1.VCSContext - (*CheckSubgraphSchemaRequest)(nil), // 26: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest - (*FixSubgraphSchemaRequest)(nil), // 27: wg.cosmo.platform.v1.FixSubgraphSchemaRequest - (*CreateMonographRequest)(nil), // 28: wg.cosmo.platform.v1.CreateMonographRequest - (*CreateMonographResponse)(nil), // 29: wg.cosmo.platform.v1.CreateMonographResponse - (*CreateFederatedGraphRequest)(nil), // 30: wg.cosmo.platform.v1.CreateFederatedGraphRequest - (*CreateFederatedSubgraphRequest)(nil), // 31: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest - (*DeleteFederatedGraphRequest)(nil), // 32: wg.cosmo.platform.v1.DeleteFederatedGraphRequest - (*DeleteMonographRequest)(nil), // 33: wg.cosmo.platform.v1.DeleteMonographRequest - (*DeleteMonographResponse)(nil), // 34: wg.cosmo.platform.v1.DeleteMonographResponse - (*DeleteFederatedSubgraphRequest)(nil), // 35: wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest - (*SchemaChange)(nil), // 36: wg.cosmo.platform.v1.SchemaChange - (*FederatedGraphSchemaChange)(nil), // 37: wg.cosmo.platform.v1.FederatedGraphSchemaChange - (*CompositionError)(nil), // 38: wg.cosmo.platform.v1.CompositionError - (*CompositionWarning)(nil), // 39: wg.cosmo.platform.v1.CompositionWarning - (*DeploymentError)(nil), // 40: wg.cosmo.platform.v1.DeploymentError - (*CheckOperationUsageStats)(nil), // 41: wg.cosmo.platform.v1.CheckOperationUsageStats - (*CheckedFederatedGraphs)(nil), // 42: wg.cosmo.platform.v1.CheckedFederatedGraphs - (*LintLocation)(nil), // 43: wg.cosmo.platform.v1.LintLocation - (*LintIssue)(nil), // 44: wg.cosmo.platform.v1.LintIssue - (*GraphPruningIssue)(nil), // 45: wg.cosmo.platform.v1.GraphPruningIssue - (*CheckSubgraphSchemaResponse)(nil), // 46: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse - (*SchemaCheckCounts)(nil), // 47: wg.cosmo.platform.v1.SchemaCheckCounts - (*FixSubgraphSchemaResponse)(nil), // 48: wg.cosmo.platform.v1.FixSubgraphSchemaResponse - (*CreateFederatedGraphResponse)(nil), // 49: wg.cosmo.platform.v1.CreateFederatedGraphResponse - (*CreateFederatedSubgraphResponse)(nil), // 50: wg.cosmo.platform.v1.CreateFederatedSubgraphResponse - (*DeleteFederatedSubgraphResponse)(nil), // 51: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse - (*DeleteFederatedGraphResponse)(nil), // 52: wg.cosmo.platform.v1.DeleteFederatedGraphResponse - (*GetFederatedGraphsRequest)(nil), // 53: wg.cosmo.platform.v1.GetFederatedGraphsRequest - (*Contract)(nil), // 54: wg.cosmo.platform.v1.Contract - (*FederatedGraph)(nil), // 55: wg.cosmo.platform.v1.FederatedGraph - (*GetFederatedGraphsResponse)(nil), // 56: wg.cosmo.platform.v1.GetFederatedGraphsResponse - (*GetFederatedGraphsBySubgraphLabelsRequest)(nil), // 57: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest - (*GetFederatedGraphsBySubgraphLabelsResponse)(nil), // 58: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse - (*GetSubgraphsRequest)(nil), // 59: wg.cosmo.platform.v1.GetSubgraphsRequest - (*Subgraph)(nil), // 60: wg.cosmo.platform.v1.Subgraph - (*GetSubgraphsResponse)(nil), // 61: wg.cosmo.platform.v1.GetSubgraphsResponse - (*GetFederatedGraphByNameRequest)(nil), // 62: wg.cosmo.platform.v1.GetFederatedGraphByNameRequest - (*GetFederatedGraphByNameResponse)(nil), // 63: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse - (*GetFederatedGraphSDLByNameRequest)(nil), // 64: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest - (*GetFederatedGraphSDLByNameResponse)(nil), // 65: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse - (*GetSubgraphByNameRequest)(nil), // 66: wg.cosmo.platform.v1.GetSubgraphByNameRequest - (*GetSubgraphByNameResponse)(nil), // 67: wg.cosmo.platform.v1.GetSubgraphByNameResponse - (*GetSubgraphSDLFromLatestCompositionRequest)(nil), // 68: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest - (*GetSubgraphSDLFromLatestCompositionResponse)(nil), // 69: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse - (*GetLatestSubgraphSDLRequest)(nil), // 70: wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest - (*GetLatestSubgraphSDLResponse)(nil), // 71: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse - (*GetChecksByFederatedGraphNameFilters)(nil), // 72: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters - (*GetChecksByFederatedGraphNameRequest)(nil), // 73: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest - (*SchemaCheck)(nil), // 74: wg.cosmo.platform.v1.SchemaCheck - (*GetChecksByFederatedGraphNameResponse)(nil), // 75: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse - (*GetCheckSummaryRequest)(nil), // 76: wg.cosmo.platform.v1.GetCheckSummaryRequest - (*ChangeCounts)(nil), // 77: wg.cosmo.platform.v1.ChangeCounts - (*GetCheckSummaryResponse)(nil), // 78: wg.cosmo.platform.v1.GetCheckSummaryResponse - (*GetCheckOperationsRequest)(nil), // 79: wg.cosmo.platform.v1.GetCheckOperationsRequest - (*GetCheckOperationsResponse)(nil), // 80: wg.cosmo.platform.v1.GetCheckOperationsResponse - (*GetOperationContentRequest)(nil), // 81: wg.cosmo.platform.v1.GetOperationContentRequest - (*GetOperationContentResponse)(nil), // 82: wg.cosmo.platform.v1.GetOperationContentResponse - (*GetFederatedGraphChangelogRequest)(nil), // 83: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest - (*FederatedGraphChangelog)(nil), // 84: wg.cosmo.platform.v1.FederatedGraphChangelog - (*FederatedGraphChangelogOutput)(nil), // 85: wg.cosmo.platform.v1.FederatedGraphChangelogOutput - (*GetFederatedGraphChangelogResponse)(nil), // 86: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse - (*GetFederatedResponse)(nil), // 87: wg.cosmo.platform.v1.GetFederatedResponse - (*UpdateSubgraphRequest)(nil), // 88: wg.cosmo.platform.v1.UpdateSubgraphRequest - (*UpdateSubgraphResponse)(nil), // 89: wg.cosmo.platform.v1.UpdateSubgraphResponse - (*UpdateFederatedGraphRequest)(nil), // 90: wg.cosmo.platform.v1.UpdateFederatedGraphRequest - (*UpdateFederatedGraphResponse)(nil), // 91: wg.cosmo.platform.v1.UpdateFederatedGraphResponse - (*UpdateMonographRequest)(nil), // 92: wg.cosmo.platform.v1.UpdateMonographRequest - (*UpdateMonographResponse)(nil), // 93: wg.cosmo.platform.v1.UpdateMonographResponse - (*CheckFederatedGraphRequest)(nil), // 94: wg.cosmo.platform.v1.CheckFederatedGraphRequest - (*CheckFederatedGraphResponse)(nil), // 95: wg.cosmo.platform.v1.CheckFederatedGraphResponse - (*Pagination)(nil), // 96: wg.cosmo.platform.v1.Pagination - (*Sort)(nil), // 97: wg.cosmo.platform.v1.Sort - (*AnalyticsConfig)(nil), // 98: wg.cosmo.platform.v1.AnalyticsConfig - (*AnalyticsFilter)(nil), // 99: wg.cosmo.platform.v1.AnalyticsFilter - (*DateRange)(nil), // 100: wg.cosmo.platform.v1.DateRange - (*GetAnalyticsViewRequest)(nil), // 101: wg.cosmo.platform.v1.GetAnalyticsViewRequest - (*AnalyticsViewResult)(nil), // 102: wg.cosmo.platform.v1.AnalyticsViewResult - (*AnalyticsViewColumn)(nil), // 103: wg.cosmo.platform.v1.AnalyticsViewColumn - (*AnalyticsViewResultFilter)(nil), // 104: wg.cosmo.platform.v1.AnalyticsViewResultFilter - (*AnalyticsViewResultFilterOption)(nil), // 105: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption - (*AnalyticsViewRow)(nil), // 106: wg.cosmo.platform.v1.AnalyticsViewRow - (*AnalyticsViewRowValue)(nil), // 107: wg.cosmo.platform.v1.AnalyticsViewRowValue - (*GetAnalyticsViewResponse)(nil), // 108: wg.cosmo.platform.v1.GetAnalyticsViewResponse - (*GetDashboardAnalyticsViewRequest)(nil), // 109: wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest - (*RequestSeriesItem)(nil), // 110: wg.cosmo.platform.v1.RequestSeriesItem - (*OperationRequestCount)(nil), // 111: wg.cosmo.platform.v1.OperationRequestCount - (*FederatedGraphMetrics)(nil), // 112: wg.cosmo.platform.v1.FederatedGraphMetrics - (*SubgraphMetrics)(nil), // 113: wg.cosmo.platform.v1.SubgraphMetrics - (*GetDashboardAnalyticsViewResponse)(nil), // 114: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse - (*CreateFederatedGraphTokenRequest)(nil), // 115: wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest - (*CreateFederatedGraphTokenResponse)(nil), // 116: wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse - (*OrganizationGroupRule)(nil), // 117: wg.cosmo.platform.v1.OrganizationGroupRule - (*OrganizationGroup)(nil), // 118: wg.cosmo.platform.v1.OrganizationGroup - (*CreateOrganizationGroupRequest)(nil), // 119: wg.cosmo.platform.v1.CreateOrganizationGroupRequest - (*CreateOrganizationGroupResponse)(nil), // 120: wg.cosmo.platform.v1.CreateOrganizationGroupResponse - (*GetOrganizationGroupsRequest)(nil), // 121: wg.cosmo.platform.v1.GetOrganizationGroupsRequest - (*GetOrganizationGroupsResponse)(nil), // 122: wg.cosmo.platform.v1.GetOrganizationGroupsResponse - (*GetOrganizationGroupMembersRequest)(nil), // 123: wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest - (*GetOrganizationGroupMembersResponse)(nil), // 124: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse - (*UpdateOrganizationGroupRequest)(nil), // 125: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest - (*UpdateOrganizationGroupResponse)(nil), // 126: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse - (*DeleteOrganizationGroupRequest)(nil), // 127: wg.cosmo.platform.v1.DeleteOrganizationGroupRequest - (*DeleteOrganizationGroupResponse)(nil), // 128: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse - (*OrgMember)(nil), // 129: wg.cosmo.platform.v1.OrgMember - (*PendingOrgInvitation)(nil), // 130: wg.cosmo.platform.v1.PendingOrgInvitation - (*GetPendingOrganizationMembersRequest)(nil), // 131: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest - (*GetPendingOrganizationMembersResponse)(nil), // 132: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse - (*GetOrganizationMembersRequest)(nil), // 133: wg.cosmo.platform.v1.GetOrganizationMembersRequest - (*GetOrganizationMembersResponse)(nil), // 134: wg.cosmo.platform.v1.GetOrganizationMembersResponse - (*InviteUserRequest)(nil), // 135: wg.cosmo.platform.v1.InviteUserRequest - (*InviteUserResponse)(nil), // 136: wg.cosmo.platform.v1.InviteUserResponse - (*APIKey)(nil), // 137: wg.cosmo.platform.v1.APIKey - (*GetAPIKeysRequest)(nil), // 138: wg.cosmo.platform.v1.GetAPIKeysRequest - (*GetAPIKeysResponse)(nil), // 139: wg.cosmo.platform.v1.GetAPIKeysResponse - (*CreateAPIKeyRequest)(nil), // 140: wg.cosmo.platform.v1.CreateAPIKeyRequest - (*CreateAPIKeyResponse)(nil), // 141: wg.cosmo.platform.v1.CreateAPIKeyResponse - (*DeleteAPIKeyRequest)(nil), // 142: wg.cosmo.platform.v1.DeleteAPIKeyRequest - (*DeleteAPIKeyResponse)(nil), // 143: wg.cosmo.platform.v1.DeleteAPIKeyResponse - (*UpdateAPIKeyRequest)(nil), // 144: wg.cosmo.platform.v1.UpdateAPIKeyRequest - (*UpdateAPIKeyResponse)(nil), // 145: wg.cosmo.platform.v1.UpdateAPIKeyResponse - (*RemoveOrganizationMemberRequest)(nil), // 146: wg.cosmo.platform.v1.RemoveOrganizationMemberRequest - (*RemoveOrganizationMemberResponse)(nil), // 147: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse - (*RemoveInvitationRequest)(nil), // 148: wg.cosmo.platform.v1.RemoveInvitationRequest - (*RemoveInvitationResponse)(nil), // 149: wg.cosmo.platform.v1.RemoveInvitationResponse - (*MigrateFromApolloRequest)(nil), // 150: wg.cosmo.platform.v1.MigrateFromApolloRequest - (*MigrateFromApolloResponse)(nil), // 151: wg.cosmo.platform.v1.MigrateFromApolloResponse - (*Span)(nil), // 152: wg.cosmo.platform.v1.Span - (*GetTraceRequest)(nil), // 153: wg.cosmo.platform.v1.GetTraceRequest - (*GetTraceResponse)(nil), // 154: wg.cosmo.platform.v1.GetTraceResponse - (*WhoAmIRequest)(nil), // 155: wg.cosmo.platform.v1.WhoAmIRequest - (*WhoAmIResponse)(nil), // 156: wg.cosmo.platform.v1.WhoAmIResponse - (*RouterToken)(nil), // 157: wg.cosmo.platform.v1.RouterToken - (*GenerateRouterTokenRequest)(nil), // 158: wg.cosmo.platform.v1.GenerateRouterTokenRequest - (*GenerateRouterTokenResponse)(nil), // 159: wg.cosmo.platform.v1.GenerateRouterTokenResponse - (*GetRouterTokensRequest)(nil), // 160: wg.cosmo.platform.v1.GetRouterTokensRequest - (*GetRouterTokensResponse)(nil), // 161: wg.cosmo.platform.v1.GetRouterTokensResponse - (*DeleteRouterTokenRequest)(nil), // 162: wg.cosmo.platform.v1.DeleteRouterTokenRequest - (*DeleteRouterTokenResponse)(nil), // 163: wg.cosmo.platform.v1.DeleteRouterTokenResponse - (*PersistedOperation)(nil), // 164: wg.cosmo.platform.v1.PersistedOperation - (*PublishPersistedOperationsRequest)(nil), // 165: wg.cosmo.platform.v1.PublishPersistedOperationsRequest - (*PublishedOperation)(nil), // 166: wg.cosmo.platform.v1.PublishedOperation - (*PublishPersistedOperationsResponse)(nil), // 167: wg.cosmo.platform.v1.PublishPersistedOperationsResponse - (*DeletePersistedOperationRequest)(nil), // 168: wg.cosmo.platform.v1.DeletePersistedOperationRequest - (*DeletePersistedOperationResponse)(nil), // 169: wg.cosmo.platform.v1.DeletePersistedOperationResponse - (*CheckPersistedOperationTrafficRequest)(nil), // 170: wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest - (*CheckPersistedOperationTrafficResponse)(nil), // 171: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse - (*GetPersistedOperationsRequest)(nil), // 172: wg.cosmo.platform.v1.GetPersistedOperationsRequest - (*GetPersistedOperationsResponse)(nil), // 173: wg.cosmo.platform.v1.GetPersistedOperationsResponse - (*Header)(nil), // 174: wg.cosmo.platform.v1.Header - (*CreateOrganizationWebhookConfigRequest)(nil), // 175: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest - (*CreateOrganizationWebhookConfigResponse)(nil), // 176: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse - (*GetOrganizationWebhookConfigsRequest)(nil), // 177: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest - (*GetOrganizationWebhookConfigsResponse)(nil), // 178: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse - (*GetOrganizationWebhookMetaRequest)(nil), // 179: wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest - (*GetOrganizationWebhookMetaResponse)(nil), // 180: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse - (*UpdateOrganizationWebhookConfigRequest)(nil), // 181: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest - (*UpdateOrganizationWebhookConfigResponse)(nil), // 182: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse - (*DeleteOrganizationWebhookConfigRequest)(nil), // 183: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest - (*DeleteOrganizationWebhookConfigResponse)(nil), // 184: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse - (*CreateIntegrationRequest)(nil), // 185: wg.cosmo.platform.v1.CreateIntegrationRequest - (*CreateIntegrationResponse)(nil), // 186: wg.cosmo.platform.v1.CreateIntegrationResponse - (*GetOrganizationIntegrationsRequest)(nil), // 187: wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest - (*SlackIntegrationConfig)(nil), // 188: wg.cosmo.platform.v1.SlackIntegrationConfig - (*IntegrationConfig)(nil), // 189: wg.cosmo.platform.v1.IntegrationConfig - (*Integration)(nil), // 190: wg.cosmo.platform.v1.Integration - (*GetOrganizationIntegrationsResponse)(nil), // 191: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse - (*UpdateIntegrationConfigRequest)(nil), // 192: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest - (*UpdateIntegrationConfigResponse)(nil), // 193: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse - (*DeleteIntegrationRequest)(nil), // 194: wg.cosmo.platform.v1.DeleteIntegrationRequest - (*DeleteIntegrationResponse)(nil), // 195: wg.cosmo.platform.v1.DeleteIntegrationResponse - (*DeleteOrganizationRequest)(nil), // 196: wg.cosmo.platform.v1.DeleteOrganizationRequest - (*DeleteOrganizationResponse)(nil), // 197: wg.cosmo.platform.v1.DeleteOrganizationResponse - (*RestoreOrganizationRequest)(nil), // 198: wg.cosmo.platform.v1.RestoreOrganizationRequest - (*RestoreOrganizationResponse)(nil), // 199: wg.cosmo.platform.v1.RestoreOrganizationResponse - (*LeaveOrganizationRequest)(nil), // 200: wg.cosmo.platform.v1.LeaveOrganizationRequest - (*LeaveOrganizationResponse)(nil), // 201: wg.cosmo.platform.v1.LeaveOrganizationResponse - (*UpdateOrganizationDetailsRequest)(nil), // 202: wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest - (*UpdateOrganizationDetailsResponse)(nil), // 203: wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse - (*UpdateOrgMemberGroupRequest)(nil), // 204: wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest - (*UpdateOrgMemberGroupResponse)(nil), // 205: wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse - (*CreateOrganizationRequest)(nil), // 206: wg.cosmo.platform.v1.CreateOrganizationRequest - (*CreateOrganizationResponse)(nil), // 207: wg.cosmo.platform.v1.CreateOrganizationResponse - (*Organization)(nil), // 208: wg.cosmo.platform.v1.Organization - (*GetOrganizationBySlugRequest)(nil), // 209: wg.cosmo.platform.v1.GetOrganizationBySlugRequest - (*GetOrganizationBySlugResponse)(nil), // 210: wg.cosmo.platform.v1.GetOrganizationBySlugResponse - (*GetBillingPlansRequest)(nil), // 211: wg.cosmo.platform.v1.GetBillingPlansRequest - (*GetBillingPlansResponse)(nil), // 212: wg.cosmo.platform.v1.GetBillingPlansResponse - (*CreateCheckoutSessionRequest)(nil), // 213: wg.cosmo.platform.v1.CreateCheckoutSessionRequest - (*CreateCheckoutSessionResponse)(nil), // 214: wg.cosmo.platform.v1.CreateCheckoutSessionResponse - (*CreateBillingPortalSessionRequest)(nil), // 215: wg.cosmo.platform.v1.CreateBillingPortalSessionRequest - (*CreateBillingPortalSessionResponse)(nil), // 216: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse - (*UpgradePlanRequest)(nil), // 217: wg.cosmo.platform.v1.UpgradePlanRequest - (*UpgradePlanResponse)(nil), // 218: wg.cosmo.platform.v1.UpgradePlanResponse - (*GetGraphMetricsRequest)(nil), // 219: wg.cosmo.platform.v1.GetGraphMetricsRequest - (*GetGraphMetricsResponse)(nil), // 220: wg.cosmo.platform.v1.GetGraphMetricsResponse - (*MetricsDashboardMetric)(nil), // 221: wg.cosmo.platform.v1.MetricsDashboardMetric - (*MetricsTopItem)(nil), // 222: wg.cosmo.platform.v1.MetricsTopItem - (*MetricsSeriesItem)(nil), // 223: wg.cosmo.platform.v1.MetricsSeriesItem - (*MetricsDashboard)(nil), // 224: wg.cosmo.platform.v1.MetricsDashboard - (*GetMetricsErrorRateRequest)(nil), // 225: wg.cosmo.platform.v1.GetMetricsErrorRateRequest - (*GetMetricsErrorRateResponse)(nil), // 226: wg.cosmo.platform.v1.GetMetricsErrorRateResponse - (*MetricsErrorRateSeriesItem)(nil), // 227: wg.cosmo.platform.v1.MetricsErrorRateSeriesItem - (*GetSubgraphMetricsRequest)(nil), // 228: wg.cosmo.platform.v1.GetSubgraphMetricsRequest - (*GetSubgraphMetricsResponse)(nil), // 229: wg.cosmo.platform.v1.GetSubgraphMetricsResponse - (*GetSubgraphMetricsErrorRateRequest)(nil), // 230: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest - (*GetSubgraphMetricsErrorRateResponse)(nil), // 231: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse - (*ForceCheckSuccessRequest)(nil), // 232: wg.cosmo.platform.v1.ForceCheckSuccessRequest - (*ForceCheckSuccessResponse)(nil), // 233: wg.cosmo.platform.v1.ForceCheckSuccessResponse - (*ToggleChangeOverridesForAllOperationsRequest)(nil), // 234: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest - (*ToggleChangeOverridesForAllOperationsResponse)(nil), // 235: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse - (*CreateIgnoreOverridesForAllOperationsRequest)(nil), // 236: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest - (*CreateIgnoreOverridesForAllOperationsResponse)(nil), // 237: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse - (*OverrideChange)(nil), // 238: wg.cosmo.platform.v1.OverrideChange - (*CreateOperationOverridesRequest)(nil), // 239: wg.cosmo.platform.v1.CreateOperationOverridesRequest - (*CreateOperationOverridesResponse)(nil), // 240: wg.cosmo.platform.v1.CreateOperationOverridesResponse - (*CreateOperationIgnoreAllOverrideRequest)(nil), // 241: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest - (*CreateOperationIgnoreAllOverrideResponse)(nil), // 242: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse - (*RemoveOperationOverridesRequest)(nil), // 243: wg.cosmo.platform.v1.RemoveOperationOverridesRequest - (*RemoveOperationOverridesResponse)(nil), // 244: wg.cosmo.platform.v1.RemoveOperationOverridesResponse - (*RemoveOperationIgnoreAllOverrideRequest)(nil), // 245: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest - (*RemoveOperationIgnoreAllOverrideResponse)(nil), // 246: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse - (*GetOperationOverridesRequest)(nil), // 247: wg.cosmo.platform.v1.GetOperationOverridesRequest - (*GetOperationOverridesResponse)(nil), // 248: wg.cosmo.platform.v1.GetOperationOverridesResponse - (*GetAllOverridesRequest)(nil), // 249: wg.cosmo.platform.v1.GetAllOverridesRequest - (*GetAllOverridesResponse)(nil), // 250: wg.cosmo.platform.v1.GetAllOverridesResponse - (*IsGitHubAppInstalledRequest)(nil), // 251: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest - (*IsGitHubAppInstalledResponse)(nil), // 252: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse - (*GroupMapper)(nil), // 253: wg.cosmo.platform.v1.GroupMapper - (*CreateOIDCProviderRequest)(nil), // 254: wg.cosmo.platform.v1.CreateOIDCProviderRequest - (*CreateOIDCProviderResponse)(nil), // 255: wg.cosmo.platform.v1.CreateOIDCProviderResponse - (*GetOIDCProviderRequest)(nil), // 256: wg.cosmo.platform.v1.GetOIDCProviderRequest - (*GetOIDCProviderResponse)(nil), // 257: wg.cosmo.platform.v1.GetOIDCProviderResponse - (*DeleteOIDCProviderRequest)(nil), // 258: wg.cosmo.platform.v1.DeleteOIDCProviderRequest - (*DeleteOIDCProviderResponse)(nil), // 259: wg.cosmo.platform.v1.DeleteOIDCProviderResponse - (*UpdateIDPMappersRequest)(nil), // 260: wg.cosmo.platform.v1.UpdateIDPMappersRequest - (*UpdateIDPMappersResponse)(nil), // 261: wg.cosmo.platform.v1.UpdateIDPMappersResponse - (*GetOrganizationRequestsCountRequest)(nil), // 262: wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest - (*GetOrganizationRequestsCountResponse)(nil), // 263: wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse - (*OrganizationInvite)(nil), // 264: wg.cosmo.platform.v1.OrganizationInvite - (*GetAuditLogsRequest)(nil), // 265: wg.cosmo.platform.v1.GetAuditLogsRequest - (*AuditLog)(nil), // 266: wg.cosmo.platform.v1.AuditLog - (*GetAuditLogsResponse)(nil), // 267: wg.cosmo.platform.v1.GetAuditLogsResponse - (*GetInvitationsRequest)(nil), // 268: wg.cosmo.platform.v1.GetInvitationsRequest - (*GetInvitationsResponse)(nil), // 269: wg.cosmo.platform.v1.GetInvitationsResponse - (*AcceptOrDeclineInvitationRequest)(nil), // 270: wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest - (*AcceptOrDeclineInvitationResponse)(nil), // 271: wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse - (*GraphComposition)(nil), // 272: wg.cosmo.platform.v1.GraphComposition - (*GraphCompositionSubgraph)(nil), // 273: wg.cosmo.platform.v1.GraphCompositionSubgraph - (*GetCompositionsRequest)(nil), // 274: wg.cosmo.platform.v1.GetCompositionsRequest - (*GetCompositionsResponse)(nil), // 275: wg.cosmo.platform.v1.GetCompositionsResponse - (*GetCompositionDetailsRequest)(nil), // 276: wg.cosmo.platform.v1.GetCompositionDetailsRequest - (*FeatureFlagComposition)(nil), // 277: wg.cosmo.platform.v1.FeatureFlagComposition - (*GetCompositionDetailsResponse)(nil), // 278: wg.cosmo.platform.v1.GetCompositionDetailsResponse - (*GetSdlBySchemaVersionRequest)(nil), // 279: wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest - (*GetSdlBySchemaVersionResponse)(nil), // 280: wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse - (*GetChangelogBySchemaVersionRequest)(nil), // 281: wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest - (*GetChangelogBySchemaVersionResponse)(nil), // 282: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse - (*GetUserAccessibleResourcesRequest)(nil), // 283: wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest - (*GetUserAccessibleResourcesResponse)(nil), // 284: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse - (*UpdateFeatureSettingsRequest)(nil), // 285: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest - (*UpdateFeatureSettingsResponse)(nil), // 286: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse - (*GetSubgraphMembersRequest)(nil), // 287: wg.cosmo.platform.v1.GetSubgraphMembersRequest - (*SubgraphMember)(nil), // 288: wg.cosmo.platform.v1.SubgraphMember - (*GetSubgraphMembersResponse)(nil), // 289: wg.cosmo.platform.v1.GetSubgraphMembersResponse - (*AddReadmeRequest)(nil), // 290: wg.cosmo.platform.v1.AddReadmeRequest - (*AddReadmeResponse)(nil), // 291: wg.cosmo.platform.v1.AddReadmeResponse - (*Router)(nil), // 292: wg.cosmo.platform.v1.Router - (*GetRoutersRequest)(nil), // 293: wg.cosmo.platform.v1.GetRoutersRequest - (*GetRoutersResponse)(nil), // 294: wg.cosmo.platform.v1.GetRoutersResponse - (*ClientInfo)(nil), // 295: wg.cosmo.platform.v1.ClientInfo - (*GetClientsRequest)(nil), // 296: wg.cosmo.platform.v1.GetClientsRequest - (*GetClientsResponse)(nil), // 297: wg.cosmo.platform.v1.GetClientsResponse - (*GetFieldUsageRequest)(nil), // 298: wg.cosmo.platform.v1.GetFieldUsageRequest - (*ClientWithOperations)(nil), // 299: wg.cosmo.platform.v1.ClientWithOperations - (*FieldUsageMeta)(nil), // 300: wg.cosmo.platform.v1.FieldUsageMeta - (*GetFieldUsageResponse)(nil), // 301: wg.cosmo.platform.v1.GetFieldUsageResponse - (*CreateNamespaceRequest)(nil), // 302: wg.cosmo.platform.v1.CreateNamespaceRequest - (*CreateNamespaceResponse)(nil), // 303: wg.cosmo.platform.v1.CreateNamespaceResponse - (*DeleteNamespaceRequest)(nil), // 304: wg.cosmo.platform.v1.DeleteNamespaceRequest - (*DeleteNamespaceResponse)(nil), // 305: wg.cosmo.platform.v1.DeleteNamespaceResponse - (*RenameNamespaceRequest)(nil), // 306: wg.cosmo.platform.v1.RenameNamespaceRequest - (*RenameNamespaceResponse)(nil), // 307: wg.cosmo.platform.v1.RenameNamespaceResponse - (*Namespace)(nil), // 308: wg.cosmo.platform.v1.Namespace - (*GetNamespacesRequest)(nil), // 309: wg.cosmo.platform.v1.GetNamespacesRequest - (*GetNamespacesResponse)(nil), // 310: wg.cosmo.platform.v1.GetNamespacesResponse - (*MoveGraphRequest)(nil), // 311: wg.cosmo.platform.v1.MoveGraphRequest - (*MoveGraphResponse)(nil), // 312: wg.cosmo.platform.v1.MoveGraphResponse - (*GetNamespaceLintConfigRequest)(nil), // 313: wg.cosmo.platform.v1.GetNamespaceLintConfigRequest - (*GetNamespaceLintConfigResponse)(nil), // 314: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse - (*GetNamespaceChecksConfigurationRequest)(nil), // 315: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest - (*GetNamespaceChecksConfigurationResponse)(nil), // 316: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse - (*UpdateNamespaceChecksConfigurationRequest)(nil), // 317: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest - (*UpdateNamespaceChecksConfigurationResponse)(nil), // 318: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse - (*EnableLintingForTheNamespaceRequest)(nil), // 319: wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest - (*EnableLintingForTheNamespaceResponse)(nil), // 320: wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse - (*LintConfig)(nil), // 321: wg.cosmo.platform.v1.LintConfig - (*ConfigureNamespaceLintConfigRequest)(nil), // 322: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest - (*ConfigureNamespaceLintConfigResponse)(nil), // 323: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse - (*EnableGraphPruningRequest)(nil), // 324: wg.cosmo.platform.v1.EnableGraphPruningRequest - (*EnableGraphPruningResponse)(nil), // 325: wg.cosmo.platform.v1.EnableGraphPruningResponse - (*GraphPruningConfig)(nil), // 326: wg.cosmo.platform.v1.GraphPruningConfig - (*ConfigureNamespaceGraphPruningConfigRequest)(nil), // 327: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest - (*ConfigureNamespaceGraphPruningConfigResponse)(nil), // 328: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse - (*GetNamespaceGraphPruningConfigRequest)(nil), // 329: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest - (*GetNamespaceGraphPruningConfigResponse)(nil), // 330: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse - (*MigrateMonographRequest)(nil), // 331: wg.cosmo.platform.v1.MigrateMonographRequest - (*MigrateMonographResponse)(nil), // 332: wg.cosmo.platform.v1.MigrateMonographResponse - (*GetUserAccessiblePermissionsRequest)(nil), // 333: wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest - (*Permission)(nil), // 334: wg.cosmo.platform.v1.Permission - (*GetUserAccessiblePermissionsResponse)(nil), // 335: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse - (*CreateContractRequest)(nil), // 336: wg.cosmo.platform.v1.CreateContractRequest - (*CreateContractResponse)(nil), // 337: wg.cosmo.platform.v1.CreateContractResponse - (*UpdateContractRequest)(nil), // 338: wg.cosmo.platform.v1.UpdateContractRequest - (*UpdateContractResponse)(nil), // 339: wg.cosmo.platform.v1.UpdateContractResponse - (*IsMemberLimitReachedRequest)(nil), // 340: wg.cosmo.platform.v1.IsMemberLimitReachedRequest - (*IsMemberLimitReachedResponse)(nil), // 341: wg.cosmo.platform.v1.IsMemberLimitReachedResponse - (*DeleteUserRequest)(nil), // 342: wg.cosmo.platform.v1.DeleteUserRequest - (*DeleteUserResponse)(nil), // 343: wg.cosmo.platform.v1.DeleteUserResponse - (*CreateFeatureFlagRequest)(nil), // 344: wg.cosmo.platform.v1.CreateFeatureFlagRequest - (*CreateFeatureFlagResponse)(nil), // 345: wg.cosmo.platform.v1.CreateFeatureFlagResponse - (*UpdateFeatureFlagRequest)(nil), // 346: wg.cosmo.platform.v1.UpdateFeatureFlagRequest - (*UpdateFeatureFlagResponse)(nil), // 347: wg.cosmo.platform.v1.UpdateFeatureFlagResponse - (*EnableFeatureFlagRequest)(nil), // 348: wg.cosmo.platform.v1.EnableFeatureFlagRequest - (*EnableFeatureFlagResponse)(nil), // 349: wg.cosmo.platform.v1.EnableFeatureFlagResponse - (*DeleteFeatureFlagRequest)(nil), // 350: wg.cosmo.platform.v1.DeleteFeatureFlagRequest - (*DeleteFeatureFlagResponse)(nil), // 351: wg.cosmo.platform.v1.DeleteFeatureFlagResponse - (*FeatureFlag)(nil), // 352: wg.cosmo.platform.v1.FeatureFlag - (*GetFeatureFlagsRequest)(nil), // 353: wg.cosmo.platform.v1.GetFeatureFlagsRequest - (*GetFeatureFlagsResponse)(nil), // 354: wg.cosmo.platform.v1.GetFeatureFlagsResponse - (*GetFeatureFlagByNameRequest)(nil), // 355: wg.cosmo.platform.v1.GetFeatureFlagByNameRequest - (*GetFeatureFlagByNameResponse)(nil), // 356: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse - (*GetFeatureSubgraphsByFeatureFlagRequest)(nil), // 357: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest - (*GetFeatureSubgraphsByFeatureFlagResponse)(nil), // 358: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse - (*GetFeatureSubgraphsRequest)(nil), // 359: wg.cosmo.platform.v1.GetFeatureSubgraphsRequest - (*GetFeatureSubgraphsResponse)(nil), // 360: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse - (*GetFeatureFlagsByFederatedGraphRequest)(nil), // 361: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest - (*GetFeatureFlagsByFederatedGraphResponse)(nil), // 362: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse - (*GetOrganizationWebhookHistoryRequest)(nil), // 363: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest - (*WebhookDelivery)(nil), // 364: wg.cosmo.platform.v1.WebhookDelivery - (*GetOrganizationWebhookHistoryResponse)(nil), // 365: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse - (*RedeliverWebhookRequest)(nil), // 366: wg.cosmo.platform.v1.RedeliverWebhookRequest - (*RedeliverWebhookResponse)(nil), // 367: wg.cosmo.platform.v1.RedeliverWebhookResponse - (*GetWebhookDeliveryDetailsRequest)(nil), // 368: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest - (*GetWebhookDeliveryDetailsResponse)(nil), // 369: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse - (*CreatePlaygroundScriptRequest)(nil), // 370: wg.cosmo.platform.v1.CreatePlaygroundScriptRequest - (*CreatePlaygroundScriptResponse)(nil), // 371: wg.cosmo.platform.v1.CreatePlaygroundScriptResponse - (*DeletePlaygroundScriptRequest)(nil), // 372: wg.cosmo.platform.v1.DeletePlaygroundScriptRequest - (*DeletePlaygroundScriptResponse)(nil), // 373: wg.cosmo.platform.v1.DeletePlaygroundScriptResponse - (*UpdatePlaygroundScriptRequest)(nil), // 374: wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest - (*UpdatePlaygroundScriptResponse)(nil), // 375: wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse - (*GetPlaygroundScriptsRequest)(nil), // 376: wg.cosmo.platform.v1.GetPlaygroundScriptsRequest - (*PlaygroundScript)(nil), // 377: wg.cosmo.platform.v1.PlaygroundScript - (*GetPlaygroundScriptsResponse)(nil), // 378: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse - (*GetFederatedGraphByIdRequest)(nil), // 379: wg.cosmo.platform.v1.GetFederatedGraphByIdRequest - (*GetFederatedGraphByIdResponse)(nil), // 380: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse - (*GetSubgraphByIdRequest)(nil), // 381: wg.cosmo.platform.v1.GetSubgraphByIdRequest - (*GetSubgraphByIdResponse)(nil), // 382: wg.cosmo.platform.v1.GetSubgraphByIdResponse - (*GetNamespaceRequest)(nil), // 383: wg.cosmo.platform.v1.GetNamespaceRequest - (*GetNamespaceResponse)(nil), // 384: wg.cosmo.platform.v1.GetNamespaceResponse - (*WorkspaceNamespace)(nil), // 385: wg.cosmo.platform.v1.WorkspaceNamespace - (*WorkspaceFederatedGraph)(nil), // 386: wg.cosmo.platform.v1.WorkspaceFederatedGraph - (*WorkspaceSubgraph)(nil), // 387: wg.cosmo.platform.v1.WorkspaceSubgraph - (*GetWorkspaceRequest)(nil), // 388: wg.cosmo.platform.v1.GetWorkspaceRequest - (*GetWorkspaceResponse)(nil), // 389: wg.cosmo.platform.v1.GetWorkspaceResponse - (*PushCacheWarmerOperationRequest)(nil), // 390: wg.cosmo.platform.v1.PushCacheWarmerOperationRequest - (*PushCacheWarmerOperationResponse)(nil), // 391: wg.cosmo.platform.v1.PushCacheWarmerOperationResponse - (*GetCacheWarmerOperationsRequest)(nil), // 392: wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest - (*CacheWarmerOperation)(nil), // 393: wg.cosmo.platform.v1.CacheWarmerOperation - (*GetCacheWarmerOperationsResponse)(nil), // 394: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse - (*ComputeCacheWarmerOperationsRequest)(nil), // 395: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest - (*ComputeCacheWarmerOperationsResponse)(nil), // 396: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse - (*ConfigureCacheWarmerRequest)(nil), // 397: wg.cosmo.platform.v1.ConfigureCacheWarmerRequest - (*ConfigureCacheWarmerResponse)(nil), // 398: wg.cosmo.platform.v1.ConfigureCacheWarmerResponse - (*GetCacheWarmerConfigRequest)(nil), // 399: wg.cosmo.platform.v1.GetCacheWarmerConfigRequest - (*GetCacheWarmerConfigResponse)(nil), // 400: wg.cosmo.platform.v1.GetCacheWarmerConfigResponse - (*GetSubgraphCheckExtensionsConfigRequest)(nil), // 401: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest - (*GetSubgraphCheckExtensionsConfigResponse)(nil), // 402: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse - (*ConfigureSubgraphCheckExtensionsRequest)(nil), // 403: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest - (*ConfigureSubgraphCheckExtensionsResponse)(nil), // 404: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse - (*DeleteCacheWarmerOperationRequest)(nil), // 405: wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest - (*DeleteCacheWarmerOperationResponse)(nil), // 406: wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse - (*ListRouterCompatibilityVersionsRequest)(nil), // 407: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest - (*ListRouterCompatibilityVersionsResponse)(nil), // 408: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse - (*SetGraphRouterCompatibilityVersionRequest)(nil), // 409: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest - (*SetGraphRouterCompatibilityVersionResponse)(nil), // 410: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse - (*GetProposedSchemaOfCheckedSubgraphRequest)(nil), // 411: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest - (*GetProposedSchemaOfCheckedSubgraphResponse)(nil), // 412: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse - (*Proposal)(nil), // 413: wg.cosmo.platform.v1.Proposal - (*ProposalSubgraph)(nil), // 414: wg.cosmo.platform.v1.ProposalSubgraph - (*CreateProposalRequest)(nil), // 415: wg.cosmo.platform.v1.CreateProposalRequest - (*CreateProposalResponse)(nil), // 416: wg.cosmo.platform.v1.CreateProposalResponse - (*GetProposalRequest)(nil), // 417: wg.cosmo.platform.v1.GetProposalRequest - (*GetProposalResponse)(nil), // 418: wg.cosmo.platform.v1.GetProposalResponse - (*GetProposalsByFederatedGraphRequest)(nil), // 419: wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest - (*GetProposalsByFederatedGraphResponse)(nil), // 420: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse - (*GetProposalChecksRequest)(nil), // 421: wg.cosmo.platform.v1.GetProposalChecksRequest - (*GetProposalChecksResponse)(nil), // 422: wg.cosmo.platform.v1.GetProposalChecksResponse - (*UpdateProposalRequest)(nil), // 423: wg.cosmo.platform.v1.UpdateProposalRequest - (*UpdateProposalResponse)(nil), // 424: wg.cosmo.platform.v1.UpdateProposalResponse - (*EnableProposalsForNamespaceRequest)(nil), // 425: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - (*EnableProposalsForNamespaceResponse)(nil), // 426: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - (*ConfigureNamespaceProposalConfigRequest)(nil), // 427: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - (*ConfigureNamespaceProposalConfigResponse)(nil), // 428: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - (*GetNamespaceProposalConfigRequest)(nil), // 429: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - (*GetNamespaceProposalConfigResponse)(nil), // 430: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - (*GetOperationsRequest)(nil), // 431: wg.cosmo.platform.v1.GetOperationsRequest - (*GetOperationsResponse)(nil), // 432: wg.cosmo.platform.v1.GetOperationsResponse - (*GetClientsFromAnalyticsRequest)(nil), // 433: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - (*GetClientsFromAnalyticsResponse)(nil), // 434: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - (*GetOperationClientsRequest)(nil), // 435: wg.cosmo.platform.v1.GetOperationClientsRequest - (*GetOperationClientsResponse)(nil), // 436: wg.cosmo.platform.v1.GetOperationClientsResponse - (*GetOperationDeprecatedFieldsRequest)(nil), // 437: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - (*GetOperationDeprecatedFieldsResponse)(nil), // 438: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - (*ValidateAndFetchPluginDataRequest)(nil), // 439: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - (*ValidateAndFetchPluginDataResponse)(nil), // 440: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - (*LinkSubgraphRequest)(nil), // 441: wg.cosmo.platform.v1.LinkSubgraphRequest - (*LinkSubgraphResponse)(nil), // 442: wg.cosmo.platform.v1.LinkSubgraphResponse - (*UnlinkSubgraphRequest)(nil), // 443: wg.cosmo.platform.v1.UnlinkSubgraphRequest - (*UnlinkSubgraphResponse)(nil), // 444: wg.cosmo.platform.v1.UnlinkSubgraphResponse - (*VerifyAPIKeyGraphAccessRequest)(nil), // 445: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - (*VerifyAPIKeyGraphAccessResponse)(nil), // 446: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - (*InitializeCosmoUserRequest)(nil), // 447: wg.cosmo.platform.v1.InitializeCosmoUserRequest - (*InitializeCosmoUserResponse)(nil), // 448: wg.cosmo.platform.v1.InitializeCosmoUserResponse - (*ListOrganizationsRequest)(nil), // 449: wg.cosmo.platform.v1.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 450: wg.cosmo.platform.v1.ListOrganizationsResponse - (*RecomposeGraphRequest)(nil), // 451: wg.cosmo.platform.v1.RecomposeGraphRequest - (*RecomposeGraphResponse)(nil), // 452: wg.cosmo.platform.v1.RecomposeGraphResponse - (*Subgraph_PluginData)(nil), // 453: wg.cosmo.platform.v1.Subgraph.PluginData - (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 454: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph - (*SchemaCheck_GhDetails)(nil), // 455: wg.cosmo.platform.v1.SchemaCheck.GhDetails - (*SchemaCheck_CheckedSubgraph)(nil), // 456: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - (*SchemaCheck_LinkedCheck)(nil), // 457: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck - (*GetCheckSummaryResponse_AffectedGraph)(nil), // 458: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph - (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 459: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch - (*GetCheckOperationsResponse_CheckOperation)(nil), // 460: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation - nil, // 461: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry - (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 462: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 463: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 464: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule - (*OrgMember_Group)(nil), // 465: wg.cosmo.platform.v1.OrgMember.Group - (*APIKey_Group)(nil), // 466: wg.cosmo.platform.v1.APIKey.Group - nil, // 467: wg.cosmo.platform.v1.Span.AttributesEntry - (*DeletePersistedOperationResponse_Operation)(nil), // 468: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation - (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 469: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation - (*GetPersistedOperationsResponse_Operation)(nil), // 470: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 471: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config - (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 472: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - (*GetBillingPlansResponse_BillingPlan)(nil), // 473: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan - (*GetAllOverridesResponse_Override)(nil), // 474: wg.cosmo.platform.v1.GetAllOverridesResponse.Override - (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 475: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 476: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 477: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph - (*ClientWithOperations_Operation)(nil), // 478: wg.cosmo.platform.v1.ClientWithOperations.Operation - (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 479: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph - (*GetProposalResponse_CurrentSubgraph)(nil), // 480: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph - (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 481: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - (*GetOperationsResponse_Operation)(nil), // 482: wg.cosmo.platform.v1.GetOperationsResponse.Operation - (*GetClientsFromAnalyticsResponse_Client)(nil), // 483: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - (*GetOperationClientsResponse_Client)(nil), // 484: wg.cosmo.platform.v1.GetOperationClientsResponse.Client - (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 485: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - (*ListOrganizationsResponse_OrganizationMembership)(nil), // 486: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - (common.EnumStatusCode)(0), // 487: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 488: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 489: wg.cosmo.common.GraphQLWebsocketSubprotocol - (*notifications.EventMeta)(nil), // 490: wg.cosmo.notifications.EventMeta + (LintSeverity)(0), // 0: wg.cosmo.platform.v1.LintSeverity + (SubgraphType)(0), // 1: wg.cosmo.platform.v1.SubgraphType + (AnalyticsViewGroupName)(0), // 2: wg.cosmo.platform.v1.AnalyticsViewGroupName + (CustomOptions)(0), // 3: wg.cosmo.platform.v1.CustomOptions + (Unit)(0), // 4: wg.cosmo.platform.v1.Unit + (AnalyticsViewFilterOperator)(0), // 5: wg.cosmo.platform.v1.AnalyticsViewFilterOperator + (ExpiresAt)(0), // 6: wg.cosmo.platform.v1.ExpiresAt + (LoginMethodType)(0), // 7: wg.cosmo.platform.v1.LoginMethodType + (SocialLoginProvider)(0), // 8: wg.cosmo.platform.v1.SocialLoginProvider + (PublishedOperationStatus)(0), // 9: wg.cosmo.platform.v1.PublishedOperationStatus + (IntegrationType)(0), // 10: wg.cosmo.platform.v1.IntegrationType + (Feature)(0), // 11: wg.cosmo.platform.v1.Feature + (ProposalOrigin)(0), // 12: wg.cosmo.platform.v1.ProposalOrigin + (ProposalNamingConvention)(0), // 13: wg.cosmo.platform.v1.ProposalNamingConvention + (OperationsFetchBasedOn)(0), // 14: wg.cosmo.platform.v1.OperationsFetchBasedOn + (SortDirection)(0), // 15: wg.cosmo.platform.v1.SortDirection + (GetOperationsResponse_OperationType)(0), // 16: wg.cosmo.platform.v1.GetOperationsResponse.OperationType + (*Label)(nil), // 17: wg.cosmo.platform.v1.Label + (*Response)(nil), // 18: wg.cosmo.platform.v1.Response + (*ResponseStatus)(nil), // 19: wg.cosmo.platform.v1.ResponseStatus + (*PublishMonographRequest)(nil), // 20: wg.cosmo.platform.v1.PublishMonographRequest + (*PublishMonographResponse)(nil), // 21: wg.cosmo.platform.v1.PublishMonographResponse + (*ProtoInput)(nil), // 22: wg.cosmo.platform.v1.ProtoInput + (*PublishFederatedSubgraphRequest)(nil), // 23: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest + (*PublishFederatedSubgraphResponse)(nil), // 24: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse + (*SubgraphPublishStats)(nil), // 25: wg.cosmo.platform.v1.SubgraphPublishStats + (*PublishSubgraph)(nil), // 26: wg.cosmo.platform.v1.PublishSubgraph + (*PublishFederatedSubgraphsRequest)(nil), // 27: wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest + (*PublishFederatedSubgraphsResponse)(nil), // 28: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse + (*GitInfo)(nil), // 29: wg.cosmo.platform.v1.GitInfo + (*VCSContext)(nil), // 30: wg.cosmo.platform.v1.VCSContext + (*CheckSubgraphSchemaRequest)(nil), // 31: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest + (*FixSubgraphSchemaRequest)(nil), // 32: wg.cosmo.platform.v1.FixSubgraphSchemaRequest + (*CreateMonographRequest)(nil), // 33: wg.cosmo.platform.v1.CreateMonographRequest + (*CreateMonographResponse)(nil), // 34: wg.cosmo.platform.v1.CreateMonographResponse + (*CreateFederatedGraphRequest)(nil), // 35: wg.cosmo.platform.v1.CreateFederatedGraphRequest + (*CreateFederatedSubgraphRequest)(nil), // 36: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest + (*DeleteFederatedGraphRequest)(nil), // 37: wg.cosmo.platform.v1.DeleteFederatedGraphRequest + (*DeleteMonographRequest)(nil), // 38: wg.cosmo.platform.v1.DeleteMonographRequest + (*DeleteMonographResponse)(nil), // 39: wg.cosmo.platform.v1.DeleteMonographResponse + (*DeleteFederatedSubgraphRequest)(nil), // 40: wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest + (*SchemaChange)(nil), // 41: wg.cosmo.platform.v1.SchemaChange + (*FederatedGraphSchemaChange)(nil), // 42: wg.cosmo.platform.v1.FederatedGraphSchemaChange + (*CompositionError)(nil), // 43: wg.cosmo.platform.v1.CompositionError + (*CompositionWarning)(nil), // 44: wg.cosmo.platform.v1.CompositionWarning + (*DeploymentError)(nil), // 45: wg.cosmo.platform.v1.DeploymentError + (*CheckOperationUsageStats)(nil), // 46: wg.cosmo.platform.v1.CheckOperationUsageStats + (*CheckedFederatedGraphs)(nil), // 47: wg.cosmo.platform.v1.CheckedFederatedGraphs + (*LintLocation)(nil), // 48: wg.cosmo.platform.v1.LintLocation + (*LintIssue)(nil), // 49: wg.cosmo.platform.v1.LintIssue + (*GraphPruningIssue)(nil), // 50: wg.cosmo.platform.v1.GraphPruningIssue + (*CheckSubgraphSchemaResponse)(nil), // 51: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse + (*SchemaCheckCounts)(nil), // 52: wg.cosmo.platform.v1.SchemaCheckCounts + (*FixSubgraphSchemaResponse)(nil), // 53: wg.cosmo.platform.v1.FixSubgraphSchemaResponse + (*CreateFederatedGraphResponse)(nil), // 54: wg.cosmo.platform.v1.CreateFederatedGraphResponse + (*CreateFederatedSubgraphResponse)(nil), // 55: wg.cosmo.platform.v1.CreateFederatedSubgraphResponse + (*DeleteFederatedSubgraphResponse)(nil), // 56: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse + (*DeleteFederatedGraphResponse)(nil), // 57: wg.cosmo.platform.v1.DeleteFederatedGraphResponse + (*GetFederatedGraphsRequest)(nil), // 58: wg.cosmo.platform.v1.GetFederatedGraphsRequest + (*Contract)(nil), // 59: wg.cosmo.platform.v1.Contract + (*FederatedGraph)(nil), // 60: wg.cosmo.platform.v1.FederatedGraph + (*GetFederatedGraphsResponse)(nil), // 61: wg.cosmo.platform.v1.GetFederatedGraphsResponse + (*GetFederatedGraphsBySubgraphLabelsRequest)(nil), // 62: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest + (*GetFederatedGraphsBySubgraphLabelsResponse)(nil), // 63: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse + (*GetSubgraphsRequest)(nil), // 64: wg.cosmo.platform.v1.GetSubgraphsRequest + (*Subgraph)(nil), // 65: wg.cosmo.platform.v1.Subgraph + (*GetSubgraphsResponse)(nil), // 66: wg.cosmo.platform.v1.GetSubgraphsResponse + (*GetFederatedGraphByNameRequest)(nil), // 67: wg.cosmo.platform.v1.GetFederatedGraphByNameRequest + (*GetFederatedGraphByNameResponse)(nil), // 68: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse + (*GetFederatedGraphSDLByNameRequest)(nil), // 69: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest + (*GetFederatedGraphSDLByNameResponse)(nil), // 70: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse + (*GetSubgraphByNameRequest)(nil), // 71: wg.cosmo.platform.v1.GetSubgraphByNameRequest + (*GetSubgraphByNameResponse)(nil), // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse + (*GetSubgraphSDLFromLatestCompositionRequest)(nil), // 73: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest + (*GetSubgraphSDLFromLatestCompositionResponse)(nil), // 74: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse + (*GetLatestSubgraphSDLRequest)(nil), // 75: wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest + (*GetLatestSubgraphSDLResponse)(nil), // 76: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse + (*GetChecksByFederatedGraphNameFilters)(nil), // 77: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters + (*GetChecksByFederatedGraphNameRequest)(nil), // 78: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest + (*SchemaCheck)(nil), // 79: wg.cosmo.platform.v1.SchemaCheck + (*GetChecksByFederatedGraphNameResponse)(nil), // 80: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse + (*GetCheckSummaryRequest)(nil), // 81: wg.cosmo.platform.v1.GetCheckSummaryRequest + (*ChangeCounts)(nil), // 82: wg.cosmo.platform.v1.ChangeCounts + (*GetCheckSummaryResponse)(nil), // 83: wg.cosmo.platform.v1.GetCheckSummaryResponse + (*GetCheckOperationsRequest)(nil), // 84: wg.cosmo.platform.v1.GetCheckOperationsRequest + (*GetCheckOperationsResponse)(nil), // 85: wg.cosmo.platform.v1.GetCheckOperationsResponse + (*GetOperationContentRequest)(nil), // 86: wg.cosmo.platform.v1.GetOperationContentRequest + (*GetOperationContentResponse)(nil), // 87: wg.cosmo.platform.v1.GetOperationContentResponse + (*GetFederatedGraphChangelogRequest)(nil), // 88: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest + (*FederatedGraphChangelog)(nil), // 89: wg.cosmo.platform.v1.FederatedGraphChangelog + (*FederatedGraphChangelogOutput)(nil), // 90: wg.cosmo.platform.v1.FederatedGraphChangelogOutput + (*GetFederatedGraphChangelogResponse)(nil), // 91: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse + (*GetFederatedResponse)(nil), // 92: wg.cosmo.platform.v1.GetFederatedResponse + (*UpdateSubgraphRequest)(nil), // 93: wg.cosmo.platform.v1.UpdateSubgraphRequest + (*UpdateSubgraphResponse)(nil), // 94: wg.cosmo.platform.v1.UpdateSubgraphResponse + (*UpdateFederatedGraphRequest)(nil), // 95: wg.cosmo.platform.v1.UpdateFederatedGraphRequest + (*UpdateFederatedGraphResponse)(nil), // 96: wg.cosmo.platform.v1.UpdateFederatedGraphResponse + (*UpdateMonographRequest)(nil), // 97: wg.cosmo.platform.v1.UpdateMonographRequest + (*UpdateMonographResponse)(nil), // 98: wg.cosmo.platform.v1.UpdateMonographResponse + (*CheckFederatedGraphRequest)(nil), // 99: wg.cosmo.platform.v1.CheckFederatedGraphRequest + (*CheckFederatedGraphResponse)(nil), // 100: wg.cosmo.platform.v1.CheckFederatedGraphResponse + (*Pagination)(nil), // 101: wg.cosmo.platform.v1.Pagination + (*Sort)(nil), // 102: wg.cosmo.platform.v1.Sort + (*AnalyticsConfig)(nil), // 103: wg.cosmo.platform.v1.AnalyticsConfig + (*AnalyticsFilter)(nil), // 104: wg.cosmo.platform.v1.AnalyticsFilter + (*DateRange)(nil), // 105: wg.cosmo.platform.v1.DateRange + (*GetAnalyticsViewRequest)(nil), // 106: wg.cosmo.platform.v1.GetAnalyticsViewRequest + (*AnalyticsViewResult)(nil), // 107: wg.cosmo.platform.v1.AnalyticsViewResult + (*AnalyticsViewColumn)(nil), // 108: wg.cosmo.platform.v1.AnalyticsViewColumn + (*AnalyticsViewResultFilter)(nil), // 109: wg.cosmo.platform.v1.AnalyticsViewResultFilter + (*AnalyticsViewResultFilterOption)(nil), // 110: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption + (*AnalyticsViewRow)(nil), // 111: wg.cosmo.platform.v1.AnalyticsViewRow + (*AnalyticsViewRowValue)(nil), // 112: wg.cosmo.platform.v1.AnalyticsViewRowValue + (*GetAnalyticsViewResponse)(nil), // 113: wg.cosmo.platform.v1.GetAnalyticsViewResponse + (*GetDashboardAnalyticsViewRequest)(nil), // 114: wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest + (*RequestSeriesItem)(nil), // 115: wg.cosmo.platform.v1.RequestSeriesItem + (*OperationRequestCount)(nil), // 116: wg.cosmo.platform.v1.OperationRequestCount + (*FederatedGraphMetrics)(nil), // 117: wg.cosmo.platform.v1.FederatedGraphMetrics + (*SubgraphMetrics)(nil), // 118: wg.cosmo.platform.v1.SubgraphMetrics + (*GetDashboardAnalyticsViewResponse)(nil), // 119: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse + (*CreateFederatedGraphTokenRequest)(nil), // 120: wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest + (*CreateFederatedGraphTokenResponse)(nil), // 121: wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse + (*OrganizationGroupRule)(nil), // 122: wg.cosmo.platform.v1.OrganizationGroupRule + (*OrganizationGroup)(nil), // 123: wg.cosmo.platform.v1.OrganizationGroup + (*CreateOrganizationGroupRequest)(nil), // 124: wg.cosmo.platform.v1.CreateOrganizationGroupRequest + (*CreateOrganizationGroupResponse)(nil), // 125: wg.cosmo.platform.v1.CreateOrganizationGroupResponse + (*GetOrganizationGroupsRequest)(nil), // 126: wg.cosmo.platform.v1.GetOrganizationGroupsRequest + (*GetOrganizationGroupsResponse)(nil), // 127: wg.cosmo.platform.v1.GetOrganizationGroupsResponse + (*GetOrganizationGroupMembersRequest)(nil), // 128: wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest + (*GetOrganizationGroupMembersResponse)(nil), // 129: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse + (*UpdateOrganizationGroupRequest)(nil), // 130: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest + (*UpdateOrganizationGroupResponse)(nil), // 131: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse + (*DeleteOrganizationGroupRequest)(nil), // 132: wg.cosmo.platform.v1.DeleteOrganizationGroupRequest + (*DeleteOrganizationGroupResponse)(nil), // 133: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse + (*OrgMember)(nil), // 134: wg.cosmo.platform.v1.OrgMember + (*PendingOrgInvitation)(nil), // 135: wg.cosmo.platform.v1.PendingOrgInvitation + (*GetPendingOrganizationMembersRequest)(nil), // 136: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest + (*GetPendingOrganizationMembersResponse)(nil), // 137: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse + (*GetOrganizationMembersRequest)(nil), // 138: wg.cosmo.platform.v1.GetOrganizationMembersRequest + (*GetOrganizationMembersResponse)(nil), // 139: wg.cosmo.platform.v1.GetOrganizationMembersResponse + (*InviteUserRequest)(nil), // 140: wg.cosmo.platform.v1.InviteUserRequest + (*InviteUserResponse)(nil), // 141: wg.cosmo.platform.v1.InviteUserResponse + (*InviteUsersRequest)(nil), // 142: wg.cosmo.platform.v1.InviteUsersRequest + (*InviteUsersInvitationError)(nil), // 143: wg.cosmo.platform.v1.InviteUsersInvitationError + (*InviteUsersResponse)(nil), // 144: wg.cosmo.platform.v1.InviteUsersResponse + (*APIKey)(nil), // 145: wg.cosmo.platform.v1.APIKey + (*GetAPIKeysRequest)(nil), // 146: wg.cosmo.platform.v1.GetAPIKeysRequest + (*GetAPIKeysResponse)(nil), // 147: wg.cosmo.platform.v1.GetAPIKeysResponse + (*CreateAPIKeyRequest)(nil), // 148: wg.cosmo.platform.v1.CreateAPIKeyRequest + (*CreateAPIKeyResponse)(nil), // 149: wg.cosmo.platform.v1.CreateAPIKeyResponse + (*DeleteAPIKeyRequest)(nil), // 150: wg.cosmo.platform.v1.DeleteAPIKeyRequest + (*DeleteAPIKeyResponse)(nil), // 151: wg.cosmo.platform.v1.DeleteAPIKeyResponse + (*UpdateAPIKeyRequest)(nil), // 152: wg.cosmo.platform.v1.UpdateAPIKeyRequest + (*UpdateAPIKeyResponse)(nil), // 153: wg.cosmo.platform.v1.UpdateAPIKeyResponse + (*RemoveOrganizationMemberRequest)(nil), // 154: wg.cosmo.platform.v1.RemoveOrganizationMemberRequest + (*RemoveOrganizationMemberResponse)(nil), // 155: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse + (*RemoveInvitationRequest)(nil), // 156: wg.cosmo.platform.v1.RemoveInvitationRequest + (*RemoveInvitationResponse)(nil), // 157: wg.cosmo.platform.v1.RemoveInvitationResponse + (*MigrateFromApolloRequest)(nil), // 158: wg.cosmo.platform.v1.MigrateFromApolloRequest + (*MigrateFromApolloResponse)(nil), // 159: wg.cosmo.platform.v1.MigrateFromApolloResponse + (*Span)(nil), // 160: wg.cosmo.platform.v1.Span + (*GetTraceRequest)(nil), // 161: wg.cosmo.platform.v1.GetTraceRequest + (*GetTraceResponse)(nil), // 162: wg.cosmo.platform.v1.GetTraceResponse + (*WhoAmIRequest)(nil), // 163: wg.cosmo.platform.v1.WhoAmIRequest + (*WhoAmIResponse)(nil), // 164: wg.cosmo.platform.v1.WhoAmIResponse + (*LoginMethod)(nil), // 165: wg.cosmo.platform.v1.LoginMethod + (*RouterToken)(nil), // 166: wg.cosmo.platform.v1.RouterToken + (*GenerateRouterTokenRequest)(nil), // 167: wg.cosmo.platform.v1.GenerateRouterTokenRequest + (*GenerateRouterTokenResponse)(nil), // 168: wg.cosmo.platform.v1.GenerateRouterTokenResponse + (*GetRouterTokensRequest)(nil), // 169: wg.cosmo.platform.v1.GetRouterTokensRequest + (*GetRouterTokensResponse)(nil), // 170: wg.cosmo.platform.v1.GetRouterTokensResponse + (*DeleteRouterTokenRequest)(nil), // 171: wg.cosmo.platform.v1.DeleteRouterTokenRequest + (*DeleteRouterTokenResponse)(nil), // 172: wg.cosmo.platform.v1.DeleteRouterTokenResponse + (*PersistedOperation)(nil), // 173: wg.cosmo.platform.v1.PersistedOperation + (*PublishPersistedOperationsRequest)(nil), // 174: wg.cosmo.platform.v1.PublishPersistedOperationsRequest + (*PublishedOperation)(nil), // 175: wg.cosmo.platform.v1.PublishedOperation + (*PublishPersistedOperationsResponse)(nil), // 176: wg.cosmo.platform.v1.PublishPersistedOperationsResponse + (*DeletePersistedOperationRequest)(nil), // 177: wg.cosmo.platform.v1.DeletePersistedOperationRequest + (*DeletePersistedOperationResponse)(nil), // 178: wg.cosmo.platform.v1.DeletePersistedOperationResponse + (*CheckPersistedOperationTrafficRequest)(nil), // 179: wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest + (*CheckPersistedOperationTrafficResponse)(nil), // 180: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse + (*GetPersistedOperationsRequest)(nil), // 181: wg.cosmo.platform.v1.GetPersistedOperationsRequest + (*GetPersistedOperationsResponse)(nil), // 182: wg.cosmo.platform.v1.GetPersistedOperationsResponse + (*Header)(nil), // 183: wg.cosmo.platform.v1.Header + (*CreateOrganizationWebhookConfigRequest)(nil), // 184: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest + (*CreateOrganizationWebhookConfigResponse)(nil), // 185: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse + (*GetOrganizationWebhookConfigsRequest)(nil), // 186: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest + (*GetOrganizationWebhookConfigsResponse)(nil), // 187: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse + (*GetOrganizationWebhookMetaRequest)(nil), // 188: wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest + (*GetOrganizationWebhookMetaResponse)(nil), // 189: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse + (*UpdateOrganizationWebhookConfigRequest)(nil), // 190: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest + (*UpdateOrganizationWebhookConfigResponse)(nil), // 191: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse + (*DeleteOrganizationWebhookConfigRequest)(nil), // 192: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest + (*DeleteOrganizationWebhookConfigResponse)(nil), // 193: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse + (*CreateIntegrationRequest)(nil), // 194: wg.cosmo.platform.v1.CreateIntegrationRequest + (*CreateIntegrationResponse)(nil), // 195: wg.cosmo.platform.v1.CreateIntegrationResponse + (*GetOrganizationIntegrationsRequest)(nil), // 196: wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest + (*SlackIntegrationConfig)(nil), // 197: wg.cosmo.platform.v1.SlackIntegrationConfig + (*IntegrationConfig)(nil), // 198: wg.cosmo.platform.v1.IntegrationConfig + (*Integration)(nil), // 199: wg.cosmo.platform.v1.Integration + (*GetOrganizationIntegrationsResponse)(nil), // 200: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse + (*UpdateIntegrationConfigRequest)(nil), // 201: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest + (*UpdateIntegrationConfigResponse)(nil), // 202: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse + (*DeleteIntegrationRequest)(nil), // 203: wg.cosmo.platform.v1.DeleteIntegrationRequest + (*DeleteIntegrationResponse)(nil), // 204: wg.cosmo.platform.v1.DeleteIntegrationResponse + (*DeleteOrganizationRequest)(nil), // 205: wg.cosmo.platform.v1.DeleteOrganizationRequest + (*DeleteOrganizationResponse)(nil), // 206: wg.cosmo.platform.v1.DeleteOrganizationResponse + (*RestoreOrganizationRequest)(nil), // 207: wg.cosmo.platform.v1.RestoreOrganizationRequest + (*RestoreOrganizationResponse)(nil), // 208: wg.cosmo.platform.v1.RestoreOrganizationResponse + (*LeaveOrganizationRequest)(nil), // 209: wg.cosmo.platform.v1.LeaveOrganizationRequest + (*LeaveOrganizationResponse)(nil), // 210: wg.cosmo.platform.v1.LeaveOrganizationResponse + (*UpdateOrganizationDetailsRequest)(nil), // 211: wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest + (*UpdateOrganizationDetailsResponse)(nil), // 212: wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse + (*UpdateOrgMemberGroupRequest)(nil), // 213: wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest + (*UpdateOrgMemberGroupResponse)(nil), // 214: wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse + (*CreateOrganizationRequest)(nil), // 215: wg.cosmo.platform.v1.CreateOrganizationRequest + (*CreateOrganizationResponse)(nil), // 216: wg.cosmo.platform.v1.CreateOrganizationResponse + (*Organization)(nil), // 217: wg.cosmo.platform.v1.Organization + (*GetOrganizationBySlugRequest)(nil), // 218: wg.cosmo.platform.v1.GetOrganizationBySlugRequest + (*GetOrganizationBySlugResponse)(nil), // 219: wg.cosmo.platform.v1.GetOrganizationBySlugResponse + (*GetBillingPlansRequest)(nil), // 220: wg.cosmo.platform.v1.GetBillingPlansRequest + (*GetBillingPlansResponse)(nil), // 221: wg.cosmo.platform.v1.GetBillingPlansResponse + (*CreateCheckoutSessionRequest)(nil), // 222: wg.cosmo.platform.v1.CreateCheckoutSessionRequest + (*CreateCheckoutSessionResponse)(nil), // 223: wg.cosmo.platform.v1.CreateCheckoutSessionResponse + (*CreateBillingPortalSessionRequest)(nil), // 224: wg.cosmo.platform.v1.CreateBillingPortalSessionRequest + (*CreateBillingPortalSessionResponse)(nil), // 225: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse + (*UpgradePlanRequest)(nil), // 226: wg.cosmo.platform.v1.UpgradePlanRequest + (*UpgradePlanResponse)(nil), // 227: wg.cosmo.platform.v1.UpgradePlanResponse + (*GetGraphMetricsRequest)(nil), // 228: wg.cosmo.platform.v1.GetGraphMetricsRequest + (*GetGraphMetricsResponse)(nil), // 229: wg.cosmo.platform.v1.GetGraphMetricsResponse + (*MetricsDashboardMetric)(nil), // 230: wg.cosmo.platform.v1.MetricsDashboardMetric + (*MetricsTopItem)(nil), // 231: wg.cosmo.platform.v1.MetricsTopItem + (*MetricsSeriesItem)(nil), // 232: wg.cosmo.platform.v1.MetricsSeriesItem + (*MetricsDashboard)(nil), // 233: wg.cosmo.platform.v1.MetricsDashboard + (*GetMetricsErrorRateRequest)(nil), // 234: wg.cosmo.platform.v1.GetMetricsErrorRateRequest + (*GetMetricsErrorRateResponse)(nil), // 235: wg.cosmo.platform.v1.GetMetricsErrorRateResponse + (*MetricsErrorRateSeriesItem)(nil), // 236: wg.cosmo.platform.v1.MetricsErrorRateSeriesItem + (*GetSubgraphMetricsRequest)(nil), // 237: wg.cosmo.platform.v1.GetSubgraphMetricsRequest + (*GetSubgraphMetricsResponse)(nil), // 238: wg.cosmo.platform.v1.GetSubgraphMetricsResponse + (*GetSubgraphMetricsErrorRateRequest)(nil), // 239: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest + (*GetSubgraphMetricsErrorRateResponse)(nil), // 240: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse + (*ForceCheckSuccessRequest)(nil), // 241: wg.cosmo.platform.v1.ForceCheckSuccessRequest + (*ForceCheckSuccessResponse)(nil), // 242: wg.cosmo.platform.v1.ForceCheckSuccessResponse + (*ToggleChangeOverridesForAllOperationsRequest)(nil), // 243: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest + (*ToggleChangeOverridesForAllOperationsResponse)(nil), // 244: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse + (*CreateIgnoreOverridesForAllOperationsRequest)(nil), // 245: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest + (*CreateIgnoreOverridesForAllOperationsResponse)(nil), // 246: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse + (*OverrideChange)(nil), // 247: wg.cosmo.platform.v1.OverrideChange + (*CreateOperationOverridesRequest)(nil), // 248: wg.cosmo.platform.v1.CreateOperationOverridesRequest + (*CreateOperationOverridesResponse)(nil), // 249: wg.cosmo.platform.v1.CreateOperationOverridesResponse + (*CreateOperationIgnoreAllOverrideRequest)(nil), // 250: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest + (*CreateOperationIgnoreAllOverrideResponse)(nil), // 251: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse + (*RemoveOperationOverridesRequest)(nil), // 252: wg.cosmo.platform.v1.RemoveOperationOverridesRequest + (*RemoveOperationOverridesResponse)(nil), // 253: wg.cosmo.platform.v1.RemoveOperationOverridesResponse + (*RemoveOperationIgnoreAllOverrideRequest)(nil), // 254: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest + (*RemoveOperationIgnoreAllOverrideResponse)(nil), // 255: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse + (*GetOperationOverridesRequest)(nil), // 256: wg.cosmo.platform.v1.GetOperationOverridesRequest + (*GetOperationOverridesResponse)(nil), // 257: wg.cosmo.platform.v1.GetOperationOverridesResponse + (*GetAllOverridesRequest)(nil), // 258: wg.cosmo.platform.v1.GetAllOverridesRequest + (*GetAllOverridesResponse)(nil), // 259: wg.cosmo.platform.v1.GetAllOverridesResponse + (*IsGitHubAppInstalledRequest)(nil), // 260: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest + (*IsGitHubAppInstalledResponse)(nil), // 261: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse + (*GroupMapper)(nil), // 262: wg.cosmo.platform.v1.GroupMapper + (*CreateOIDCProviderRequest)(nil), // 263: wg.cosmo.platform.v1.CreateOIDCProviderRequest + (*CreateOIDCProviderResponse)(nil), // 264: wg.cosmo.platform.v1.CreateOIDCProviderResponse + (*OIDCProvider)(nil), // 265: wg.cosmo.platform.v1.OIDCProvider + (*ListOIDCProvidersRequest)(nil), // 266: wg.cosmo.platform.v1.ListOIDCProvidersRequest + (*ListOIDCProvidersResponse)(nil), // 267: wg.cosmo.platform.v1.ListOIDCProvidersResponse + (*GetOIDCProviderRequest)(nil), // 268: wg.cosmo.platform.v1.GetOIDCProviderRequest + (*GetOIDCProviderResponse)(nil), // 269: wg.cosmo.platform.v1.GetOIDCProviderResponse + (*DeleteOIDCProviderRequest)(nil), // 270: wg.cosmo.platform.v1.DeleteOIDCProviderRequest + (*DeleteOIDCProviderResponse)(nil), // 271: wg.cosmo.platform.v1.DeleteOIDCProviderResponse + (*UpdateIDPMappersRequest)(nil), // 272: wg.cosmo.platform.v1.UpdateIDPMappersRequest + (*UpdateIDPMappersResponse)(nil), // 273: wg.cosmo.platform.v1.UpdateIDPMappersResponse + (*GetOrganizationRequestsCountRequest)(nil), // 274: wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest + (*GetOrganizationRequestsCountResponse)(nil), // 275: wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse + (*OrganizationInvite)(nil), // 276: wg.cosmo.platform.v1.OrganizationInvite + (*GetAuditLogsRequest)(nil), // 277: wg.cosmo.platform.v1.GetAuditLogsRequest + (*AuditLog)(nil), // 278: wg.cosmo.platform.v1.AuditLog + (*GetAuditLogsResponse)(nil), // 279: wg.cosmo.platform.v1.GetAuditLogsResponse + (*GetInvitationsRequest)(nil), // 280: wg.cosmo.platform.v1.GetInvitationsRequest + (*GetInvitationsResponse)(nil), // 281: wg.cosmo.platform.v1.GetInvitationsResponse + (*AcceptOrDeclineInvitationRequest)(nil), // 282: wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest + (*AcceptOrDeclineInvitationResponse)(nil), // 283: wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse + (*GraphComposition)(nil), // 284: wg.cosmo.platform.v1.GraphComposition + (*GraphCompositionSubgraph)(nil), // 285: wg.cosmo.platform.v1.GraphCompositionSubgraph + (*GetCompositionsRequest)(nil), // 286: wg.cosmo.platform.v1.GetCompositionsRequest + (*GetCompositionsResponse)(nil), // 287: wg.cosmo.platform.v1.GetCompositionsResponse + (*GetCompositionDetailsRequest)(nil), // 288: wg.cosmo.platform.v1.GetCompositionDetailsRequest + (*FeatureFlagComposition)(nil), // 289: wg.cosmo.platform.v1.FeatureFlagComposition + (*GetCompositionDetailsResponse)(nil), // 290: wg.cosmo.platform.v1.GetCompositionDetailsResponse + (*GetSdlBySchemaVersionRequest)(nil), // 291: wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest + (*GetSdlBySchemaVersionResponse)(nil), // 292: wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse + (*GetChangelogBySchemaVersionRequest)(nil), // 293: wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest + (*GetChangelogBySchemaVersionResponse)(nil), // 294: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse + (*GetUserAccessibleResourcesRequest)(nil), // 295: wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest + (*GetUserAccessibleResourcesResponse)(nil), // 296: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse + (*UpdateFeatureSettingsRequest)(nil), // 297: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest + (*UpdateFeatureSettingsResponse)(nil), // 298: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse + (*GetSubgraphMembersRequest)(nil), // 299: wg.cosmo.platform.v1.GetSubgraphMembersRequest + (*SubgraphMember)(nil), // 300: wg.cosmo.platform.v1.SubgraphMember + (*GetSubgraphMembersResponse)(nil), // 301: wg.cosmo.platform.v1.GetSubgraphMembersResponse + (*AddReadmeRequest)(nil), // 302: wg.cosmo.platform.v1.AddReadmeRequest + (*AddReadmeResponse)(nil), // 303: wg.cosmo.platform.v1.AddReadmeResponse + (*Router)(nil), // 304: wg.cosmo.platform.v1.Router + (*GetRoutersRequest)(nil), // 305: wg.cosmo.platform.v1.GetRoutersRequest + (*GetRoutersResponse)(nil), // 306: wg.cosmo.platform.v1.GetRoutersResponse + (*ClientInfo)(nil), // 307: wg.cosmo.platform.v1.ClientInfo + (*GetClientsRequest)(nil), // 308: wg.cosmo.platform.v1.GetClientsRequest + (*GetClientsResponse)(nil), // 309: wg.cosmo.platform.v1.GetClientsResponse + (*GetFieldUsageRequest)(nil), // 310: wg.cosmo.platform.v1.GetFieldUsageRequest + (*ClientWithOperations)(nil), // 311: wg.cosmo.platform.v1.ClientWithOperations + (*FieldUsageMeta)(nil), // 312: wg.cosmo.platform.v1.FieldUsageMeta + (*GetFieldUsageResponse)(nil), // 313: wg.cosmo.platform.v1.GetFieldUsageResponse + (*CreateNamespaceRequest)(nil), // 314: wg.cosmo.platform.v1.CreateNamespaceRequest + (*CreateNamespaceResponse)(nil), // 315: wg.cosmo.platform.v1.CreateNamespaceResponse + (*DeleteNamespaceRequest)(nil), // 316: wg.cosmo.platform.v1.DeleteNamespaceRequest + (*DeleteNamespaceResponse)(nil), // 317: wg.cosmo.platform.v1.DeleteNamespaceResponse + (*RenameNamespaceRequest)(nil), // 318: wg.cosmo.platform.v1.RenameNamespaceRequest + (*RenameNamespaceResponse)(nil), // 319: wg.cosmo.platform.v1.RenameNamespaceResponse + (*Namespace)(nil), // 320: wg.cosmo.platform.v1.Namespace + (*GetNamespacesRequest)(nil), // 321: wg.cosmo.platform.v1.GetNamespacesRequest + (*GetNamespacesResponse)(nil), // 322: wg.cosmo.platform.v1.GetNamespacesResponse + (*MoveGraphRequest)(nil), // 323: wg.cosmo.platform.v1.MoveGraphRequest + (*MoveGraphResponse)(nil), // 324: wg.cosmo.platform.v1.MoveGraphResponse + (*GetNamespaceLintConfigRequest)(nil), // 325: wg.cosmo.platform.v1.GetNamespaceLintConfigRequest + (*GetNamespaceLintConfigResponse)(nil), // 326: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse + (*GetNamespaceChecksConfigurationRequest)(nil), // 327: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest + (*GetNamespaceChecksConfigurationResponse)(nil), // 328: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse + (*UpdateNamespaceChecksConfigurationRequest)(nil), // 329: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest + (*UpdateNamespaceChecksConfigurationResponse)(nil), // 330: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse + (*EnableLintingForTheNamespaceRequest)(nil), // 331: wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest + (*EnableLintingForTheNamespaceResponse)(nil), // 332: wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse + (*LintConfig)(nil), // 333: wg.cosmo.platform.v1.LintConfig + (*ConfigureNamespaceLintConfigRequest)(nil), // 334: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest + (*ConfigureNamespaceLintConfigResponse)(nil), // 335: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse + (*EnableGraphPruningRequest)(nil), // 336: wg.cosmo.platform.v1.EnableGraphPruningRequest + (*EnableGraphPruningResponse)(nil), // 337: wg.cosmo.platform.v1.EnableGraphPruningResponse + (*GraphPruningConfig)(nil), // 338: wg.cosmo.platform.v1.GraphPruningConfig + (*ConfigureNamespaceGraphPruningConfigRequest)(nil), // 339: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest + (*ConfigureNamespaceGraphPruningConfigResponse)(nil), // 340: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse + (*GetNamespaceGraphPruningConfigRequest)(nil), // 341: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest + (*GetNamespaceGraphPruningConfigResponse)(nil), // 342: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse + (*MigrateMonographRequest)(nil), // 343: wg.cosmo.platform.v1.MigrateMonographRequest + (*MigrateMonographResponse)(nil), // 344: wg.cosmo.platform.v1.MigrateMonographResponse + (*GetUserAccessiblePermissionsRequest)(nil), // 345: wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest + (*Permission)(nil), // 346: wg.cosmo.platform.v1.Permission + (*GetUserAccessiblePermissionsResponse)(nil), // 347: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse + (*CreateContractRequest)(nil), // 348: wg.cosmo.platform.v1.CreateContractRequest + (*CreateContractResponse)(nil), // 349: wg.cosmo.platform.v1.CreateContractResponse + (*UpdateContractRequest)(nil), // 350: wg.cosmo.platform.v1.UpdateContractRequest + (*UpdateContractResponse)(nil), // 351: wg.cosmo.platform.v1.UpdateContractResponse + (*IsMemberLimitReachedRequest)(nil), // 352: wg.cosmo.platform.v1.IsMemberLimitReachedRequest + (*IsMemberLimitReachedResponse)(nil), // 353: wg.cosmo.platform.v1.IsMemberLimitReachedResponse + (*DeleteUserRequest)(nil), // 354: wg.cosmo.platform.v1.DeleteUserRequest + (*DeleteUserResponse)(nil), // 355: wg.cosmo.platform.v1.DeleteUserResponse + (*CreateFeatureFlagRequest)(nil), // 356: wg.cosmo.platform.v1.CreateFeatureFlagRequest + (*CreateFeatureFlagResponse)(nil), // 357: wg.cosmo.platform.v1.CreateFeatureFlagResponse + (*UpdateFeatureFlagRequest)(nil), // 358: wg.cosmo.platform.v1.UpdateFeatureFlagRequest + (*UpdateFeatureFlagResponse)(nil), // 359: wg.cosmo.platform.v1.UpdateFeatureFlagResponse + (*EnableFeatureFlagRequest)(nil), // 360: wg.cosmo.platform.v1.EnableFeatureFlagRequest + (*EnableFeatureFlagResponse)(nil), // 361: wg.cosmo.platform.v1.EnableFeatureFlagResponse + (*DeleteFeatureFlagRequest)(nil), // 362: wg.cosmo.platform.v1.DeleteFeatureFlagRequest + (*DeleteFeatureFlagResponse)(nil), // 363: wg.cosmo.platform.v1.DeleteFeatureFlagResponse + (*FeatureFlag)(nil), // 364: wg.cosmo.platform.v1.FeatureFlag + (*GetFeatureFlagsRequest)(nil), // 365: wg.cosmo.platform.v1.GetFeatureFlagsRequest + (*GetFeatureFlagsResponse)(nil), // 366: wg.cosmo.platform.v1.GetFeatureFlagsResponse + (*GetFeatureFlagByNameRequest)(nil), // 367: wg.cosmo.platform.v1.GetFeatureFlagByNameRequest + (*GetFeatureFlagByNameResponse)(nil), // 368: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse + (*GetFeatureSubgraphsByFeatureFlagRequest)(nil), // 369: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest + (*GetFeatureSubgraphsByFeatureFlagResponse)(nil), // 370: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse + (*GetFeatureSubgraphsRequest)(nil), // 371: wg.cosmo.platform.v1.GetFeatureSubgraphsRequest + (*GetFeatureSubgraphsResponse)(nil), // 372: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse + (*GetFeatureFlagsByFederatedGraphRequest)(nil), // 373: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest + (*GetFeatureFlagsByFederatedGraphResponse)(nil), // 374: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse + (*GetFeatureFlagsInLatestCompositionByFederatedGraphRequest)(nil), // 375: wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest + (*GetFeatureFlagsInLatestCompositionByFederatedGraphResponse)(nil), // 376: wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse + (*GetFeatureSubgraphsByFederatedGraphRequest)(nil), // 377: wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest + (*GetFeatureSubgraphsByFederatedGraphResponse)(nil), // 378: wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse + (*GetOrganizationWebhookHistoryRequest)(nil), // 379: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest + (*WebhookDelivery)(nil), // 380: wg.cosmo.platform.v1.WebhookDelivery + (*GetOrganizationWebhookHistoryResponse)(nil), // 381: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse + (*RedeliverWebhookRequest)(nil), // 382: wg.cosmo.platform.v1.RedeliverWebhookRequest + (*RedeliverWebhookResponse)(nil), // 383: wg.cosmo.platform.v1.RedeliverWebhookResponse + (*GetWebhookDeliveryDetailsRequest)(nil), // 384: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest + (*GetWebhookDeliveryDetailsResponse)(nil), // 385: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse + (*CreatePlaygroundScriptRequest)(nil), // 386: wg.cosmo.platform.v1.CreatePlaygroundScriptRequest + (*CreatePlaygroundScriptResponse)(nil), // 387: wg.cosmo.platform.v1.CreatePlaygroundScriptResponse + (*DeletePlaygroundScriptRequest)(nil), // 388: wg.cosmo.platform.v1.DeletePlaygroundScriptRequest + (*DeletePlaygroundScriptResponse)(nil), // 389: wg.cosmo.platform.v1.DeletePlaygroundScriptResponse + (*UpdatePlaygroundScriptRequest)(nil), // 390: wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest + (*UpdatePlaygroundScriptResponse)(nil), // 391: wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse + (*GetPlaygroundScriptsRequest)(nil), // 392: wg.cosmo.platform.v1.GetPlaygroundScriptsRequest + (*PlaygroundScript)(nil), // 393: wg.cosmo.platform.v1.PlaygroundScript + (*GetPlaygroundScriptsResponse)(nil), // 394: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse + (*GetFederatedGraphByIdRequest)(nil), // 395: wg.cosmo.platform.v1.GetFederatedGraphByIdRequest + (*GetFederatedGraphByIdResponse)(nil), // 396: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse + (*GetSubgraphByIdRequest)(nil), // 397: wg.cosmo.platform.v1.GetSubgraphByIdRequest + (*GetSubgraphByIdResponse)(nil), // 398: wg.cosmo.platform.v1.GetSubgraphByIdResponse + (*GetNamespaceRequest)(nil), // 399: wg.cosmo.platform.v1.GetNamespaceRequest + (*GetNamespaceResponse)(nil), // 400: wg.cosmo.platform.v1.GetNamespaceResponse + (*WorkspaceNamespace)(nil), // 401: wg.cosmo.platform.v1.WorkspaceNamespace + (*WorkspaceFederatedGraph)(nil), // 402: wg.cosmo.platform.v1.WorkspaceFederatedGraph + (*WorkspaceSubgraph)(nil), // 403: wg.cosmo.platform.v1.WorkspaceSubgraph + (*GetWorkspaceRequest)(nil), // 404: wg.cosmo.platform.v1.GetWorkspaceRequest + (*GetWorkspaceResponse)(nil), // 405: wg.cosmo.platform.v1.GetWorkspaceResponse + (*PushCacheWarmerOperationRequest)(nil), // 406: wg.cosmo.platform.v1.PushCacheWarmerOperationRequest + (*PushCacheWarmerOperationResponse)(nil), // 407: wg.cosmo.platform.v1.PushCacheWarmerOperationResponse + (*GetCacheWarmerOperationsRequest)(nil), // 408: wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest + (*CacheWarmerOperation)(nil), // 409: wg.cosmo.platform.v1.CacheWarmerOperation + (*GetCacheWarmerOperationsResponse)(nil), // 410: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse + (*ComputeCacheWarmerOperationsRequest)(nil), // 411: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest + (*ComputeCacheWarmerOperationsResponse)(nil), // 412: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse + (*ConfigureCacheWarmerRequest)(nil), // 413: wg.cosmo.platform.v1.ConfigureCacheWarmerRequest + (*ConfigureCacheWarmerResponse)(nil), // 414: wg.cosmo.platform.v1.ConfigureCacheWarmerResponse + (*GetCacheWarmerConfigRequest)(nil), // 415: wg.cosmo.platform.v1.GetCacheWarmerConfigRequest + (*GetCacheWarmerConfigResponse)(nil), // 416: wg.cosmo.platform.v1.GetCacheWarmerConfigResponse + (*GetSubgraphCheckExtensionsConfigRequest)(nil), // 417: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest + (*GetSubgraphCheckExtensionsConfigResponse)(nil), // 418: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse + (*ConfigureSubgraphCheckExtensionsRequest)(nil), // 419: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest + (*ConfigureSubgraphCheckExtensionsResponse)(nil), // 420: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse + (*DeleteCacheWarmerOperationRequest)(nil), // 421: wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest + (*DeleteCacheWarmerOperationResponse)(nil), // 422: wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse + (*ListRouterCompatibilityVersionsRequest)(nil), // 423: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest + (*ListRouterCompatibilityVersionsResponse)(nil), // 424: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse + (*SetGraphRouterCompatibilityVersionRequest)(nil), // 425: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest + (*SetGraphRouterCompatibilityVersionResponse)(nil), // 426: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse + (*GetProposedSchemaOfCheckedSubgraphRequest)(nil), // 427: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest + (*GetProposedSchemaOfCheckedSubgraphResponse)(nil), // 428: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse + (*Proposal)(nil), // 429: wg.cosmo.platform.v1.Proposal + (*ProposalSubgraph)(nil), // 430: wg.cosmo.platform.v1.ProposalSubgraph + (*CreateProposalRequest)(nil), // 431: wg.cosmo.platform.v1.CreateProposalRequest + (*CreateProposalResponse)(nil), // 432: wg.cosmo.platform.v1.CreateProposalResponse + (*GetProposalRequest)(nil), // 433: wg.cosmo.platform.v1.GetProposalRequest + (*GetProposalResponse)(nil), // 434: wg.cosmo.platform.v1.GetProposalResponse + (*GetProposalsByFederatedGraphRequest)(nil), // 435: wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest + (*GetProposalsByFederatedGraphResponse)(nil), // 436: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse + (*GetProposalChecksRequest)(nil), // 437: wg.cosmo.platform.v1.GetProposalChecksRequest + (*GetProposalChecksResponse)(nil), // 438: wg.cosmo.platform.v1.GetProposalChecksResponse + (*UpdateProposalRequest)(nil), // 439: wg.cosmo.platform.v1.UpdateProposalRequest + (*UpdateProposalResponse)(nil), // 440: wg.cosmo.platform.v1.UpdateProposalResponse + (*EnableProposalsForNamespaceRequest)(nil), // 441: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + (*EnableProposalsForNamespaceResponse)(nil), // 442: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + (*ConfigureNamespaceProposalConfigRequest)(nil), // 443: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + (*ConfigureNamespaceProposalConfigResponse)(nil), // 444: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + (*GetNamespaceProposalConfigRequest)(nil), // 445: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + (*GetNamespaceProposalConfigResponse)(nil), // 446: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + (*NamespaceLoginMethodMapping)(nil), // 447: wg.cosmo.platform.v1.NamespaceLoginMethodMapping + (*UpdateNamespaceLoginMethodsRequest)(nil), // 448: wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest + (*UpdateNamespaceLoginMethodsResponse)(nil), // 449: wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse + (*ListNamespaceLoginMethodsRequest)(nil), // 450: wg.cosmo.platform.v1.ListNamespaceLoginMethodsRequest + (*ListNamespaceLoginMethodsResponse)(nil), // 451: wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse + (*OrganizationLoginMethods)(nil), // 452: wg.cosmo.platform.v1.OrganizationLoginMethods + (*GetOrganizationLoginMethodsRequest)(nil), // 453: wg.cosmo.platform.v1.GetOrganizationLoginMethodsRequest + (*GetOrganizationLoginMethodsResponse)(nil), // 454: wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse + (*UpdateOrganizationLoginMethodsRequest)(nil), // 455: wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsRequest + (*UpdateOrganizationLoginMethodsResponse)(nil), // 456: wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse + (*GetOperationsRequest)(nil), // 457: wg.cosmo.platform.v1.GetOperationsRequest + (*GetOperationsResponse)(nil), // 458: wg.cosmo.platform.v1.GetOperationsResponse + (*GetClientsFromAnalyticsRequest)(nil), // 459: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + (*GetClientsFromAnalyticsResponse)(nil), // 460: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + (*GetOperationClientsRequest)(nil), // 461: wg.cosmo.platform.v1.GetOperationClientsRequest + (*GetOperationClientsResponse)(nil), // 462: wg.cosmo.platform.v1.GetOperationClientsResponse + (*GetOperationDeprecatedFieldsRequest)(nil), // 463: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + (*GetOperationDeprecatedFieldsResponse)(nil), // 464: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + (*ValidateAndFetchPluginDataRequest)(nil), // 465: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + (*ValidateAndFetchPluginDataResponse)(nil), // 466: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + (*LinkSubgraphRequest)(nil), // 467: wg.cosmo.platform.v1.LinkSubgraphRequest + (*LinkSubgraphResponse)(nil), // 468: wg.cosmo.platform.v1.LinkSubgraphResponse + (*UnlinkSubgraphRequest)(nil), // 469: wg.cosmo.platform.v1.UnlinkSubgraphRequest + (*UnlinkSubgraphResponse)(nil), // 470: wg.cosmo.platform.v1.UnlinkSubgraphResponse + (*VerifyAPIKeyGraphAccessRequest)(nil), // 471: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + (*VerifyAPIKeyGraphAccessResponse)(nil), // 472: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + (*InitializeCosmoUserRequest)(nil), // 473: wg.cosmo.platform.v1.InitializeCosmoUserRequest + (*InitializeCosmoUserResponse)(nil), // 474: wg.cosmo.platform.v1.InitializeCosmoUserResponse + (*ListOrganizationsRequest)(nil), // 475: wg.cosmo.platform.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 476: wg.cosmo.platform.v1.ListOrganizationsResponse + (*RecomposeGraphRequest)(nil), // 477: wg.cosmo.platform.v1.RecomposeGraphRequest + (*RecomposeGraphResponse)(nil), // 478: wg.cosmo.platform.v1.RecomposeGraphResponse + (*RecomposeFeatureFlagRequest)(nil), // 479: wg.cosmo.platform.v1.RecomposeFeatureFlagRequest + (*RecomposeFeatureFlagResponse)(nil), // 480: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse + (*GetOnboardingRequest)(nil), // 481: wg.cosmo.platform.v1.GetOnboardingRequest + (*GetOnboardingResponse)(nil), // 482: wg.cosmo.platform.v1.GetOnboardingResponse + (*CreateOnboardingRequest)(nil), // 483: wg.cosmo.platform.v1.CreateOnboardingRequest + (*CreateOnboardingResponse)(nil), // 484: wg.cosmo.platform.v1.CreateOnboardingResponse + (*FinishOnboardingRequest)(nil), // 485: wg.cosmo.platform.v1.FinishOnboardingRequest + (*FinishOnboardingResponse)(nil), // 486: wg.cosmo.platform.v1.FinishOnboardingResponse + (*Subgraph_PluginData)(nil), // 487: wg.cosmo.platform.v1.Subgraph.PluginData + (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 488: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + (*SchemaCheck_GhDetails)(nil), // 489: wg.cosmo.platform.v1.SchemaCheck.GhDetails + (*SchemaCheck_CheckedSubgraph)(nil), // 490: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + (*SchemaCheck_LinkedCheck)(nil), // 491: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + (*GetCheckSummaryResponse_AffectedGraph)(nil), // 492: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 493: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + (*GetCheckOperationsResponse_CheckOperation)(nil), // 494: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + nil, // 495: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 496: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 497: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 498: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + (*OrgMember_Group)(nil), // 499: wg.cosmo.platform.v1.OrgMember.Group + (*APIKey_Group)(nil), // 500: wg.cosmo.platform.v1.APIKey.Group + nil, // 501: wg.cosmo.platform.v1.Span.AttributesEntry + (*DeletePersistedOperationResponse_Operation)(nil), // 502: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 503: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + (*GetPersistedOperationsResponse_Operation)(nil), // 504: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 505: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 506: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + (*GetBillingPlansResponse_BillingPlan)(nil), // 507: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + (*GetAllOverridesResponse_Override)(nil), // 508: wg.cosmo.platform.v1.GetAllOverridesResponse.Override + (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 509: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 510: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 511: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + (*ClientWithOperations_Operation)(nil), // 512: wg.cosmo.platform.v1.ClientWithOperations.Operation + (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 513: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + (*GetProposalResponse_CurrentSubgraph)(nil), // 514: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 515: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + (*GetOperationsResponse_Operation)(nil), // 516: wg.cosmo.platform.v1.GetOperationsResponse.Operation + (*GetClientsFromAnalyticsResponse_Client)(nil), // 517: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + (*GetOperationClientsResponse_Client)(nil), // 518: wg.cosmo.platform.v1.GetOperationClientsResponse.Client + (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 519: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + (*ListOrganizationsResponse_OrganizationMembership)(nil), // 520: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + (common.EnumStatusCode)(0), // 521: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 522: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 523: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*notifications.EventMeta)(nil), // 524: wg.cosmo.notifications.EventMeta } var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ - 487, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode - 16, // 1: wg.cosmo.platform.v1.PublishMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 2: wg.cosmo.platform.v1.PublishMonographResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 3: wg.cosmo.platform.v1.PublishMonographResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 4: wg.cosmo.platform.v1.PublishMonographResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 15, // 5: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 488, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 489, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 521, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 18, // 1: wg.cosmo.platform.v1.PublishMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 2: wg.cosmo.platform.v1.PublishMonographResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 3: wg.cosmo.platform.v1.PublishMonographResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 4: wg.cosmo.platform.v1.PublishMonographResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 17, // 5: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 522, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 523, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 1, // 8: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType - 20, // 9: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.proto:type_name -> wg.cosmo.platform.v1.ProtoInput - 16, // 10: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 11: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 12: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 13: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 23, // 14: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.counts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats - 24, // 15: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.gitInfo:type_name -> wg.cosmo.platform.v1.GitInfo - 25, // 16: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext - 15, // 17: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 488, // 18: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 489, // 19: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 16, // 20: wg.cosmo.platform.v1.CreateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response - 15, // 21: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 488, // 22: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 489, // 23: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 1, // 24: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType - 16, // 25: wg.cosmo.platform.v1.DeleteMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 26: wg.cosmo.platform.v1.LintIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity - 43, // 27: wg.cosmo.platform.v1.LintIssue.issueLocation:type_name -> wg.cosmo.platform.v1.LintLocation - 0, // 28: wg.cosmo.platform.v1.GraphPruningIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity - 43, // 29: wg.cosmo.platform.v1.GraphPruningIssue.issueLocation:type_name -> wg.cosmo.platform.v1.LintLocation - 16, // 30: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 31: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 32: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 33: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 41, // 34: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 42, // 35: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.checked_federated_graphs:type_name -> wg.cosmo.platform.v1.CheckedFederatedGraphs - 44, // 36: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 37: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 38: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 39: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 39, // 40: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 47, // 41: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.counts:type_name -> wg.cosmo.platform.v1.SchemaCheckCounts - 37, // 42: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 43: wg.cosmo.platform.v1.FixSubgraphSchemaResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 44: wg.cosmo.platform.v1.CreateFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 45: wg.cosmo.platform.v1.CreateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 46: wg.cosmo.platform.v1.CreateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 47: wg.cosmo.platform.v1.CreateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 48: wg.cosmo.platform.v1.CreateFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 49: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 50: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 51: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 52: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 53: wg.cosmo.platform.v1.DeleteFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 110, // 54: wg.cosmo.platform.v1.FederatedGraph.requestSeries:type_name -> wg.cosmo.platform.v1.RequestSeriesItem - 54, // 55: wg.cosmo.platform.v1.FederatedGraph.contract:type_name -> wg.cosmo.platform.v1.Contract - 16, // 56: wg.cosmo.platform.v1.GetFederatedGraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 55, // 57: wg.cosmo.platform.v1.GetFederatedGraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph - 16, // 58: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 55, // 59: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph - 15, // 60: wg.cosmo.platform.v1.Subgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 1, // 61: wg.cosmo.platform.v1.Subgraph.type:type_name -> wg.cosmo.platform.v1.SubgraphType - 453, // 62: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData - 16, // 63: wg.cosmo.platform.v1.GetSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 60, // 64: wg.cosmo.platform.v1.GetSubgraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 65: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response - 55, // 66: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.FederatedGraph - 60, // 67: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 352, // 68: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.featureFlagsInLatestValidComposition:type_name -> wg.cosmo.platform.v1.FeatureFlag - 60, // 69: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.featureSubgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 70: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 71: wg.cosmo.platform.v1.GetSubgraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response - 60, // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph - 288, // 73: wg.cosmo.platform.v1.GetSubgraphByNameResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember - 454, // 74: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph - 16, // 75: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 76: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse.response:type_name -> wg.cosmo.platform.v1.Response - 72, // 77: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest.filters:type_name -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters - 455, // 78: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails - 25, // 79: wg.cosmo.platform.v1.SchemaCheck.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext - 456, // 80: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - 457, // 81: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck - 16, // 82: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.response:type_name -> wg.cosmo.platform.v1.Response - 74, // 83: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck - 16, // 84: wg.cosmo.platform.v1.GetCheckSummaryResponse.response:type_name -> wg.cosmo.platform.v1.Response - 74, // 85: wg.cosmo.platform.v1.GetCheckSummaryResponse.check:type_name -> wg.cosmo.platform.v1.SchemaCheck - 458, // 86: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph - 36, // 87: wg.cosmo.platform.v1.GetCheckSummaryResponse.changes:type_name -> wg.cosmo.platform.v1.SchemaChange - 44, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.lintIssues:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 89: wg.cosmo.platform.v1.GetCheckSummaryResponse.graphPruningIssues:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 459, // 90: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch - 37, // 91: wg.cosmo.platform.v1.GetCheckSummaryResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 92: wg.cosmo.platform.v1.GetCheckOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 460, // 93: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation - 16, // 94: wg.cosmo.platform.v1.GetOperationContentResponse.response:type_name -> wg.cosmo.platform.v1.Response - 96, // 95: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination - 100, // 96: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 84, // 97: wg.cosmo.platform.v1.FederatedGraphChangelogOutput.changelogs:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelog - 16, // 98: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.response:type_name -> wg.cosmo.platform.v1.Response - 85, // 99: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.federatedGraphChangelogOutput:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput - 16, // 100: wg.cosmo.platform.v1.GetFederatedResponse.response:type_name -> wg.cosmo.platform.v1.Response - 15, // 101: wg.cosmo.platform.v1.UpdateSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 488, // 102: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 489, // 103: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 16, // 104: wg.cosmo.platform.v1.UpdateSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 105: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 106: wg.cosmo.platform.v1.UpdateSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 107: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 108: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 109: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 110: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 111: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 488, // 112: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 489, // 113: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 16, // 114: wg.cosmo.platform.v1.UpdateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 115: wg.cosmo.platform.v1.CheckFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 116: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 60, // 117: wg.cosmo.platform.v1.CheckFederatedGraphResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 39, // 118: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 47, // 119: wg.cosmo.platform.v1.CheckFederatedGraphResponse.counts:type_name -> wg.cosmo.platform.v1.SchemaCheckCounts - 100, // 120: wg.cosmo.platform.v1.AnalyticsConfig.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 99, // 121: wg.cosmo.platform.v1.AnalyticsConfig.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter - 96, // 122: wg.cosmo.platform.v1.AnalyticsConfig.pagination:type_name -> wg.cosmo.platform.v1.Pagination - 97, // 123: wg.cosmo.platform.v1.AnalyticsConfig.sort:type_name -> wg.cosmo.platform.v1.Sort - 5, // 124: wg.cosmo.platform.v1.AnalyticsFilter.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator - 2, // 125: wg.cosmo.platform.v1.GetAnalyticsViewRequest.name:type_name -> wg.cosmo.platform.v1.AnalyticsViewGroupName - 98, // 126: wg.cosmo.platform.v1.GetAnalyticsViewRequest.config:type_name -> wg.cosmo.platform.v1.AnalyticsConfig - 103, // 127: wg.cosmo.platform.v1.AnalyticsViewResult.columns:type_name -> wg.cosmo.platform.v1.AnalyticsViewColumn - 106, // 128: wg.cosmo.platform.v1.AnalyticsViewResult.rows:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow - 104, // 129: wg.cosmo.platform.v1.AnalyticsViewResult.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter - 4, // 130: wg.cosmo.platform.v1.AnalyticsViewColumn.unit:type_name -> wg.cosmo.platform.v1.Unit - 105, // 131: wg.cosmo.platform.v1.AnalyticsViewResultFilter.options:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilterOption - 3, // 132: wg.cosmo.platform.v1.AnalyticsViewResultFilter.custom_options:type_name -> wg.cosmo.platform.v1.CustomOptions - 5, // 133: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator - 461, // 134: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry - 16, // 135: wg.cosmo.platform.v1.GetAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response - 102, // 136: wg.cosmo.platform.v1.GetAnalyticsViewResponse.view:type_name -> wg.cosmo.platform.v1.AnalyticsViewResult - 16, // 137: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response - 110, // 138: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.requestSeries:type_name -> wg.cosmo.platform.v1.RequestSeriesItem - 111, // 139: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.mostRequestedOperations:type_name -> wg.cosmo.platform.v1.OperationRequestCount - 113, // 140: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.subgraphMetrics:type_name -> wg.cosmo.platform.v1.SubgraphMetrics - 112, // 141: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.federatedGraphMetrics:type_name -> wg.cosmo.platform.v1.FederatedGraphMetrics - 16, // 142: wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response - 117, // 143: wg.cosmo.platform.v1.OrganizationGroup.rules:type_name -> wg.cosmo.platform.v1.OrganizationGroupRule - 16, // 144: wg.cosmo.platform.v1.CreateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 118, // 145: wg.cosmo.platform.v1.CreateOrganizationGroupResponse.group:type_name -> wg.cosmo.platform.v1.OrganizationGroup - 16, // 146: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 118, // 147: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.groups:type_name -> wg.cosmo.platform.v1.OrganizationGroup - 16, // 148: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 462, // 149: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - 463, // 150: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - 464, // 151: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule - 16, // 152: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 153: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 465, // 154: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group - 96, // 155: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination - 16, // 156: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 130, // 157: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.pendingInvitations:type_name -> wg.cosmo.platform.v1.PendingOrgInvitation - 96, // 158: wg.cosmo.platform.v1.GetOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination - 16, // 159: wg.cosmo.platform.v1.GetOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 129, // 160: wg.cosmo.platform.v1.GetOrganizationMembersResponse.members:type_name -> wg.cosmo.platform.v1.OrgMember - 16, // 161: wg.cosmo.platform.v1.InviteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 466, // 162: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group - 16, // 163: wg.cosmo.platform.v1.GetAPIKeysResponse.response:type_name -> wg.cosmo.platform.v1.Response - 137, // 164: wg.cosmo.platform.v1.GetAPIKeysResponse.apiKeys:type_name -> wg.cosmo.platform.v1.APIKey - 6, // 165: wg.cosmo.platform.v1.CreateAPIKeyRequest.expires:type_name -> wg.cosmo.platform.v1.ExpiresAt - 16, // 166: wg.cosmo.platform.v1.CreateAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 167: wg.cosmo.platform.v1.DeleteAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 168: wg.cosmo.platform.v1.UpdateAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 169: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 170: wg.cosmo.platform.v1.RemoveInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 171: wg.cosmo.platform.v1.MigrateFromApolloResponse.response:type_name -> wg.cosmo.platform.v1.Response - 467, // 172: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry - 16, // 173: wg.cosmo.platform.v1.GetTraceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 152, // 174: wg.cosmo.platform.v1.GetTraceResponse.spans:type_name -> wg.cosmo.platform.v1.Span - 16, // 175: wg.cosmo.platform.v1.WhoAmIResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 176: wg.cosmo.platform.v1.GenerateRouterTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 177: wg.cosmo.platform.v1.GetRouterTokensResponse.response:type_name -> wg.cosmo.platform.v1.Response - 157, // 178: wg.cosmo.platform.v1.GetRouterTokensResponse.tokens:type_name -> wg.cosmo.platform.v1.RouterToken - 16, // 179: wg.cosmo.platform.v1.DeleteRouterTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response - 164, // 180: wg.cosmo.platform.v1.PublishPersistedOperationsRequest.operations:type_name -> wg.cosmo.platform.v1.PersistedOperation - 7, // 181: wg.cosmo.platform.v1.PublishedOperation.status:type_name -> wg.cosmo.platform.v1.PublishedOperationStatus - 16, // 182: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 166, // 183: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.PublishedOperation - 16, // 184: wg.cosmo.platform.v1.DeletePersistedOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 468, // 185: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation - 16, // 186: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.response:type_name -> wg.cosmo.platform.v1.Response - 469, // 187: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation - 16, // 188: wg.cosmo.platform.v1.GetPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 470, // 189: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - 490, // 190: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 16, // 191: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 192: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 471, // 193: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config - 16, // 194: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.response:type_name -> wg.cosmo.platform.v1.Response - 490, // 195: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 490, // 196: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 16, // 197: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 198: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 490, // 199: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta - 16, // 200: wg.cosmo.platform.v1.CreateIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 8, // 201: wg.cosmo.platform.v1.IntegrationConfig.type:type_name -> wg.cosmo.platform.v1.IntegrationType - 188, // 202: wg.cosmo.platform.v1.IntegrationConfig.slackIntegrationConfig:type_name -> wg.cosmo.platform.v1.SlackIntegrationConfig - 189, // 203: wg.cosmo.platform.v1.Integration.integrationConfig:type_name -> wg.cosmo.platform.v1.IntegrationConfig - 490, // 204: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta - 16, // 205: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 190, // 206: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.integrations:type_name -> wg.cosmo.platform.v1.Integration - 490, // 207: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 16, // 208: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 209: wg.cosmo.platform.v1.DeleteIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 210: wg.cosmo.platform.v1.DeleteOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 211: wg.cosmo.platform.v1.RestoreOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 212: wg.cosmo.platform.v1.LeaveOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 213: wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 214: wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 215: wg.cosmo.platform.v1.CreateOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 208, // 216: wg.cosmo.platform.v1.CreateOrganizationResponse.organization:type_name -> wg.cosmo.platform.v1.Organization - 16, // 217: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.response:type_name -> wg.cosmo.platform.v1.Response - 208, // 218: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.organization:type_name -> wg.cosmo.platform.v1.Organization - 16, // 219: wg.cosmo.platform.v1.GetBillingPlansResponse.response:type_name -> wg.cosmo.platform.v1.Response - 473, // 220: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan - 16, // 221: wg.cosmo.platform.v1.CreateCheckoutSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 222: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 223: wg.cosmo.platform.v1.UpgradePlanResponse.response:type_name -> wg.cosmo.platform.v1.Response - 100, // 224: wg.cosmo.platform.v1.GetGraphMetricsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 99, // 225: wg.cosmo.platform.v1.GetGraphMetricsRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter - 16, // 226: wg.cosmo.platform.v1.GetGraphMetricsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 221, // 227: wg.cosmo.platform.v1.GetGraphMetricsResponse.requests:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 221, // 228: wg.cosmo.platform.v1.GetGraphMetricsResponse.latency:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 221, // 229: wg.cosmo.platform.v1.GetGraphMetricsResponse.errors:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 104, // 230: wg.cosmo.platform.v1.GetGraphMetricsResponse.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter - 222, // 231: wg.cosmo.platform.v1.MetricsDashboardMetric.top:type_name -> wg.cosmo.platform.v1.MetricsTopItem - 223, // 232: wg.cosmo.platform.v1.MetricsDashboardMetric.series:type_name -> wg.cosmo.platform.v1.MetricsSeriesItem - 4, // 233: wg.cosmo.platform.v1.MetricsDashboard.unit:type_name -> wg.cosmo.platform.v1.Unit - 100, // 234: wg.cosmo.platform.v1.GetMetricsErrorRateRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 99, // 235: wg.cosmo.platform.v1.GetMetricsErrorRateRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter - 16, // 236: wg.cosmo.platform.v1.GetMetricsErrorRateResponse.response:type_name -> wg.cosmo.platform.v1.Response - 227, // 237: wg.cosmo.platform.v1.GetMetricsErrorRateResponse.series:type_name -> wg.cosmo.platform.v1.MetricsErrorRateSeriesItem - 100, // 238: wg.cosmo.platform.v1.GetSubgraphMetricsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 99, // 239: wg.cosmo.platform.v1.GetSubgraphMetricsRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter - 16, // 240: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 221, // 241: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.requests:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 221, // 242: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.latency:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 221, // 243: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.errors:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric - 104, // 244: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter - 100, // 245: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 99, // 246: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter - 16, // 247: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse.response:type_name -> wg.cosmo.platform.v1.Response - 227, // 248: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse.series:type_name -> wg.cosmo.platform.v1.MetricsErrorRateSeriesItem - 16, // 249: wg.cosmo.platform.v1.ForceCheckSuccessResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 250: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 251: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 238, // 252: wg.cosmo.platform.v1.CreateOperationOverridesRequest.changes:type_name -> wg.cosmo.platform.v1.OverrideChange - 16, // 253: wg.cosmo.platform.v1.CreateOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 254: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse.response:type_name -> wg.cosmo.platform.v1.Response - 238, // 255: wg.cosmo.platform.v1.RemoveOperationOverridesRequest.changes:type_name -> wg.cosmo.platform.v1.OverrideChange - 16, // 256: wg.cosmo.platform.v1.RemoveOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 257: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 258: wg.cosmo.platform.v1.GetOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 238, // 259: wg.cosmo.platform.v1.GetOperationOverridesResponse.changes:type_name -> wg.cosmo.platform.v1.OverrideChange - 16, // 260: wg.cosmo.platform.v1.GetAllOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 474, // 261: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override - 24, // 262: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest.git_info:type_name -> wg.cosmo.platform.v1.GitInfo - 16, // 263: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse.response:type_name -> wg.cosmo.platform.v1.Response - 253, // 264: wg.cosmo.platform.v1.CreateOIDCProviderRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper - 16, // 265: wg.cosmo.platform.v1.CreateOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 266: wg.cosmo.platform.v1.GetOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response - 253, // 267: wg.cosmo.platform.v1.GetOIDCProviderResponse.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper - 16, // 268: wg.cosmo.platform.v1.DeleteOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response - 253, // 269: wg.cosmo.platform.v1.UpdateIDPMappersRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper - 16, // 270: wg.cosmo.platform.v1.UpdateIDPMappersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 271: wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 272: wg.cosmo.platform.v1.GetAuditLogsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 266, // 273: wg.cosmo.platform.v1.GetAuditLogsResponse.logs:type_name -> wg.cosmo.platform.v1.AuditLog - 16, // 274: wg.cosmo.platform.v1.GetInvitationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 264, // 275: wg.cosmo.platform.v1.GetInvitationsResponse.invitations:type_name -> wg.cosmo.platform.v1.OrganizationInvite - 16, // 276: wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 1, // 277: wg.cosmo.platform.v1.GraphCompositionSubgraph.subgraphType:type_name -> wg.cosmo.platform.v1.SubgraphType - 16, // 278: wg.cosmo.platform.v1.GetCompositionsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 272, // 279: wg.cosmo.platform.v1.GetCompositionsResponse.compositions:type_name -> wg.cosmo.platform.v1.GraphComposition - 16, // 280: wg.cosmo.platform.v1.GetCompositionDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 272, // 281: wg.cosmo.platform.v1.GetCompositionDetailsResponse.composition:type_name -> wg.cosmo.platform.v1.GraphComposition - 273, // 282: wg.cosmo.platform.v1.GetCompositionDetailsResponse.compositionSubgraphs:type_name -> wg.cosmo.platform.v1.GraphCompositionSubgraph - 77, // 283: wg.cosmo.platform.v1.GetCompositionDetailsResponse.changeCounts:type_name -> wg.cosmo.platform.v1.ChangeCounts - 277, // 284: wg.cosmo.platform.v1.GetCompositionDetailsResponse.featureFlagCompositions:type_name -> wg.cosmo.platform.v1.FeatureFlagComposition - 16, // 285: wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 286: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 85, // 287: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.changelog:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput - 16, // 288: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 475, // 289: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - 476, // 290: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - 477, // 291: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph - 9, // 292: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest.featureId:type_name -> wg.cosmo.platform.v1.Feature - 16, // 293: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 294: wg.cosmo.platform.v1.GetSubgraphMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 288, // 295: wg.cosmo.platform.v1.GetSubgraphMembersResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember - 16, // 296: wg.cosmo.platform.v1.AddReadmeResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 297: wg.cosmo.platform.v1.GetRoutersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 292, // 298: wg.cosmo.platform.v1.GetRoutersResponse.routers:type_name -> wg.cosmo.platform.v1.Router - 16, // 299: wg.cosmo.platform.v1.GetClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 295, // 300: wg.cosmo.platform.v1.GetClientsResponse.clients:type_name -> wg.cosmo.platform.v1.ClientInfo - 100, // 301: wg.cosmo.platform.v1.GetFieldUsageRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 478, // 302: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation - 16, // 303: wg.cosmo.platform.v1.GetFieldUsageResponse.response:type_name -> wg.cosmo.platform.v1.Response - 110, // 304: wg.cosmo.platform.v1.GetFieldUsageResponse.request_series:type_name -> wg.cosmo.platform.v1.RequestSeriesItem - 299, // 305: wg.cosmo.platform.v1.GetFieldUsageResponse.clients:type_name -> wg.cosmo.platform.v1.ClientWithOperations - 300, // 306: wg.cosmo.platform.v1.GetFieldUsageResponse.meta:type_name -> wg.cosmo.platform.v1.FieldUsageMeta - 16, // 307: wg.cosmo.platform.v1.CreateNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 308: wg.cosmo.platform.v1.DeleteNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 309: wg.cosmo.platform.v1.RenameNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 310: wg.cosmo.platform.v1.GetNamespacesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 308, // 311: wg.cosmo.platform.v1.GetNamespacesResponse.namespaces:type_name -> wg.cosmo.platform.v1.Namespace - 16, // 312: wg.cosmo.platform.v1.MoveGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 313: wg.cosmo.platform.v1.MoveGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 314: wg.cosmo.platform.v1.MoveGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 315: wg.cosmo.platform.v1.MoveGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 316: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 321, // 317: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse.configs:type_name -> wg.cosmo.platform.v1.LintConfig - 16, // 318: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 319: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 320: wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 321: wg.cosmo.platform.v1.LintConfig.severityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 321, // 322: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest.configs:type_name -> wg.cosmo.platform.v1.LintConfig - 16, // 323: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 324: wg.cosmo.platform.v1.EnableGraphPruningResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 325: wg.cosmo.platform.v1.GraphPruningConfig.severityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 326, // 326: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest.configs:type_name -> wg.cosmo.platform.v1.GraphPruningConfig - 16, // 327: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 328: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 326, // 329: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse.configs:type_name -> wg.cosmo.platform.v1.GraphPruningConfig - 16, // 330: wg.cosmo.platform.v1.MigrateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 331: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 334, // 332: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse.permissions:type_name -> wg.cosmo.platform.v1.Permission - 16, // 333: wg.cosmo.platform.v1.CreateContractResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 334: wg.cosmo.platform.v1.CreateContractResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 335: wg.cosmo.platform.v1.CreateContractResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 336: wg.cosmo.platform.v1.CreateContractResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 337: wg.cosmo.platform.v1.UpdateContractResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 338: wg.cosmo.platform.v1.UpdateContractResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 339: wg.cosmo.platform.v1.UpdateContractResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 340: wg.cosmo.platform.v1.UpdateContractResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 341: wg.cosmo.platform.v1.IsMemberLimitReachedResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 342: wg.cosmo.platform.v1.DeleteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 15, // 343: wg.cosmo.platform.v1.CreateFeatureFlagRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 344: wg.cosmo.platform.v1.CreateFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 345: wg.cosmo.platform.v1.CreateFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 346: wg.cosmo.platform.v1.CreateFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 347: wg.cosmo.platform.v1.CreateFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 15, // 348: wg.cosmo.platform.v1.UpdateFeatureFlagRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 349: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 350: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 351: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 352: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 353: wg.cosmo.platform.v1.EnableFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 354: wg.cosmo.platform.v1.EnableFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 355: wg.cosmo.platform.v1.EnableFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 356: wg.cosmo.platform.v1.EnableFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 357: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 358: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 359: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 360: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 15, // 361: wg.cosmo.platform.v1.FeatureFlag.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 362: wg.cosmo.platform.v1.GetFeatureFlagsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 352, // 363: wg.cosmo.platform.v1.GetFeatureFlagsResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag - 16, // 364: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response - 352, // 365: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_flag:type_name -> wg.cosmo.platform.v1.FeatureFlag - 479, // 366: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph - 60, // 367: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 368: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response - 60, // 369: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 370: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 60, // 371: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 372: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 352, // 373: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag - 96, // 374: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination - 100, // 375: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest.date_range:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 376: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse.response:type_name -> wg.cosmo.platform.v1.Response - 364, // 377: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse.deliveries:type_name -> wg.cosmo.platform.v1.WebhookDelivery - 16, // 378: wg.cosmo.platform.v1.RedeliverWebhookResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 379: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 364, // 380: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse.delivery:type_name -> wg.cosmo.platform.v1.WebhookDelivery - 16, // 381: wg.cosmo.platform.v1.CreatePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 382: wg.cosmo.platform.v1.DeletePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 383: wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 384: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 377, // 385: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse.scripts:type_name -> wg.cosmo.platform.v1.PlaygroundScript - 16, // 386: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.response:type_name -> wg.cosmo.platform.v1.Response - 55, // 387: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.graph:type_name -> wg.cosmo.platform.v1.FederatedGraph - 60, // 388: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 352, // 389: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.featureFlagsInLatestValidComposition:type_name -> wg.cosmo.platform.v1.FeatureFlag - 60, // 390: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.featureSubgraphs:type_name -> wg.cosmo.platform.v1.Subgraph - 16, // 391: wg.cosmo.platform.v1.GetSubgraphByIdResponse.response:type_name -> wg.cosmo.platform.v1.Response - 60, // 392: wg.cosmo.platform.v1.GetSubgraphByIdResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph - 288, // 393: wg.cosmo.platform.v1.GetSubgraphByIdResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember - 16, // 394: wg.cosmo.platform.v1.GetNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 308, // 395: wg.cosmo.platform.v1.GetNamespaceResponse.namespace:type_name -> wg.cosmo.platform.v1.Namespace - 386, // 396: wg.cosmo.platform.v1.WorkspaceNamespace.graphs:type_name -> wg.cosmo.platform.v1.WorkspaceFederatedGraph - 387, // 397: wg.cosmo.platform.v1.WorkspaceFederatedGraph.subgraphs:type_name -> wg.cosmo.platform.v1.WorkspaceSubgraph - 16, // 398: wg.cosmo.platform.v1.GetWorkspaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 385, // 399: wg.cosmo.platform.v1.GetWorkspaceResponse.namespaces:type_name -> wg.cosmo.platform.v1.WorkspaceNamespace - 16, // 400: wg.cosmo.platform.v1.PushCacheWarmerOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 401: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 393, // 402: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.CacheWarmerOperation - 16, // 403: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 404: wg.cosmo.platform.v1.ConfigureCacheWarmerResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 405: wg.cosmo.platform.v1.GetCacheWarmerConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 406: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 407: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 408: wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 409: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 410: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 411: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 412: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 413: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 16, // 414: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 414, // 415: wg.cosmo.platform.v1.Proposal.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 10, // 416: wg.cosmo.platform.v1.Proposal.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin - 15, // 417: wg.cosmo.platform.v1.ProposalSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 414, // 418: wg.cosmo.platform.v1.CreateProposalRequest.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 11, // 419: wg.cosmo.platform.v1.CreateProposalRequest.namingConvention:type_name -> wg.cosmo.platform.v1.ProposalNamingConvention - 10, // 420: wg.cosmo.platform.v1.CreateProposalRequest.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin - 16, // 421: wg.cosmo.platform.v1.CreateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 422: wg.cosmo.platform.v1.CreateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 423: wg.cosmo.platform.v1.CreateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 424: wg.cosmo.platform.v1.CreateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 39, // 425: wg.cosmo.platform.v1.CreateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 44, // 426: wg.cosmo.platform.v1.CreateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 427: wg.cosmo.platform.v1.CreateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 428: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 429: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 41, // 430: wg.cosmo.platform.v1.CreateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 37, // 431: wg.cosmo.platform.v1.CreateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 432: wg.cosmo.platform.v1.GetProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 413, // 433: wg.cosmo.platform.v1.GetProposalResponse.proposal:type_name -> wg.cosmo.platform.v1.Proposal - 480, // 434: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph - 16, // 435: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 413, // 436: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.proposals:type_name -> wg.cosmo.platform.v1.Proposal - 16, // 437: wg.cosmo.platform.v1.GetProposalChecksResponse.response:type_name -> wg.cosmo.platform.v1.Response - 74, // 438: wg.cosmo.platform.v1.GetProposalChecksResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck - 481, // 439: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - 16, // 440: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 441: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 442: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 443: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 39, // 444: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 44, // 445: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 446: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 447: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 448: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 41, // 449: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 37, // 450: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 451: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 452: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 453: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 16, // 454: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 455: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 456: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 457: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 12, // 458: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn - 100, // 459: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 13, // 460: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection - 16, // 461: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 482, // 462: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation - 16, // 463: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 483, // 464: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - 100, // 465: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 466: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 484, // 467: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client - 100, // 468: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 469: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 485, // 470: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - 15, // 471: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 472: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 473: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 474: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 475: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 476: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 477: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 486, // 478: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - 16, // 479: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 480: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 481: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 482: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 23, // 483: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats - 15, // 484: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 36, // 485: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange - 107, // 486: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue - 472, // 487: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - 55, // 488: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph - 414, // 489: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 14, // 490: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType - 370, // 491: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest - 372, // 492: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest - 374, // 493: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest - 376, // 494: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest - 302, // 495: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest - 304, // 496: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest - 306, // 497: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest - 309, // 498: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest - 383, // 499: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest - 388, // 500: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest - 336, // 501: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest - 338, // 502: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest - 311, // 503: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 504: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 505: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 28, // 506: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest - 18, // 507: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest - 33, // 508: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest - 92, // 509: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest - 331, // 510: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest - 31, // 511: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest - 21, // 512: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest - 30, // 513: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest - 32, // 514: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest - 35, // 515: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest - 26, // 516: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest - 411, // 517: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest - 27, // 518: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest - 90, // 519: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest - 88, // 520: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest - 94, // 521: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest - 155, // 522: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest - 158, // 523: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest - 160, // 524: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest - 162, // 525: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest - 165, // 526: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest - 170, // 527: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest - 168, // 528: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest - 172, // 529: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest - 265, // 530: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest - 447, // 531: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest - 449, // 532: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest - 53, // 533: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest - 57, // 534: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest - 62, // 535: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest - 64, // 536: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest - 59, // 537: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest - 66, // 538: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest - 68, // 539: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest - 70, // 540: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest - 73, // 541: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest - 76, // 542: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest - 79, // 543: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest - 232, // 544: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest - 239, // 545: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest - 243, // 546: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest - 241, // 547: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest - 245, // 548: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest - 247, // 549: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest - 249, // 550: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest - 234, // 551: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest - 236, // 552: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest - 81, // 553: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest - 83, // 554: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest - 115, // 555: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest - 209, // 556: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest - 133, // 557: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest - 131, // 558: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest - 340, // 559: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest - 135, // 560: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest - 138, // 561: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest - 140, // 562: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest - 144, // 563: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest - 142, // 564: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest - 146, // 565: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest - 148, // 566: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest - 150, // 567: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest - 119, // 568: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest - 121, // 569: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest - 123, // 570: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest - 125, // 571: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest - 127, // 572: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest - 175, // 573: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest - 177, // 574: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest - 179, // 575: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest - 181, // 576: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest - 183, // 577: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest - 363, // 578: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest - 368, // 579: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest - 366, // 580: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest - 185, // 581: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest - 187, // 582: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest - 192, // 583: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest - 194, // 584: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest - 342, // 585: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest - 196, // 586: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest - 198, // 587: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest - 200, // 588: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest - 202, // 589: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest - 204, // 590: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest - 251, // 591: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest - 254, // 592: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest - 256, // 593: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest - 258, // 594: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest - 260, // 595: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest - 296, // 596: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest - 293, // 597: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest - 268, // 598: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest - 270, // 599: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest - 274, // 600: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest - 276, // 601: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest - 279, // 602: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest - 281, // 603: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest - 283, // 604: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest - 285, // 605: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest - 287, // 606: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest - 290, // 607: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest - 333, // 608: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest - 344, // 609: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest - 350, // 610: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest - 346, // 611: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest - 348, // 612: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest - 101, // 613: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest - 109, // 614: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest - 153, // 615: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest - 219, // 616: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest - 225, // 617: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest - 228, // 618: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest - 230, // 619: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest - 298, // 620: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest - 262, // 621: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest - 206, // 622: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest - 319, // 623: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest - 322, // 624: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest - 313, // 625: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest - 315, // 626: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest - 317, // 627: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest - 324, // 628: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest - 327, // 629: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest - 329, // 630: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest - 353, // 631: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest - 355, // 632: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest - 357, // 633: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest - 359, // 634: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest - 361, // 635: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest - 379, // 636: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest - 381, // 637: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest - 390, // 638: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest - 392, // 639: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest - 395, // 640: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest - 397, // 641: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest - 399, // 642: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest - 405, // 643: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest - 401, // 644: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest - 403, // 645: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest - 211, // 646: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest - 213, // 647: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest - 215, // 648: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest - 217, // 649: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest - 407, // 650: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest - 409, // 651: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest - 415, // 652: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest - 417, // 653: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest - 423, // 654: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest - 425, // 655: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - 427, // 656: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - 429, // 657: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - 419, // 658: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest - 421, // 659: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest - 431, // 660: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest - 433, // 661: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - 435, // 662: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest - 437, // 663: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - 439, // 664: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - 441, // 665: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest - 443, // 666: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest - 445, // 667: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - 451, // 668: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest - 371, // 669: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse - 373, // 670: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse - 375, // 671: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse - 378, // 672: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse - 303, // 673: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse - 305, // 674: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse - 307, // 675: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse - 310, // 676: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse - 384, // 677: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse - 389, // 678: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse - 337, // 679: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse - 339, // 680: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse - 312, // 681: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 682: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 683: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 29, // 684: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse - 19, // 685: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse - 34, // 686: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse - 93, // 687: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse - 332, // 688: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse - 50, // 689: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse - 22, // 690: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse - 49, // 691: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse - 52, // 692: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse - 51, // 693: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse - 46, // 694: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse - 412, // 695: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse - 48, // 696: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse - 91, // 697: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse - 89, // 698: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse - 95, // 699: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse - 156, // 700: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse - 159, // 701: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse - 161, // 702: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse - 163, // 703: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse - 167, // 704: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse - 171, // 705: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse - 169, // 706: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse - 173, // 707: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse - 267, // 708: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse - 448, // 709: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse - 450, // 710: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse - 56, // 711: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse - 58, // 712: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse - 63, // 713: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse - 65, // 714: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse - 61, // 715: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse - 67, // 716: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse - 69, // 717: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse - 71, // 718: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse - 75, // 719: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse - 78, // 720: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse - 80, // 721: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse - 233, // 722: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse - 240, // 723: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse - 244, // 724: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse - 242, // 725: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse - 246, // 726: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse - 248, // 727: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse - 250, // 728: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse - 235, // 729: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse - 237, // 730: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse - 82, // 731: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse - 86, // 732: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse - 116, // 733: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse - 210, // 734: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse - 134, // 735: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse - 132, // 736: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse - 341, // 737: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse - 136, // 738: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse - 139, // 739: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse - 141, // 740: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse - 145, // 741: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse - 143, // 742: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse - 147, // 743: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse - 149, // 744: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse - 151, // 745: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse - 120, // 746: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse - 122, // 747: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse - 124, // 748: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse - 126, // 749: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse - 128, // 750: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse - 176, // 751: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse - 178, // 752: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse - 180, // 753: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse - 182, // 754: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse - 184, // 755: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse - 365, // 756: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse - 369, // 757: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse - 367, // 758: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse - 186, // 759: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse - 191, // 760: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse - 193, // 761: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse - 195, // 762: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse - 343, // 763: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse - 197, // 764: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse - 199, // 765: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse - 201, // 766: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse - 203, // 767: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse - 205, // 768: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse - 252, // 769: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse - 255, // 770: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse - 257, // 771: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse - 259, // 772: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse - 261, // 773: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse - 297, // 774: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse - 294, // 775: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse - 269, // 776: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse - 271, // 777: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse - 275, // 778: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse - 278, // 779: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse - 280, // 780: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse - 282, // 781: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse - 284, // 782: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse - 286, // 783: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse - 289, // 784: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse - 291, // 785: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse - 335, // 786: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse - 345, // 787: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse - 351, // 788: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse - 347, // 789: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse - 349, // 790: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse - 108, // 791: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse - 114, // 792: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse - 154, // 793: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse - 220, // 794: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse - 226, // 795: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse - 229, // 796: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse - 231, // 797: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse - 301, // 798: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse - 263, // 799: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse - 207, // 800: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse - 320, // 801: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse - 323, // 802: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse - 314, // 803: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse - 316, // 804: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse - 318, // 805: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse - 325, // 806: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse - 328, // 807: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse - 330, // 808: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse - 354, // 809: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse - 356, // 810: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse - 358, // 811: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse - 360, // 812: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse - 362, // 813: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse - 380, // 814: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse - 382, // 815: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse - 391, // 816: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse - 394, // 817: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse - 396, // 818: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse - 398, // 819: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse - 400, // 820: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse - 406, // 821: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse - 402, // 822: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse - 404, // 823: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse - 212, // 824: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse - 214, // 825: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse - 216, // 826: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse - 218, // 827: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse - 408, // 828: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse - 410, // 829: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse - 416, // 830: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse - 418, // 831: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse - 424, // 832: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse - 426, // 833: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - 428, // 834: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - 430, // 835: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - 420, // 836: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse - 422, // 837: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse - 432, // 838: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse - 434, // 839: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - 436, // 840: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse - 438, // 841: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - 440, // 842: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - 442, // 843: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse - 444, // 844: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse - 446, // 845: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - 452, // 846: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse - 669, // [669:847] is the sub-list for method output_type - 491, // [491:669] is the sub-list for method input_type - 491, // [491:491] is the sub-list for extension type_name - 491, // [491:491] is the sub-list for extension extendee - 0, // [0:491] is the sub-list for field type_name + 22, // 9: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.proto:type_name -> wg.cosmo.platform.v1.ProtoInput + 18, // 10: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 11: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 12: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 13: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 25, // 14: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.counts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 26, // 15: wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest.subgraphs:type_name -> wg.cosmo.platform.v1.PublishSubgraph + 18, // 16: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 17: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 18: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 19: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 25, // 20: wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse.counts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 29, // 21: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.gitInfo:type_name -> wg.cosmo.platform.v1.GitInfo + 30, // 22: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext + 17, // 23: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 522, // 24: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 523, // 25: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 18, // 26: wg.cosmo.platform.v1.CreateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response + 17, // 27: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 522, // 28: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 523, // 29: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 1, // 30: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType + 18, // 31: wg.cosmo.platform.v1.DeleteMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 32: wg.cosmo.platform.v1.LintIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity + 48, // 33: wg.cosmo.platform.v1.LintIssue.issueLocation:type_name -> wg.cosmo.platform.v1.LintLocation + 0, // 34: wg.cosmo.platform.v1.GraphPruningIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity + 48, // 35: wg.cosmo.platform.v1.GraphPruningIssue.issueLocation:type_name -> wg.cosmo.platform.v1.LintLocation + 18, // 36: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.response:type_name -> wg.cosmo.platform.v1.Response + 41, // 37: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 41, // 38: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 43, // 39: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 46, // 40: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 47, // 41: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.checked_federated_graphs:type_name -> wg.cosmo.platform.v1.CheckedFederatedGraphs + 49, // 42: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 49, // 43: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 50, // 44: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 50, // 45: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 44, // 46: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 52, // 47: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.counts:type_name -> wg.cosmo.platform.v1.SchemaCheckCounts + 42, // 48: wg.cosmo.platform.v1.CheckSubgraphSchemaResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 18, // 49: wg.cosmo.platform.v1.FixSubgraphSchemaResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 50: wg.cosmo.platform.v1.CreateFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 51: wg.cosmo.platform.v1.CreateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 52: wg.cosmo.platform.v1.CreateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 53: wg.cosmo.platform.v1.CreateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 54: wg.cosmo.platform.v1.CreateFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 55: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 56: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 57: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 58: wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 59: wg.cosmo.platform.v1.DeleteFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 115, // 60: wg.cosmo.platform.v1.FederatedGraph.requestSeries:type_name -> wg.cosmo.platform.v1.RequestSeriesItem + 59, // 61: wg.cosmo.platform.v1.FederatedGraph.contract:type_name -> wg.cosmo.platform.v1.Contract + 18, // 62: wg.cosmo.platform.v1.GetFederatedGraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 60, // 63: wg.cosmo.platform.v1.GetFederatedGraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph + 18, // 64: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 60, // 65: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph + 17, // 66: wg.cosmo.platform.v1.Subgraph.labels:type_name -> wg.cosmo.platform.v1.Label + 1, // 67: wg.cosmo.platform.v1.Subgraph.type:type_name -> wg.cosmo.platform.v1.SubgraphType + 487, // 68: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData + 18, // 69: wg.cosmo.platform.v1.GetSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 70: wg.cosmo.platform.v1.GetSubgraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 71: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response + 60, // 72: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.FederatedGraph + 65, // 73: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 74: wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 75: wg.cosmo.platform.v1.GetSubgraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 76: wg.cosmo.platform.v1.GetSubgraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph + 300, // 77: wg.cosmo.platform.v1.GetSubgraphByNameResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember + 488, // 78: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + 18, // 79: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 80: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse.response:type_name -> wg.cosmo.platform.v1.Response + 77, // 81: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest.filters:type_name -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters + 489, // 82: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails + 30, // 83: wg.cosmo.platform.v1.SchemaCheck.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext + 490, // 84: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + 491, // 85: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + 18, // 86: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.response:type_name -> wg.cosmo.platform.v1.Response + 79, // 87: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck + 18, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.response:type_name -> wg.cosmo.platform.v1.Response + 79, // 89: wg.cosmo.platform.v1.GetCheckSummaryResponse.check:type_name -> wg.cosmo.platform.v1.SchemaCheck + 492, // 90: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + 41, // 91: wg.cosmo.platform.v1.GetCheckSummaryResponse.changes:type_name -> wg.cosmo.platform.v1.SchemaChange + 49, // 92: wg.cosmo.platform.v1.GetCheckSummaryResponse.lintIssues:type_name -> wg.cosmo.platform.v1.LintIssue + 50, // 93: wg.cosmo.platform.v1.GetCheckSummaryResponse.graphPruningIssues:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 493, // 94: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + 42, // 95: wg.cosmo.platform.v1.GetCheckSummaryResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 18, // 96: wg.cosmo.platform.v1.GetCheckOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 494, // 97: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + 18, // 98: wg.cosmo.platform.v1.GetOperationContentResponse.response:type_name -> wg.cosmo.platform.v1.Response + 101, // 99: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination + 105, // 100: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 89, // 101: wg.cosmo.platform.v1.FederatedGraphChangelogOutput.changelogs:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelog + 18, // 102: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.response:type_name -> wg.cosmo.platform.v1.Response + 90, // 103: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.federatedGraphChangelogOutput:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput + 18, // 104: wg.cosmo.platform.v1.GetFederatedResponse.response:type_name -> wg.cosmo.platform.v1.Response + 17, // 105: wg.cosmo.platform.v1.UpdateSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 522, // 106: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 523, // 107: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 18, // 108: wg.cosmo.platform.v1.UpdateSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 109: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 110: wg.cosmo.platform.v1.UpdateSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 111: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 112: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 113: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 114: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 115: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 522, // 116: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 523, // 117: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 18, // 118: wg.cosmo.platform.v1.UpdateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 119: wg.cosmo.platform.v1.CheckFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 120: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 65, // 121: wg.cosmo.platform.v1.CheckFederatedGraphResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 44, // 122: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 52, // 123: wg.cosmo.platform.v1.CheckFederatedGraphResponse.counts:type_name -> wg.cosmo.platform.v1.SchemaCheckCounts + 105, // 124: wg.cosmo.platform.v1.AnalyticsConfig.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 104, // 125: wg.cosmo.platform.v1.AnalyticsConfig.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter + 101, // 126: wg.cosmo.platform.v1.AnalyticsConfig.pagination:type_name -> wg.cosmo.platform.v1.Pagination + 102, // 127: wg.cosmo.platform.v1.AnalyticsConfig.sort:type_name -> wg.cosmo.platform.v1.Sort + 5, // 128: wg.cosmo.platform.v1.AnalyticsFilter.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator + 2, // 129: wg.cosmo.platform.v1.GetAnalyticsViewRequest.name:type_name -> wg.cosmo.platform.v1.AnalyticsViewGroupName + 103, // 130: wg.cosmo.platform.v1.GetAnalyticsViewRequest.config:type_name -> wg.cosmo.platform.v1.AnalyticsConfig + 108, // 131: wg.cosmo.platform.v1.AnalyticsViewResult.columns:type_name -> wg.cosmo.platform.v1.AnalyticsViewColumn + 111, // 132: wg.cosmo.platform.v1.AnalyticsViewResult.rows:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow + 109, // 133: wg.cosmo.platform.v1.AnalyticsViewResult.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter + 4, // 134: wg.cosmo.platform.v1.AnalyticsViewColumn.unit:type_name -> wg.cosmo.platform.v1.Unit + 110, // 135: wg.cosmo.platform.v1.AnalyticsViewResultFilter.options:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilterOption + 3, // 136: wg.cosmo.platform.v1.AnalyticsViewResultFilter.custom_options:type_name -> wg.cosmo.platform.v1.CustomOptions + 5, // 137: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator + 495, // 138: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + 18, // 139: wg.cosmo.platform.v1.GetAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response + 107, // 140: wg.cosmo.platform.v1.GetAnalyticsViewResponse.view:type_name -> wg.cosmo.platform.v1.AnalyticsViewResult + 18, // 141: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response + 115, // 142: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.requestSeries:type_name -> wg.cosmo.platform.v1.RequestSeriesItem + 116, // 143: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.mostRequestedOperations:type_name -> wg.cosmo.platform.v1.OperationRequestCount + 118, // 144: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.subgraphMetrics:type_name -> wg.cosmo.platform.v1.SubgraphMetrics + 117, // 145: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.federatedGraphMetrics:type_name -> wg.cosmo.platform.v1.FederatedGraphMetrics + 18, // 146: wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response + 122, // 147: wg.cosmo.platform.v1.OrganizationGroup.rules:type_name -> wg.cosmo.platform.v1.OrganizationGroupRule + 18, // 148: wg.cosmo.platform.v1.CreateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response + 123, // 149: wg.cosmo.platform.v1.CreateOrganizationGroupResponse.group:type_name -> wg.cosmo.platform.v1.OrganizationGroup + 18, // 150: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 123, // 151: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.groups:type_name -> wg.cosmo.platform.v1.OrganizationGroup + 18, // 152: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 496, // 153: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + 497, // 154: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + 498, // 155: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + 18, // 156: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 157: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response + 499, // 158: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group + 101, // 159: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination + 18, // 160: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 135, // 161: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.pendingInvitations:type_name -> wg.cosmo.platform.v1.PendingOrgInvitation + 101, // 162: wg.cosmo.platform.v1.GetOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination + 18, // 163: wg.cosmo.platform.v1.GetOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 134, // 164: wg.cosmo.platform.v1.GetOrganizationMembersResponse.members:type_name -> wg.cosmo.platform.v1.OrgMember + 18, // 165: wg.cosmo.platform.v1.InviteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 166: wg.cosmo.platform.v1.InviteUsersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 143, // 167: wg.cosmo.platform.v1.InviteUsersResponse.invitationErrors:type_name -> wg.cosmo.platform.v1.InviteUsersInvitationError + 500, // 168: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group + 18, // 169: wg.cosmo.platform.v1.GetAPIKeysResponse.response:type_name -> wg.cosmo.platform.v1.Response + 145, // 170: wg.cosmo.platform.v1.GetAPIKeysResponse.apiKeys:type_name -> wg.cosmo.platform.v1.APIKey + 6, // 171: wg.cosmo.platform.v1.CreateAPIKeyRequest.expires:type_name -> wg.cosmo.platform.v1.ExpiresAt + 18, // 172: wg.cosmo.platform.v1.CreateAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 173: wg.cosmo.platform.v1.DeleteAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 174: wg.cosmo.platform.v1.UpdateAPIKeyResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 175: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 176: wg.cosmo.platform.v1.RemoveInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 177: wg.cosmo.platform.v1.MigrateFromApolloResponse.response:type_name -> wg.cosmo.platform.v1.Response + 501, // 178: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry + 18, // 179: wg.cosmo.platform.v1.GetTraceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 160, // 180: wg.cosmo.platform.v1.GetTraceResponse.spans:type_name -> wg.cosmo.platform.v1.Span + 18, // 181: wg.cosmo.platform.v1.WhoAmIResponse.response:type_name -> wg.cosmo.platform.v1.Response + 165, // 182: wg.cosmo.platform.v1.WhoAmIResponse.login_method:type_name -> wg.cosmo.platform.v1.LoginMethod + 7, // 183: wg.cosmo.platform.v1.LoginMethod.type:type_name -> wg.cosmo.platform.v1.LoginMethodType + 8, // 184: wg.cosmo.platform.v1.LoginMethod.social_provider:type_name -> wg.cosmo.platform.v1.SocialLoginProvider + 18, // 185: wg.cosmo.platform.v1.GenerateRouterTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 186: wg.cosmo.platform.v1.GetRouterTokensResponse.response:type_name -> wg.cosmo.platform.v1.Response + 166, // 187: wg.cosmo.platform.v1.GetRouterTokensResponse.tokens:type_name -> wg.cosmo.platform.v1.RouterToken + 18, // 188: wg.cosmo.platform.v1.DeleteRouterTokenResponse.response:type_name -> wg.cosmo.platform.v1.Response + 173, // 189: wg.cosmo.platform.v1.PublishPersistedOperationsRequest.operations:type_name -> wg.cosmo.platform.v1.PersistedOperation + 9, // 190: wg.cosmo.platform.v1.PublishedOperation.status:type_name -> wg.cosmo.platform.v1.PublishedOperationStatus + 18, // 191: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 175, // 192: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.PublishedOperation + 18, // 193: wg.cosmo.platform.v1.DeletePersistedOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 502, // 194: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + 18, // 195: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.response:type_name -> wg.cosmo.platform.v1.Response + 503, // 196: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + 18, // 197: wg.cosmo.platform.v1.GetPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 504, // 198: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + 524, // 199: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 18, // 200: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 201: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 505, // 202: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + 18, // 203: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.response:type_name -> wg.cosmo.platform.v1.Response + 524, // 204: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 524, // 205: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 18, // 206: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 207: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 524, // 208: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 18, // 209: wg.cosmo.platform.v1.CreateIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 10, // 210: wg.cosmo.platform.v1.IntegrationConfig.type:type_name -> wg.cosmo.platform.v1.IntegrationType + 197, // 211: wg.cosmo.platform.v1.IntegrationConfig.slackIntegrationConfig:type_name -> wg.cosmo.platform.v1.SlackIntegrationConfig + 198, // 212: wg.cosmo.platform.v1.Integration.integrationConfig:type_name -> wg.cosmo.platform.v1.IntegrationConfig + 524, // 213: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 18, // 214: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 199, // 215: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.integrations:type_name -> wg.cosmo.platform.v1.Integration + 524, // 216: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 18, // 217: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 218: wg.cosmo.platform.v1.DeleteIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 219: wg.cosmo.platform.v1.DeleteOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 220: wg.cosmo.platform.v1.RestoreOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 221: wg.cosmo.platform.v1.LeaveOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 222: wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 223: wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 224: wg.cosmo.platform.v1.CreateOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 217, // 225: wg.cosmo.platform.v1.CreateOrganizationResponse.organization:type_name -> wg.cosmo.platform.v1.Organization + 18, // 226: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.response:type_name -> wg.cosmo.platform.v1.Response + 217, // 227: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.organization:type_name -> wg.cosmo.platform.v1.Organization + 18, // 228: wg.cosmo.platform.v1.GetBillingPlansResponse.response:type_name -> wg.cosmo.platform.v1.Response + 507, // 229: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + 18, // 230: wg.cosmo.platform.v1.CreateCheckoutSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 231: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 232: wg.cosmo.platform.v1.UpgradePlanResponse.response:type_name -> wg.cosmo.platform.v1.Response + 105, // 233: wg.cosmo.platform.v1.GetGraphMetricsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 104, // 234: wg.cosmo.platform.v1.GetGraphMetricsRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter + 18, // 235: wg.cosmo.platform.v1.GetGraphMetricsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 230, // 236: wg.cosmo.platform.v1.GetGraphMetricsResponse.requests:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 230, // 237: wg.cosmo.platform.v1.GetGraphMetricsResponse.latency:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 230, // 238: wg.cosmo.platform.v1.GetGraphMetricsResponse.errors:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 109, // 239: wg.cosmo.platform.v1.GetGraphMetricsResponse.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter + 231, // 240: wg.cosmo.platform.v1.MetricsDashboardMetric.top:type_name -> wg.cosmo.platform.v1.MetricsTopItem + 232, // 241: wg.cosmo.platform.v1.MetricsDashboardMetric.series:type_name -> wg.cosmo.platform.v1.MetricsSeriesItem + 4, // 242: wg.cosmo.platform.v1.MetricsDashboard.unit:type_name -> wg.cosmo.platform.v1.Unit + 105, // 243: wg.cosmo.platform.v1.GetMetricsErrorRateRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 104, // 244: wg.cosmo.platform.v1.GetMetricsErrorRateRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter + 18, // 245: wg.cosmo.platform.v1.GetMetricsErrorRateResponse.response:type_name -> wg.cosmo.platform.v1.Response + 236, // 246: wg.cosmo.platform.v1.GetMetricsErrorRateResponse.series:type_name -> wg.cosmo.platform.v1.MetricsErrorRateSeriesItem + 105, // 247: wg.cosmo.platform.v1.GetSubgraphMetricsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 104, // 248: wg.cosmo.platform.v1.GetSubgraphMetricsRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter + 18, // 249: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 230, // 250: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.requests:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 230, // 251: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.latency:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 230, // 252: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.errors:type_name -> wg.cosmo.platform.v1.MetricsDashboardMetric + 109, // 253: wg.cosmo.platform.v1.GetSubgraphMetricsResponse.filters:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilter + 105, // 254: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 104, // 255: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest.filters:type_name -> wg.cosmo.platform.v1.AnalyticsFilter + 18, // 256: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse.response:type_name -> wg.cosmo.platform.v1.Response + 236, // 257: wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse.series:type_name -> wg.cosmo.platform.v1.MetricsErrorRateSeriesItem + 18, // 258: wg.cosmo.platform.v1.ForceCheckSuccessResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 259: wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 260: wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 247, // 261: wg.cosmo.platform.v1.CreateOperationOverridesRequest.changes:type_name -> wg.cosmo.platform.v1.OverrideChange + 18, // 262: wg.cosmo.platform.v1.CreateOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 263: wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse.response:type_name -> wg.cosmo.platform.v1.Response + 247, // 264: wg.cosmo.platform.v1.RemoveOperationOverridesRequest.changes:type_name -> wg.cosmo.platform.v1.OverrideChange + 18, // 265: wg.cosmo.platform.v1.RemoveOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 266: wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 267: wg.cosmo.platform.v1.GetOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 247, // 268: wg.cosmo.platform.v1.GetOperationOverridesResponse.changes:type_name -> wg.cosmo.platform.v1.OverrideChange + 18, // 269: wg.cosmo.platform.v1.GetAllOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 508, // 270: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override + 29, // 271: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest.git_info:type_name -> wg.cosmo.platform.v1.GitInfo + 18, // 272: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse.response:type_name -> wg.cosmo.platform.v1.Response + 262, // 273: wg.cosmo.platform.v1.CreateOIDCProviderRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper + 18, // 274: wg.cosmo.platform.v1.CreateOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 275: wg.cosmo.platform.v1.ListOIDCProvidersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 265, // 276: wg.cosmo.platform.v1.ListOIDCProvidersResponse.providers:type_name -> wg.cosmo.platform.v1.OIDCProvider + 18, // 277: wg.cosmo.platform.v1.GetOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response + 262, // 278: wg.cosmo.platform.v1.GetOIDCProviderResponse.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper + 18, // 279: wg.cosmo.platform.v1.DeleteOIDCProviderResponse.response:type_name -> wg.cosmo.platform.v1.Response + 262, // 280: wg.cosmo.platform.v1.UpdateIDPMappersRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper + 18, // 281: wg.cosmo.platform.v1.UpdateIDPMappersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 282: wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 283: wg.cosmo.platform.v1.GetAuditLogsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 278, // 284: wg.cosmo.platform.v1.GetAuditLogsResponse.logs:type_name -> wg.cosmo.platform.v1.AuditLog + 18, // 285: wg.cosmo.platform.v1.GetInvitationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 276, // 286: wg.cosmo.platform.v1.GetInvitationsResponse.invitations:type_name -> wg.cosmo.platform.v1.OrganizationInvite + 18, // 287: wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 1, // 288: wg.cosmo.platform.v1.GraphCompositionSubgraph.subgraphType:type_name -> wg.cosmo.platform.v1.SubgraphType + 18, // 289: wg.cosmo.platform.v1.GetCompositionsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 284, // 290: wg.cosmo.platform.v1.GetCompositionsResponse.compositions:type_name -> wg.cosmo.platform.v1.GraphComposition + 18, // 291: wg.cosmo.platform.v1.GetCompositionDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 284, // 292: wg.cosmo.platform.v1.GetCompositionDetailsResponse.composition:type_name -> wg.cosmo.platform.v1.GraphComposition + 285, // 293: wg.cosmo.platform.v1.GetCompositionDetailsResponse.compositionSubgraphs:type_name -> wg.cosmo.platform.v1.GraphCompositionSubgraph + 82, // 294: wg.cosmo.platform.v1.GetCompositionDetailsResponse.changeCounts:type_name -> wg.cosmo.platform.v1.ChangeCounts + 289, // 295: wg.cosmo.platform.v1.GetCompositionDetailsResponse.featureFlagCompositions:type_name -> wg.cosmo.platform.v1.FeatureFlagComposition + 18, // 296: wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 297: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 90, // 298: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.changelog:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput + 18, // 299: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 509, // 300: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + 510, // 301: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + 511, // 302: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + 11, // 303: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest.featureId:type_name -> wg.cosmo.platform.v1.Feature + 18, // 304: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 305: wg.cosmo.platform.v1.GetSubgraphMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 300, // 306: wg.cosmo.platform.v1.GetSubgraphMembersResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember + 18, // 307: wg.cosmo.platform.v1.AddReadmeResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 308: wg.cosmo.platform.v1.GetRoutersResponse.response:type_name -> wg.cosmo.platform.v1.Response + 304, // 309: wg.cosmo.platform.v1.GetRoutersResponse.routers:type_name -> wg.cosmo.platform.v1.Router + 18, // 310: wg.cosmo.platform.v1.GetClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 307, // 311: wg.cosmo.platform.v1.GetClientsResponse.clients:type_name -> wg.cosmo.platform.v1.ClientInfo + 105, // 312: wg.cosmo.platform.v1.GetFieldUsageRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 512, // 313: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation + 18, // 314: wg.cosmo.platform.v1.GetFieldUsageResponse.response:type_name -> wg.cosmo.platform.v1.Response + 115, // 315: wg.cosmo.platform.v1.GetFieldUsageResponse.request_series:type_name -> wg.cosmo.platform.v1.RequestSeriesItem + 311, // 316: wg.cosmo.platform.v1.GetFieldUsageResponse.clients:type_name -> wg.cosmo.platform.v1.ClientWithOperations + 312, // 317: wg.cosmo.platform.v1.GetFieldUsageResponse.meta:type_name -> wg.cosmo.platform.v1.FieldUsageMeta + 18, // 318: wg.cosmo.platform.v1.CreateNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 319: wg.cosmo.platform.v1.DeleteNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 320: wg.cosmo.platform.v1.RenameNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 321: wg.cosmo.platform.v1.GetNamespacesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 320, // 322: wg.cosmo.platform.v1.GetNamespacesResponse.namespaces:type_name -> wg.cosmo.platform.v1.Namespace + 18, // 323: wg.cosmo.platform.v1.MoveGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 324: wg.cosmo.platform.v1.MoveGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 325: wg.cosmo.platform.v1.MoveGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 326: wg.cosmo.platform.v1.MoveGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 327: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 333, // 328: wg.cosmo.platform.v1.GetNamespaceLintConfigResponse.configs:type_name -> wg.cosmo.platform.v1.LintConfig + 18, // 329: wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 330: wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 331: wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 332: wg.cosmo.platform.v1.LintConfig.severityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 333, // 333: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest.configs:type_name -> wg.cosmo.platform.v1.LintConfig + 18, // 334: wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 335: wg.cosmo.platform.v1.EnableGraphPruningResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 336: wg.cosmo.platform.v1.GraphPruningConfig.severityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 338, // 337: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest.configs:type_name -> wg.cosmo.platform.v1.GraphPruningConfig + 18, // 338: wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 339: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 338, // 340: wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse.configs:type_name -> wg.cosmo.platform.v1.GraphPruningConfig + 18, // 341: wg.cosmo.platform.v1.MigrateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 342: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 346, // 343: wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse.permissions:type_name -> wg.cosmo.platform.v1.Permission + 18, // 344: wg.cosmo.platform.v1.CreateContractResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 345: wg.cosmo.platform.v1.CreateContractResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 346: wg.cosmo.platform.v1.CreateContractResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 347: wg.cosmo.platform.v1.CreateContractResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 348: wg.cosmo.platform.v1.UpdateContractResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 349: wg.cosmo.platform.v1.UpdateContractResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 350: wg.cosmo.platform.v1.UpdateContractResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 351: wg.cosmo.platform.v1.UpdateContractResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 352: wg.cosmo.platform.v1.IsMemberLimitReachedResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 353: wg.cosmo.platform.v1.DeleteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response + 17, // 354: wg.cosmo.platform.v1.CreateFeatureFlagRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 18, // 355: wg.cosmo.platform.v1.CreateFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 356: wg.cosmo.platform.v1.CreateFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 357: wg.cosmo.platform.v1.CreateFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 358: wg.cosmo.platform.v1.CreateFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 17, // 359: wg.cosmo.platform.v1.UpdateFeatureFlagRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 18, // 360: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 361: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 362: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 363: wg.cosmo.platform.v1.UpdateFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 364: wg.cosmo.platform.v1.EnableFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 365: wg.cosmo.platform.v1.EnableFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 366: wg.cosmo.platform.v1.EnableFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 367: wg.cosmo.platform.v1.EnableFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 368: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 369: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.composition_errors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 370: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.deployment_errors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 371: wg.cosmo.platform.v1.DeleteFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 17, // 372: wg.cosmo.platform.v1.FeatureFlag.labels:type_name -> wg.cosmo.platform.v1.Label + 18, // 373: wg.cosmo.platform.v1.GetFeatureFlagsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 364, // 374: wg.cosmo.platform.v1.GetFeatureFlagsResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag + 18, // 375: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response + 364, // 376: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_flag:type_name -> wg.cosmo.platform.v1.FeatureFlag + 513, // 377: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + 65, // 378: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 379: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 380: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 381: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 382: wg.cosmo.platform.v1.GetFeatureSubgraphsResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 383: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 364, // 384: wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag + 18, // 385: wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 364, // 386: wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag + 18, // 387: wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 388: wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 101, // 389: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination + 105, // 390: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest.date_range:type_name -> wg.cosmo.platform.v1.DateRange + 18, // 391: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse.response:type_name -> wg.cosmo.platform.v1.Response + 380, // 392: wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse.deliveries:type_name -> wg.cosmo.platform.v1.WebhookDelivery + 18, // 393: wg.cosmo.platform.v1.RedeliverWebhookResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 394: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 380, // 395: wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse.delivery:type_name -> wg.cosmo.platform.v1.WebhookDelivery + 18, // 396: wg.cosmo.platform.v1.CreatePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 397: wg.cosmo.platform.v1.DeletePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 398: wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 399: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 393, // 400: wg.cosmo.platform.v1.GetPlaygroundScriptsResponse.scripts:type_name -> wg.cosmo.platform.v1.PlaygroundScript + 18, // 401: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.response:type_name -> wg.cosmo.platform.v1.Response + 60, // 402: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.graph:type_name -> wg.cosmo.platform.v1.FederatedGraph + 65, // 403: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 364, // 404: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.featureFlagsInLatestValidComposition:type_name -> wg.cosmo.platform.v1.FeatureFlag + 65, // 405: wg.cosmo.platform.v1.GetFederatedGraphByIdResponse.featureSubgraphs:type_name -> wg.cosmo.platform.v1.Subgraph + 18, // 406: wg.cosmo.platform.v1.GetSubgraphByIdResponse.response:type_name -> wg.cosmo.platform.v1.Response + 65, // 407: wg.cosmo.platform.v1.GetSubgraphByIdResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph + 300, // 408: wg.cosmo.platform.v1.GetSubgraphByIdResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember + 18, // 409: wg.cosmo.platform.v1.GetNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 320, // 410: wg.cosmo.platform.v1.GetNamespaceResponse.namespace:type_name -> wg.cosmo.platform.v1.Namespace + 402, // 411: wg.cosmo.platform.v1.WorkspaceNamespace.graphs:type_name -> wg.cosmo.platform.v1.WorkspaceFederatedGraph + 403, // 412: wg.cosmo.platform.v1.WorkspaceFederatedGraph.subgraphs:type_name -> wg.cosmo.platform.v1.WorkspaceSubgraph + 18, // 413: wg.cosmo.platform.v1.GetWorkspaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 401, // 414: wg.cosmo.platform.v1.GetWorkspaceResponse.namespaces:type_name -> wg.cosmo.platform.v1.WorkspaceNamespace + 18, // 415: wg.cosmo.platform.v1.PushCacheWarmerOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 416: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 409, // 417: wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.CacheWarmerOperation + 18, // 418: wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 419: wg.cosmo.platform.v1.ConfigureCacheWarmerResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 420: wg.cosmo.platform.v1.GetCacheWarmerConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 421: wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 422: wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 423: wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 424: wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 425: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 426: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 427: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 428: wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 18, // 429: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 430, // 430: wg.cosmo.platform.v1.Proposal.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 12, // 431: wg.cosmo.platform.v1.Proposal.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin + 17, // 432: wg.cosmo.platform.v1.ProposalSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label + 430, // 433: wg.cosmo.platform.v1.CreateProposalRequest.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 13, // 434: wg.cosmo.platform.v1.CreateProposalRequest.namingConvention:type_name -> wg.cosmo.platform.v1.ProposalNamingConvention + 12, // 435: wg.cosmo.platform.v1.CreateProposalRequest.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin + 18, // 436: wg.cosmo.platform.v1.CreateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 41, // 437: wg.cosmo.platform.v1.CreateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 41, // 438: wg.cosmo.platform.v1.CreateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 43, // 439: wg.cosmo.platform.v1.CreateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 44, // 440: wg.cosmo.platform.v1.CreateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 49, // 441: wg.cosmo.platform.v1.CreateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 49, // 442: wg.cosmo.platform.v1.CreateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 50, // 443: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 50, // 444: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 46, // 445: wg.cosmo.platform.v1.CreateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 42, // 446: wg.cosmo.platform.v1.CreateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 18, // 447: wg.cosmo.platform.v1.GetProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 429, // 448: wg.cosmo.platform.v1.GetProposalResponse.proposal:type_name -> wg.cosmo.platform.v1.Proposal + 514, // 449: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + 18, // 450: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 429, // 451: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.proposals:type_name -> wg.cosmo.platform.v1.Proposal + 18, // 452: wg.cosmo.platform.v1.GetProposalChecksResponse.response:type_name -> wg.cosmo.platform.v1.Response + 79, // 453: wg.cosmo.platform.v1.GetProposalChecksResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck + 515, // 454: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + 18, // 455: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 41, // 456: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 41, // 457: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 43, // 458: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 44, // 459: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 49, // 460: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 49, // 461: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 50, // 462: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 50, // 463: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 46, // 464: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 42, // 465: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 18, // 466: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 467: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 468: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 18, // 469: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 470: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 471: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 472: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 447, // 473: wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest.mappings:type_name -> wg.cosmo.platform.v1.NamespaceLoginMethodMapping + 18, // 474: wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 475: wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 447, // 476: wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse.mappings:type_name -> wg.cosmo.platform.v1.NamespaceLoginMethodMapping + 18, // 477: wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 452, // 478: wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse.login_methods:type_name -> wg.cosmo.platform.v1.OrganizationLoginMethods + 18, // 479: wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 320, // 480: wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse.affected_namespaces:type_name -> wg.cosmo.platform.v1.Namespace + 14, // 481: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn + 105, // 482: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 15, // 483: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection + 18, // 484: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 516, // 485: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation + 18, // 486: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 517, // 487: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + 105, // 488: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 18, // 489: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 518, // 490: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client + 105, // 491: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 18, // 492: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 519, // 493: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + 17, // 494: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 18, // 495: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 496: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 497: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 498: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 499: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 500: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 520, // 501: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + 18, // 502: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 503: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 504: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 505: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 25, // 506: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 18, // 507: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response + 43, // 508: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 45, // 509: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 44, // 510: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 25, // 511: wg.cosmo.platform.v1.RecomposeFeatureFlagResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 18, // 512: wg.cosmo.platform.v1.GetOnboardingResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 513: wg.cosmo.platform.v1.CreateOnboardingResponse.response:type_name -> wg.cosmo.platform.v1.Response + 18, // 514: wg.cosmo.platform.v1.FinishOnboardingResponse.response:type_name -> wg.cosmo.platform.v1.Response + 17, // 515: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label + 41, // 516: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange + 112, // 517: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue + 506, // 518: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + 60, // 519: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph + 430, // 520: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 16, // 521: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType + 386, // 522: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest + 388, // 523: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest + 390, // 524: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest + 392, // 525: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest + 314, // 526: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest + 316, // 527: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest + 318, // 528: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest + 321, // 529: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest + 399, // 530: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest + 404, // 531: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest + 348, // 532: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest + 350, // 533: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest + 323, // 534: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 323, // 535: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 323, // 536: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 33, // 537: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest + 20, // 538: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest + 38, // 539: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest + 97, // 540: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest + 343, // 541: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest + 36, // 542: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest + 23, // 543: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest + 27, // 544: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest + 35, // 545: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest + 37, // 546: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest + 40, // 547: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest + 31, // 548: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest + 427, // 549: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest + 32, // 550: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest + 95, // 551: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest + 93, // 552: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest + 99, // 553: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest + 163, // 554: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest + 167, // 555: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest + 169, // 556: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest + 171, // 557: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest + 174, // 558: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest + 179, // 559: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest + 177, // 560: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest + 181, // 561: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest + 277, // 562: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest + 473, // 563: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest + 475, // 564: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest + 58, // 565: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest + 62, // 566: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest + 67, // 567: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest + 69, // 568: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest + 64, // 569: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest + 71, // 570: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest + 73, // 571: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest + 75, // 572: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest + 78, // 573: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest + 81, // 574: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest + 84, // 575: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest + 241, // 576: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest + 248, // 577: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest + 252, // 578: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest + 250, // 579: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest + 254, // 580: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest + 256, // 581: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest + 258, // 582: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest + 243, // 583: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest + 245, // 584: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest + 86, // 585: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest + 88, // 586: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest + 120, // 587: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest + 218, // 588: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest + 138, // 589: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest + 136, // 590: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest + 352, // 591: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest + 140, // 592: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest + 142, // 593: wg.cosmo.platform.v1.PlatformService.InviteUsers:input_type -> wg.cosmo.platform.v1.InviteUsersRequest + 146, // 594: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest + 148, // 595: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest + 152, // 596: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest + 150, // 597: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest + 154, // 598: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest + 156, // 599: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest + 158, // 600: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest + 124, // 601: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest + 126, // 602: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest + 128, // 603: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest + 130, // 604: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest + 132, // 605: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest + 184, // 606: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest + 186, // 607: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest + 188, // 608: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest + 190, // 609: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest + 192, // 610: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest + 379, // 611: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest + 384, // 612: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest + 382, // 613: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest + 194, // 614: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest + 196, // 615: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest + 201, // 616: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest + 203, // 617: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest + 354, // 618: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest + 205, // 619: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest + 207, // 620: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest + 209, // 621: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest + 211, // 622: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest + 213, // 623: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest + 260, // 624: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest + 263, // 625: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest + 268, // 626: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest + 266, // 627: wg.cosmo.platform.v1.PlatformService.ListOIDCProviders:input_type -> wg.cosmo.platform.v1.ListOIDCProvidersRequest + 270, // 628: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest + 272, // 629: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest + 308, // 630: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest + 305, // 631: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest + 280, // 632: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest + 282, // 633: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest + 286, // 634: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest + 288, // 635: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest + 291, // 636: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest + 293, // 637: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest + 295, // 638: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest + 297, // 639: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest + 299, // 640: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest + 302, // 641: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest + 345, // 642: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest + 356, // 643: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest + 362, // 644: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest + 358, // 645: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest + 360, // 646: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest + 106, // 647: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest + 114, // 648: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest + 161, // 649: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest + 228, // 650: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest + 234, // 651: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest + 237, // 652: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest + 239, // 653: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest + 310, // 654: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest + 274, // 655: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest + 215, // 656: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest + 331, // 657: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest + 334, // 658: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest + 325, // 659: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest + 327, // 660: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest + 329, // 661: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest + 336, // 662: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest + 339, // 663: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest + 341, // 664: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest + 365, // 665: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest + 367, // 666: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest + 369, // 667: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest + 371, // 668: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest + 373, // 669: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest + 375, // 670: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest + 377, // 671: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest + 395, // 672: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest + 397, // 673: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest + 406, // 674: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest + 408, // 675: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest + 411, // 676: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest + 413, // 677: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest + 415, // 678: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest + 421, // 679: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest + 417, // 680: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest + 419, // 681: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest + 220, // 682: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest + 222, // 683: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest + 224, // 684: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest + 226, // 685: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest + 423, // 686: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest + 425, // 687: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest + 431, // 688: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest + 433, // 689: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest + 439, // 690: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest + 441, // 691: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + 443, // 692: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + 445, // 693: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + 448, // 694: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods:input_type -> wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest + 450, // 695: wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods:input_type -> wg.cosmo.platform.v1.ListNamespaceLoginMethodsRequest + 453, // 696: wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods:input_type -> wg.cosmo.platform.v1.GetOrganizationLoginMethodsRequest + 455, // 697: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods:input_type -> wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsRequest + 435, // 698: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest + 437, // 699: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest + 457, // 700: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest + 459, // 701: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + 461, // 702: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest + 463, // 703: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + 465, // 704: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + 467, // 705: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest + 469, // 706: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest + 471, // 707: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + 477, // 708: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest + 479, // 709: wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag:input_type -> wg.cosmo.platform.v1.RecomposeFeatureFlagRequest + 481, // 710: wg.cosmo.platform.v1.PlatformService.GetOnboarding:input_type -> wg.cosmo.platform.v1.GetOnboardingRequest + 483, // 711: wg.cosmo.platform.v1.PlatformService.CreateOnboarding:input_type -> wg.cosmo.platform.v1.CreateOnboardingRequest + 485, // 712: wg.cosmo.platform.v1.PlatformService.FinishOnboarding:input_type -> wg.cosmo.platform.v1.FinishOnboardingRequest + 387, // 713: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse + 389, // 714: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse + 391, // 715: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse + 394, // 716: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse + 315, // 717: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse + 317, // 718: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse + 319, // 719: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse + 322, // 720: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse + 400, // 721: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse + 405, // 722: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse + 349, // 723: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse + 351, // 724: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse + 324, // 725: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 324, // 726: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 324, // 727: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 34, // 728: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse + 21, // 729: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse + 39, // 730: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse + 98, // 731: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse + 344, // 732: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse + 55, // 733: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse + 24, // 734: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse + 28, // 735: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse + 54, // 736: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse + 57, // 737: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse + 56, // 738: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse + 51, // 739: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse + 428, // 740: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse + 53, // 741: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse + 96, // 742: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse + 94, // 743: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse + 100, // 744: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse + 164, // 745: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse + 168, // 746: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse + 170, // 747: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse + 172, // 748: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse + 176, // 749: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse + 180, // 750: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse + 178, // 751: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse + 182, // 752: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse + 279, // 753: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse + 474, // 754: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse + 476, // 755: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse + 61, // 756: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse + 63, // 757: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse + 68, // 758: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse + 70, // 759: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse + 66, // 760: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse + 72, // 761: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse + 74, // 762: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse + 76, // 763: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse + 80, // 764: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse + 83, // 765: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse + 85, // 766: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse + 242, // 767: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse + 249, // 768: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse + 253, // 769: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse + 251, // 770: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse + 255, // 771: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse + 257, // 772: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse + 259, // 773: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse + 244, // 774: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse + 246, // 775: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse + 87, // 776: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse + 91, // 777: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse + 121, // 778: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse + 219, // 779: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse + 139, // 780: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse + 137, // 781: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse + 353, // 782: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse + 141, // 783: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse + 144, // 784: wg.cosmo.platform.v1.PlatformService.InviteUsers:output_type -> wg.cosmo.platform.v1.InviteUsersResponse + 147, // 785: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse + 149, // 786: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse + 153, // 787: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse + 151, // 788: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse + 155, // 789: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse + 157, // 790: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse + 159, // 791: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse + 125, // 792: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse + 127, // 793: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse + 129, // 794: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse + 131, // 795: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse + 133, // 796: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse + 185, // 797: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse + 187, // 798: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse + 189, // 799: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse + 191, // 800: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse + 193, // 801: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse + 381, // 802: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse + 385, // 803: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse + 383, // 804: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse + 195, // 805: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse + 200, // 806: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse + 202, // 807: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse + 204, // 808: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse + 355, // 809: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse + 206, // 810: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse + 208, // 811: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse + 210, // 812: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse + 212, // 813: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse + 214, // 814: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse + 261, // 815: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse + 264, // 816: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse + 269, // 817: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse + 267, // 818: wg.cosmo.platform.v1.PlatformService.ListOIDCProviders:output_type -> wg.cosmo.platform.v1.ListOIDCProvidersResponse + 271, // 819: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse + 273, // 820: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse + 309, // 821: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse + 306, // 822: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse + 281, // 823: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse + 283, // 824: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse + 287, // 825: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse + 290, // 826: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse + 292, // 827: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse + 294, // 828: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse + 296, // 829: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse + 298, // 830: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse + 301, // 831: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse + 303, // 832: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse + 347, // 833: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse + 357, // 834: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse + 363, // 835: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse + 359, // 836: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse + 361, // 837: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse + 113, // 838: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse + 119, // 839: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse + 162, // 840: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse + 229, // 841: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse + 235, // 842: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse + 238, // 843: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse + 240, // 844: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse + 313, // 845: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse + 275, // 846: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse + 216, // 847: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse + 332, // 848: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse + 335, // 849: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse + 326, // 850: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse + 328, // 851: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse + 330, // 852: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse + 337, // 853: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse + 340, // 854: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse + 342, // 855: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse + 366, // 856: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse + 368, // 857: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse + 370, // 858: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse + 372, // 859: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse + 374, // 860: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse + 376, // 861: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse + 378, // 862: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse + 396, // 863: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse + 398, // 864: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse + 407, // 865: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse + 410, // 866: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse + 412, // 867: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse + 414, // 868: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse + 416, // 869: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse + 422, // 870: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse + 418, // 871: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse + 420, // 872: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse + 221, // 873: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse + 223, // 874: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse + 225, // 875: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse + 227, // 876: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse + 424, // 877: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse + 426, // 878: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse + 432, // 879: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse + 434, // 880: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse + 440, // 881: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse + 442, // 882: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + 444, // 883: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + 446, // 884: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + 449, // 885: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods:output_type -> wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse + 451, // 886: wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods:output_type -> wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse + 454, // 887: wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods:output_type -> wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse + 456, // 888: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods:output_type -> wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse + 436, // 889: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse + 438, // 890: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse + 458, // 891: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse + 460, // 892: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + 462, // 893: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse + 464, // 894: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + 466, // 895: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + 468, // 896: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse + 470, // 897: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse + 472, // 898: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + 478, // 899: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse + 480, // 900: wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag:output_type -> wg.cosmo.platform.v1.RecomposeFeatureFlagResponse + 482, // 901: wg.cosmo.platform.v1.PlatformService.GetOnboarding:output_type -> wg.cosmo.platform.v1.GetOnboardingResponse + 484, // 902: wg.cosmo.platform.v1.PlatformService.CreateOnboarding:output_type -> wg.cosmo.platform.v1.CreateOnboardingResponse + 486, // 903: wg.cosmo.platform.v1.PlatformService.FinishOnboarding:output_type -> wg.cosmo.platform.v1.FinishOnboardingResponse + 713, // [713:904] is the sub-list for method output_type + 522, // [522:713] is the sub-list for method input_type + 522, // [522:522] is the sub-list for extension type_name + 522, // [522:522] is the sub-list for extension extendee + 0, // [0:522] is the sub-list for field type_name } func init() { file_wg_cosmo_platform_v1_platform_proto_init() } @@ -40949,5749 +37411,114 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { if File_wg_cosmo_platform_v1_platform_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_wg_cosmo_platform_v1_platform_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Label); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ResponseStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*PublishMonographRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*PublishMonographResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ProtoInput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*PublishFederatedSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*PublishFederatedSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*SubgraphPublishStats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*GitInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*VCSContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*CheckSubgraphSchemaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*FixSubgraphSchemaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*CreateMonographRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CreateMonographResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*DeleteMonographRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*DeleteMonographResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFederatedSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*SchemaChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*FederatedGraphSchemaChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*CompositionError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*CompositionWarning); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*DeploymentError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*CheckOperationUsageStats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*CheckedFederatedGraphs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*LintLocation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*LintIssue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*GraphPruningIssue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*CheckSubgraphSchemaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*SchemaCheckCounts); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*FixSubgraphSchemaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFederatedSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*Contract); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*FederatedGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphsBySubgraphLabelsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphsBySubgraphLabelsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*Subgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphByNameRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphByNameResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphSDLByNameRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphSDLByNameResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphByNameRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphByNameResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphSDLFromLatestCompositionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphSDLFromLatestCompositionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*GetLatestSubgraphSDLRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*GetLatestSubgraphSDLResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*GetChecksByFederatedGraphNameFilters); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*GetChecksByFederatedGraphNameRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*SchemaCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*GetChecksByFederatedGraphNameResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckSummaryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*ChangeCounts); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckSummaryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationContentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationContentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphChangelogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*FederatedGraphChangelog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*FederatedGraphChangelogOutput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphChangelogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*UpdateSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*UpdateSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[75].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[76].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[77].Exporter = func(v any, i int) any { - switch v := v.(*UpdateMonographRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[78].Exporter = func(v any, i int) any { - switch v := v.(*UpdateMonographResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[79].Exporter = func(v any, i int) any { - switch v := v.(*CheckFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[80].Exporter = func(v any, i int) any { - switch v := v.(*CheckFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[81].Exporter = func(v any, i int) any { - switch v := v.(*Pagination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[82].Exporter = func(v any, i int) any { - switch v := v.(*Sort); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[83].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[84].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsFilter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[85].Exporter = func(v any, i int) any { - switch v := v.(*DateRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[86].Exporter = func(v any, i int) any { - switch v := v.(*GetAnalyticsViewRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[87].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[88].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewColumn); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[89].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewResultFilter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[90].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewResultFilterOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[91].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewRow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[92].Exporter = func(v any, i int) any { - switch v := v.(*AnalyticsViewRowValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[93].Exporter = func(v any, i int) any { - switch v := v.(*GetAnalyticsViewResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[94].Exporter = func(v any, i int) any { - switch v := v.(*GetDashboardAnalyticsViewRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[95].Exporter = func(v any, i int) any { - switch v := v.(*RequestSeriesItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[96].Exporter = func(v any, i int) any { - switch v := v.(*OperationRequestCount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[97].Exporter = func(v any, i int) any { - switch v := v.(*FederatedGraphMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[98].Exporter = func(v any, i int) any { - switch v := v.(*SubgraphMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[99].Exporter = func(v any, i int) any { - switch v := v.(*GetDashboardAnalyticsViewResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[100].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedGraphTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[101].Exporter = func(v any, i int) any { - switch v := v.(*CreateFederatedGraphTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[102].Exporter = func(v any, i int) any { - switch v := v.(*OrganizationGroupRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[103].Exporter = func(v any, i int) any { - switch v := v.(*OrganizationGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[104].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[105].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[106].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[107].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[108].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[109].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[110].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[111].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[112].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[113].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[114].Exporter = func(v any, i int) any { - switch v := v.(*OrgMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[115].Exporter = func(v any, i int) any { - switch v := v.(*PendingOrgInvitation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[116].Exporter = func(v any, i int) any { - switch v := v.(*GetPendingOrganizationMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[117].Exporter = func(v any, i int) any { - switch v := v.(*GetPendingOrganizationMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[118].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[119].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[120].Exporter = func(v any, i int) any { - switch v := v.(*InviteUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[121].Exporter = func(v any, i int) any { - switch v := v.(*InviteUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[122].Exporter = func(v any, i int) any { - switch v := v.(*APIKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[123].Exporter = func(v any, i int) any { - switch v := v.(*GetAPIKeysRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[124].Exporter = func(v any, i int) any { - switch v := v.(*GetAPIKeysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[125].Exporter = func(v any, i int) any { - switch v := v.(*CreateAPIKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[126].Exporter = func(v any, i int) any { - switch v := v.(*CreateAPIKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[127].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAPIKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[128].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAPIKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[129].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAPIKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[130].Exporter = func(v any, i int) any { - switch v := v.(*UpdateAPIKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[131].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOrganizationMemberRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[132].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOrganizationMemberResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[133].Exporter = func(v any, i int) any { - switch v := v.(*RemoveInvitationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[134].Exporter = func(v any, i int) any { - switch v := v.(*RemoveInvitationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[135].Exporter = func(v any, i int) any { - switch v := v.(*MigrateFromApolloRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[136].Exporter = func(v any, i int) any { - switch v := v.(*MigrateFromApolloResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[137].Exporter = func(v any, i int) any { - switch v := v.(*Span); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[138].Exporter = func(v any, i int) any { - switch v := v.(*GetTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[139].Exporter = func(v any, i int) any { - switch v := v.(*GetTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[140].Exporter = func(v any, i int) any { - switch v := v.(*WhoAmIRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[141].Exporter = func(v any, i int) any { - switch v := v.(*WhoAmIResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[142].Exporter = func(v any, i int) any { - switch v := v.(*RouterToken); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[143].Exporter = func(v any, i int) any { - switch v := v.(*GenerateRouterTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[144].Exporter = func(v any, i int) any { - switch v := v.(*GenerateRouterTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[145].Exporter = func(v any, i int) any { - switch v := v.(*GetRouterTokensRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[146].Exporter = func(v any, i int) any { - switch v := v.(*GetRouterTokensResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[147].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRouterTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[148].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRouterTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[149].Exporter = func(v any, i int) any { - switch v := v.(*PersistedOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[150].Exporter = func(v any, i int) any { - switch v := v.(*PublishPersistedOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[151].Exporter = func(v any, i int) any { - switch v := v.(*PublishedOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[152].Exporter = func(v any, i int) any { - switch v := v.(*PublishPersistedOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[153].Exporter = func(v any, i int) any { - switch v := v.(*DeletePersistedOperationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[154].Exporter = func(v any, i int) any { - switch v := v.(*DeletePersistedOperationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[155].Exporter = func(v any, i int) any { - switch v := v.(*CheckPersistedOperationTrafficRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[156].Exporter = func(v any, i int) any { - switch v := v.(*CheckPersistedOperationTrafficResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[157].Exporter = func(v any, i int) any { - switch v := v.(*GetPersistedOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[158].Exporter = func(v any, i int) any { - switch v := v.(*GetPersistedOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[159].Exporter = func(v any, i int) any { - switch v := v.(*Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[160].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationWebhookConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[161].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationWebhookConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[162].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookConfigsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[163].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookConfigsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[164].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookMetaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[165].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookMetaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[166].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationWebhookConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[167].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationWebhookConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[168].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationWebhookConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[169].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationWebhookConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[170].Exporter = func(v any, i int) any { - switch v := v.(*CreateIntegrationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[171].Exporter = func(v any, i int) any { - switch v := v.(*CreateIntegrationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[172].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationIntegrationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[173].Exporter = func(v any, i int) any { - switch v := v.(*SlackIntegrationConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[174].Exporter = func(v any, i int) any { - switch v := v.(*IntegrationConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[175].Exporter = func(v any, i int) any { - switch v := v.(*Integration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[176].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationIntegrationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[177].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIntegrationConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[178].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIntegrationConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[179].Exporter = func(v any, i int) any { - switch v := v.(*DeleteIntegrationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[180].Exporter = func(v any, i int) any { - switch v := v.(*DeleteIntegrationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[181].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[182].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOrganizationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[183].Exporter = func(v any, i int) any { - switch v := v.(*RestoreOrganizationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[184].Exporter = func(v any, i int) any { - switch v := v.(*RestoreOrganizationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[185].Exporter = func(v any, i int) any { - switch v := v.(*LeaveOrganizationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[186].Exporter = func(v any, i int) any { - switch v := v.(*LeaveOrganizationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[187].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationDetailsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[188].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationDetailsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[189].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrgMemberGroupRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[190].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrgMemberGroupResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[191].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[192].Exporter = func(v any, i int) any { - switch v := v.(*CreateOrganizationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[193].Exporter = func(v any, i int) any { - switch v := v.(*Organization); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[194].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationBySlugRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[195].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationBySlugResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[196].Exporter = func(v any, i int) any { - switch v := v.(*GetBillingPlansRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[197].Exporter = func(v any, i int) any { - switch v := v.(*GetBillingPlansResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[198].Exporter = func(v any, i int) any { - switch v := v.(*CreateCheckoutSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[199].Exporter = func(v any, i int) any { - switch v := v.(*CreateCheckoutSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[200].Exporter = func(v any, i int) any { - switch v := v.(*CreateBillingPortalSessionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[201].Exporter = func(v any, i int) any { - switch v := v.(*CreateBillingPortalSessionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[202].Exporter = func(v any, i int) any { - switch v := v.(*UpgradePlanRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[203].Exporter = func(v any, i int) any { - switch v := v.(*UpgradePlanResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[204].Exporter = func(v any, i int) any { - switch v := v.(*GetGraphMetricsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[205].Exporter = func(v any, i int) any { - switch v := v.(*GetGraphMetricsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[206].Exporter = func(v any, i int) any { - switch v := v.(*MetricsDashboardMetric); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[207].Exporter = func(v any, i int) any { - switch v := v.(*MetricsTopItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[208].Exporter = func(v any, i int) any { - switch v := v.(*MetricsSeriesItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[209].Exporter = func(v any, i int) any { - switch v := v.(*MetricsDashboard); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[210].Exporter = func(v any, i int) any { - switch v := v.(*GetMetricsErrorRateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[211].Exporter = func(v any, i int) any { - switch v := v.(*GetMetricsErrorRateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[212].Exporter = func(v any, i int) any { - switch v := v.(*MetricsErrorRateSeriesItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[213].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMetricsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[214].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMetricsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[215].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMetricsErrorRateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[216].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMetricsErrorRateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[217].Exporter = func(v any, i int) any { - switch v := v.(*ForceCheckSuccessRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[218].Exporter = func(v any, i int) any { - switch v := v.(*ForceCheckSuccessResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[219].Exporter = func(v any, i int) any { - switch v := v.(*ToggleChangeOverridesForAllOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[220].Exporter = func(v any, i int) any { - switch v := v.(*ToggleChangeOverridesForAllOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[221].Exporter = func(v any, i int) any { - switch v := v.(*CreateIgnoreOverridesForAllOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[222].Exporter = func(v any, i int) any { - switch v := v.(*CreateIgnoreOverridesForAllOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[223].Exporter = func(v any, i int) any { - switch v := v.(*OverrideChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[224].Exporter = func(v any, i int) any { - switch v := v.(*CreateOperationOverridesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[225].Exporter = func(v any, i int) any { - switch v := v.(*CreateOperationOverridesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[226].Exporter = func(v any, i int) any { - switch v := v.(*CreateOperationIgnoreAllOverrideRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[227].Exporter = func(v any, i int) any { - switch v := v.(*CreateOperationIgnoreAllOverrideResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[228].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOperationOverridesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[229].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOperationOverridesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[230].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOperationIgnoreAllOverrideRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[231].Exporter = func(v any, i int) any { - switch v := v.(*RemoveOperationIgnoreAllOverrideResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[232].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationOverridesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[233].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationOverridesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[234].Exporter = func(v any, i int) any { - switch v := v.(*GetAllOverridesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[235].Exporter = func(v any, i int) any { - switch v := v.(*GetAllOverridesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[236].Exporter = func(v any, i int) any { - switch v := v.(*IsGitHubAppInstalledRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[237].Exporter = func(v any, i int) any { - switch v := v.(*IsGitHubAppInstalledResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[238].Exporter = func(v any, i int) any { - switch v := v.(*GroupMapper); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[239].Exporter = func(v any, i int) any { - switch v := v.(*CreateOIDCProviderRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[240].Exporter = func(v any, i int) any { - switch v := v.(*CreateOIDCProviderResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[241].Exporter = func(v any, i int) any { - switch v := v.(*GetOIDCProviderRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[242].Exporter = func(v any, i int) any { - switch v := v.(*GetOIDCProviderResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[243].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOIDCProviderRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[244].Exporter = func(v any, i int) any { - switch v := v.(*DeleteOIDCProviderResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[245].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIDPMappersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[246].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIDPMappersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[247].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationRequestsCountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[248].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationRequestsCountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[249].Exporter = func(v any, i int) any { - switch v := v.(*OrganizationInvite); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[250].Exporter = func(v any, i int) any { - switch v := v.(*GetAuditLogsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[251].Exporter = func(v any, i int) any { - switch v := v.(*AuditLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[252].Exporter = func(v any, i int) any { - switch v := v.(*GetAuditLogsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[253].Exporter = func(v any, i int) any { - switch v := v.(*GetInvitationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[254].Exporter = func(v any, i int) any { - switch v := v.(*GetInvitationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[255].Exporter = func(v any, i int) any { - switch v := v.(*AcceptOrDeclineInvitationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[256].Exporter = func(v any, i int) any { - switch v := v.(*AcceptOrDeclineInvitationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[257].Exporter = func(v any, i int) any { - switch v := v.(*GraphComposition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[258].Exporter = func(v any, i int) any { - switch v := v.(*GraphCompositionSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[259].Exporter = func(v any, i int) any { - switch v := v.(*GetCompositionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[260].Exporter = func(v any, i int) any { - switch v := v.(*GetCompositionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[261].Exporter = func(v any, i int) any { - switch v := v.(*GetCompositionDetailsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[262].Exporter = func(v any, i int) any { - switch v := v.(*FeatureFlagComposition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[263].Exporter = func(v any, i int) any { - switch v := v.(*GetCompositionDetailsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[264].Exporter = func(v any, i int) any { - switch v := v.(*GetSdlBySchemaVersionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[265].Exporter = func(v any, i int) any { - switch v := v.(*GetSdlBySchemaVersionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[266].Exporter = func(v any, i int) any { - switch v := v.(*GetChangelogBySchemaVersionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[267].Exporter = func(v any, i int) any { - switch v := v.(*GetChangelogBySchemaVersionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[268].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessibleResourcesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[269].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessibleResourcesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[270].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFeatureSettingsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[271].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFeatureSettingsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[272].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[273].Exporter = func(v any, i int) any { - switch v := v.(*SubgraphMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[274].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[275].Exporter = func(v any, i int) any { - switch v := v.(*AddReadmeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[276].Exporter = func(v any, i int) any { - switch v := v.(*AddReadmeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[277].Exporter = func(v any, i int) any { - switch v := v.(*Router); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[278].Exporter = func(v any, i int) any { - switch v := v.(*GetRoutersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[279].Exporter = func(v any, i int) any { - switch v := v.(*GetRoutersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[280].Exporter = func(v any, i int) any { - switch v := v.(*ClientInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[281].Exporter = func(v any, i int) any { - switch v := v.(*GetClientsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[282].Exporter = func(v any, i int) any { - switch v := v.(*GetClientsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[283].Exporter = func(v any, i int) any { - switch v := v.(*GetFieldUsageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[284].Exporter = func(v any, i int) any { - switch v := v.(*ClientWithOperations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[285].Exporter = func(v any, i int) any { - switch v := v.(*FieldUsageMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[286].Exporter = func(v any, i int) any { - switch v := v.(*GetFieldUsageResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[287].Exporter = func(v any, i int) any { - switch v := v.(*CreateNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[288].Exporter = func(v any, i int) any { - switch v := v.(*CreateNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[289].Exporter = func(v any, i int) any { - switch v := v.(*DeleteNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[290].Exporter = func(v any, i int) any { - switch v := v.(*DeleteNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[291].Exporter = func(v any, i int) any { - switch v := v.(*RenameNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[292].Exporter = func(v any, i int) any { - switch v := v.(*RenameNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[293].Exporter = func(v any, i int) any { - switch v := v.(*Namespace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[294].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespacesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[295].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespacesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[296].Exporter = func(v any, i int) any { - switch v := v.(*MoveGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[297].Exporter = func(v any, i int) any { - switch v := v.(*MoveGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[298].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceLintConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[299].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceLintConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[300].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceChecksConfigurationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[301].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceChecksConfigurationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[302].Exporter = func(v any, i int) any { - switch v := v.(*UpdateNamespaceChecksConfigurationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[303].Exporter = func(v any, i int) any { - switch v := v.(*UpdateNamespaceChecksConfigurationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[304].Exporter = func(v any, i int) any { - switch v := v.(*EnableLintingForTheNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[305].Exporter = func(v any, i int) any { - switch v := v.(*EnableLintingForTheNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[306].Exporter = func(v any, i int) any { - switch v := v.(*LintConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[307].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceLintConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[308].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceLintConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[309].Exporter = func(v any, i int) any { - switch v := v.(*EnableGraphPruningRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[310].Exporter = func(v any, i int) any { - switch v := v.(*EnableGraphPruningResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[311].Exporter = func(v any, i int) any { - switch v := v.(*GraphPruningConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[312].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceGraphPruningConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[313].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceGraphPruningConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[314].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceGraphPruningConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[315].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceGraphPruningConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[316].Exporter = func(v any, i int) any { - switch v := v.(*MigrateMonographRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[317].Exporter = func(v any, i int) any { - switch v := v.(*MigrateMonographResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[318].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessiblePermissionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[319].Exporter = func(v any, i int) any { - switch v := v.(*Permission); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[320].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessiblePermissionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[321].Exporter = func(v any, i int) any { - switch v := v.(*CreateContractRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[322].Exporter = func(v any, i int) any { - switch v := v.(*CreateContractResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[323].Exporter = func(v any, i int) any { - switch v := v.(*UpdateContractRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[324].Exporter = func(v any, i int) any { - switch v := v.(*UpdateContractResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[325].Exporter = func(v any, i int) any { - switch v := v.(*IsMemberLimitReachedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[326].Exporter = func(v any, i int) any { - switch v := v.(*IsMemberLimitReachedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[327].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[328].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[329].Exporter = func(v any, i int) any { - switch v := v.(*CreateFeatureFlagRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[330].Exporter = func(v any, i int) any { - switch v := v.(*CreateFeatureFlagResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[331].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFeatureFlagRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[332].Exporter = func(v any, i int) any { - switch v := v.(*UpdateFeatureFlagResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[333].Exporter = func(v any, i int) any { - switch v := v.(*EnableFeatureFlagRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[334].Exporter = func(v any, i int) any { - switch v := v.(*EnableFeatureFlagResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[335].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFeatureFlagRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[336].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFeatureFlagResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[337].Exporter = func(v any, i int) any { - switch v := v.(*FeatureFlag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[338].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[339].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[340].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagByNameRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[341].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagByNameResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[342].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureSubgraphsByFeatureFlagRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[343].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureSubgraphsByFeatureFlagResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[344].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureSubgraphsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[345].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureSubgraphsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[346].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagsByFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[347].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagsByFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[348].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[349].Exporter = func(v any, i int) any { - switch v := v.(*WebhookDelivery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[350].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookHistoryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[351].Exporter = func(v any, i int) any { - switch v := v.(*RedeliverWebhookRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[352].Exporter = func(v any, i int) any { - switch v := v.(*RedeliverWebhookResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[353].Exporter = func(v any, i int) any { - switch v := v.(*GetWebhookDeliveryDetailsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[354].Exporter = func(v any, i int) any { - switch v := v.(*GetWebhookDeliveryDetailsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[355].Exporter = func(v any, i int) any { - switch v := v.(*CreatePlaygroundScriptRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[356].Exporter = func(v any, i int) any { - switch v := v.(*CreatePlaygroundScriptResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[357].Exporter = func(v any, i int) any { - switch v := v.(*DeletePlaygroundScriptRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[358].Exporter = func(v any, i int) any { - switch v := v.(*DeletePlaygroundScriptResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[359].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePlaygroundScriptRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[360].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePlaygroundScriptResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[361].Exporter = func(v any, i int) any { - switch v := v.(*GetPlaygroundScriptsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[362].Exporter = func(v any, i int) any { - switch v := v.(*PlaygroundScript); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[363].Exporter = func(v any, i int) any { - switch v := v.(*GetPlaygroundScriptsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[364].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphByIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[365].Exporter = func(v any, i int) any { - switch v := v.(*GetFederatedGraphByIdResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[366].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphByIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[367].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphByIdResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[368].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[369].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[370].Exporter = func(v any, i int) any { - switch v := v.(*WorkspaceNamespace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[371].Exporter = func(v any, i int) any { - switch v := v.(*WorkspaceFederatedGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[372].Exporter = func(v any, i int) any { - switch v := v.(*WorkspaceSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[373].Exporter = func(v any, i int) any { - switch v := v.(*GetWorkspaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[374].Exporter = func(v any, i int) any { - switch v := v.(*GetWorkspaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[375].Exporter = func(v any, i int) any { - switch v := v.(*PushCacheWarmerOperationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[376].Exporter = func(v any, i int) any { - switch v := v.(*PushCacheWarmerOperationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[377].Exporter = func(v any, i int) any { - switch v := v.(*GetCacheWarmerOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[378].Exporter = func(v any, i int) any { - switch v := v.(*CacheWarmerOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[379].Exporter = func(v any, i int) any { - switch v := v.(*GetCacheWarmerOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[380].Exporter = func(v any, i int) any { - switch v := v.(*ComputeCacheWarmerOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[381].Exporter = func(v any, i int) any { - switch v := v.(*ComputeCacheWarmerOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[382].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureCacheWarmerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[383].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureCacheWarmerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[384].Exporter = func(v any, i int) any { - switch v := v.(*GetCacheWarmerConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[385].Exporter = func(v any, i int) any { - switch v := v.(*GetCacheWarmerConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[386].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphCheckExtensionsConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[387].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphCheckExtensionsConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[388].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureSubgraphCheckExtensionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[389].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureSubgraphCheckExtensionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[390].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCacheWarmerOperationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[391].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCacheWarmerOperationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[392].Exporter = func(v any, i int) any { - switch v := v.(*ListRouterCompatibilityVersionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[393].Exporter = func(v any, i int) any { - switch v := v.(*ListRouterCompatibilityVersionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[394].Exporter = func(v any, i int) any { - switch v := v.(*SetGraphRouterCompatibilityVersionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[395].Exporter = func(v any, i int) any { - switch v := v.(*SetGraphRouterCompatibilityVersionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[396].Exporter = func(v any, i int) any { - switch v := v.(*GetProposedSchemaOfCheckedSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[397].Exporter = func(v any, i int) any { - switch v := v.(*GetProposedSchemaOfCheckedSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[398].Exporter = func(v any, i int) any { - switch v := v.(*Proposal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[399].Exporter = func(v any, i int) any { - switch v := v.(*ProposalSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[400].Exporter = func(v any, i int) any { - switch v := v.(*CreateProposalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[401].Exporter = func(v any, i int) any { - switch v := v.(*CreateProposalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[402].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[403].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[404].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalsByFederatedGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[405].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalsByFederatedGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[406].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalChecksRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[407].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalChecksResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[408].Exporter = func(v any, i int) any { - switch v := v.(*UpdateProposalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[409].Exporter = func(v any, i int) any { - switch v := v.(*UpdateProposalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[410].Exporter = func(v any, i int) any { - switch v := v.(*EnableProposalsForNamespaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[411].Exporter = func(v any, i int) any { - switch v := v.(*EnableProposalsForNamespaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[412].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceProposalConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[413].Exporter = func(v any, i int) any { - switch v := v.(*ConfigureNamespaceProposalConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[414].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceProposalConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[415].Exporter = func(v any, i int) any { - switch v := v.(*GetNamespaceProposalConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[416].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[417].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[418].Exporter = func(v any, i int) any { - switch v := v.(*GetClientsFromAnalyticsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[419].Exporter = func(v any, i int) any { - switch v := v.(*GetClientsFromAnalyticsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[420].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationClientsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[421].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationClientsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[422].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationDeprecatedFieldsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[423].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationDeprecatedFieldsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[424].Exporter = func(v any, i int) any { - switch v := v.(*ValidateAndFetchPluginDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[425].Exporter = func(v any, i int) any { - switch v := v.(*ValidateAndFetchPluginDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[426].Exporter = func(v any, i int) any { - switch v := v.(*LinkSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[427].Exporter = func(v any, i int) any { - switch v := v.(*LinkSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[428].Exporter = func(v any, i int) any { - switch v := v.(*UnlinkSubgraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[429].Exporter = func(v any, i int) any { - switch v := v.(*UnlinkSubgraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[430].Exporter = func(v any, i int) any { - switch v := v.(*VerifyAPIKeyGraphAccessRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[431].Exporter = func(v any, i int) any { - switch v := v.(*VerifyAPIKeyGraphAccessResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[432].Exporter = func(v any, i int) any { - switch v := v.(*InitializeCosmoUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[433].Exporter = func(v any, i int) any { - switch v := v.(*InitializeCosmoUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[434].Exporter = func(v any, i int) any { - switch v := v.(*ListOrganizationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[435].Exporter = func(v any, i int) any { - switch v := v.(*ListOrganizationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[436].Exporter = func(v any, i int) any { - switch v := v.(*RecomposeGraphRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[437].Exporter = func(v any, i int) any { - switch v := v.(*RecomposeGraphResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[438].Exporter = func(v any, i int) any { - switch v := v.(*Subgraph_PluginData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[439].Exporter = func(v any, i int) any { - switch v := v.(*GetSubgraphByNameResponse_LinkedSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[440].Exporter = func(v any, i int) any { - switch v := v.(*SchemaCheck_GhDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[441].Exporter = func(v any, i int) any { - switch v := v.(*SchemaCheck_CheckedSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[442].Exporter = func(v any, i int) any { - switch v := v.(*SchemaCheck_LinkedCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[443].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckSummaryResponse_AffectedGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[444].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckSummaryResponse_ProposalSchemaMatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[445].Exporter = func(v any, i int) any { - switch v := v.(*GetCheckOperationsResponse_CheckOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[447].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupMembersResponse_GroupMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[448].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationGroupMembersResponse_GroupApiKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[449].Exporter = func(v any, i int) any { - switch v := v.(*UpdateOrganizationGroupRequest_GroupRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[450].Exporter = func(v any, i int) any { - switch v := v.(*OrgMember_Group); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[451].Exporter = func(v any, i int) any { - switch v := v.(*APIKey_Group); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[453].Exporter = func(v any, i int) any { - switch v := v.(*DeletePersistedOperationResponse_Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[454].Exporter = func(v any, i int) any { - switch v := v.(*CheckPersistedOperationTrafficResponse_Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[455].Exporter = func(v any, i int) any { - switch v := v.(*GetPersistedOperationsResponse_Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[456].Exporter = func(v any, i int) any { - switch v := v.(*GetOrganizationWebhookConfigsResponse_Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[457].Exporter = func(v any, i int) any { - switch v := v.(*GetBillingPlansResponse_BillingPlanFeature); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[458].Exporter = func(v any, i int) any { - switch v := v.(*GetBillingPlansResponse_BillingPlan); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[459].Exporter = func(v any, i int) any { - switch v := v.(*GetAllOverridesResponse_Override); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[460].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessibleResourcesResponse_Namespace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[461].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessibleResourcesResponse_FederatedGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[462].Exporter = func(v any, i int) any { - switch v := v.(*GetUserAccessibleResourcesResponse_SubGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[463].Exporter = func(v any, i int) any { - switch v := v.(*ClientWithOperations_Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[464].Exporter = func(v any, i int) any { - switch v := v.(*GetFeatureFlagByNameResponse_FfFederatedGraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[465].Exporter = func(v any, i int) any { - switch v := v.(*GetProposalResponse_CurrentSubgraph); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[466].Exporter = func(v any, i int) any { - switch v := v.(*UpdateProposalRequest_UpdateProposalSubgraphs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[467].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationsResponse_Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[468].Exporter = func(v any, i int) any { - switch v := v.(*GetClientsFromAnalyticsResponse_Client); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[469].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationClientsResponse_Client); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[470].Exporter = func(v any, i int) any { - switch v := v.(*GetOperationDeprecatedFieldsResponse_DeprecatedField); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[471].Exporter = func(v any, i int) any { - switch v := v.(*ListOrganizationsResponse_OrganizationMembership); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_wg_cosmo_platform_v1_platform_proto_msgTypes[1].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[6].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[7].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[10].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[11].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[12].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[13].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[14].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[16].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[20].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[21].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[22].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[28].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[29].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[30].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[18].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[19].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[23].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[24].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[25].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[31].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[36].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[38].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[40].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[44].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[45].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[49].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[50].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[32].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[33].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[34].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[39].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[41].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[43].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[47].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[48].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[52].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[54].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[56].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[58].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[53].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[55].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[57].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[59].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[63].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[64].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[61].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[62].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[66].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[73].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[75].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[77].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[79].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[67].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[69].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[76].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[78].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[80].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[82].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[83].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[88].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[89].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[90].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[92].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[86].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[91].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[92].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[93].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[95].OneofWrappers = []any{ (*AnalyticsViewRowValue_NumberValue)(nil), (*AnalyticsViewRowValue_StringValue)(nil), (*AnalyticsViewRowValue_BoolValue)(nil), } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[112].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[116].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[118].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[122].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[125].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[141].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[174].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[115].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[119].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[121].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[128].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[131].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[147].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[181].OneofWrappers = []any{ (*IntegrationConfig_SlackIntegrationConfig)(nil), } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[192].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[193].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[195].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[205].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[206].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[208].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[209].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[211].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[214].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[199].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[200].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[202].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[212].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[213].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[215].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[216].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[219].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[218].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[221].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[223].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[249].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[257].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[262].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[283].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[296].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[311].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[226].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[228].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[230].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[259].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[267].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[272].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[293].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[306].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[321].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[323].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[329].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[331].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[333].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[334].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[335].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[338].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[339].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[341].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[343].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[344].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[346].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[345].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[348].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[349].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[388].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[394].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[401].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[408].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[354].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[356].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[360].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[362].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[363].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[402].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[408].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[415].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[422].OneofWrappers = []any{ (*UpdateProposalRequest_State)(nil), (*UpdateProposalRequest_UpdatedSubgraphs)(nil), } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[409].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[416].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[417].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[420].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[422].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[436].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[437].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[423].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[440].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[441].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[457].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[467].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[444].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[446].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[460].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[461].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[462].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[463].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[465].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[467].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[473].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[489].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[499].OneofWrappers = []any{ (*GetOperationsResponse_Operation_Latency)(nil), (*GetOperationsResponse_Operation_RequestCount)(nil), (*GetOperationsResponse_Operation_ErrorPercentage)(nil), @@ -46700,9 +37527,9 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_wg_cosmo_platform_v1_platform_proto_rawDesc, - NumEnums: 15, - NumMessages: 472, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_platform_v1_platform_proto_rawDesc), len(file_wg_cosmo_platform_v1_platform_proto_rawDesc)), + NumEnums: 17, + NumMessages: 504, NumExtensions: 0, NumServices: 1, }, @@ -46712,7 +37539,6 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { MessageInfos: file_wg_cosmo_platform_v1_platform_proto_msgTypes, }.Build() File_wg_cosmo_platform_v1_platform_proto = out.File - file_wg_cosmo_platform_v1_platform_proto_rawDesc = nil file_wg_cosmo_platform_v1_platform_proto_goTypes = nil file_wg_cosmo_platform_v1_platform_proto_depIdxs = nil } diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go index 769b7ff75a..65b6d695de 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go @@ -101,6 +101,9 @@ const ( // PlatformServicePublishFederatedSubgraphProcedure is the fully-qualified name of the // PlatformService's PublishFederatedSubgraph RPC. PlatformServicePublishFederatedSubgraphProcedure = "/wg.cosmo.platform.v1.PlatformService/PublishFederatedSubgraph" + // PlatformServicePublishFederatedSubgraphsProcedure is the fully-qualified name of the + // PlatformService's PublishFederatedSubgraphs RPC. + PlatformServicePublishFederatedSubgraphsProcedure = "/wg.cosmo.platform.v1.PlatformService/PublishFederatedSubgraphs" // PlatformServiceCreateFederatedGraphProcedure is the fully-qualified name of the PlatformService's // CreateFederatedGraph RPC. PlatformServiceCreateFederatedGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/CreateFederatedGraph" @@ -244,6 +247,9 @@ const ( // PlatformServiceInviteUserProcedure is the fully-qualified name of the PlatformService's // InviteUser RPC. PlatformServiceInviteUserProcedure = "/wg.cosmo.platform.v1.PlatformService/InviteUser" + // PlatformServiceInviteUsersProcedure is the fully-qualified name of the PlatformService's + // InviteUsers RPC. + PlatformServiceInviteUsersProcedure = "/wg.cosmo.platform.v1.PlatformService/InviteUsers" // PlatformServiceGetAPIKeysProcedure is the fully-qualified name of the PlatformService's // GetAPIKeys RPC. PlatformServiceGetAPIKeysProcedure = "/wg.cosmo.platform.v1.PlatformService/GetAPIKeys" @@ -343,6 +349,9 @@ const ( // PlatformServiceGetOIDCProviderProcedure is the fully-qualified name of the PlatformService's // GetOIDCProvider RPC. PlatformServiceGetOIDCProviderProcedure = "/wg.cosmo.platform.v1.PlatformService/GetOIDCProvider" + // PlatformServiceListOIDCProvidersProcedure is the fully-qualified name of the PlatformService's + // ListOIDCProviders RPC. + PlatformServiceListOIDCProvidersProcedure = "/wg.cosmo.platform.v1.PlatformService/ListOIDCProviders" // PlatformServiceDeleteOIDCProviderProcedure is the fully-qualified name of the PlatformService's // DeleteOIDCProvider RPC. PlatformServiceDeleteOIDCProviderProcedure = "/wg.cosmo.platform.v1.PlatformService/DeleteOIDCProvider" @@ -469,6 +478,12 @@ const ( // PlatformServiceGetFeatureFlagsByFederatedGraphProcedure is the fully-qualified name of the // PlatformService's GetFeatureFlagsByFederatedGraph RPC. PlatformServiceGetFeatureFlagsByFederatedGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/GetFeatureFlagsByFederatedGraph" + // PlatformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphProcedure is the fully-qualified + // name of the PlatformService's GetFeatureFlagsInLatestCompositionByFederatedGraph RPC. + PlatformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/GetFeatureFlagsInLatestCompositionByFederatedGraph" + // PlatformServiceGetFeatureSubgraphsByFederatedGraphProcedure is the fully-qualified name of the + // PlatformService's GetFeatureSubgraphsByFederatedGraph RPC. + PlatformServiceGetFeatureSubgraphsByFederatedGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/GetFeatureSubgraphsByFederatedGraph" // PlatformServiceGetFederatedGraphByIdProcedure is the fully-qualified name of the // PlatformService's GetFederatedGraphById RPC. PlatformServiceGetFederatedGraphByIdProcedure = "/wg.cosmo.platform.v1.PlatformService/GetFederatedGraphById" @@ -535,6 +550,18 @@ const ( // PlatformServiceGetNamespaceProposalConfigProcedure is the fully-qualified name of the // PlatformService's GetNamespaceProposalConfig RPC. PlatformServiceGetNamespaceProposalConfigProcedure = "/wg.cosmo.platform.v1.PlatformService/GetNamespaceProposalConfig" + // PlatformServiceUpdateNamespaceLoginMethodsProcedure is the fully-qualified name of the + // PlatformService's UpdateNamespaceLoginMethods RPC. + PlatformServiceUpdateNamespaceLoginMethodsProcedure = "/wg.cosmo.platform.v1.PlatformService/UpdateNamespaceLoginMethods" + // PlatformServiceListNamespaceLoginMethodsProcedure is the fully-qualified name of the + // PlatformService's ListNamespaceLoginMethods RPC. + PlatformServiceListNamespaceLoginMethodsProcedure = "/wg.cosmo.platform.v1.PlatformService/ListNamespaceLoginMethods" + // PlatformServiceGetOrganizationLoginMethodsProcedure is the fully-qualified name of the + // PlatformService's GetOrganizationLoginMethods RPC. + PlatformServiceGetOrganizationLoginMethodsProcedure = "/wg.cosmo.platform.v1.PlatformService/GetOrganizationLoginMethods" + // PlatformServiceUpdateOrganizationLoginMethodsProcedure is the fully-qualified name of the + // PlatformService's UpdateOrganizationLoginMethods RPC. + PlatformServiceUpdateOrganizationLoginMethodsProcedure = "/wg.cosmo.platform.v1.PlatformService/UpdateOrganizationLoginMethods" // PlatformServiceGetProposalsByFederatedGraphProcedure is the fully-qualified name of the // PlatformService's GetProposalsByFederatedGraph RPC. PlatformServiceGetProposalsByFederatedGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/GetProposalsByFederatedGraph" @@ -568,189 +595,18 @@ const ( // PlatformServiceRecomposeGraphProcedure is the fully-qualified name of the PlatformService's // RecomposeGraph RPC. PlatformServiceRecomposeGraphProcedure = "/wg.cosmo.platform.v1.PlatformService/RecomposeGraph" -) - -// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. -var ( - platformServiceServiceDescriptor = v1.File_wg_cosmo_platform_v1_platform_proto.Services().ByName("PlatformService") - platformServiceCreatePlaygroundScriptMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreatePlaygroundScript") - platformServiceDeletePlaygroundScriptMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeletePlaygroundScript") - platformServiceUpdatePlaygroundScriptMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdatePlaygroundScript") - platformServiceGetPlaygroundScriptsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetPlaygroundScripts") - platformServiceCreateNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateNamespace") - platformServiceDeleteNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteNamespace") - platformServiceRenameNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RenameNamespace") - platformServiceGetNamespacesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaces") - platformServiceGetNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespace") - platformServiceGetWorkspaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetWorkspace") - platformServiceCreateContractMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateContract") - platformServiceUpdateContractMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateContract") - platformServiceMoveFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("MoveFederatedGraph") - platformServiceMoveSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("MoveSubgraph") - platformServiceMoveMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("MoveMonograph") - platformServiceCreateMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateMonograph") - platformServicePublishMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("PublishMonograph") - platformServiceDeleteMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteMonograph") - platformServiceUpdateMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateMonograph") - platformServiceMigrateMonographMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("MigrateMonograph") - platformServiceCreateFederatedSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateFederatedSubgraph") - platformServicePublishFederatedSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("PublishFederatedSubgraph") - platformServiceCreateFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateFederatedGraph") - platformServiceDeleteFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteFederatedGraph") - platformServiceDeleteFederatedSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteFederatedSubgraph") - platformServiceCheckSubgraphSchemaMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CheckSubgraphSchema") - platformServiceGetProposedSchemaOfCheckedSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposedSchemaOfCheckedSubgraph") - platformServiceFixSubgraphSchemaMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("FixSubgraphSchema") - platformServiceUpdateFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateFederatedGraph") - platformServiceUpdateSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateSubgraph") - platformServiceCheckFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CheckFederatedGraph") - platformServiceWhoAmIMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("WhoAmI") - platformServiceGenerateRouterTokenMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GenerateRouterToken") - platformServiceGetRouterTokensMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetRouterTokens") - platformServiceDeleteRouterTokenMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteRouterToken") - platformServicePublishPersistedOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("PublishPersistedOperations") - platformServiceCheckPersistedOperationTrafficMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CheckPersistedOperationTraffic") - platformServiceDeletePersistedOperationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeletePersistedOperation") - platformServiceGetPersistedOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetPersistedOperations") - platformServiceGetAuditLogsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetAuditLogs") - platformServiceInitializeCosmoUserMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("InitializeCosmoUser") - platformServiceListOrganizationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ListOrganizations") - platformServiceGetFederatedGraphsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphs") - platformServiceGetFederatedGraphsBySubgraphLabelsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphsBySubgraphLabels") - platformServiceGetFederatedGraphByNameMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphByName") - platformServiceGetFederatedGraphSDLByNameMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphSDLByName") - platformServiceGetSubgraphsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphs") - platformServiceGetSubgraphByNameMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphByName") - platformServiceGetSubgraphSDLFromLatestCompositionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphSDLFromLatestComposition") - platformServiceGetLatestSubgraphSDLMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetLatestSubgraphSDL") - platformServiceGetChecksByFederatedGraphNameMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetChecksByFederatedGraphName") - platformServiceGetCheckSummaryMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCheckSummary") - platformServiceGetCheckOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCheckOperations") - platformServiceForceCheckSuccessMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ForceCheckSuccess") - platformServiceCreateOperationOverridesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOperationOverrides") - platformServiceRemoveOperationOverridesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RemoveOperationOverrides") - platformServiceCreateOperationIgnoreAllOverrideMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOperationIgnoreAllOverride") - platformServiceRemoveOperationIgnoreAllOverrideMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RemoveOperationIgnoreAllOverride") - platformServiceGetOperationOverridesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperationOverrides") - platformServiceGetAllOverridesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetAllOverrides") - platformServiceToggleChangeOverridesForAllOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ToggleChangeOverridesForAllOperations") - platformServiceCreateIgnoreOverridesForAllOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateIgnoreOverridesForAllOperations") - platformServiceGetOperationContentMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperationContent") - platformServiceGetFederatedGraphChangelogMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphChangelog") - platformServiceCreateFederatedGraphTokenMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateFederatedGraphToken") - platformServiceGetOrganizationBySlugMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationBySlug") - platformServiceGetOrganizationMembersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationMembers") - platformServiceGetPendingOrganizationMembersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetPendingOrganizationMembers") - platformServiceIsMemberLimitReachedMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("IsMemberLimitReached") - platformServiceInviteUserMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("InviteUser") - platformServiceGetAPIKeysMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetAPIKeys") - platformServiceCreateAPIKeyMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateAPIKey") - platformServiceUpdateAPIKeyMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateAPIKey") - platformServiceDeleteAPIKeyMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteAPIKey") - platformServiceRemoveOrganizationMemberMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RemoveOrganizationMember") - platformServiceRemoveInvitationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RemoveInvitation") - platformServiceMigrateFromApolloMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("MigrateFromApollo") - platformServiceCreateOrganizationGroupMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOrganizationGroup") - platformServiceGetOrganizationGroupsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationGroups") - platformServiceGetOrganizationGroupMembersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationGroupMembers") - platformServiceUpdateOrganizationGroupMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateOrganizationGroup") - platformServiceDeleteOrganizationGroupMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteOrganizationGroup") - platformServiceCreateOrganizationWebhookConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOrganizationWebhookConfig") - platformServiceGetOrganizationWebhookConfigsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationWebhookConfigs") - platformServiceGetOrganizationWebhookMetaMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationWebhookMeta") - platformServiceUpdateOrganizationWebhookConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateOrganizationWebhookConfig") - platformServiceDeleteOrganizationWebhookConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteOrganizationWebhookConfig") - platformServiceGetOrganizationWebhookHistoryMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationWebhookHistory") - platformServiceGetWebhookDeliveryDetailsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetWebhookDeliveryDetails") - platformServiceRedeliverWebhookMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RedeliverWebhook") - platformServiceCreateIntegrationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateIntegration") - platformServiceGetOrganizationIntegrationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationIntegrations") - platformServiceUpdateIntegrationConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateIntegrationConfig") - platformServiceDeleteIntegrationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteIntegration") - platformServiceDeleteUserMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteUser") - platformServiceDeleteOrganizationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteOrganization") - platformServiceRestoreOrganizationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RestoreOrganization") - platformServiceLeaveOrganizationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("LeaveOrganization") - platformServiceUpdateOrganizationDetailsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateOrganizationDetails") - platformServiceUpdateOrgMemberGroupMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateOrgMemberGroup") - platformServiceIsGitHubAppInstalledMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("IsGitHubAppInstalled") - platformServiceCreateOIDCProviderMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOIDCProvider") - platformServiceGetOIDCProviderMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOIDCProvider") - platformServiceDeleteOIDCProviderMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteOIDCProvider") - platformServiceUpdateIDPMappersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateIDPMappers") - platformServiceGetClientsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetClients") - platformServiceGetRoutersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetRouters") - platformServiceGetInvitationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetInvitations") - platformServiceAcceptOrDeclineInvitationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("AcceptOrDeclineInvitation") - platformServiceGetCompositionsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCompositions") - platformServiceGetCompositionDetailsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCompositionDetails") - platformServiceGetSdlBySchemaVersionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSdlBySchemaVersion") - platformServiceGetChangelogBySchemaVersionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetChangelogBySchemaVersion") - platformServiceGetUserAccessibleResourcesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetUserAccessibleResources") - platformServiceUpdateFeatureSettingsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateFeatureSettings") - platformServiceGetSubgraphMembersMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphMembers") - platformServiceAddReadmeMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("AddReadme") - platformServiceGetUserAccessiblePermissionsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetUserAccessiblePermissions") - platformServiceCreateFeatureFlagMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateFeatureFlag") - platformServiceDeleteFeatureFlagMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteFeatureFlag") - platformServiceUpdateFeatureFlagMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateFeatureFlag") - platformServiceEnableFeatureFlagMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("EnableFeatureFlag") - platformServiceGetAnalyticsViewMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetAnalyticsView") - platformServiceGetDashboardAnalyticsViewMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetDashboardAnalyticsView") - platformServiceGetTraceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetTrace") - platformServiceGetGraphMetricsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetGraphMetrics") - platformServiceGetMetricsErrorRateMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetMetricsErrorRate") - platformServiceGetSubgraphMetricsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphMetrics") - platformServiceGetSubgraphMetricsErrorRateMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphMetricsErrorRate") - platformServiceGetFieldUsageMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFieldUsage") - platformServiceGetOrganizationRequestsCountMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOrganizationRequestsCount") - platformServiceCreateOrganizationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateOrganization") - platformServiceEnableLintingForTheNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("EnableLintingForTheNamespace") - platformServiceConfigureNamespaceLintConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ConfigureNamespaceLintConfig") - platformServiceGetNamespaceLintConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceLintConfig") - platformServiceGetNamespaceChecksConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceChecksConfig") - platformServiceUpdateNamespaceChecksConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateNamespaceChecksConfig") - platformServiceEnableGraphPruningMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("EnableGraphPruning") - platformServiceConfigureNamespaceGraphPruningConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ConfigureNamespaceGraphPruningConfig") - platformServiceGetNamespaceGraphPruningConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceGraphPruningConfig") - platformServiceGetFeatureFlagsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFeatureFlags") - platformServiceGetFeatureFlagByNameMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFeatureFlagByName") - platformServiceGetFeatureSubgraphsByFeatureFlagMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFeatureSubgraphsByFeatureFlag") - platformServiceGetFeatureSubgraphsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFeatureSubgraphs") - platformServiceGetFeatureFlagsByFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFeatureFlagsByFederatedGraph") - platformServiceGetFederatedGraphByIdMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetFederatedGraphById") - platformServiceGetSubgraphByIdMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphById") - platformServicePushCacheWarmerOperationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("PushCacheWarmerOperation") - platformServiceGetCacheWarmerOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCacheWarmerOperations") - platformServiceComputeCacheWarmerOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ComputeCacheWarmerOperations") - platformServiceConfigureCacheWarmerMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ConfigureCacheWarmer") - platformServiceGetCacheWarmerConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCacheWarmerConfig") - platformServiceDeleteCacheWarmerOperationMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("DeleteCacheWarmerOperation") - platformServiceGetSubgraphCheckExtensionsConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetSubgraphCheckExtensionsConfig") - platformServiceConfigureSubgraphCheckExtensionsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ConfigureSubgraphCheckExtensions") - platformServiceGetBillingPlansMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetBillingPlans") - platformServiceCreateCheckoutSessionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateCheckoutSession") - platformServiceCreateBillingPortalSessionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateBillingPortalSession") - platformServiceUpgradePlanMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpgradePlan") - platformServiceListRouterCompatibilityVersionsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ListRouterCompatibilityVersions") - platformServiceSetGraphRouterCompatibilityVersionMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("SetGraphRouterCompatibilityVersion") - platformServiceCreateProposalMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("CreateProposal") - platformServiceGetProposalMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposal") - platformServiceUpdateProposalMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UpdateProposal") - platformServiceEnableProposalsForNamespaceMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("EnableProposalsForNamespace") - platformServiceConfigureNamespaceProposalConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ConfigureNamespaceProposalConfig") - platformServiceGetNamespaceProposalConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceProposalConfig") - platformServiceGetProposalsByFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalsByFederatedGraph") - platformServiceGetProposalChecksMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalChecks") - platformServiceGetOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperations") - platformServiceGetClientsFromAnalyticsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetClientsFromAnalytics") - platformServiceGetOperationClientsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperationClients") - platformServiceGetOperationDeprecatedFieldsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperationDeprecatedFields") - platformServiceValidateAndFetchPluginDataMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("ValidateAndFetchPluginData") - platformServiceLinkSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("LinkSubgraph") - platformServiceUnlinkSubgraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("UnlinkSubgraph") - platformServiceVerifyAPIKeyGraphAccessMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("VerifyAPIKeyGraphAccess") - platformServiceRecomposeGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("RecomposeGraph") + // PlatformServiceRecomposeFeatureFlagProcedure is the fully-qualified name of the PlatformService's + // RecomposeFeatureFlag RPC. + PlatformServiceRecomposeFeatureFlagProcedure = "/wg.cosmo.platform.v1.PlatformService/RecomposeFeatureFlag" + // PlatformServiceGetOnboardingProcedure is the fully-qualified name of the PlatformService's + // GetOnboarding RPC. + PlatformServiceGetOnboardingProcedure = "/wg.cosmo.platform.v1.PlatformService/GetOnboarding" + // PlatformServiceCreateOnboardingProcedure is the fully-qualified name of the PlatformService's + // CreateOnboarding RPC. + PlatformServiceCreateOnboardingProcedure = "/wg.cosmo.platform.v1.PlatformService/CreateOnboarding" + // PlatformServiceFinishOnboardingProcedure is the fully-qualified name of the PlatformService's + // FinishOnboarding RPC. + PlatformServiceFinishOnboardingProcedure = "/wg.cosmo.platform.v1.PlatformService/FinishOnboarding" ) // PlatformServiceClient is a client for the wg.cosmo.platform.v1.PlatformService service. @@ -788,6 +644,9 @@ type PlatformServiceClient interface { CreateFederatedSubgraph(context.Context, *connect.Request[v1.CreateFederatedSubgraphRequest]) (*connect.Response[v1.CreateFederatedSubgraphResponse], error) // PublishFederatedSubgraph pushes the schema of the subgraph to the control plane. PublishFederatedSubgraph(context.Context, *connect.Request[v1.PublishFederatedSubgraphRequest]) (*connect.Response[v1.PublishFederatedSubgraphResponse], error) + // PublishFederatedSubgraphs pushes the schemas of multiple existing subgraphs to the control plane in a single + // request. Affected federated graphs (and their contracts / feature flags) are composed exactly once each. + PublishFederatedSubgraphs(context.Context, *connect.Request[v1.PublishFederatedSubgraphsRequest]) (*connect.Response[v1.PublishFederatedSubgraphsResponse], error) // CreateFederatedGraph creates a federated graph on the control plane. CreateFederatedGraph(context.Context, *connect.Request[v1.CreateFederatedGraphRequest]) (*connect.Response[v1.CreateFederatedGraphResponse], error) // DeleteFederatedGraph deletes a federated graph from the control plane. @@ -882,6 +741,8 @@ type PlatformServiceClient interface { IsMemberLimitReached(context.Context, *connect.Request[v1.IsMemberLimitReachedRequest]) (*connect.Response[v1.IsMemberLimitReachedResponse], error) // InviteUser invites an user to join the organization InviteUser(context.Context, *connect.Request[v1.InviteUserRequest]) (*connect.Response[v1.InviteUserResponse], error) + // InviteUsers invites multiple users to join the organization + InviteUsers(context.Context, *connect.Request[v1.InviteUsersRequest]) (*connect.Response[v1.InviteUsersResponse], error) // GetAPIKeys returns a list of API keys of the organization GetAPIKeys(context.Context, *connect.Request[v1.GetAPIKeysRequest]) (*connect.Response[v1.GetAPIKeysResponse], error) // CreateAPIKey creates an API key for the organization @@ -949,6 +810,8 @@ type PlatformServiceClient interface { CreateOIDCProvider(context.Context, *connect.Request[v1.CreateOIDCProviderRequest]) (*connect.Response[v1.CreateOIDCProviderResponse], error) // GetOIDCProvider gets the oidc provider connected the organization GetOIDCProvider(context.Context, *connect.Request[v1.GetOIDCProviderRequest]) (*connect.Response[v1.GetOIDCProviderResponse], error) + // ListOIDCProviders lists all OIDC providers configured for the organization + ListOIDCProviders(context.Context, *connect.Request[v1.ListOIDCProvidersRequest]) (*connect.Response[v1.ListOIDCProvidersResponse], error) // DeleteOIDCProvider deletes the oidc provider connected the organization DeleteOIDCProvider(context.Context, *connect.Request[v1.DeleteOIDCProviderRequest]) (*connect.Response[v1.DeleteOIDCProviderResponse], error) // UpdateIDPMappers updates the mappings of the oidc provider @@ -1024,6 +887,10 @@ type PlatformServiceClient interface { GetFeatureSubgraphs(context.Context, *connect.Request[v1.GetFeatureSubgraphsRequest]) (*connect.Response[v1.GetFeatureSubgraphsResponse], error) // GetFeatureFlagsByFederatedGraph returns the list of feature flags which match the label matchers of the federated graph. GetFeatureFlagsByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureFlagsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsByFederatedGraphResponse], error) + // GetFeatureFlagsInLatestCompositionByFederatedGraph returns only the feature flags that are part of the latest valid composition. + GetFeatureFlagsInLatestCompositionByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse], error) + // GetFeatureSubgraphsByFederatedGraph returns the paginated list of unique feature subgraphs across all feature flags of the federated graph. + GetFeatureSubgraphsByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureSubgraphsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureSubgraphsByFederatedGraphResponse], error) // GetFederatedGraphById returns the federated graph by id. GetFederatedGraphById(context.Context, *connect.Request[v1.GetFederatedGraphByIdRequest]) (*connect.Response[v1.GetFederatedGraphByIdResponse], error) // GetSubgraphById returns the subgraph by id. @@ -1069,6 +936,14 @@ type PlatformServiceClient interface { ConfigureNamespaceProposalConfig(context.Context, *connect.Request[v1.ConfigureNamespaceProposalConfigRequest]) (*connect.Response[v1.ConfigureNamespaceProposalConfigResponse], error) // GetNamespaceProposalConfig returns the proposal config of the namespace passed. GetNamespaceProposalConfig(context.Context, *connect.Request[v1.GetNamespaceProposalConfigRequest]) (*connect.Response[v1.GetNamespaceProposalConfigResponse], error) + // UpdateNamespaceLoginMethods replaces the org's per-namespace login-method configuration in one call. + UpdateNamespaceLoginMethods(context.Context, *connect.Request[v1.UpdateNamespaceLoginMethodsRequest]) (*connect.Response[v1.UpdateNamespaceLoginMethodsResponse], error) + // ListNamespaceLoginMethods returns the login-method configuration for every restricted namespace in the org. + ListNamespaceLoginMethods(context.Context, *connect.Request[v1.ListNamespaceLoginMethodsRequest]) (*connect.Response[v1.ListNamespaceLoginMethodsResponse], error) + // GetOrganizationLoginMethods returns the org's allowed login methods (empty restriction = all allowed). + GetOrganizationLoginMethods(context.Context, *connect.Request[v1.GetOrganizationLoginMethodsRequest]) (*connect.Response[v1.GetOrganizationLoginMethodsResponse], error) + // UpdateOrganizationLoginMethods replaces the org's allowed login methods and reconciles namespace mappings. + UpdateOrganizationLoginMethods(context.Context, *connect.Request[v1.UpdateOrganizationLoginMethodsRequest]) (*connect.Response[v1.UpdateOrganizationLoginMethodsResponse], error) // GetProposalsByFederatedGraph returns proposals for a federated graph. GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. @@ -1091,6 +966,12 @@ type PlatformServiceClient interface { VerifyAPIKeyGraphAccess(context.Context, *connect.Request[v1.VerifyAPIKeyGraphAccessRequest]) (*connect.Response[v1.VerifyAPIKeyGraphAccessResponse], error) // RecomposeGraph triggers a recomposition of the federated graph (or monograph) using its current subgraphs RecomposeGraph(context.Context, *connect.Request[v1.RecomposeGraphRequest]) (*connect.Response[v1.RecomposeGraphResponse], error) + // RecomposeFeatureFlag triggers a recomposition of the feature flag using its current subgraphs + RecomposeFeatureFlag(context.Context, *connect.Request[v1.RecomposeFeatureFlagRequest]) (*connect.Response[v1.RecomposeFeatureFlagResponse], error) + // Onboarding + GetOnboarding(context.Context, *connect.Request[v1.GetOnboardingRequest]) (*connect.Response[v1.GetOnboardingResponse], error) + CreateOnboarding(context.Context, *connect.Request[v1.CreateOnboardingRequest]) (*connect.Response[v1.CreateOnboardingResponse], error) + FinishOnboarding(context.Context, *connect.Request[v1.FinishOnboardingRequest]) (*connect.Response[v1.FinishOnboardingResponse], error) } // NewPlatformServiceClient constructs a client for the wg.cosmo.platform.v1.PlatformService @@ -1102,1080 +983,1159 @@ type PlatformServiceClient interface { // http://api.acme.com or https://acme.com/grpc). func NewPlatformServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) PlatformServiceClient { baseURL = strings.TrimRight(baseURL, "/") + platformServiceMethods := v1.File_wg_cosmo_platform_v1_platform_proto.Services().ByName("PlatformService").Methods() return &platformServiceClient{ createPlaygroundScript: connect.NewClient[v1.CreatePlaygroundScriptRequest, v1.CreatePlaygroundScriptResponse]( httpClient, baseURL+PlatformServiceCreatePlaygroundScriptProcedure, - connect.WithSchema(platformServiceCreatePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreatePlaygroundScript")), connect.WithClientOptions(opts...), ), deletePlaygroundScript: connect.NewClient[v1.DeletePlaygroundScriptRequest, v1.DeletePlaygroundScriptResponse]( httpClient, baseURL+PlatformServiceDeletePlaygroundScriptProcedure, - connect.WithSchema(platformServiceDeletePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeletePlaygroundScript")), connect.WithClientOptions(opts...), ), updatePlaygroundScript: connect.NewClient[v1.UpdatePlaygroundScriptRequest, v1.UpdatePlaygroundScriptResponse]( httpClient, baseURL+PlatformServiceUpdatePlaygroundScriptProcedure, - connect.WithSchema(platformServiceUpdatePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdatePlaygroundScript")), connect.WithClientOptions(opts...), ), getPlaygroundScripts: connect.NewClient[v1.GetPlaygroundScriptsRequest, v1.GetPlaygroundScriptsResponse]( httpClient, baseURL+PlatformServiceGetPlaygroundScriptsProcedure, - connect.WithSchema(platformServiceGetPlaygroundScriptsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPlaygroundScripts")), connect.WithClientOptions(opts...), ), createNamespace: connect.NewClient[v1.CreateNamespaceRequest, v1.CreateNamespaceResponse]( httpClient, baseURL+PlatformServiceCreateNamespaceProcedure, - connect.WithSchema(platformServiceCreateNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateNamespace")), connect.WithClientOptions(opts...), ), deleteNamespace: connect.NewClient[v1.DeleteNamespaceRequest, v1.DeleteNamespaceResponse]( httpClient, baseURL+PlatformServiceDeleteNamespaceProcedure, - connect.WithSchema(platformServiceDeleteNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteNamespace")), connect.WithClientOptions(opts...), ), renameNamespace: connect.NewClient[v1.RenameNamespaceRequest, v1.RenameNamespaceResponse]( httpClient, baseURL+PlatformServiceRenameNamespaceProcedure, - connect.WithSchema(platformServiceRenameNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RenameNamespace")), connect.WithClientOptions(opts...), ), getNamespaces: connect.NewClient[v1.GetNamespacesRequest, v1.GetNamespacesResponse]( httpClient, baseURL+PlatformServiceGetNamespacesProcedure, - connect.WithSchema(platformServiceGetNamespacesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaces")), connect.WithClientOptions(opts...), ), getNamespace: connect.NewClient[v1.GetNamespaceRequest, v1.GetNamespaceResponse]( httpClient, baseURL+PlatformServiceGetNamespaceProcedure, - connect.WithSchema(platformServiceGetNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespace")), connect.WithClientOptions(opts...), ), getWorkspace: connect.NewClient[v1.GetWorkspaceRequest, v1.GetWorkspaceResponse]( httpClient, baseURL+PlatformServiceGetWorkspaceProcedure, - connect.WithSchema(platformServiceGetWorkspaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetWorkspace")), connect.WithClientOptions(opts...), ), createContract: connect.NewClient[v1.CreateContractRequest, v1.CreateContractResponse]( httpClient, baseURL+PlatformServiceCreateContractProcedure, - connect.WithSchema(platformServiceCreateContractMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateContract")), connect.WithClientOptions(opts...), ), updateContract: connect.NewClient[v1.UpdateContractRequest, v1.UpdateContractResponse]( httpClient, baseURL+PlatformServiceUpdateContractProcedure, - connect.WithSchema(platformServiceUpdateContractMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateContract")), connect.WithClientOptions(opts...), ), moveFederatedGraph: connect.NewClient[v1.MoveGraphRequest, v1.MoveGraphResponse]( httpClient, baseURL+PlatformServiceMoveFederatedGraphProcedure, - connect.WithSchema(platformServiceMoveFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveFederatedGraph")), connect.WithClientOptions(opts...), ), moveSubgraph: connect.NewClient[v1.MoveGraphRequest, v1.MoveGraphResponse]( httpClient, baseURL+PlatformServiceMoveSubgraphProcedure, - connect.WithSchema(platformServiceMoveSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveSubgraph")), connect.WithClientOptions(opts...), ), moveMonograph: connect.NewClient[v1.MoveGraphRequest, v1.MoveGraphResponse]( httpClient, baseURL+PlatformServiceMoveMonographProcedure, - connect.WithSchema(platformServiceMoveMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveMonograph")), connect.WithClientOptions(opts...), ), createMonograph: connect.NewClient[v1.CreateMonographRequest, v1.CreateMonographResponse]( httpClient, baseURL+PlatformServiceCreateMonographProcedure, - connect.WithSchema(platformServiceCreateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateMonograph")), connect.WithClientOptions(opts...), ), publishMonograph: connect.NewClient[v1.PublishMonographRequest, v1.PublishMonographResponse]( httpClient, baseURL+PlatformServicePublishMonographProcedure, - connect.WithSchema(platformServicePublishMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishMonograph")), connect.WithClientOptions(opts...), ), deleteMonograph: connect.NewClient[v1.DeleteMonographRequest, v1.DeleteMonographResponse]( httpClient, baseURL+PlatformServiceDeleteMonographProcedure, - connect.WithSchema(platformServiceDeleteMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteMonograph")), connect.WithClientOptions(opts...), ), updateMonograph: connect.NewClient[v1.UpdateMonographRequest, v1.UpdateMonographResponse]( httpClient, baseURL+PlatformServiceUpdateMonographProcedure, - connect.WithSchema(platformServiceUpdateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateMonograph")), connect.WithClientOptions(opts...), ), migrateMonograph: connect.NewClient[v1.MigrateMonographRequest, v1.MigrateMonographResponse]( httpClient, baseURL+PlatformServiceMigrateMonographProcedure, - connect.WithSchema(platformServiceMigrateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MigrateMonograph")), connect.WithClientOptions(opts...), ), createFederatedSubgraph: connect.NewClient[v1.CreateFederatedSubgraphRequest, v1.CreateFederatedSubgraphResponse]( httpClient, baseURL+PlatformServiceCreateFederatedSubgraphProcedure, - connect.WithSchema(platformServiceCreateFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedSubgraph")), connect.WithClientOptions(opts...), ), publishFederatedSubgraph: connect.NewClient[v1.PublishFederatedSubgraphRequest, v1.PublishFederatedSubgraphResponse]( httpClient, baseURL+PlatformServicePublishFederatedSubgraphProcedure, - connect.WithSchema(platformServicePublishFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishFederatedSubgraph")), + connect.WithClientOptions(opts...), + ), + publishFederatedSubgraphs: connect.NewClient[v1.PublishFederatedSubgraphsRequest, v1.PublishFederatedSubgraphsResponse]( + httpClient, + baseURL+PlatformServicePublishFederatedSubgraphsProcedure, + connect.WithSchema(platformServiceMethods.ByName("PublishFederatedSubgraphs")), connect.WithClientOptions(opts...), ), createFederatedGraph: connect.NewClient[v1.CreateFederatedGraphRequest, v1.CreateFederatedGraphResponse]( httpClient, baseURL+PlatformServiceCreateFederatedGraphProcedure, - connect.WithSchema(platformServiceCreateFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedGraph")), connect.WithClientOptions(opts...), ), deleteFederatedGraph: connect.NewClient[v1.DeleteFederatedGraphRequest, v1.DeleteFederatedGraphResponse]( httpClient, baseURL+PlatformServiceDeleteFederatedGraphProcedure, - connect.WithSchema(platformServiceDeleteFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFederatedGraph")), connect.WithClientOptions(opts...), ), deleteFederatedSubgraph: connect.NewClient[v1.DeleteFederatedSubgraphRequest, v1.DeleteFederatedSubgraphResponse]( httpClient, baseURL+PlatformServiceDeleteFederatedSubgraphProcedure, - connect.WithSchema(platformServiceDeleteFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFederatedSubgraph")), connect.WithClientOptions(opts...), ), checkSubgraphSchema: connect.NewClient[v1.CheckSubgraphSchemaRequest, v1.CheckSubgraphSchemaResponse]( httpClient, baseURL+PlatformServiceCheckSubgraphSchemaProcedure, - connect.WithSchema(platformServiceCheckSubgraphSchemaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckSubgraphSchema")), connect.WithClientOptions(opts...), ), getProposedSchemaOfCheckedSubgraph: connect.NewClient[v1.GetProposedSchemaOfCheckedSubgraphRequest, v1.GetProposedSchemaOfCheckedSubgraphResponse]( httpClient, baseURL+PlatformServiceGetProposedSchemaOfCheckedSubgraphProcedure, - connect.WithSchema(platformServiceGetProposedSchemaOfCheckedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposedSchemaOfCheckedSubgraph")), connect.WithClientOptions(opts...), ), fixSubgraphSchema: connect.NewClient[v1.FixSubgraphSchemaRequest, v1.FixSubgraphSchemaResponse]( httpClient, baseURL+PlatformServiceFixSubgraphSchemaProcedure, - connect.WithSchema(platformServiceFixSubgraphSchemaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("FixSubgraphSchema")), connect.WithClientOptions(opts...), ), updateFederatedGraph: connect.NewClient[v1.UpdateFederatedGraphRequest, v1.UpdateFederatedGraphResponse]( httpClient, baseURL+PlatformServiceUpdateFederatedGraphProcedure, - connect.WithSchema(platformServiceUpdateFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFederatedGraph")), connect.WithClientOptions(opts...), ), updateSubgraph: connect.NewClient[v1.UpdateSubgraphRequest, v1.UpdateSubgraphResponse]( httpClient, baseURL+PlatformServiceUpdateSubgraphProcedure, - connect.WithSchema(platformServiceUpdateSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateSubgraph")), connect.WithClientOptions(opts...), ), checkFederatedGraph: connect.NewClient[v1.CheckFederatedGraphRequest, v1.CheckFederatedGraphResponse]( httpClient, baseURL+PlatformServiceCheckFederatedGraphProcedure, - connect.WithSchema(platformServiceCheckFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckFederatedGraph")), connect.WithClientOptions(opts...), ), whoAmI: connect.NewClient[v1.WhoAmIRequest, v1.WhoAmIResponse]( httpClient, baseURL+PlatformServiceWhoAmIProcedure, - connect.WithSchema(platformServiceWhoAmIMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("WhoAmI")), connect.WithClientOptions(opts...), ), generateRouterToken: connect.NewClient[v1.GenerateRouterTokenRequest, v1.GenerateRouterTokenResponse]( httpClient, baseURL+PlatformServiceGenerateRouterTokenProcedure, - connect.WithSchema(platformServiceGenerateRouterTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GenerateRouterToken")), connect.WithClientOptions(opts...), ), getRouterTokens: connect.NewClient[v1.GetRouterTokensRequest, v1.GetRouterTokensResponse]( httpClient, baseURL+PlatformServiceGetRouterTokensProcedure, - connect.WithSchema(platformServiceGetRouterTokensMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetRouterTokens")), connect.WithClientOptions(opts...), ), deleteRouterToken: connect.NewClient[v1.DeleteRouterTokenRequest, v1.DeleteRouterTokenResponse]( httpClient, baseURL+PlatformServiceDeleteRouterTokenProcedure, - connect.WithSchema(platformServiceDeleteRouterTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteRouterToken")), connect.WithClientOptions(opts...), ), publishPersistedOperations: connect.NewClient[v1.PublishPersistedOperationsRequest, v1.PublishPersistedOperationsResponse]( httpClient, baseURL+PlatformServicePublishPersistedOperationsProcedure, - connect.WithSchema(platformServicePublishPersistedOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishPersistedOperations")), connect.WithClientOptions(opts...), ), checkPersistedOperationTraffic: connect.NewClient[v1.CheckPersistedOperationTrafficRequest, v1.CheckPersistedOperationTrafficResponse]( httpClient, baseURL+PlatformServiceCheckPersistedOperationTrafficProcedure, - connect.WithSchema(platformServiceCheckPersistedOperationTrafficMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckPersistedOperationTraffic")), connect.WithClientOptions(opts...), ), deletePersistedOperation: connect.NewClient[v1.DeletePersistedOperationRequest, v1.DeletePersistedOperationResponse]( httpClient, baseURL+PlatformServiceDeletePersistedOperationProcedure, - connect.WithSchema(platformServiceDeletePersistedOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeletePersistedOperation")), connect.WithClientOptions(opts...), ), getPersistedOperations: connect.NewClient[v1.GetPersistedOperationsRequest, v1.GetPersistedOperationsResponse]( httpClient, baseURL+PlatformServiceGetPersistedOperationsProcedure, - connect.WithSchema(platformServiceGetPersistedOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPersistedOperations")), connect.WithClientOptions(opts...), ), getAuditLogs: connect.NewClient[v1.GetAuditLogsRequest, v1.GetAuditLogsResponse]( httpClient, baseURL+PlatformServiceGetAuditLogsProcedure, - connect.WithSchema(platformServiceGetAuditLogsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAuditLogs")), connect.WithClientOptions(opts...), ), initializeCosmoUser: connect.NewClient[v1.InitializeCosmoUserRequest, v1.InitializeCosmoUserResponse]( httpClient, baseURL+PlatformServiceInitializeCosmoUserProcedure, - connect.WithSchema(platformServiceInitializeCosmoUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("InitializeCosmoUser")), connect.WithClientOptions(opts...), ), listOrganizations: connect.NewClient[v1.ListOrganizationsRequest, v1.ListOrganizationsResponse]( httpClient, baseURL+PlatformServiceListOrganizationsProcedure, - connect.WithSchema(platformServiceListOrganizationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ListOrganizations")), connect.WithClientOptions(opts...), ), getFederatedGraphs: connect.NewClient[v1.GetFederatedGraphsRequest, v1.GetFederatedGraphsResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphsProcedure, - connect.WithSchema(platformServiceGetFederatedGraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphs")), connect.WithClientOptions(opts...), ), getFederatedGraphsBySubgraphLabels: connect.NewClient[v1.GetFederatedGraphsBySubgraphLabelsRequest, v1.GetFederatedGraphsBySubgraphLabelsResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphsBySubgraphLabelsProcedure, - connect.WithSchema(platformServiceGetFederatedGraphsBySubgraphLabelsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphsBySubgraphLabels")), connect.WithClientOptions(opts...), ), getFederatedGraphByName: connect.NewClient[v1.GetFederatedGraphByNameRequest, v1.GetFederatedGraphByNameResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphByNameProcedure, - connect.WithSchema(platformServiceGetFederatedGraphByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphByName")), connect.WithClientOptions(opts...), ), getFederatedGraphSDLByName: connect.NewClient[v1.GetFederatedGraphSDLByNameRequest, v1.GetFederatedGraphSDLByNameResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphSDLByNameProcedure, - connect.WithSchema(platformServiceGetFederatedGraphSDLByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphSDLByName")), connect.WithClientOptions(opts...), ), getSubgraphs: connect.NewClient[v1.GetSubgraphsRequest, v1.GetSubgraphsResponse]( httpClient, baseURL+PlatformServiceGetSubgraphsProcedure, - connect.WithSchema(platformServiceGetSubgraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphs")), connect.WithClientOptions(opts...), ), getSubgraphByName: connect.NewClient[v1.GetSubgraphByNameRequest, v1.GetSubgraphByNameResponse]( httpClient, baseURL+PlatformServiceGetSubgraphByNameProcedure, - connect.WithSchema(platformServiceGetSubgraphByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphByName")), connect.WithClientOptions(opts...), ), getSubgraphSDLFromLatestComposition: connect.NewClient[v1.GetSubgraphSDLFromLatestCompositionRequest, v1.GetSubgraphSDLFromLatestCompositionResponse]( httpClient, baseURL+PlatformServiceGetSubgraphSDLFromLatestCompositionProcedure, - connect.WithSchema(platformServiceGetSubgraphSDLFromLatestCompositionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphSDLFromLatestComposition")), connect.WithClientOptions(opts...), ), getLatestSubgraphSDL: connect.NewClient[v1.GetLatestSubgraphSDLRequest, v1.GetLatestSubgraphSDLResponse]( httpClient, baseURL+PlatformServiceGetLatestSubgraphSDLProcedure, - connect.WithSchema(platformServiceGetLatestSubgraphSDLMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetLatestSubgraphSDL")), connect.WithClientOptions(opts...), ), getChecksByFederatedGraphName: connect.NewClient[v1.GetChecksByFederatedGraphNameRequest, v1.GetChecksByFederatedGraphNameResponse]( httpClient, baseURL+PlatformServiceGetChecksByFederatedGraphNameProcedure, - connect.WithSchema(platformServiceGetChecksByFederatedGraphNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetChecksByFederatedGraphName")), connect.WithClientOptions(opts...), ), getCheckSummary: connect.NewClient[v1.GetCheckSummaryRequest, v1.GetCheckSummaryResponse]( httpClient, baseURL+PlatformServiceGetCheckSummaryProcedure, - connect.WithSchema(platformServiceGetCheckSummaryMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCheckSummary")), connect.WithClientOptions(opts...), ), getCheckOperations: connect.NewClient[v1.GetCheckOperationsRequest, v1.GetCheckOperationsResponse]( httpClient, baseURL+PlatformServiceGetCheckOperationsProcedure, - connect.WithSchema(platformServiceGetCheckOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCheckOperations")), connect.WithClientOptions(opts...), ), forceCheckSuccess: connect.NewClient[v1.ForceCheckSuccessRequest, v1.ForceCheckSuccessResponse]( httpClient, baseURL+PlatformServiceForceCheckSuccessProcedure, - connect.WithSchema(platformServiceForceCheckSuccessMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ForceCheckSuccess")), connect.WithClientOptions(opts...), ), createOperationOverrides: connect.NewClient[v1.CreateOperationOverridesRequest, v1.CreateOperationOverridesResponse]( httpClient, baseURL+PlatformServiceCreateOperationOverridesProcedure, - connect.WithSchema(platformServiceCreateOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOperationOverrides")), connect.WithClientOptions(opts...), ), removeOperationOverrides: connect.NewClient[v1.RemoveOperationOverridesRequest, v1.RemoveOperationOverridesResponse]( httpClient, baseURL+PlatformServiceRemoveOperationOverridesProcedure, - connect.WithSchema(platformServiceRemoveOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOperationOverrides")), connect.WithClientOptions(opts...), ), createOperationIgnoreAllOverride: connect.NewClient[v1.CreateOperationIgnoreAllOverrideRequest, v1.CreateOperationIgnoreAllOverrideResponse]( httpClient, baseURL+PlatformServiceCreateOperationIgnoreAllOverrideProcedure, - connect.WithSchema(platformServiceCreateOperationIgnoreAllOverrideMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOperationIgnoreAllOverride")), connect.WithClientOptions(opts...), ), removeOperationIgnoreAllOverride: connect.NewClient[v1.RemoveOperationIgnoreAllOverrideRequest, v1.RemoveOperationIgnoreAllOverrideResponse]( httpClient, baseURL+PlatformServiceRemoveOperationIgnoreAllOverrideProcedure, - connect.WithSchema(platformServiceRemoveOperationIgnoreAllOverrideMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOperationIgnoreAllOverride")), connect.WithClientOptions(opts...), ), getOperationOverrides: connect.NewClient[v1.GetOperationOverridesRequest, v1.GetOperationOverridesResponse]( httpClient, baseURL+PlatformServiceGetOperationOverridesProcedure, - connect.WithSchema(platformServiceGetOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationOverrides")), connect.WithClientOptions(opts...), ), getAllOverrides: connect.NewClient[v1.GetAllOverridesRequest, v1.GetAllOverridesResponse]( httpClient, baseURL+PlatformServiceGetAllOverridesProcedure, - connect.WithSchema(platformServiceGetAllOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAllOverrides")), connect.WithClientOptions(opts...), ), toggleChangeOverridesForAllOperations: connect.NewClient[v1.ToggleChangeOverridesForAllOperationsRequest, v1.ToggleChangeOverridesForAllOperationsResponse]( httpClient, baseURL+PlatformServiceToggleChangeOverridesForAllOperationsProcedure, - connect.WithSchema(platformServiceToggleChangeOverridesForAllOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ToggleChangeOverridesForAllOperations")), connect.WithClientOptions(opts...), ), createIgnoreOverridesForAllOperations: connect.NewClient[v1.CreateIgnoreOverridesForAllOperationsRequest, v1.CreateIgnoreOverridesForAllOperationsResponse]( httpClient, baseURL+PlatformServiceCreateIgnoreOverridesForAllOperationsProcedure, - connect.WithSchema(platformServiceCreateIgnoreOverridesForAllOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateIgnoreOverridesForAllOperations")), connect.WithClientOptions(opts...), ), getOperationContent: connect.NewClient[v1.GetOperationContentRequest, v1.GetOperationContentResponse]( httpClient, baseURL+PlatformServiceGetOperationContentProcedure, - connect.WithSchema(platformServiceGetOperationContentMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationContent")), connect.WithClientOptions(opts...), ), getFederatedGraphChangelog: connect.NewClient[v1.GetFederatedGraphChangelogRequest, v1.GetFederatedGraphChangelogResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphChangelogProcedure, - connect.WithSchema(platformServiceGetFederatedGraphChangelogMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphChangelog")), connect.WithClientOptions(opts...), ), createFederatedGraphToken: connect.NewClient[v1.CreateFederatedGraphTokenRequest, v1.CreateFederatedGraphTokenResponse]( httpClient, baseURL+PlatformServiceCreateFederatedGraphTokenProcedure, - connect.WithSchema(platformServiceCreateFederatedGraphTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedGraphToken")), connect.WithClientOptions(opts...), ), getOrganizationBySlug: connect.NewClient[v1.GetOrganizationBySlugRequest, v1.GetOrganizationBySlugResponse]( httpClient, baseURL+PlatformServiceGetOrganizationBySlugProcedure, - connect.WithSchema(platformServiceGetOrganizationBySlugMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationBySlug")), connect.WithClientOptions(opts...), ), getOrganizationMembers: connect.NewClient[v1.GetOrganizationMembersRequest, v1.GetOrganizationMembersResponse]( httpClient, baseURL+PlatformServiceGetOrganizationMembersProcedure, - connect.WithSchema(platformServiceGetOrganizationMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationMembers")), connect.WithClientOptions(opts...), ), getPendingOrganizationMembers: connect.NewClient[v1.GetPendingOrganizationMembersRequest, v1.GetPendingOrganizationMembersResponse]( httpClient, baseURL+PlatformServiceGetPendingOrganizationMembersProcedure, - connect.WithSchema(platformServiceGetPendingOrganizationMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPendingOrganizationMembers")), connect.WithClientOptions(opts...), ), isMemberLimitReached: connect.NewClient[v1.IsMemberLimitReachedRequest, v1.IsMemberLimitReachedResponse]( httpClient, baseURL+PlatformServiceIsMemberLimitReachedProcedure, - connect.WithSchema(platformServiceIsMemberLimitReachedMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("IsMemberLimitReached")), connect.WithClientOptions(opts...), ), inviteUser: connect.NewClient[v1.InviteUserRequest, v1.InviteUserResponse]( httpClient, baseURL+PlatformServiceInviteUserProcedure, - connect.WithSchema(platformServiceInviteUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("InviteUser")), + connect.WithClientOptions(opts...), + ), + inviteUsers: connect.NewClient[v1.InviteUsersRequest, v1.InviteUsersResponse]( + httpClient, + baseURL+PlatformServiceInviteUsersProcedure, + connect.WithSchema(platformServiceMethods.ByName("InviteUsers")), connect.WithClientOptions(opts...), ), getAPIKeys: connect.NewClient[v1.GetAPIKeysRequest, v1.GetAPIKeysResponse]( httpClient, baseURL+PlatformServiceGetAPIKeysProcedure, - connect.WithSchema(platformServiceGetAPIKeysMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAPIKeys")), connect.WithClientOptions(opts...), ), createAPIKey: connect.NewClient[v1.CreateAPIKeyRequest, v1.CreateAPIKeyResponse]( httpClient, baseURL+PlatformServiceCreateAPIKeyProcedure, - connect.WithSchema(platformServiceCreateAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateAPIKey")), connect.WithClientOptions(opts...), ), updateAPIKey: connect.NewClient[v1.UpdateAPIKeyRequest, v1.UpdateAPIKeyResponse]( httpClient, baseURL+PlatformServiceUpdateAPIKeyProcedure, - connect.WithSchema(platformServiceUpdateAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateAPIKey")), connect.WithClientOptions(opts...), ), deleteAPIKey: connect.NewClient[v1.DeleteAPIKeyRequest, v1.DeleteAPIKeyResponse]( httpClient, baseURL+PlatformServiceDeleteAPIKeyProcedure, - connect.WithSchema(platformServiceDeleteAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteAPIKey")), connect.WithClientOptions(opts...), ), removeOrganizationMember: connect.NewClient[v1.RemoveOrganizationMemberRequest, v1.RemoveOrganizationMemberResponse]( httpClient, baseURL+PlatformServiceRemoveOrganizationMemberProcedure, - connect.WithSchema(platformServiceRemoveOrganizationMemberMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOrganizationMember")), connect.WithClientOptions(opts...), ), removeInvitation: connect.NewClient[v1.RemoveInvitationRequest, v1.RemoveInvitationResponse]( httpClient, baseURL+PlatformServiceRemoveInvitationProcedure, - connect.WithSchema(platformServiceRemoveInvitationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveInvitation")), connect.WithClientOptions(opts...), ), migrateFromApollo: connect.NewClient[v1.MigrateFromApolloRequest, v1.MigrateFromApolloResponse]( httpClient, baseURL+PlatformServiceMigrateFromApolloProcedure, - connect.WithSchema(platformServiceMigrateFromApolloMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MigrateFromApollo")), connect.WithClientOptions(opts...), ), createOrganizationGroup: connect.NewClient[v1.CreateOrganizationGroupRequest, v1.CreateOrganizationGroupResponse]( httpClient, baseURL+PlatformServiceCreateOrganizationGroupProcedure, - connect.WithSchema(platformServiceCreateOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganizationGroup")), connect.WithClientOptions(opts...), ), getOrganizationGroups: connect.NewClient[v1.GetOrganizationGroupsRequest, v1.GetOrganizationGroupsResponse]( httpClient, baseURL+PlatformServiceGetOrganizationGroupsProcedure, - connect.WithSchema(platformServiceGetOrganizationGroupsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationGroups")), connect.WithClientOptions(opts...), ), getOrganizationGroupMembers: connect.NewClient[v1.GetOrganizationGroupMembersRequest, v1.GetOrganizationGroupMembersResponse]( httpClient, baseURL+PlatformServiceGetOrganizationGroupMembersProcedure, - connect.WithSchema(platformServiceGetOrganizationGroupMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationGroupMembers")), connect.WithClientOptions(opts...), ), updateOrganizationGroup: connect.NewClient[v1.UpdateOrganizationGroupRequest, v1.UpdateOrganizationGroupResponse]( httpClient, baseURL+PlatformServiceUpdateOrganizationGroupProcedure, - connect.WithSchema(platformServiceUpdateOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationGroup")), connect.WithClientOptions(opts...), ), deleteOrganizationGroup: connect.NewClient[v1.DeleteOrganizationGroupRequest, v1.DeleteOrganizationGroupResponse]( httpClient, baseURL+PlatformServiceDeleteOrganizationGroupProcedure, - connect.WithSchema(platformServiceDeleteOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganizationGroup")), connect.WithClientOptions(opts...), ), createOrganizationWebhookConfig: connect.NewClient[v1.CreateOrganizationWebhookConfigRequest, v1.CreateOrganizationWebhookConfigResponse]( httpClient, baseURL+PlatformServiceCreateOrganizationWebhookConfigProcedure, - connect.WithSchema(platformServiceCreateOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganizationWebhookConfig")), connect.WithClientOptions(opts...), ), getOrganizationWebhookConfigs: connect.NewClient[v1.GetOrganizationWebhookConfigsRequest, v1.GetOrganizationWebhookConfigsResponse]( httpClient, baseURL+PlatformServiceGetOrganizationWebhookConfigsProcedure, - connect.WithSchema(platformServiceGetOrganizationWebhookConfigsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookConfigs")), connect.WithClientOptions(opts...), ), getOrganizationWebhookMeta: connect.NewClient[v1.GetOrganizationWebhookMetaRequest, v1.GetOrganizationWebhookMetaResponse]( httpClient, baseURL+PlatformServiceGetOrganizationWebhookMetaProcedure, - connect.WithSchema(platformServiceGetOrganizationWebhookMetaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookMeta")), connect.WithClientOptions(opts...), ), updateOrganizationWebhookConfig: connect.NewClient[v1.UpdateOrganizationWebhookConfigRequest, v1.UpdateOrganizationWebhookConfigResponse]( httpClient, baseURL+PlatformServiceUpdateOrganizationWebhookConfigProcedure, - connect.WithSchema(platformServiceUpdateOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationWebhookConfig")), connect.WithClientOptions(opts...), ), deleteOrganizationWebhookConfig: connect.NewClient[v1.DeleteOrganizationWebhookConfigRequest, v1.DeleteOrganizationWebhookConfigResponse]( httpClient, baseURL+PlatformServiceDeleteOrganizationWebhookConfigProcedure, - connect.WithSchema(platformServiceDeleteOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganizationWebhookConfig")), connect.WithClientOptions(opts...), ), getOrganizationWebhookHistory: connect.NewClient[v1.GetOrganizationWebhookHistoryRequest, v1.GetOrganizationWebhookHistoryResponse]( httpClient, baseURL+PlatformServiceGetOrganizationWebhookHistoryProcedure, - connect.WithSchema(platformServiceGetOrganizationWebhookHistoryMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookHistory")), connect.WithClientOptions(opts...), ), getWebhookDeliveryDetails: connect.NewClient[v1.GetWebhookDeliveryDetailsRequest, v1.GetWebhookDeliveryDetailsResponse]( httpClient, baseURL+PlatformServiceGetWebhookDeliveryDetailsProcedure, - connect.WithSchema(platformServiceGetWebhookDeliveryDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetWebhookDeliveryDetails")), connect.WithClientOptions(opts...), ), redeliverWebhook: connect.NewClient[v1.RedeliverWebhookRequest, v1.RedeliverWebhookResponse]( httpClient, baseURL+PlatformServiceRedeliverWebhookProcedure, - connect.WithSchema(platformServiceRedeliverWebhookMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RedeliverWebhook")), connect.WithClientOptions(opts...), ), createIntegration: connect.NewClient[v1.CreateIntegrationRequest, v1.CreateIntegrationResponse]( httpClient, baseURL+PlatformServiceCreateIntegrationProcedure, - connect.WithSchema(platformServiceCreateIntegrationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateIntegration")), connect.WithClientOptions(opts...), ), getOrganizationIntegrations: connect.NewClient[v1.GetOrganizationIntegrationsRequest, v1.GetOrganizationIntegrationsResponse]( httpClient, baseURL+PlatformServiceGetOrganizationIntegrationsProcedure, - connect.WithSchema(platformServiceGetOrganizationIntegrationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationIntegrations")), connect.WithClientOptions(opts...), ), updateIntegrationConfig: connect.NewClient[v1.UpdateIntegrationConfigRequest, v1.UpdateIntegrationConfigResponse]( httpClient, baseURL+PlatformServiceUpdateIntegrationConfigProcedure, - connect.WithSchema(platformServiceUpdateIntegrationConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateIntegrationConfig")), connect.WithClientOptions(opts...), ), deleteIntegration: connect.NewClient[v1.DeleteIntegrationRequest, v1.DeleteIntegrationResponse]( httpClient, baseURL+PlatformServiceDeleteIntegrationProcedure, - connect.WithSchema(platformServiceDeleteIntegrationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteIntegration")), connect.WithClientOptions(opts...), ), deleteUser: connect.NewClient[v1.DeleteUserRequest, v1.DeleteUserResponse]( httpClient, baseURL+PlatformServiceDeleteUserProcedure, - connect.WithSchema(platformServiceDeleteUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteUser")), connect.WithClientOptions(opts...), ), deleteOrganization: connect.NewClient[v1.DeleteOrganizationRequest, v1.DeleteOrganizationResponse]( httpClient, baseURL+PlatformServiceDeleteOrganizationProcedure, - connect.WithSchema(platformServiceDeleteOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganization")), connect.WithClientOptions(opts...), ), restoreOrganization: connect.NewClient[v1.RestoreOrganizationRequest, v1.RestoreOrganizationResponse]( httpClient, baseURL+PlatformServiceRestoreOrganizationProcedure, - connect.WithSchema(platformServiceRestoreOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RestoreOrganization")), connect.WithClientOptions(opts...), ), leaveOrganization: connect.NewClient[v1.LeaveOrganizationRequest, v1.LeaveOrganizationResponse]( httpClient, baseURL+PlatformServiceLeaveOrganizationProcedure, - connect.WithSchema(platformServiceLeaveOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("LeaveOrganization")), connect.WithClientOptions(opts...), ), updateOrganizationDetails: connect.NewClient[v1.UpdateOrganizationDetailsRequest, v1.UpdateOrganizationDetailsResponse]( httpClient, baseURL+PlatformServiceUpdateOrganizationDetailsProcedure, - connect.WithSchema(platformServiceUpdateOrganizationDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationDetails")), connect.WithClientOptions(opts...), ), updateOrgMemberGroup: connect.NewClient[v1.UpdateOrgMemberGroupRequest, v1.UpdateOrgMemberGroupResponse]( httpClient, baseURL+PlatformServiceUpdateOrgMemberGroupProcedure, - connect.WithSchema(platformServiceUpdateOrgMemberGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrgMemberGroup")), connect.WithClientOptions(opts...), ), isGitHubAppInstalled: connect.NewClient[v1.IsGitHubAppInstalledRequest, v1.IsGitHubAppInstalledResponse]( httpClient, baseURL+PlatformServiceIsGitHubAppInstalledProcedure, - connect.WithSchema(platformServiceIsGitHubAppInstalledMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("IsGitHubAppInstalled")), connect.WithClientOptions(opts...), ), createOIDCProvider: connect.NewClient[v1.CreateOIDCProviderRequest, v1.CreateOIDCProviderResponse]( httpClient, baseURL+PlatformServiceCreateOIDCProviderProcedure, - connect.WithSchema(platformServiceCreateOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOIDCProvider")), connect.WithClientOptions(opts...), ), getOIDCProvider: connect.NewClient[v1.GetOIDCProviderRequest, v1.GetOIDCProviderResponse]( httpClient, baseURL+PlatformServiceGetOIDCProviderProcedure, - connect.WithSchema(platformServiceGetOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOIDCProvider")), + connect.WithClientOptions(opts...), + ), + listOIDCProviders: connect.NewClient[v1.ListOIDCProvidersRequest, v1.ListOIDCProvidersResponse]( + httpClient, + baseURL+PlatformServiceListOIDCProvidersProcedure, + connect.WithSchema(platformServiceMethods.ByName("ListOIDCProviders")), connect.WithClientOptions(opts...), ), deleteOIDCProvider: connect.NewClient[v1.DeleteOIDCProviderRequest, v1.DeleteOIDCProviderResponse]( httpClient, baseURL+PlatformServiceDeleteOIDCProviderProcedure, - connect.WithSchema(platformServiceDeleteOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOIDCProvider")), connect.WithClientOptions(opts...), ), updateIDPMappers: connect.NewClient[v1.UpdateIDPMappersRequest, v1.UpdateIDPMappersResponse]( httpClient, baseURL+PlatformServiceUpdateIDPMappersProcedure, - connect.WithSchema(platformServiceUpdateIDPMappersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateIDPMappers")), connect.WithClientOptions(opts...), ), getClients: connect.NewClient[v1.GetClientsRequest, v1.GetClientsResponse]( httpClient, baseURL+PlatformServiceGetClientsProcedure, - connect.WithSchema(platformServiceGetClientsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetClients")), connect.WithClientOptions(opts...), ), getRouters: connect.NewClient[v1.GetRoutersRequest, v1.GetRoutersResponse]( httpClient, baseURL+PlatformServiceGetRoutersProcedure, - connect.WithSchema(platformServiceGetRoutersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetRouters")), connect.WithClientOptions(opts...), ), getInvitations: connect.NewClient[v1.GetInvitationsRequest, v1.GetInvitationsResponse]( httpClient, baseURL+PlatformServiceGetInvitationsProcedure, - connect.WithSchema(platformServiceGetInvitationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetInvitations")), connect.WithClientOptions(opts...), ), acceptOrDeclineInvitation: connect.NewClient[v1.AcceptOrDeclineInvitationRequest, v1.AcceptOrDeclineInvitationResponse]( httpClient, baseURL+PlatformServiceAcceptOrDeclineInvitationProcedure, - connect.WithSchema(platformServiceAcceptOrDeclineInvitationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("AcceptOrDeclineInvitation")), connect.WithClientOptions(opts...), ), getCompositions: connect.NewClient[v1.GetCompositionsRequest, v1.GetCompositionsResponse]( httpClient, baseURL+PlatformServiceGetCompositionsProcedure, - connect.WithSchema(platformServiceGetCompositionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCompositions")), connect.WithClientOptions(opts...), ), getCompositionDetails: connect.NewClient[v1.GetCompositionDetailsRequest, v1.GetCompositionDetailsResponse]( httpClient, baseURL+PlatformServiceGetCompositionDetailsProcedure, - connect.WithSchema(platformServiceGetCompositionDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCompositionDetails")), connect.WithClientOptions(opts...), ), getSdlBySchemaVersion: connect.NewClient[v1.GetSdlBySchemaVersionRequest, v1.GetSdlBySchemaVersionResponse]( httpClient, baseURL+PlatformServiceGetSdlBySchemaVersionProcedure, - connect.WithSchema(platformServiceGetSdlBySchemaVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSdlBySchemaVersion")), connect.WithClientOptions(opts...), ), getChangelogBySchemaVersion: connect.NewClient[v1.GetChangelogBySchemaVersionRequest, v1.GetChangelogBySchemaVersionResponse]( httpClient, baseURL+PlatformServiceGetChangelogBySchemaVersionProcedure, - connect.WithSchema(platformServiceGetChangelogBySchemaVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetChangelogBySchemaVersion")), connect.WithClientOptions(opts...), ), getUserAccessibleResources: connect.NewClient[v1.GetUserAccessibleResourcesRequest, v1.GetUserAccessibleResourcesResponse]( httpClient, baseURL+PlatformServiceGetUserAccessibleResourcesProcedure, - connect.WithSchema(platformServiceGetUserAccessibleResourcesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetUserAccessibleResources")), connect.WithClientOptions(opts...), ), updateFeatureSettings: connect.NewClient[v1.UpdateFeatureSettingsRequest, v1.UpdateFeatureSettingsResponse]( httpClient, baseURL+PlatformServiceUpdateFeatureSettingsProcedure, - connect.WithSchema(platformServiceUpdateFeatureSettingsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFeatureSettings")), connect.WithClientOptions(opts...), ), getSubgraphMembers: connect.NewClient[v1.GetSubgraphMembersRequest, v1.GetSubgraphMembersResponse]( httpClient, baseURL+PlatformServiceGetSubgraphMembersProcedure, - connect.WithSchema(platformServiceGetSubgraphMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMembers")), connect.WithClientOptions(opts...), ), addReadme: connect.NewClient[v1.AddReadmeRequest, v1.AddReadmeResponse]( httpClient, baseURL+PlatformServiceAddReadmeProcedure, - connect.WithSchema(platformServiceAddReadmeMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("AddReadme")), connect.WithClientOptions(opts...), ), getUserAccessiblePermissions: connect.NewClient[v1.GetUserAccessiblePermissionsRequest, v1.GetUserAccessiblePermissionsResponse]( httpClient, baseURL+PlatformServiceGetUserAccessiblePermissionsProcedure, - connect.WithSchema(platformServiceGetUserAccessiblePermissionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetUserAccessiblePermissions")), connect.WithClientOptions(opts...), ), createFeatureFlag: connect.NewClient[v1.CreateFeatureFlagRequest, v1.CreateFeatureFlagResponse]( httpClient, baseURL+PlatformServiceCreateFeatureFlagProcedure, - connect.WithSchema(platformServiceCreateFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFeatureFlag")), connect.WithClientOptions(opts...), ), deleteFeatureFlag: connect.NewClient[v1.DeleteFeatureFlagRequest, v1.DeleteFeatureFlagResponse]( httpClient, baseURL+PlatformServiceDeleteFeatureFlagProcedure, - connect.WithSchema(platformServiceDeleteFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFeatureFlag")), connect.WithClientOptions(opts...), ), updateFeatureFlag: connect.NewClient[v1.UpdateFeatureFlagRequest, v1.UpdateFeatureFlagResponse]( httpClient, baseURL+PlatformServiceUpdateFeatureFlagProcedure, - connect.WithSchema(platformServiceUpdateFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFeatureFlag")), connect.WithClientOptions(opts...), ), enableFeatureFlag: connect.NewClient[v1.EnableFeatureFlagRequest, v1.EnableFeatureFlagResponse]( httpClient, baseURL+PlatformServiceEnableFeatureFlagProcedure, - connect.WithSchema(platformServiceEnableFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableFeatureFlag")), connect.WithClientOptions(opts...), ), getAnalyticsView: connect.NewClient[v1.GetAnalyticsViewRequest, v1.GetAnalyticsViewResponse]( httpClient, baseURL+PlatformServiceGetAnalyticsViewProcedure, - connect.WithSchema(platformServiceGetAnalyticsViewMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAnalyticsView")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getDashboardAnalyticsView: connect.NewClient[v1.GetDashboardAnalyticsViewRequest, v1.GetDashboardAnalyticsViewResponse]( httpClient, baseURL+PlatformServiceGetDashboardAnalyticsViewProcedure, - connect.WithSchema(platformServiceGetDashboardAnalyticsViewMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetDashboardAnalyticsView")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getTrace: connect.NewClient[v1.GetTraceRequest, v1.GetTraceResponse]( httpClient, baseURL+PlatformServiceGetTraceProcedure, - connect.WithSchema(platformServiceGetTraceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetTrace")), connect.WithClientOptions(opts...), ), getGraphMetrics: connect.NewClient[v1.GetGraphMetricsRequest, v1.GetGraphMetricsResponse]( httpClient, baseURL+PlatformServiceGetGraphMetricsProcedure, - connect.WithSchema(platformServiceGetGraphMetricsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetGraphMetrics")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getMetricsErrorRate: connect.NewClient[v1.GetMetricsErrorRateRequest, v1.GetMetricsErrorRateResponse]( httpClient, baseURL+PlatformServiceGetMetricsErrorRateProcedure, - connect.WithSchema(platformServiceGetMetricsErrorRateMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetMetricsErrorRate")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getSubgraphMetrics: connect.NewClient[v1.GetSubgraphMetricsRequest, v1.GetSubgraphMetricsResponse]( httpClient, baseURL+PlatformServiceGetSubgraphMetricsProcedure, - connect.WithSchema(platformServiceGetSubgraphMetricsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMetrics")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getSubgraphMetricsErrorRate: connect.NewClient[v1.GetSubgraphMetricsErrorRateRequest, v1.GetSubgraphMetricsErrorRateResponse]( httpClient, baseURL+PlatformServiceGetSubgraphMetricsErrorRateProcedure, - connect.WithSchema(platformServiceGetSubgraphMetricsErrorRateMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMetricsErrorRate")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getFieldUsage: connect.NewClient[v1.GetFieldUsageRequest, v1.GetFieldUsageResponse]( httpClient, baseURL+PlatformServiceGetFieldUsageProcedure, - connect.WithSchema(platformServiceGetFieldUsageMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFieldUsage")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getOrganizationRequestsCount: connect.NewClient[v1.GetOrganizationRequestsCountRequest, v1.GetOrganizationRequestsCountResponse]( httpClient, baseURL+PlatformServiceGetOrganizationRequestsCountProcedure, - connect.WithSchema(platformServiceGetOrganizationRequestsCountMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationRequestsCount")), connect.WithClientOptions(opts...), ), createOrganization: connect.NewClient[v1.CreateOrganizationRequest, v1.CreateOrganizationResponse]( httpClient, baseURL+PlatformServiceCreateOrganizationProcedure, - connect.WithSchema(platformServiceCreateOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganization")), connect.WithClientOptions(opts...), ), enableLintingForTheNamespace: connect.NewClient[v1.EnableLintingForTheNamespaceRequest, v1.EnableLintingForTheNamespaceResponse]( httpClient, baseURL+PlatformServiceEnableLintingForTheNamespaceProcedure, - connect.WithSchema(platformServiceEnableLintingForTheNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableLintingForTheNamespace")), connect.WithClientOptions(opts...), ), configureNamespaceLintConfig: connect.NewClient[v1.ConfigureNamespaceLintConfigRequest, v1.ConfigureNamespaceLintConfigResponse]( httpClient, baseURL+PlatformServiceConfigureNamespaceLintConfigProcedure, - connect.WithSchema(platformServiceConfigureNamespaceLintConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceLintConfig")), connect.WithClientOptions(opts...), ), getNamespaceLintConfig: connect.NewClient[v1.GetNamespaceLintConfigRequest, v1.GetNamespaceLintConfigResponse]( httpClient, baseURL+PlatformServiceGetNamespaceLintConfigProcedure, - connect.WithSchema(platformServiceGetNamespaceLintConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceLintConfig")), connect.WithClientOptions(opts...), ), getNamespaceChecksConfig: connect.NewClient[v1.GetNamespaceChecksConfigurationRequest, v1.GetNamespaceChecksConfigurationResponse]( httpClient, baseURL+PlatformServiceGetNamespaceChecksConfigProcedure, - connect.WithSchema(platformServiceGetNamespaceChecksConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceChecksConfig")), connect.WithClientOptions(opts...), ), updateNamespaceChecksConfig: connect.NewClient[v1.UpdateNamespaceChecksConfigurationRequest, v1.UpdateNamespaceChecksConfigurationResponse]( httpClient, baseURL+PlatformServiceUpdateNamespaceChecksConfigProcedure, - connect.WithSchema(platformServiceUpdateNamespaceChecksConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateNamespaceChecksConfig")), connect.WithClientOptions(opts...), ), enableGraphPruning: connect.NewClient[v1.EnableGraphPruningRequest, v1.EnableGraphPruningResponse]( httpClient, baseURL+PlatformServiceEnableGraphPruningProcedure, - connect.WithSchema(platformServiceEnableGraphPruningMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableGraphPruning")), connect.WithClientOptions(opts...), ), configureNamespaceGraphPruningConfig: connect.NewClient[v1.ConfigureNamespaceGraphPruningConfigRequest, v1.ConfigureNamespaceGraphPruningConfigResponse]( httpClient, baseURL+PlatformServiceConfigureNamespaceGraphPruningConfigProcedure, - connect.WithSchema(platformServiceConfigureNamespaceGraphPruningConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceGraphPruningConfig")), connect.WithClientOptions(opts...), ), getNamespaceGraphPruningConfig: connect.NewClient[v1.GetNamespaceGraphPruningConfigRequest, v1.GetNamespaceGraphPruningConfigResponse]( httpClient, baseURL+PlatformServiceGetNamespaceGraphPruningConfigProcedure, - connect.WithSchema(platformServiceGetNamespaceGraphPruningConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceGraphPruningConfig")), connect.WithClientOptions(opts...), ), getFeatureFlags: connect.NewClient[v1.GetFeatureFlagsRequest, v1.GetFeatureFlagsResponse]( httpClient, baseURL+PlatformServiceGetFeatureFlagsProcedure, - connect.WithSchema(platformServiceGetFeatureFlagsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlags")), connect.WithClientOptions(opts...), ), getFeatureFlagByName: connect.NewClient[v1.GetFeatureFlagByNameRequest, v1.GetFeatureFlagByNameResponse]( httpClient, baseURL+PlatformServiceGetFeatureFlagByNameProcedure, - connect.WithSchema(platformServiceGetFeatureFlagByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagByName")), connect.WithClientOptions(opts...), ), getFeatureSubgraphsByFeatureFlag: connect.NewClient[v1.GetFeatureSubgraphsByFeatureFlagRequest, v1.GetFeatureSubgraphsByFeatureFlagResponse]( httpClient, baseURL+PlatformServiceGetFeatureSubgraphsByFeatureFlagProcedure, - connect.WithSchema(platformServiceGetFeatureSubgraphsByFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphsByFeatureFlag")), connect.WithClientOptions(opts...), ), getFeatureSubgraphs: connect.NewClient[v1.GetFeatureSubgraphsRequest, v1.GetFeatureSubgraphsResponse]( httpClient, baseURL+PlatformServiceGetFeatureSubgraphsProcedure, - connect.WithSchema(platformServiceGetFeatureSubgraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphs")), connect.WithClientOptions(opts...), ), getFeatureFlagsByFederatedGraph: connect.NewClient[v1.GetFeatureFlagsByFederatedGraphRequest, v1.GetFeatureFlagsByFederatedGraphResponse]( httpClient, baseURL+PlatformServiceGetFeatureFlagsByFederatedGraphProcedure, - connect.WithSchema(platformServiceGetFeatureFlagsByFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagsByFederatedGraph")), + connect.WithClientOptions(opts...), + ), + getFeatureFlagsInLatestCompositionByFederatedGraph: connect.NewClient[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse]( + httpClient, + baseURL+PlatformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphProcedure, + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagsInLatestCompositionByFederatedGraph")), + connect.WithClientOptions(opts...), + ), + getFeatureSubgraphsByFederatedGraph: connect.NewClient[v1.GetFeatureSubgraphsByFederatedGraphRequest, v1.GetFeatureSubgraphsByFederatedGraphResponse]( + httpClient, + baseURL+PlatformServiceGetFeatureSubgraphsByFederatedGraphProcedure, + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphsByFederatedGraph")), connect.WithClientOptions(opts...), ), getFederatedGraphById: connect.NewClient[v1.GetFederatedGraphByIdRequest, v1.GetFederatedGraphByIdResponse]( httpClient, baseURL+PlatformServiceGetFederatedGraphByIdProcedure, - connect.WithSchema(platformServiceGetFederatedGraphByIdMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphById")), connect.WithClientOptions(opts...), ), getSubgraphById: connect.NewClient[v1.GetSubgraphByIdRequest, v1.GetSubgraphByIdResponse]( httpClient, baseURL+PlatformServiceGetSubgraphByIdProcedure, - connect.WithSchema(platformServiceGetSubgraphByIdMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphById")), connect.WithClientOptions(opts...), ), pushCacheWarmerOperation: connect.NewClient[v1.PushCacheWarmerOperationRequest, v1.PushCacheWarmerOperationResponse]( httpClient, baseURL+PlatformServicePushCacheWarmerOperationProcedure, - connect.WithSchema(platformServicePushCacheWarmerOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PushCacheWarmerOperation")), connect.WithClientOptions(opts...), ), getCacheWarmerOperations: connect.NewClient[v1.GetCacheWarmerOperationsRequest, v1.GetCacheWarmerOperationsResponse]( httpClient, baseURL+PlatformServiceGetCacheWarmerOperationsProcedure, - connect.WithSchema(platformServiceGetCacheWarmerOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCacheWarmerOperations")), connect.WithClientOptions(opts...), ), computeCacheWarmerOperations: connect.NewClient[v1.ComputeCacheWarmerOperationsRequest, v1.ComputeCacheWarmerOperationsResponse]( httpClient, baseURL+PlatformServiceComputeCacheWarmerOperationsProcedure, - connect.WithSchema(platformServiceComputeCacheWarmerOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ComputeCacheWarmerOperations")), connect.WithClientOptions(opts...), ), configureCacheWarmer: connect.NewClient[v1.ConfigureCacheWarmerRequest, v1.ConfigureCacheWarmerResponse]( httpClient, baseURL+PlatformServiceConfigureCacheWarmerProcedure, - connect.WithSchema(platformServiceConfigureCacheWarmerMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureCacheWarmer")), connect.WithClientOptions(opts...), ), getCacheWarmerConfig: connect.NewClient[v1.GetCacheWarmerConfigRequest, v1.GetCacheWarmerConfigResponse]( httpClient, baseURL+PlatformServiceGetCacheWarmerConfigProcedure, - connect.WithSchema(platformServiceGetCacheWarmerConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCacheWarmerConfig")), connect.WithClientOptions(opts...), ), deleteCacheWarmerOperation: connect.NewClient[v1.DeleteCacheWarmerOperationRequest, v1.DeleteCacheWarmerOperationResponse]( httpClient, baseURL+PlatformServiceDeleteCacheWarmerOperationProcedure, - connect.WithSchema(platformServiceDeleteCacheWarmerOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteCacheWarmerOperation")), connect.WithClientOptions(opts...), ), getSubgraphCheckExtensionsConfig: connect.NewClient[v1.GetSubgraphCheckExtensionsConfigRequest, v1.GetSubgraphCheckExtensionsConfigResponse]( httpClient, baseURL+PlatformServiceGetSubgraphCheckExtensionsConfigProcedure, - connect.WithSchema(platformServiceGetSubgraphCheckExtensionsConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphCheckExtensionsConfig")), connect.WithClientOptions(opts...), ), configureSubgraphCheckExtensions: connect.NewClient[v1.ConfigureSubgraphCheckExtensionsRequest, v1.ConfigureSubgraphCheckExtensionsResponse]( httpClient, baseURL+PlatformServiceConfigureSubgraphCheckExtensionsProcedure, - connect.WithSchema(platformServiceConfigureSubgraphCheckExtensionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureSubgraphCheckExtensions")), connect.WithClientOptions(opts...), ), getBillingPlans: connect.NewClient[v1.GetBillingPlansRequest, v1.GetBillingPlansResponse]( httpClient, baseURL+PlatformServiceGetBillingPlansProcedure, - connect.WithSchema(platformServiceGetBillingPlansMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetBillingPlans")), connect.WithClientOptions(opts...), ), createCheckoutSession: connect.NewClient[v1.CreateCheckoutSessionRequest, v1.CreateCheckoutSessionResponse]( httpClient, baseURL+PlatformServiceCreateCheckoutSessionProcedure, - connect.WithSchema(platformServiceCreateCheckoutSessionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateCheckoutSession")), connect.WithClientOptions(opts...), ), createBillingPortalSession: connect.NewClient[v1.CreateBillingPortalSessionRequest, v1.CreateBillingPortalSessionResponse]( httpClient, baseURL+PlatformServiceCreateBillingPortalSessionProcedure, - connect.WithSchema(platformServiceCreateBillingPortalSessionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateBillingPortalSession")), connect.WithClientOptions(opts...), ), upgradePlan: connect.NewClient[v1.UpgradePlanRequest, v1.UpgradePlanResponse]( httpClient, baseURL+PlatformServiceUpgradePlanProcedure, - connect.WithSchema(platformServiceUpgradePlanMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpgradePlan")), connect.WithClientOptions(opts...), ), listRouterCompatibilityVersions: connect.NewClient[v1.ListRouterCompatibilityVersionsRequest, v1.ListRouterCompatibilityVersionsResponse]( httpClient, baseURL+PlatformServiceListRouterCompatibilityVersionsProcedure, - connect.WithSchema(platformServiceListRouterCompatibilityVersionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ListRouterCompatibilityVersions")), connect.WithClientOptions(opts...), ), setGraphRouterCompatibilityVersion: connect.NewClient[v1.SetGraphRouterCompatibilityVersionRequest, v1.SetGraphRouterCompatibilityVersionResponse]( httpClient, baseURL+PlatformServiceSetGraphRouterCompatibilityVersionProcedure, - connect.WithSchema(platformServiceSetGraphRouterCompatibilityVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("SetGraphRouterCompatibilityVersion")), connect.WithClientOptions(opts...), ), createProposal: connect.NewClient[v1.CreateProposalRequest, v1.CreateProposalResponse]( httpClient, baseURL+PlatformServiceCreateProposalProcedure, - connect.WithSchema(platformServiceCreateProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateProposal")), connect.WithClientOptions(opts...), ), getProposal: connect.NewClient[v1.GetProposalRequest, v1.GetProposalResponse]( httpClient, baseURL+PlatformServiceGetProposalProcedure, - connect.WithSchema(platformServiceGetProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposal")), connect.WithClientOptions(opts...), ), updateProposal: connect.NewClient[v1.UpdateProposalRequest, v1.UpdateProposalResponse]( httpClient, baseURL+PlatformServiceUpdateProposalProcedure, - connect.WithSchema(platformServiceUpdateProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateProposal")), connect.WithClientOptions(opts...), ), enableProposalsForNamespace: connect.NewClient[v1.EnableProposalsForNamespaceRequest, v1.EnableProposalsForNamespaceResponse]( httpClient, baseURL+PlatformServiceEnableProposalsForNamespaceProcedure, - connect.WithSchema(platformServiceEnableProposalsForNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableProposalsForNamespace")), connect.WithClientOptions(opts...), ), configureNamespaceProposalConfig: connect.NewClient[v1.ConfigureNamespaceProposalConfigRequest, v1.ConfigureNamespaceProposalConfigResponse]( httpClient, baseURL+PlatformServiceConfigureNamespaceProposalConfigProcedure, - connect.WithSchema(platformServiceConfigureNamespaceProposalConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceProposalConfig")), connect.WithClientOptions(opts...), ), getNamespaceProposalConfig: connect.NewClient[v1.GetNamespaceProposalConfigRequest, v1.GetNamespaceProposalConfigResponse]( httpClient, baseURL+PlatformServiceGetNamespaceProposalConfigProcedure, - connect.WithSchema(platformServiceGetNamespaceProposalConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceProposalConfig")), + connect.WithClientOptions(opts...), + ), + updateNamespaceLoginMethods: connect.NewClient[v1.UpdateNamespaceLoginMethodsRequest, v1.UpdateNamespaceLoginMethodsResponse]( + httpClient, + baseURL+PlatformServiceUpdateNamespaceLoginMethodsProcedure, + connect.WithSchema(platformServiceMethods.ByName("UpdateNamespaceLoginMethods")), + connect.WithClientOptions(opts...), + ), + listNamespaceLoginMethods: connect.NewClient[v1.ListNamespaceLoginMethodsRequest, v1.ListNamespaceLoginMethodsResponse]( + httpClient, + baseURL+PlatformServiceListNamespaceLoginMethodsProcedure, + connect.WithSchema(platformServiceMethods.ByName("ListNamespaceLoginMethods")), + connect.WithClientOptions(opts...), + ), + getOrganizationLoginMethods: connect.NewClient[v1.GetOrganizationLoginMethodsRequest, v1.GetOrganizationLoginMethodsResponse]( + httpClient, + baseURL+PlatformServiceGetOrganizationLoginMethodsProcedure, + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationLoginMethods")), + connect.WithClientOptions(opts...), + ), + updateOrganizationLoginMethods: connect.NewClient[v1.UpdateOrganizationLoginMethodsRequest, v1.UpdateOrganizationLoginMethodsResponse]( + httpClient, + baseURL+PlatformServiceUpdateOrganizationLoginMethodsProcedure, + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationLoginMethods")), connect.WithClientOptions(opts...), ), getProposalsByFederatedGraph: connect.NewClient[v1.GetProposalsByFederatedGraphRequest, v1.GetProposalsByFederatedGraphResponse]( httpClient, baseURL+PlatformServiceGetProposalsByFederatedGraphProcedure, - connect.WithSchema(platformServiceGetProposalsByFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposalsByFederatedGraph")), connect.WithClientOptions(opts...), ), getProposalChecks: connect.NewClient[v1.GetProposalChecksRequest, v1.GetProposalChecksResponse]( httpClient, baseURL+PlatformServiceGetProposalChecksProcedure, - connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposalChecks")), connect.WithClientOptions(opts...), ), getOperations: connect.NewClient[v1.GetOperationsRequest, v1.GetOperationsResponse]( httpClient, baseURL+PlatformServiceGetOperationsProcedure, - connect.WithSchema(platformServiceGetOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperations")), connect.WithClientOptions(opts...), ), getClientsFromAnalytics: connect.NewClient[v1.GetClientsFromAnalyticsRequest, v1.GetClientsFromAnalyticsResponse]( httpClient, baseURL+PlatformServiceGetClientsFromAnalyticsProcedure, - connect.WithSchema(platformServiceGetClientsFromAnalyticsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetClientsFromAnalytics")), connect.WithClientOptions(opts...), ), getOperationClients: connect.NewClient[v1.GetOperationClientsRequest, v1.GetOperationClientsResponse]( httpClient, baseURL+PlatformServiceGetOperationClientsProcedure, - connect.WithSchema(platformServiceGetOperationClientsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationClients")), connect.WithClientOptions(opts...), ), getOperationDeprecatedFields: connect.NewClient[v1.GetOperationDeprecatedFieldsRequest, v1.GetOperationDeprecatedFieldsResponse]( httpClient, baseURL+PlatformServiceGetOperationDeprecatedFieldsProcedure, - connect.WithSchema(platformServiceGetOperationDeprecatedFieldsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationDeprecatedFields")), connect.WithClientOptions(opts...), ), validateAndFetchPluginData: connect.NewClient[v1.ValidateAndFetchPluginDataRequest, v1.ValidateAndFetchPluginDataResponse]( httpClient, baseURL+PlatformServiceValidateAndFetchPluginDataProcedure, - connect.WithSchema(platformServiceValidateAndFetchPluginDataMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ValidateAndFetchPluginData")), connect.WithClientOptions(opts...), ), linkSubgraph: connect.NewClient[v1.LinkSubgraphRequest, v1.LinkSubgraphResponse]( httpClient, baseURL+PlatformServiceLinkSubgraphProcedure, - connect.WithSchema(platformServiceLinkSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("LinkSubgraph")), connect.WithClientOptions(opts...), ), unlinkSubgraph: connect.NewClient[v1.UnlinkSubgraphRequest, v1.UnlinkSubgraphResponse]( httpClient, baseURL+PlatformServiceUnlinkSubgraphProcedure, - connect.WithSchema(platformServiceUnlinkSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UnlinkSubgraph")), connect.WithClientOptions(opts...), ), verifyAPIKeyGraphAccess: connect.NewClient[v1.VerifyAPIKeyGraphAccessRequest, v1.VerifyAPIKeyGraphAccessResponse]( httpClient, baseURL+PlatformServiceVerifyAPIKeyGraphAccessProcedure, - connect.WithSchema(platformServiceVerifyAPIKeyGraphAccessMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("VerifyAPIKeyGraphAccess")), connect.WithClientOptions(opts...), ), recomposeGraph: connect.NewClient[v1.RecomposeGraphRequest, v1.RecomposeGraphResponse]( httpClient, baseURL+PlatformServiceRecomposeGraphProcedure, - connect.WithSchema(platformServiceRecomposeGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RecomposeGraph")), + connect.WithClientOptions(opts...), + ), + recomposeFeatureFlag: connect.NewClient[v1.RecomposeFeatureFlagRequest, v1.RecomposeFeatureFlagResponse]( + httpClient, + baseURL+PlatformServiceRecomposeFeatureFlagProcedure, + connect.WithSchema(platformServiceMethods.ByName("RecomposeFeatureFlag")), + connect.WithClientOptions(opts...), + ), + getOnboarding: connect.NewClient[v1.GetOnboardingRequest, v1.GetOnboardingResponse]( + httpClient, + baseURL+PlatformServiceGetOnboardingProcedure, + connect.WithSchema(platformServiceMethods.ByName("GetOnboarding")), + connect.WithClientOptions(opts...), + ), + createOnboarding: connect.NewClient[v1.CreateOnboardingRequest, v1.CreateOnboardingResponse]( + httpClient, + baseURL+PlatformServiceCreateOnboardingProcedure, + connect.WithSchema(platformServiceMethods.ByName("CreateOnboarding")), + connect.WithClientOptions(opts...), + ), + finishOnboarding: connect.NewClient[v1.FinishOnboardingRequest, v1.FinishOnboardingResponse]( + httpClient, + baseURL+PlatformServiceFinishOnboardingProcedure, + connect.WithSchema(platformServiceMethods.ByName("FinishOnboarding")), connect.WithClientOptions(opts...), ), } @@ -2183,184 +2143,197 @@ func NewPlatformServiceClient(httpClient connect.HTTPClient, baseURL string, opt // platformServiceClient implements PlatformServiceClient. type platformServiceClient struct { - createPlaygroundScript *connect.Client[v1.CreatePlaygroundScriptRequest, v1.CreatePlaygroundScriptResponse] - deletePlaygroundScript *connect.Client[v1.DeletePlaygroundScriptRequest, v1.DeletePlaygroundScriptResponse] - updatePlaygroundScript *connect.Client[v1.UpdatePlaygroundScriptRequest, v1.UpdatePlaygroundScriptResponse] - getPlaygroundScripts *connect.Client[v1.GetPlaygroundScriptsRequest, v1.GetPlaygroundScriptsResponse] - createNamespace *connect.Client[v1.CreateNamespaceRequest, v1.CreateNamespaceResponse] - deleteNamespace *connect.Client[v1.DeleteNamespaceRequest, v1.DeleteNamespaceResponse] - renameNamespace *connect.Client[v1.RenameNamespaceRequest, v1.RenameNamespaceResponse] - getNamespaces *connect.Client[v1.GetNamespacesRequest, v1.GetNamespacesResponse] - getNamespace *connect.Client[v1.GetNamespaceRequest, v1.GetNamespaceResponse] - getWorkspace *connect.Client[v1.GetWorkspaceRequest, v1.GetWorkspaceResponse] - createContract *connect.Client[v1.CreateContractRequest, v1.CreateContractResponse] - updateContract *connect.Client[v1.UpdateContractRequest, v1.UpdateContractResponse] - moveFederatedGraph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] - moveSubgraph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] - moveMonograph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] - createMonograph *connect.Client[v1.CreateMonographRequest, v1.CreateMonographResponse] - publishMonograph *connect.Client[v1.PublishMonographRequest, v1.PublishMonographResponse] - deleteMonograph *connect.Client[v1.DeleteMonographRequest, v1.DeleteMonographResponse] - updateMonograph *connect.Client[v1.UpdateMonographRequest, v1.UpdateMonographResponse] - migrateMonograph *connect.Client[v1.MigrateMonographRequest, v1.MigrateMonographResponse] - createFederatedSubgraph *connect.Client[v1.CreateFederatedSubgraphRequest, v1.CreateFederatedSubgraphResponse] - publishFederatedSubgraph *connect.Client[v1.PublishFederatedSubgraphRequest, v1.PublishFederatedSubgraphResponse] - createFederatedGraph *connect.Client[v1.CreateFederatedGraphRequest, v1.CreateFederatedGraphResponse] - deleteFederatedGraph *connect.Client[v1.DeleteFederatedGraphRequest, v1.DeleteFederatedGraphResponse] - deleteFederatedSubgraph *connect.Client[v1.DeleteFederatedSubgraphRequest, v1.DeleteFederatedSubgraphResponse] - checkSubgraphSchema *connect.Client[v1.CheckSubgraphSchemaRequest, v1.CheckSubgraphSchemaResponse] - getProposedSchemaOfCheckedSubgraph *connect.Client[v1.GetProposedSchemaOfCheckedSubgraphRequest, v1.GetProposedSchemaOfCheckedSubgraphResponse] - fixSubgraphSchema *connect.Client[v1.FixSubgraphSchemaRequest, v1.FixSubgraphSchemaResponse] - updateFederatedGraph *connect.Client[v1.UpdateFederatedGraphRequest, v1.UpdateFederatedGraphResponse] - updateSubgraph *connect.Client[v1.UpdateSubgraphRequest, v1.UpdateSubgraphResponse] - checkFederatedGraph *connect.Client[v1.CheckFederatedGraphRequest, v1.CheckFederatedGraphResponse] - whoAmI *connect.Client[v1.WhoAmIRequest, v1.WhoAmIResponse] - generateRouterToken *connect.Client[v1.GenerateRouterTokenRequest, v1.GenerateRouterTokenResponse] - getRouterTokens *connect.Client[v1.GetRouterTokensRequest, v1.GetRouterTokensResponse] - deleteRouterToken *connect.Client[v1.DeleteRouterTokenRequest, v1.DeleteRouterTokenResponse] - publishPersistedOperations *connect.Client[v1.PublishPersistedOperationsRequest, v1.PublishPersistedOperationsResponse] - checkPersistedOperationTraffic *connect.Client[v1.CheckPersistedOperationTrafficRequest, v1.CheckPersistedOperationTrafficResponse] - deletePersistedOperation *connect.Client[v1.DeletePersistedOperationRequest, v1.DeletePersistedOperationResponse] - getPersistedOperations *connect.Client[v1.GetPersistedOperationsRequest, v1.GetPersistedOperationsResponse] - getAuditLogs *connect.Client[v1.GetAuditLogsRequest, v1.GetAuditLogsResponse] - initializeCosmoUser *connect.Client[v1.InitializeCosmoUserRequest, v1.InitializeCosmoUserResponse] - listOrganizations *connect.Client[v1.ListOrganizationsRequest, v1.ListOrganizationsResponse] - getFederatedGraphs *connect.Client[v1.GetFederatedGraphsRequest, v1.GetFederatedGraphsResponse] - getFederatedGraphsBySubgraphLabels *connect.Client[v1.GetFederatedGraphsBySubgraphLabelsRequest, v1.GetFederatedGraphsBySubgraphLabelsResponse] - getFederatedGraphByName *connect.Client[v1.GetFederatedGraphByNameRequest, v1.GetFederatedGraphByNameResponse] - getFederatedGraphSDLByName *connect.Client[v1.GetFederatedGraphSDLByNameRequest, v1.GetFederatedGraphSDLByNameResponse] - getSubgraphs *connect.Client[v1.GetSubgraphsRequest, v1.GetSubgraphsResponse] - getSubgraphByName *connect.Client[v1.GetSubgraphByNameRequest, v1.GetSubgraphByNameResponse] - getSubgraphSDLFromLatestComposition *connect.Client[v1.GetSubgraphSDLFromLatestCompositionRequest, v1.GetSubgraphSDLFromLatestCompositionResponse] - getLatestSubgraphSDL *connect.Client[v1.GetLatestSubgraphSDLRequest, v1.GetLatestSubgraphSDLResponse] - getChecksByFederatedGraphName *connect.Client[v1.GetChecksByFederatedGraphNameRequest, v1.GetChecksByFederatedGraphNameResponse] - getCheckSummary *connect.Client[v1.GetCheckSummaryRequest, v1.GetCheckSummaryResponse] - getCheckOperations *connect.Client[v1.GetCheckOperationsRequest, v1.GetCheckOperationsResponse] - forceCheckSuccess *connect.Client[v1.ForceCheckSuccessRequest, v1.ForceCheckSuccessResponse] - createOperationOverrides *connect.Client[v1.CreateOperationOverridesRequest, v1.CreateOperationOverridesResponse] - removeOperationOverrides *connect.Client[v1.RemoveOperationOverridesRequest, v1.RemoveOperationOverridesResponse] - createOperationIgnoreAllOverride *connect.Client[v1.CreateOperationIgnoreAllOverrideRequest, v1.CreateOperationIgnoreAllOverrideResponse] - removeOperationIgnoreAllOverride *connect.Client[v1.RemoveOperationIgnoreAllOverrideRequest, v1.RemoveOperationIgnoreAllOverrideResponse] - getOperationOverrides *connect.Client[v1.GetOperationOverridesRequest, v1.GetOperationOverridesResponse] - getAllOverrides *connect.Client[v1.GetAllOverridesRequest, v1.GetAllOverridesResponse] - toggleChangeOverridesForAllOperations *connect.Client[v1.ToggleChangeOverridesForAllOperationsRequest, v1.ToggleChangeOverridesForAllOperationsResponse] - createIgnoreOverridesForAllOperations *connect.Client[v1.CreateIgnoreOverridesForAllOperationsRequest, v1.CreateIgnoreOverridesForAllOperationsResponse] - getOperationContent *connect.Client[v1.GetOperationContentRequest, v1.GetOperationContentResponse] - getFederatedGraphChangelog *connect.Client[v1.GetFederatedGraphChangelogRequest, v1.GetFederatedGraphChangelogResponse] - createFederatedGraphToken *connect.Client[v1.CreateFederatedGraphTokenRequest, v1.CreateFederatedGraphTokenResponse] - getOrganizationBySlug *connect.Client[v1.GetOrganizationBySlugRequest, v1.GetOrganizationBySlugResponse] - getOrganizationMembers *connect.Client[v1.GetOrganizationMembersRequest, v1.GetOrganizationMembersResponse] - getPendingOrganizationMembers *connect.Client[v1.GetPendingOrganizationMembersRequest, v1.GetPendingOrganizationMembersResponse] - isMemberLimitReached *connect.Client[v1.IsMemberLimitReachedRequest, v1.IsMemberLimitReachedResponse] - inviteUser *connect.Client[v1.InviteUserRequest, v1.InviteUserResponse] - getAPIKeys *connect.Client[v1.GetAPIKeysRequest, v1.GetAPIKeysResponse] - createAPIKey *connect.Client[v1.CreateAPIKeyRequest, v1.CreateAPIKeyResponse] - updateAPIKey *connect.Client[v1.UpdateAPIKeyRequest, v1.UpdateAPIKeyResponse] - deleteAPIKey *connect.Client[v1.DeleteAPIKeyRequest, v1.DeleteAPIKeyResponse] - removeOrganizationMember *connect.Client[v1.RemoveOrganizationMemberRequest, v1.RemoveOrganizationMemberResponse] - removeInvitation *connect.Client[v1.RemoveInvitationRequest, v1.RemoveInvitationResponse] - migrateFromApollo *connect.Client[v1.MigrateFromApolloRequest, v1.MigrateFromApolloResponse] - createOrganizationGroup *connect.Client[v1.CreateOrganizationGroupRequest, v1.CreateOrganizationGroupResponse] - getOrganizationGroups *connect.Client[v1.GetOrganizationGroupsRequest, v1.GetOrganizationGroupsResponse] - getOrganizationGroupMembers *connect.Client[v1.GetOrganizationGroupMembersRequest, v1.GetOrganizationGroupMembersResponse] - updateOrganizationGroup *connect.Client[v1.UpdateOrganizationGroupRequest, v1.UpdateOrganizationGroupResponse] - deleteOrganizationGroup *connect.Client[v1.DeleteOrganizationGroupRequest, v1.DeleteOrganizationGroupResponse] - createOrganizationWebhookConfig *connect.Client[v1.CreateOrganizationWebhookConfigRequest, v1.CreateOrganizationWebhookConfigResponse] - getOrganizationWebhookConfigs *connect.Client[v1.GetOrganizationWebhookConfigsRequest, v1.GetOrganizationWebhookConfigsResponse] - getOrganizationWebhookMeta *connect.Client[v1.GetOrganizationWebhookMetaRequest, v1.GetOrganizationWebhookMetaResponse] - updateOrganizationWebhookConfig *connect.Client[v1.UpdateOrganizationWebhookConfigRequest, v1.UpdateOrganizationWebhookConfigResponse] - deleteOrganizationWebhookConfig *connect.Client[v1.DeleteOrganizationWebhookConfigRequest, v1.DeleteOrganizationWebhookConfigResponse] - getOrganizationWebhookHistory *connect.Client[v1.GetOrganizationWebhookHistoryRequest, v1.GetOrganizationWebhookHistoryResponse] - getWebhookDeliveryDetails *connect.Client[v1.GetWebhookDeliveryDetailsRequest, v1.GetWebhookDeliveryDetailsResponse] - redeliverWebhook *connect.Client[v1.RedeliverWebhookRequest, v1.RedeliverWebhookResponse] - createIntegration *connect.Client[v1.CreateIntegrationRequest, v1.CreateIntegrationResponse] - getOrganizationIntegrations *connect.Client[v1.GetOrganizationIntegrationsRequest, v1.GetOrganizationIntegrationsResponse] - updateIntegrationConfig *connect.Client[v1.UpdateIntegrationConfigRequest, v1.UpdateIntegrationConfigResponse] - deleteIntegration *connect.Client[v1.DeleteIntegrationRequest, v1.DeleteIntegrationResponse] - deleteUser *connect.Client[v1.DeleteUserRequest, v1.DeleteUserResponse] - deleteOrganization *connect.Client[v1.DeleteOrganizationRequest, v1.DeleteOrganizationResponse] - restoreOrganization *connect.Client[v1.RestoreOrganizationRequest, v1.RestoreOrganizationResponse] - leaveOrganization *connect.Client[v1.LeaveOrganizationRequest, v1.LeaveOrganizationResponse] - updateOrganizationDetails *connect.Client[v1.UpdateOrganizationDetailsRequest, v1.UpdateOrganizationDetailsResponse] - updateOrgMemberGroup *connect.Client[v1.UpdateOrgMemberGroupRequest, v1.UpdateOrgMemberGroupResponse] - isGitHubAppInstalled *connect.Client[v1.IsGitHubAppInstalledRequest, v1.IsGitHubAppInstalledResponse] - createOIDCProvider *connect.Client[v1.CreateOIDCProviderRequest, v1.CreateOIDCProviderResponse] - getOIDCProvider *connect.Client[v1.GetOIDCProviderRequest, v1.GetOIDCProviderResponse] - deleteOIDCProvider *connect.Client[v1.DeleteOIDCProviderRequest, v1.DeleteOIDCProviderResponse] - updateIDPMappers *connect.Client[v1.UpdateIDPMappersRequest, v1.UpdateIDPMappersResponse] - getClients *connect.Client[v1.GetClientsRequest, v1.GetClientsResponse] - getRouters *connect.Client[v1.GetRoutersRequest, v1.GetRoutersResponse] - getInvitations *connect.Client[v1.GetInvitationsRequest, v1.GetInvitationsResponse] - acceptOrDeclineInvitation *connect.Client[v1.AcceptOrDeclineInvitationRequest, v1.AcceptOrDeclineInvitationResponse] - getCompositions *connect.Client[v1.GetCompositionsRequest, v1.GetCompositionsResponse] - getCompositionDetails *connect.Client[v1.GetCompositionDetailsRequest, v1.GetCompositionDetailsResponse] - getSdlBySchemaVersion *connect.Client[v1.GetSdlBySchemaVersionRequest, v1.GetSdlBySchemaVersionResponse] - getChangelogBySchemaVersion *connect.Client[v1.GetChangelogBySchemaVersionRequest, v1.GetChangelogBySchemaVersionResponse] - getUserAccessibleResources *connect.Client[v1.GetUserAccessibleResourcesRequest, v1.GetUserAccessibleResourcesResponse] - updateFeatureSettings *connect.Client[v1.UpdateFeatureSettingsRequest, v1.UpdateFeatureSettingsResponse] - getSubgraphMembers *connect.Client[v1.GetSubgraphMembersRequest, v1.GetSubgraphMembersResponse] - addReadme *connect.Client[v1.AddReadmeRequest, v1.AddReadmeResponse] - getUserAccessiblePermissions *connect.Client[v1.GetUserAccessiblePermissionsRequest, v1.GetUserAccessiblePermissionsResponse] - createFeatureFlag *connect.Client[v1.CreateFeatureFlagRequest, v1.CreateFeatureFlagResponse] - deleteFeatureFlag *connect.Client[v1.DeleteFeatureFlagRequest, v1.DeleteFeatureFlagResponse] - updateFeatureFlag *connect.Client[v1.UpdateFeatureFlagRequest, v1.UpdateFeatureFlagResponse] - enableFeatureFlag *connect.Client[v1.EnableFeatureFlagRequest, v1.EnableFeatureFlagResponse] - getAnalyticsView *connect.Client[v1.GetAnalyticsViewRequest, v1.GetAnalyticsViewResponse] - getDashboardAnalyticsView *connect.Client[v1.GetDashboardAnalyticsViewRequest, v1.GetDashboardAnalyticsViewResponse] - getTrace *connect.Client[v1.GetTraceRequest, v1.GetTraceResponse] - getGraphMetrics *connect.Client[v1.GetGraphMetricsRequest, v1.GetGraphMetricsResponse] - getMetricsErrorRate *connect.Client[v1.GetMetricsErrorRateRequest, v1.GetMetricsErrorRateResponse] - getSubgraphMetrics *connect.Client[v1.GetSubgraphMetricsRequest, v1.GetSubgraphMetricsResponse] - getSubgraphMetricsErrorRate *connect.Client[v1.GetSubgraphMetricsErrorRateRequest, v1.GetSubgraphMetricsErrorRateResponse] - getFieldUsage *connect.Client[v1.GetFieldUsageRequest, v1.GetFieldUsageResponse] - getOrganizationRequestsCount *connect.Client[v1.GetOrganizationRequestsCountRequest, v1.GetOrganizationRequestsCountResponse] - createOrganization *connect.Client[v1.CreateOrganizationRequest, v1.CreateOrganizationResponse] - enableLintingForTheNamespace *connect.Client[v1.EnableLintingForTheNamespaceRequest, v1.EnableLintingForTheNamespaceResponse] - configureNamespaceLintConfig *connect.Client[v1.ConfigureNamespaceLintConfigRequest, v1.ConfigureNamespaceLintConfigResponse] - getNamespaceLintConfig *connect.Client[v1.GetNamespaceLintConfigRequest, v1.GetNamespaceLintConfigResponse] - getNamespaceChecksConfig *connect.Client[v1.GetNamespaceChecksConfigurationRequest, v1.GetNamespaceChecksConfigurationResponse] - updateNamespaceChecksConfig *connect.Client[v1.UpdateNamespaceChecksConfigurationRequest, v1.UpdateNamespaceChecksConfigurationResponse] - enableGraphPruning *connect.Client[v1.EnableGraphPruningRequest, v1.EnableGraphPruningResponse] - configureNamespaceGraphPruningConfig *connect.Client[v1.ConfigureNamespaceGraphPruningConfigRequest, v1.ConfigureNamespaceGraphPruningConfigResponse] - getNamespaceGraphPruningConfig *connect.Client[v1.GetNamespaceGraphPruningConfigRequest, v1.GetNamespaceGraphPruningConfigResponse] - getFeatureFlags *connect.Client[v1.GetFeatureFlagsRequest, v1.GetFeatureFlagsResponse] - getFeatureFlagByName *connect.Client[v1.GetFeatureFlagByNameRequest, v1.GetFeatureFlagByNameResponse] - getFeatureSubgraphsByFeatureFlag *connect.Client[v1.GetFeatureSubgraphsByFeatureFlagRequest, v1.GetFeatureSubgraphsByFeatureFlagResponse] - getFeatureSubgraphs *connect.Client[v1.GetFeatureSubgraphsRequest, v1.GetFeatureSubgraphsResponse] - getFeatureFlagsByFederatedGraph *connect.Client[v1.GetFeatureFlagsByFederatedGraphRequest, v1.GetFeatureFlagsByFederatedGraphResponse] - getFederatedGraphById *connect.Client[v1.GetFederatedGraphByIdRequest, v1.GetFederatedGraphByIdResponse] - getSubgraphById *connect.Client[v1.GetSubgraphByIdRequest, v1.GetSubgraphByIdResponse] - pushCacheWarmerOperation *connect.Client[v1.PushCacheWarmerOperationRequest, v1.PushCacheWarmerOperationResponse] - getCacheWarmerOperations *connect.Client[v1.GetCacheWarmerOperationsRequest, v1.GetCacheWarmerOperationsResponse] - computeCacheWarmerOperations *connect.Client[v1.ComputeCacheWarmerOperationsRequest, v1.ComputeCacheWarmerOperationsResponse] - configureCacheWarmer *connect.Client[v1.ConfigureCacheWarmerRequest, v1.ConfigureCacheWarmerResponse] - getCacheWarmerConfig *connect.Client[v1.GetCacheWarmerConfigRequest, v1.GetCacheWarmerConfigResponse] - deleteCacheWarmerOperation *connect.Client[v1.DeleteCacheWarmerOperationRequest, v1.DeleteCacheWarmerOperationResponse] - getSubgraphCheckExtensionsConfig *connect.Client[v1.GetSubgraphCheckExtensionsConfigRequest, v1.GetSubgraphCheckExtensionsConfigResponse] - configureSubgraphCheckExtensions *connect.Client[v1.ConfigureSubgraphCheckExtensionsRequest, v1.ConfigureSubgraphCheckExtensionsResponse] - getBillingPlans *connect.Client[v1.GetBillingPlansRequest, v1.GetBillingPlansResponse] - createCheckoutSession *connect.Client[v1.CreateCheckoutSessionRequest, v1.CreateCheckoutSessionResponse] - createBillingPortalSession *connect.Client[v1.CreateBillingPortalSessionRequest, v1.CreateBillingPortalSessionResponse] - upgradePlan *connect.Client[v1.UpgradePlanRequest, v1.UpgradePlanResponse] - listRouterCompatibilityVersions *connect.Client[v1.ListRouterCompatibilityVersionsRequest, v1.ListRouterCompatibilityVersionsResponse] - setGraphRouterCompatibilityVersion *connect.Client[v1.SetGraphRouterCompatibilityVersionRequest, v1.SetGraphRouterCompatibilityVersionResponse] - createProposal *connect.Client[v1.CreateProposalRequest, v1.CreateProposalResponse] - getProposal *connect.Client[v1.GetProposalRequest, v1.GetProposalResponse] - updateProposal *connect.Client[v1.UpdateProposalRequest, v1.UpdateProposalResponse] - enableProposalsForNamespace *connect.Client[v1.EnableProposalsForNamespaceRequest, v1.EnableProposalsForNamespaceResponse] - configureNamespaceProposalConfig *connect.Client[v1.ConfigureNamespaceProposalConfigRequest, v1.ConfigureNamespaceProposalConfigResponse] - getNamespaceProposalConfig *connect.Client[v1.GetNamespaceProposalConfigRequest, v1.GetNamespaceProposalConfigResponse] - getProposalsByFederatedGraph *connect.Client[v1.GetProposalsByFederatedGraphRequest, v1.GetProposalsByFederatedGraphResponse] - getProposalChecks *connect.Client[v1.GetProposalChecksRequest, v1.GetProposalChecksResponse] - getOperations *connect.Client[v1.GetOperationsRequest, v1.GetOperationsResponse] - getClientsFromAnalytics *connect.Client[v1.GetClientsFromAnalyticsRequest, v1.GetClientsFromAnalyticsResponse] - getOperationClients *connect.Client[v1.GetOperationClientsRequest, v1.GetOperationClientsResponse] - getOperationDeprecatedFields *connect.Client[v1.GetOperationDeprecatedFieldsRequest, v1.GetOperationDeprecatedFieldsResponse] - validateAndFetchPluginData *connect.Client[v1.ValidateAndFetchPluginDataRequest, v1.ValidateAndFetchPluginDataResponse] - linkSubgraph *connect.Client[v1.LinkSubgraphRequest, v1.LinkSubgraphResponse] - unlinkSubgraph *connect.Client[v1.UnlinkSubgraphRequest, v1.UnlinkSubgraphResponse] - verifyAPIKeyGraphAccess *connect.Client[v1.VerifyAPIKeyGraphAccessRequest, v1.VerifyAPIKeyGraphAccessResponse] - recomposeGraph *connect.Client[v1.RecomposeGraphRequest, v1.RecomposeGraphResponse] + createPlaygroundScript *connect.Client[v1.CreatePlaygroundScriptRequest, v1.CreatePlaygroundScriptResponse] + deletePlaygroundScript *connect.Client[v1.DeletePlaygroundScriptRequest, v1.DeletePlaygroundScriptResponse] + updatePlaygroundScript *connect.Client[v1.UpdatePlaygroundScriptRequest, v1.UpdatePlaygroundScriptResponse] + getPlaygroundScripts *connect.Client[v1.GetPlaygroundScriptsRequest, v1.GetPlaygroundScriptsResponse] + createNamespace *connect.Client[v1.CreateNamespaceRequest, v1.CreateNamespaceResponse] + deleteNamespace *connect.Client[v1.DeleteNamespaceRequest, v1.DeleteNamespaceResponse] + renameNamespace *connect.Client[v1.RenameNamespaceRequest, v1.RenameNamespaceResponse] + getNamespaces *connect.Client[v1.GetNamespacesRequest, v1.GetNamespacesResponse] + getNamespace *connect.Client[v1.GetNamespaceRequest, v1.GetNamespaceResponse] + getWorkspace *connect.Client[v1.GetWorkspaceRequest, v1.GetWorkspaceResponse] + createContract *connect.Client[v1.CreateContractRequest, v1.CreateContractResponse] + updateContract *connect.Client[v1.UpdateContractRequest, v1.UpdateContractResponse] + moveFederatedGraph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] + moveSubgraph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] + moveMonograph *connect.Client[v1.MoveGraphRequest, v1.MoveGraphResponse] + createMonograph *connect.Client[v1.CreateMonographRequest, v1.CreateMonographResponse] + publishMonograph *connect.Client[v1.PublishMonographRequest, v1.PublishMonographResponse] + deleteMonograph *connect.Client[v1.DeleteMonographRequest, v1.DeleteMonographResponse] + updateMonograph *connect.Client[v1.UpdateMonographRequest, v1.UpdateMonographResponse] + migrateMonograph *connect.Client[v1.MigrateMonographRequest, v1.MigrateMonographResponse] + createFederatedSubgraph *connect.Client[v1.CreateFederatedSubgraphRequest, v1.CreateFederatedSubgraphResponse] + publishFederatedSubgraph *connect.Client[v1.PublishFederatedSubgraphRequest, v1.PublishFederatedSubgraphResponse] + publishFederatedSubgraphs *connect.Client[v1.PublishFederatedSubgraphsRequest, v1.PublishFederatedSubgraphsResponse] + createFederatedGraph *connect.Client[v1.CreateFederatedGraphRequest, v1.CreateFederatedGraphResponse] + deleteFederatedGraph *connect.Client[v1.DeleteFederatedGraphRequest, v1.DeleteFederatedGraphResponse] + deleteFederatedSubgraph *connect.Client[v1.DeleteFederatedSubgraphRequest, v1.DeleteFederatedSubgraphResponse] + checkSubgraphSchema *connect.Client[v1.CheckSubgraphSchemaRequest, v1.CheckSubgraphSchemaResponse] + getProposedSchemaOfCheckedSubgraph *connect.Client[v1.GetProposedSchemaOfCheckedSubgraphRequest, v1.GetProposedSchemaOfCheckedSubgraphResponse] + fixSubgraphSchema *connect.Client[v1.FixSubgraphSchemaRequest, v1.FixSubgraphSchemaResponse] + updateFederatedGraph *connect.Client[v1.UpdateFederatedGraphRequest, v1.UpdateFederatedGraphResponse] + updateSubgraph *connect.Client[v1.UpdateSubgraphRequest, v1.UpdateSubgraphResponse] + checkFederatedGraph *connect.Client[v1.CheckFederatedGraphRequest, v1.CheckFederatedGraphResponse] + whoAmI *connect.Client[v1.WhoAmIRequest, v1.WhoAmIResponse] + generateRouterToken *connect.Client[v1.GenerateRouterTokenRequest, v1.GenerateRouterTokenResponse] + getRouterTokens *connect.Client[v1.GetRouterTokensRequest, v1.GetRouterTokensResponse] + deleteRouterToken *connect.Client[v1.DeleteRouterTokenRequest, v1.DeleteRouterTokenResponse] + publishPersistedOperations *connect.Client[v1.PublishPersistedOperationsRequest, v1.PublishPersistedOperationsResponse] + checkPersistedOperationTraffic *connect.Client[v1.CheckPersistedOperationTrafficRequest, v1.CheckPersistedOperationTrafficResponse] + deletePersistedOperation *connect.Client[v1.DeletePersistedOperationRequest, v1.DeletePersistedOperationResponse] + getPersistedOperations *connect.Client[v1.GetPersistedOperationsRequest, v1.GetPersistedOperationsResponse] + getAuditLogs *connect.Client[v1.GetAuditLogsRequest, v1.GetAuditLogsResponse] + initializeCosmoUser *connect.Client[v1.InitializeCosmoUserRequest, v1.InitializeCosmoUserResponse] + listOrganizations *connect.Client[v1.ListOrganizationsRequest, v1.ListOrganizationsResponse] + getFederatedGraphs *connect.Client[v1.GetFederatedGraphsRequest, v1.GetFederatedGraphsResponse] + getFederatedGraphsBySubgraphLabels *connect.Client[v1.GetFederatedGraphsBySubgraphLabelsRequest, v1.GetFederatedGraphsBySubgraphLabelsResponse] + getFederatedGraphByName *connect.Client[v1.GetFederatedGraphByNameRequest, v1.GetFederatedGraphByNameResponse] + getFederatedGraphSDLByName *connect.Client[v1.GetFederatedGraphSDLByNameRequest, v1.GetFederatedGraphSDLByNameResponse] + getSubgraphs *connect.Client[v1.GetSubgraphsRequest, v1.GetSubgraphsResponse] + getSubgraphByName *connect.Client[v1.GetSubgraphByNameRequest, v1.GetSubgraphByNameResponse] + getSubgraphSDLFromLatestComposition *connect.Client[v1.GetSubgraphSDLFromLatestCompositionRequest, v1.GetSubgraphSDLFromLatestCompositionResponse] + getLatestSubgraphSDL *connect.Client[v1.GetLatestSubgraphSDLRequest, v1.GetLatestSubgraphSDLResponse] + getChecksByFederatedGraphName *connect.Client[v1.GetChecksByFederatedGraphNameRequest, v1.GetChecksByFederatedGraphNameResponse] + getCheckSummary *connect.Client[v1.GetCheckSummaryRequest, v1.GetCheckSummaryResponse] + getCheckOperations *connect.Client[v1.GetCheckOperationsRequest, v1.GetCheckOperationsResponse] + forceCheckSuccess *connect.Client[v1.ForceCheckSuccessRequest, v1.ForceCheckSuccessResponse] + createOperationOverrides *connect.Client[v1.CreateOperationOverridesRequest, v1.CreateOperationOverridesResponse] + removeOperationOverrides *connect.Client[v1.RemoveOperationOverridesRequest, v1.RemoveOperationOverridesResponse] + createOperationIgnoreAllOverride *connect.Client[v1.CreateOperationIgnoreAllOverrideRequest, v1.CreateOperationIgnoreAllOverrideResponse] + removeOperationIgnoreAllOverride *connect.Client[v1.RemoveOperationIgnoreAllOverrideRequest, v1.RemoveOperationIgnoreAllOverrideResponse] + getOperationOverrides *connect.Client[v1.GetOperationOverridesRequest, v1.GetOperationOverridesResponse] + getAllOverrides *connect.Client[v1.GetAllOverridesRequest, v1.GetAllOverridesResponse] + toggleChangeOverridesForAllOperations *connect.Client[v1.ToggleChangeOverridesForAllOperationsRequest, v1.ToggleChangeOverridesForAllOperationsResponse] + createIgnoreOverridesForAllOperations *connect.Client[v1.CreateIgnoreOverridesForAllOperationsRequest, v1.CreateIgnoreOverridesForAllOperationsResponse] + getOperationContent *connect.Client[v1.GetOperationContentRequest, v1.GetOperationContentResponse] + getFederatedGraphChangelog *connect.Client[v1.GetFederatedGraphChangelogRequest, v1.GetFederatedGraphChangelogResponse] + createFederatedGraphToken *connect.Client[v1.CreateFederatedGraphTokenRequest, v1.CreateFederatedGraphTokenResponse] + getOrganizationBySlug *connect.Client[v1.GetOrganizationBySlugRequest, v1.GetOrganizationBySlugResponse] + getOrganizationMembers *connect.Client[v1.GetOrganizationMembersRequest, v1.GetOrganizationMembersResponse] + getPendingOrganizationMembers *connect.Client[v1.GetPendingOrganizationMembersRequest, v1.GetPendingOrganizationMembersResponse] + isMemberLimitReached *connect.Client[v1.IsMemberLimitReachedRequest, v1.IsMemberLimitReachedResponse] + inviteUser *connect.Client[v1.InviteUserRequest, v1.InviteUserResponse] + inviteUsers *connect.Client[v1.InviteUsersRequest, v1.InviteUsersResponse] + getAPIKeys *connect.Client[v1.GetAPIKeysRequest, v1.GetAPIKeysResponse] + createAPIKey *connect.Client[v1.CreateAPIKeyRequest, v1.CreateAPIKeyResponse] + updateAPIKey *connect.Client[v1.UpdateAPIKeyRequest, v1.UpdateAPIKeyResponse] + deleteAPIKey *connect.Client[v1.DeleteAPIKeyRequest, v1.DeleteAPIKeyResponse] + removeOrganizationMember *connect.Client[v1.RemoveOrganizationMemberRequest, v1.RemoveOrganizationMemberResponse] + removeInvitation *connect.Client[v1.RemoveInvitationRequest, v1.RemoveInvitationResponse] + migrateFromApollo *connect.Client[v1.MigrateFromApolloRequest, v1.MigrateFromApolloResponse] + createOrganizationGroup *connect.Client[v1.CreateOrganizationGroupRequest, v1.CreateOrganizationGroupResponse] + getOrganizationGroups *connect.Client[v1.GetOrganizationGroupsRequest, v1.GetOrganizationGroupsResponse] + getOrganizationGroupMembers *connect.Client[v1.GetOrganizationGroupMembersRequest, v1.GetOrganizationGroupMembersResponse] + updateOrganizationGroup *connect.Client[v1.UpdateOrganizationGroupRequest, v1.UpdateOrganizationGroupResponse] + deleteOrganizationGroup *connect.Client[v1.DeleteOrganizationGroupRequest, v1.DeleteOrganizationGroupResponse] + createOrganizationWebhookConfig *connect.Client[v1.CreateOrganizationWebhookConfigRequest, v1.CreateOrganizationWebhookConfigResponse] + getOrganizationWebhookConfigs *connect.Client[v1.GetOrganizationWebhookConfigsRequest, v1.GetOrganizationWebhookConfigsResponse] + getOrganizationWebhookMeta *connect.Client[v1.GetOrganizationWebhookMetaRequest, v1.GetOrganizationWebhookMetaResponse] + updateOrganizationWebhookConfig *connect.Client[v1.UpdateOrganizationWebhookConfigRequest, v1.UpdateOrganizationWebhookConfigResponse] + deleteOrganizationWebhookConfig *connect.Client[v1.DeleteOrganizationWebhookConfigRequest, v1.DeleteOrganizationWebhookConfigResponse] + getOrganizationWebhookHistory *connect.Client[v1.GetOrganizationWebhookHistoryRequest, v1.GetOrganizationWebhookHistoryResponse] + getWebhookDeliveryDetails *connect.Client[v1.GetWebhookDeliveryDetailsRequest, v1.GetWebhookDeliveryDetailsResponse] + redeliverWebhook *connect.Client[v1.RedeliverWebhookRequest, v1.RedeliverWebhookResponse] + createIntegration *connect.Client[v1.CreateIntegrationRequest, v1.CreateIntegrationResponse] + getOrganizationIntegrations *connect.Client[v1.GetOrganizationIntegrationsRequest, v1.GetOrganizationIntegrationsResponse] + updateIntegrationConfig *connect.Client[v1.UpdateIntegrationConfigRequest, v1.UpdateIntegrationConfigResponse] + deleteIntegration *connect.Client[v1.DeleteIntegrationRequest, v1.DeleteIntegrationResponse] + deleteUser *connect.Client[v1.DeleteUserRequest, v1.DeleteUserResponse] + deleteOrganization *connect.Client[v1.DeleteOrganizationRequest, v1.DeleteOrganizationResponse] + restoreOrganization *connect.Client[v1.RestoreOrganizationRequest, v1.RestoreOrganizationResponse] + leaveOrganization *connect.Client[v1.LeaveOrganizationRequest, v1.LeaveOrganizationResponse] + updateOrganizationDetails *connect.Client[v1.UpdateOrganizationDetailsRequest, v1.UpdateOrganizationDetailsResponse] + updateOrgMemberGroup *connect.Client[v1.UpdateOrgMemberGroupRequest, v1.UpdateOrgMemberGroupResponse] + isGitHubAppInstalled *connect.Client[v1.IsGitHubAppInstalledRequest, v1.IsGitHubAppInstalledResponse] + createOIDCProvider *connect.Client[v1.CreateOIDCProviderRequest, v1.CreateOIDCProviderResponse] + getOIDCProvider *connect.Client[v1.GetOIDCProviderRequest, v1.GetOIDCProviderResponse] + listOIDCProviders *connect.Client[v1.ListOIDCProvidersRequest, v1.ListOIDCProvidersResponse] + deleteOIDCProvider *connect.Client[v1.DeleteOIDCProviderRequest, v1.DeleteOIDCProviderResponse] + updateIDPMappers *connect.Client[v1.UpdateIDPMappersRequest, v1.UpdateIDPMappersResponse] + getClients *connect.Client[v1.GetClientsRequest, v1.GetClientsResponse] + getRouters *connect.Client[v1.GetRoutersRequest, v1.GetRoutersResponse] + getInvitations *connect.Client[v1.GetInvitationsRequest, v1.GetInvitationsResponse] + acceptOrDeclineInvitation *connect.Client[v1.AcceptOrDeclineInvitationRequest, v1.AcceptOrDeclineInvitationResponse] + getCompositions *connect.Client[v1.GetCompositionsRequest, v1.GetCompositionsResponse] + getCompositionDetails *connect.Client[v1.GetCompositionDetailsRequest, v1.GetCompositionDetailsResponse] + getSdlBySchemaVersion *connect.Client[v1.GetSdlBySchemaVersionRequest, v1.GetSdlBySchemaVersionResponse] + getChangelogBySchemaVersion *connect.Client[v1.GetChangelogBySchemaVersionRequest, v1.GetChangelogBySchemaVersionResponse] + getUserAccessibleResources *connect.Client[v1.GetUserAccessibleResourcesRequest, v1.GetUserAccessibleResourcesResponse] + updateFeatureSettings *connect.Client[v1.UpdateFeatureSettingsRequest, v1.UpdateFeatureSettingsResponse] + getSubgraphMembers *connect.Client[v1.GetSubgraphMembersRequest, v1.GetSubgraphMembersResponse] + addReadme *connect.Client[v1.AddReadmeRequest, v1.AddReadmeResponse] + getUserAccessiblePermissions *connect.Client[v1.GetUserAccessiblePermissionsRequest, v1.GetUserAccessiblePermissionsResponse] + createFeatureFlag *connect.Client[v1.CreateFeatureFlagRequest, v1.CreateFeatureFlagResponse] + deleteFeatureFlag *connect.Client[v1.DeleteFeatureFlagRequest, v1.DeleteFeatureFlagResponse] + updateFeatureFlag *connect.Client[v1.UpdateFeatureFlagRequest, v1.UpdateFeatureFlagResponse] + enableFeatureFlag *connect.Client[v1.EnableFeatureFlagRequest, v1.EnableFeatureFlagResponse] + getAnalyticsView *connect.Client[v1.GetAnalyticsViewRequest, v1.GetAnalyticsViewResponse] + getDashboardAnalyticsView *connect.Client[v1.GetDashboardAnalyticsViewRequest, v1.GetDashboardAnalyticsViewResponse] + getTrace *connect.Client[v1.GetTraceRequest, v1.GetTraceResponse] + getGraphMetrics *connect.Client[v1.GetGraphMetricsRequest, v1.GetGraphMetricsResponse] + getMetricsErrorRate *connect.Client[v1.GetMetricsErrorRateRequest, v1.GetMetricsErrorRateResponse] + getSubgraphMetrics *connect.Client[v1.GetSubgraphMetricsRequest, v1.GetSubgraphMetricsResponse] + getSubgraphMetricsErrorRate *connect.Client[v1.GetSubgraphMetricsErrorRateRequest, v1.GetSubgraphMetricsErrorRateResponse] + getFieldUsage *connect.Client[v1.GetFieldUsageRequest, v1.GetFieldUsageResponse] + getOrganizationRequestsCount *connect.Client[v1.GetOrganizationRequestsCountRequest, v1.GetOrganizationRequestsCountResponse] + createOrganization *connect.Client[v1.CreateOrganizationRequest, v1.CreateOrganizationResponse] + enableLintingForTheNamespace *connect.Client[v1.EnableLintingForTheNamespaceRequest, v1.EnableLintingForTheNamespaceResponse] + configureNamespaceLintConfig *connect.Client[v1.ConfigureNamespaceLintConfigRequest, v1.ConfigureNamespaceLintConfigResponse] + getNamespaceLintConfig *connect.Client[v1.GetNamespaceLintConfigRequest, v1.GetNamespaceLintConfigResponse] + getNamespaceChecksConfig *connect.Client[v1.GetNamespaceChecksConfigurationRequest, v1.GetNamespaceChecksConfigurationResponse] + updateNamespaceChecksConfig *connect.Client[v1.UpdateNamespaceChecksConfigurationRequest, v1.UpdateNamespaceChecksConfigurationResponse] + enableGraphPruning *connect.Client[v1.EnableGraphPruningRequest, v1.EnableGraphPruningResponse] + configureNamespaceGraphPruningConfig *connect.Client[v1.ConfigureNamespaceGraphPruningConfigRequest, v1.ConfigureNamespaceGraphPruningConfigResponse] + getNamespaceGraphPruningConfig *connect.Client[v1.GetNamespaceGraphPruningConfigRequest, v1.GetNamespaceGraphPruningConfigResponse] + getFeatureFlags *connect.Client[v1.GetFeatureFlagsRequest, v1.GetFeatureFlagsResponse] + getFeatureFlagByName *connect.Client[v1.GetFeatureFlagByNameRequest, v1.GetFeatureFlagByNameResponse] + getFeatureSubgraphsByFeatureFlag *connect.Client[v1.GetFeatureSubgraphsByFeatureFlagRequest, v1.GetFeatureSubgraphsByFeatureFlagResponse] + getFeatureSubgraphs *connect.Client[v1.GetFeatureSubgraphsRequest, v1.GetFeatureSubgraphsResponse] + getFeatureFlagsByFederatedGraph *connect.Client[v1.GetFeatureFlagsByFederatedGraphRequest, v1.GetFeatureFlagsByFederatedGraphResponse] + getFeatureFlagsInLatestCompositionByFederatedGraph *connect.Client[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse] + getFeatureSubgraphsByFederatedGraph *connect.Client[v1.GetFeatureSubgraphsByFederatedGraphRequest, v1.GetFeatureSubgraphsByFederatedGraphResponse] + getFederatedGraphById *connect.Client[v1.GetFederatedGraphByIdRequest, v1.GetFederatedGraphByIdResponse] + getSubgraphById *connect.Client[v1.GetSubgraphByIdRequest, v1.GetSubgraphByIdResponse] + pushCacheWarmerOperation *connect.Client[v1.PushCacheWarmerOperationRequest, v1.PushCacheWarmerOperationResponse] + getCacheWarmerOperations *connect.Client[v1.GetCacheWarmerOperationsRequest, v1.GetCacheWarmerOperationsResponse] + computeCacheWarmerOperations *connect.Client[v1.ComputeCacheWarmerOperationsRequest, v1.ComputeCacheWarmerOperationsResponse] + configureCacheWarmer *connect.Client[v1.ConfigureCacheWarmerRequest, v1.ConfigureCacheWarmerResponse] + getCacheWarmerConfig *connect.Client[v1.GetCacheWarmerConfigRequest, v1.GetCacheWarmerConfigResponse] + deleteCacheWarmerOperation *connect.Client[v1.DeleteCacheWarmerOperationRequest, v1.DeleteCacheWarmerOperationResponse] + getSubgraphCheckExtensionsConfig *connect.Client[v1.GetSubgraphCheckExtensionsConfigRequest, v1.GetSubgraphCheckExtensionsConfigResponse] + configureSubgraphCheckExtensions *connect.Client[v1.ConfigureSubgraphCheckExtensionsRequest, v1.ConfigureSubgraphCheckExtensionsResponse] + getBillingPlans *connect.Client[v1.GetBillingPlansRequest, v1.GetBillingPlansResponse] + createCheckoutSession *connect.Client[v1.CreateCheckoutSessionRequest, v1.CreateCheckoutSessionResponse] + createBillingPortalSession *connect.Client[v1.CreateBillingPortalSessionRequest, v1.CreateBillingPortalSessionResponse] + upgradePlan *connect.Client[v1.UpgradePlanRequest, v1.UpgradePlanResponse] + listRouterCompatibilityVersions *connect.Client[v1.ListRouterCompatibilityVersionsRequest, v1.ListRouterCompatibilityVersionsResponse] + setGraphRouterCompatibilityVersion *connect.Client[v1.SetGraphRouterCompatibilityVersionRequest, v1.SetGraphRouterCompatibilityVersionResponse] + createProposal *connect.Client[v1.CreateProposalRequest, v1.CreateProposalResponse] + getProposal *connect.Client[v1.GetProposalRequest, v1.GetProposalResponse] + updateProposal *connect.Client[v1.UpdateProposalRequest, v1.UpdateProposalResponse] + enableProposalsForNamespace *connect.Client[v1.EnableProposalsForNamespaceRequest, v1.EnableProposalsForNamespaceResponse] + configureNamespaceProposalConfig *connect.Client[v1.ConfigureNamespaceProposalConfigRequest, v1.ConfigureNamespaceProposalConfigResponse] + getNamespaceProposalConfig *connect.Client[v1.GetNamespaceProposalConfigRequest, v1.GetNamespaceProposalConfigResponse] + updateNamespaceLoginMethods *connect.Client[v1.UpdateNamespaceLoginMethodsRequest, v1.UpdateNamespaceLoginMethodsResponse] + listNamespaceLoginMethods *connect.Client[v1.ListNamespaceLoginMethodsRequest, v1.ListNamespaceLoginMethodsResponse] + getOrganizationLoginMethods *connect.Client[v1.GetOrganizationLoginMethodsRequest, v1.GetOrganizationLoginMethodsResponse] + updateOrganizationLoginMethods *connect.Client[v1.UpdateOrganizationLoginMethodsRequest, v1.UpdateOrganizationLoginMethodsResponse] + getProposalsByFederatedGraph *connect.Client[v1.GetProposalsByFederatedGraphRequest, v1.GetProposalsByFederatedGraphResponse] + getProposalChecks *connect.Client[v1.GetProposalChecksRequest, v1.GetProposalChecksResponse] + getOperations *connect.Client[v1.GetOperationsRequest, v1.GetOperationsResponse] + getClientsFromAnalytics *connect.Client[v1.GetClientsFromAnalyticsRequest, v1.GetClientsFromAnalyticsResponse] + getOperationClients *connect.Client[v1.GetOperationClientsRequest, v1.GetOperationClientsResponse] + getOperationDeprecatedFields *connect.Client[v1.GetOperationDeprecatedFieldsRequest, v1.GetOperationDeprecatedFieldsResponse] + validateAndFetchPluginData *connect.Client[v1.ValidateAndFetchPluginDataRequest, v1.ValidateAndFetchPluginDataResponse] + linkSubgraph *connect.Client[v1.LinkSubgraphRequest, v1.LinkSubgraphResponse] + unlinkSubgraph *connect.Client[v1.UnlinkSubgraphRequest, v1.UnlinkSubgraphResponse] + verifyAPIKeyGraphAccess *connect.Client[v1.VerifyAPIKeyGraphAccessRequest, v1.VerifyAPIKeyGraphAccessResponse] + recomposeGraph *connect.Client[v1.RecomposeGraphRequest, v1.RecomposeGraphResponse] + recomposeFeatureFlag *connect.Client[v1.RecomposeFeatureFlagRequest, v1.RecomposeFeatureFlagResponse] + getOnboarding *connect.Client[v1.GetOnboardingRequest, v1.GetOnboardingResponse] + createOnboarding *connect.Client[v1.CreateOnboardingRequest, v1.CreateOnboardingResponse] + finishOnboarding *connect.Client[v1.FinishOnboardingRequest, v1.FinishOnboardingResponse] } // CreatePlaygroundScript calls wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript. @@ -2473,6 +2446,11 @@ func (c *platformServiceClient) PublishFederatedSubgraph(ctx context.Context, re return c.publishFederatedSubgraph.CallUnary(ctx, req) } +// PublishFederatedSubgraphs calls wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs. +func (c *platformServiceClient) PublishFederatedSubgraphs(ctx context.Context, req *connect.Request[v1.PublishFederatedSubgraphsRequest]) (*connect.Response[v1.PublishFederatedSubgraphsResponse], error) { + return c.publishFederatedSubgraphs.CallUnary(ctx, req) +} + // CreateFederatedGraph calls wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph. func (c *platformServiceClient) CreateFederatedGraph(ctx context.Context, req *connect.Request[v1.CreateFederatedGraphRequest]) (*connect.Response[v1.CreateFederatedGraphResponse], error) { return c.createFederatedGraph.CallUnary(ctx, req) @@ -2723,6 +2701,11 @@ func (c *platformServiceClient) InviteUser(ctx context.Context, req *connect.Req return c.inviteUser.CallUnary(ctx, req) } +// InviteUsers calls wg.cosmo.platform.v1.PlatformService.InviteUsers. +func (c *platformServiceClient) InviteUsers(ctx context.Context, req *connect.Request[v1.InviteUsersRequest]) (*connect.Response[v1.InviteUsersResponse], error) { + return c.inviteUsers.CallUnary(ctx, req) +} + // GetAPIKeys calls wg.cosmo.platform.v1.PlatformService.GetAPIKeys. func (c *platformServiceClient) GetAPIKeys(ctx context.Context, req *connect.Request[v1.GetAPIKeysRequest]) (*connect.Response[v1.GetAPIKeysResponse], error) { return c.getAPIKeys.CallUnary(ctx, req) @@ -2895,6 +2878,11 @@ func (c *platformServiceClient) GetOIDCProvider(ctx context.Context, req *connec return c.getOIDCProvider.CallUnary(ctx, req) } +// ListOIDCProviders calls wg.cosmo.platform.v1.PlatformService.ListOIDCProviders. +func (c *platformServiceClient) ListOIDCProviders(ctx context.Context, req *connect.Request[v1.ListOIDCProvidersRequest]) (*connect.Response[v1.ListOIDCProvidersResponse], error) { + return c.listOIDCProviders.CallUnary(ctx, req) +} + // DeleteOIDCProvider calls wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider. func (c *platformServiceClient) DeleteOIDCProvider(ctx context.Context, req *connect.Request[v1.DeleteOIDCProviderRequest]) (*connect.Response[v1.DeleteOIDCProviderResponse], error) { return c.deleteOIDCProvider.CallUnary(ctx, req) @@ -3116,6 +3104,18 @@ func (c *platformServiceClient) GetFeatureFlagsByFederatedGraph(ctx context.Cont return c.getFeatureFlagsByFederatedGraph.CallUnary(ctx, req) } +// GetFeatureFlagsInLatestCompositionByFederatedGraph calls +// wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph. +func (c *platformServiceClient) GetFeatureFlagsInLatestCompositionByFederatedGraph(ctx context.Context, req *connect.Request[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse], error) { + return c.getFeatureFlagsInLatestCompositionByFederatedGraph.CallUnary(ctx, req) +} + +// GetFeatureSubgraphsByFederatedGraph calls +// wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph. +func (c *platformServiceClient) GetFeatureSubgraphsByFederatedGraph(ctx context.Context, req *connect.Request[v1.GetFeatureSubgraphsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureSubgraphsByFederatedGraphResponse], error) { + return c.getFeatureSubgraphsByFederatedGraph.CallUnary(ctx, req) +} + // GetFederatedGraphById calls wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById. func (c *platformServiceClient) GetFederatedGraphById(ctx context.Context, req *connect.Request[v1.GetFederatedGraphByIdRequest]) (*connect.Response[v1.GetFederatedGraphByIdResponse], error) { return c.getFederatedGraphById.CallUnary(ctx, req) @@ -3233,6 +3233,29 @@ func (c *platformServiceClient) GetNamespaceProposalConfig(ctx context.Context, return c.getNamespaceProposalConfig.CallUnary(ctx, req) } +// UpdateNamespaceLoginMethods calls +// wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods. +func (c *platformServiceClient) UpdateNamespaceLoginMethods(ctx context.Context, req *connect.Request[v1.UpdateNamespaceLoginMethodsRequest]) (*connect.Response[v1.UpdateNamespaceLoginMethodsResponse], error) { + return c.updateNamespaceLoginMethods.CallUnary(ctx, req) +} + +// ListNamespaceLoginMethods calls wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods. +func (c *platformServiceClient) ListNamespaceLoginMethods(ctx context.Context, req *connect.Request[v1.ListNamespaceLoginMethodsRequest]) (*connect.Response[v1.ListNamespaceLoginMethodsResponse], error) { + return c.listNamespaceLoginMethods.CallUnary(ctx, req) +} + +// GetOrganizationLoginMethods calls +// wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods. +func (c *platformServiceClient) GetOrganizationLoginMethods(ctx context.Context, req *connect.Request[v1.GetOrganizationLoginMethodsRequest]) (*connect.Response[v1.GetOrganizationLoginMethodsResponse], error) { + return c.getOrganizationLoginMethods.CallUnary(ctx, req) +} + +// UpdateOrganizationLoginMethods calls +// wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods. +func (c *platformServiceClient) UpdateOrganizationLoginMethods(ctx context.Context, req *connect.Request[v1.UpdateOrganizationLoginMethodsRequest]) (*connect.Response[v1.UpdateOrganizationLoginMethodsResponse], error) { + return c.updateOrganizationLoginMethods.CallUnary(ctx, req) +} + // GetProposalsByFederatedGraph calls // wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph. func (c *platformServiceClient) GetProposalsByFederatedGraph(ctx context.Context, req *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) { @@ -3290,6 +3313,26 @@ func (c *platformServiceClient) RecomposeGraph(ctx context.Context, req *connect return c.recomposeGraph.CallUnary(ctx, req) } +// RecomposeFeatureFlag calls wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag. +func (c *platformServiceClient) RecomposeFeatureFlag(ctx context.Context, req *connect.Request[v1.RecomposeFeatureFlagRequest]) (*connect.Response[v1.RecomposeFeatureFlagResponse], error) { + return c.recomposeFeatureFlag.CallUnary(ctx, req) +} + +// GetOnboarding calls wg.cosmo.platform.v1.PlatformService.GetOnboarding. +func (c *platformServiceClient) GetOnboarding(ctx context.Context, req *connect.Request[v1.GetOnboardingRequest]) (*connect.Response[v1.GetOnboardingResponse], error) { + return c.getOnboarding.CallUnary(ctx, req) +} + +// CreateOnboarding calls wg.cosmo.platform.v1.PlatformService.CreateOnboarding. +func (c *platformServiceClient) CreateOnboarding(ctx context.Context, req *connect.Request[v1.CreateOnboardingRequest]) (*connect.Response[v1.CreateOnboardingResponse], error) { + return c.createOnboarding.CallUnary(ctx, req) +} + +// FinishOnboarding calls wg.cosmo.platform.v1.PlatformService.FinishOnboarding. +func (c *platformServiceClient) FinishOnboarding(ctx context.Context, req *connect.Request[v1.FinishOnboardingRequest]) (*connect.Response[v1.FinishOnboardingResponse], error) { + return c.finishOnboarding.CallUnary(ctx, req) +} + // PlatformServiceHandler is an implementation of the wg.cosmo.platform.v1.PlatformService service. type PlatformServiceHandler interface { // PlaygroundScripts @@ -3325,6 +3368,9 @@ type PlatformServiceHandler interface { CreateFederatedSubgraph(context.Context, *connect.Request[v1.CreateFederatedSubgraphRequest]) (*connect.Response[v1.CreateFederatedSubgraphResponse], error) // PublishFederatedSubgraph pushes the schema of the subgraph to the control plane. PublishFederatedSubgraph(context.Context, *connect.Request[v1.PublishFederatedSubgraphRequest]) (*connect.Response[v1.PublishFederatedSubgraphResponse], error) + // PublishFederatedSubgraphs pushes the schemas of multiple existing subgraphs to the control plane in a single + // request. Affected federated graphs (and their contracts / feature flags) are composed exactly once each. + PublishFederatedSubgraphs(context.Context, *connect.Request[v1.PublishFederatedSubgraphsRequest]) (*connect.Response[v1.PublishFederatedSubgraphsResponse], error) // CreateFederatedGraph creates a federated graph on the control plane. CreateFederatedGraph(context.Context, *connect.Request[v1.CreateFederatedGraphRequest]) (*connect.Response[v1.CreateFederatedGraphResponse], error) // DeleteFederatedGraph deletes a federated graph from the control plane. @@ -3419,6 +3465,8 @@ type PlatformServiceHandler interface { IsMemberLimitReached(context.Context, *connect.Request[v1.IsMemberLimitReachedRequest]) (*connect.Response[v1.IsMemberLimitReachedResponse], error) // InviteUser invites an user to join the organization InviteUser(context.Context, *connect.Request[v1.InviteUserRequest]) (*connect.Response[v1.InviteUserResponse], error) + // InviteUsers invites multiple users to join the organization + InviteUsers(context.Context, *connect.Request[v1.InviteUsersRequest]) (*connect.Response[v1.InviteUsersResponse], error) // GetAPIKeys returns a list of API keys of the organization GetAPIKeys(context.Context, *connect.Request[v1.GetAPIKeysRequest]) (*connect.Response[v1.GetAPIKeysResponse], error) // CreateAPIKey creates an API key for the organization @@ -3486,6 +3534,8 @@ type PlatformServiceHandler interface { CreateOIDCProvider(context.Context, *connect.Request[v1.CreateOIDCProviderRequest]) (*connect.Response[v1.CreateOIDCProviderResponse], error) // GetOIDCProvider gets the oidc provider connected the organization GetOIDCProvider(context.Context, *connect.Request[v1.GetOIDCProviderRequest]) (*connect.Response[v1.GetOIDCProviderResponse], error) + // ListOIDCProviders lists all OIDC providers configured for the organization + ListOIDCProviders(context.Context, *connect.Request[v1.ListOIDCProvidersRequest]) (*connect.Response[v1.ListOIDCProvidersResponse], error) // DeleteOIDCProvider deletes the oidc provider connected the organization DeleteOIDCProvider(context.Context, *connect.Request[v1.DeleteOIDCProviderRequest]) (*connect.Response[v1.DeleteOIDCProviderResponse], error) // UpdateIDPMappers updates the mappings of the oidc provider @@ -3561,6 +3611,10 @@ type PlatformServiceHandler interface { GetFeatureSubgraphs(context.Context, *connect.Request[v1.GetFeatureSubgraphsRequest]) (*connect.Response[v1.GetFeatureSubgraphsResponse], error) // GetFeatureFlagsByFederatedGraph returns the list of feature flags which match the label matchers of the federated graph. GetFeatureFlagsByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureFlagsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsByFederatedGraphResponse], error) + // GetFeatureFlagsInLatestCompositionByFederatedGraph returns only the feature flags that are part of the latest valid composition. + GetFeatureFlagsInLatestCompositionByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse], error) + // GetFeatureSubgraphsByFederatedGraph returns the paginated list of unique feature subgraphs across all feature flags of the federated graph. + GetFeatureSubgraphsByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureSubgraphsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureSubgraphsByFederatedGraphResponse], error) // GetFederatedGraphById returns the federated graph by id. GetFederatedGraphById(context.Context, *connect.Request[v1.GetFederatedGraphByIdRequest]) (*connect.Response[v1.GetFederatedGraphByIdResponse], error) // GetSubgraphById returns the subgraph by id. @@ -3606,6 +3660,14 @@ type PlatformServiceHandler interface { ConfigureNamespaceProposalConfig(context.Context, *connect.Request[v1.ConfigureNamespaceProposalConfigRequest]) (*connect.Response[v1.ConfigureNamespaceProposalConfigResponse], error) // GetNamespaceProposalConfig returns the proposal config of the namespace passed. GetNamespaceProposalConfig(context.Context, *connect.Request[v1.GetNamespaceProposalConfigRequest]) (*connect.Response[v1.GetNamespaceProposalConfigResponse], error) + // UpdateNamespaceLoginMethods replaces the org's per-namespace login-method configuration in one call. + UpdateNamespaceLoginMethods(context.Context, *connect.Request[v1.UpdateNamespaceLoginMethodsRequest]) (*connect.Response[v1.UpdateNamespaceLoginMethodsResponse], error) + // ListNamespaceLoginMethods returns the login-method configuration for every restricted namespace in the org. + ListNamespaceLoginMethods(context.Context, *connect.Request[v1.ListNamespaceLoginMethodsRequest]) (*connect.Response[v1.ListNamespaceLoginMethodsResponse], error) + // GetOrganizationLoginMethods returns the org's allowed login methods (empty restriction = all allowed). + GetOrganizationLoginMethods(context.Context, *connect.Request[v1.GetOrganizationLoginMethodsRequest]) (*connect.Response[v1.GetOrganizationLoginMethodsResponse], error) + // UpdateOrganizationLoginMethods replaces the org's allowed login methods and reconciles namespace mappings. + UpdateOrganizationLoginMethods(context.Context, *connect.Request[v1.UpdateOrganizationLoginMethodsRequest]) (*connect.Response[v1.UpdateOrganizationLoginMethodsResponse], error) // GetProposalsByFederatedGraph returns proposals for a federated graph. GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. @@ -3628,6 +3690,12 @@ type PlatformServiceHandler interface { VerifyAPIKeyGraphAccess(context.Context, *connect.Request[v1.VerifyAPIKeyGraphAccessRequest]) (*connect.Response[v1.VerifyAPIKeyGraphAccessResponse], error) // RecomposeGraph triggers a recomposition of the federated graph (or monograph) using its current subgraphs RecomposeGraph(context.Context, *connect.Request[v1.RecomposeGraphRequest]) (*connect.Response[v1.RecomposeGraphResponse], error) + // RecomposeFeatureFlag triggers a recomposition of the feature flag using its current subgraphs + RecomposeFeatureFlag(context.Context, *connect.Request[v1.RecomposeFeatureFlagRequest]) (*connect.Response[v1.RecomposeFeatureFlagResponse], error) + // Onboarding + GetOnboarding(context.Context, *connect.Request[v1.GetOnboardingRequest]) (*connect.Response[v1.GetOnboardingResponse], error) + CreateOnboarding(context.Context, *connect.Request[v1.CreateOnboardingRequest]) (*connect.Response[v1.CreateOnboardingResponse], error) + FinishOnboarding(context.Context, *connect.Request[v1.FinishOnboardingRequest]) (*connect.Response[v1.FinishOnboardingResponse], error) } // NewPlatformServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -3636,1079 +3704,1158 @@ type PlatformServiceHandler interface { // By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf // and JSON codecs. They also support gzip compression. func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + platformServiceMethods := v1.File_wg_cosmo_platform_v1_platform_proto.Services().ByName("PlatformService").Methods() platformServiceCreatePlaygroundScriptHandler := connect.NewUnaryHandler( PlatformServiceCreatePlaygroundScriptProcedure, svc.CreatePlaygroundScript, - connect.WithSchema(platformServiceCreatePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreatePlaygroundScript")), connect.WithHandlerOptions(opts...), ) platformServiceDeletePlaygroundScriptHandler := connect.NewUnaryHandler( PlatformServiceDeletePlaygroundScriptProcedure, svc.DeletePlaygroundScript, - connect.WithSchema(platformServiceDeletePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeletePlaygroundScript")), connect.WithHandlerOptions(opts...), ) platformServiceUpdatePlaygroundScriptHandler := connect.NewUnaryHandler( PlatformServiceUpdatePlaygroundScriptProcedure, svc.UpdatePlaygroundScript, - connect.WithSchema(platformServiceUpdatePlaygroundScriptMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdatePlaygroundScript")), connect.WithHandlerOptions(opts...), ) platformServiceGetPlaygroundScriptsHandler := connect.NewUnaryHandler( PlatformServiceGetPlaygroundScriptsProcedure, svc.GetPlaygroundScripts, - connect.WithSchema(platformServiceGetPlaygroundScriptsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPlaygroundScripts")), connect.WithHandlerOptions(opts...), ) platformServiceCreateNamespaceHandler := connect.NewUnaryHandler( PlatformServiceCreateNamespaceProcedure, svc.CreateNamespace, - connect.WithSchema(platformServiceCreateNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteNamespaceHandler := connect.NewUnaryHandler( PlatformServiceDeleteNamespaceProcedure, svc.DeleteNamespace, - connect.WithSchema(platformServiceDeleteNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceRenameNamespaceHandler := connect.NewUnaryHandler( PlatformServiceRenameNamespaceProcedure, svc.RenameNamespace, - connect.WithSchema(platformServiceRenameNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RenameNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespacesHandler := connect.NewUnaryHandler( PlatformServiceGetNamespacesProcedure, svc.GetNamespaces, - connect.WithSchema(platformServiceGetNamespacesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaces")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespaceHandler := connect.NewUnaryHandler( PlatformServiceGetNamespaceProcedure, svc.GetNamespace, - connect.WithSchema(platformServiceGetNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceGetWorkspaceHandler := connect.NewUnaryHandler( PlatformServiceGetWorkspaceProcedure, svc.GetWorkspace, - connect.WithSchema(platformServiceGetWorkspaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetWorkspace")), connect.WithHandlerOptions(opts...), ) platformServiceCreateContractHandler := connect.NewUnaryHandler( PlatformServiceCreateContractProcedure, svc.CreateContract, - connect.WithSchema(platformServiceCreateContractMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateContract")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateContractHandler := connect.NewUnaryHandler( PlatformServiceUpdateContractProcedure, svc.UpdateContract, - connect.WithSchema(platformServiceUpdateContractMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateContract")), connect.WithHandlerOptions(opts...), ) platformServiceMoveFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceMoveFederatedGraphProcedure, svc.MoveFederatedGraph, - connect.WithSchema(platformServiceMoveFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceMoveSubgraphHandler := connect.NewUnaryHandler( PlatformServiceMoveSubgraphProcedure, svc.MoveSubgraph, - connect.WithSchema(platformServiceMoveSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceMoveMonographHandler := connect.NewUnaryHandler( PlatformServiceMoveMonographProcedure, svc.MoveMonograph, - connect.WithSchema(platformServiceMoveMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MoveMonograph")), connect.WithHandlerOptions(opts...), ) platformServiceCreateMonographHandler := connect.NewUnaryHandler( PlatformServiceCreateMonographProcedure, svc.CreateMonograph, - connect.WithSchema(platformServiceCreateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateMonograph")), connect.WithHandlerOptions(opts...), ) platformServicePublishMonographHandler := connect.NewUnaryHandler( PlatformServicePublishMonographProcedure, svc.PublishMonograph, - connect.WithSchema(platformServicePublishMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishMonograph")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteMonographHandler := connect.NewUnaryHandler( PlatformServiceDeleteMonographProcedure, svc.DeleteMonograph, - connect.WithSchema(platformServiceDeleteMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteMonograph")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateMonographHandler := connect.NewUnaryHandler( PlatformServiceUpdateMonographProcedure, svc.UpdateMonograph, - connect.WithSchema(platformServiceUpdateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateMonograph")), connect.WithHandlerOptions(opts...), ) platformServiceMigrateMonographHandler := connect.NewUnaryHandler( PlatformServiceMigrateMonographProcedure, svc.MigrateMonograph, - connect.WithSchema(platformServiceMigrateMonographMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MigrateMonograph")), connect.WithHandlerOptions(opts...), ) platformServiceCreateFederatedSubgraphHandler := connect.NewUnaryHandler( PlatformServiceCreateFederatedSubgraphProcedure, svc.CreateFederatedSubgraph, - connect.WithSchema(platformServiceCreateFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedSubgraph")), connect.WithHandlerOptions(opts...), ) platformServicePublishFederatedSubgraphHandler := connect.NewUnaryHandler( PlatformServicePublishFederatedSubgraphProcedure, svc.PublishFederatedSubgraph, - connect.WithSchema(platformServicePublishFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishFederatedSubgraph")), + connect.WithHandlerOptions(opts...), + ) + platformServicePublishFederatedSubgraphsHandler := connect.NewUnaryHandler( + PlatformServicePublishFederatedSubgraphsProcedure, + svc.PublishFederatedSubgraphs, + connect.WithSchema(platformServiceMethods.ByName("PublishFederatedSubgraphs")), connect.WithHandlerOptions(opts...), ) platformServiceCreateFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceCreateFederatedGraphProcedure, svc.CreateFederatedGraph, - connect.WithSchema(platformServiceCreateFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceDeleteFederatedGraphProcedure, svc.DeleteFederatedGraph, - connect.WithSchema(platformServiceDeleteFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteFederatedSubgraphHandler := connect.NewUnaryHandler( PlatformServiceDeleteFederatedSubgraphProcedure, svc.DeleteFederatedSubgraph, - connect.WithSchema(platformServiceDeleteFederatedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFederatedSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceCheckSubgraphSchemaHandler := connect.NewUnaryHandler( PlatformServiceCheckSubgraphSchemaProcedure, svc.CheckSubgraphSchema, - connect.WithSchema(platformServiceCheckSubgraphSchemaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckSubgraphSchema")), connect.WithHandlerOptions(opts...), ) platformServiceGetProposedSchemaOfCheckedSubgraphHandler := connect.NewUnaryHandler( PlatformServiceGetProposedSchemaOfCheckedSubgraphProcedure, svc.GetProposedSchemaOfCheckedSubgraph, - connect.WithSchema(platformServiceGetProposedSchemaOfCheckedSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposedSchemaOfCheckedSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceFixSubgraphSchemaHandler := connect.NewUnaryHandler( PlatformServiceFixSubgraphSchemaProcedure, svc.FixSubgraphSchema, - connect.WithSchema(platformServiceFixSubgraphSchemaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("FixSubgraphSchema")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceUpdateFederatedGraphProcedure, svc.UpdateFederatedGraph, - connect.WithSchema(platformServiceUpdateFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateSubgraphHandler := connect.NewUnaryHandler( PlatformServiceUpdateSubgraphProcedure, svc.UpdateSubgraph, - connect.WithSchema(platformServiceUpdateSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceCheckFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceCheckFederatedGraphProcedure, svc.CheckFederatedGraph, - connect.WithSchema(platformServiceCheckFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceWhoAmIHandler := connect.NewUnaryHandler( PlatformServiceWhoAmIProcedure, svc.WhoAmI, - connect.WithSchema(platformServiceWhoAmIMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("WhoAmI")), connect.WithHandlerOptions(opts...), ) platformServiceGenerateRouterTokenHandler := connect.NewUnaryHandler( PlatformServiceGenerateRouterTokenProcedure, svc.GenerateRouterToken, - connect.WithSchema(platformServiceGenerateRouterTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GenerateRouterToken")), connect.WithHandlerOptions(opts...), ) platformServiceGetRouterTokensHandler := connect.NewUnaryHandler( PlatformServiceGetRouterTokensProcedure, svc.GetRouterTokens, - connect.WithSchema(platformServiceGetRouterTokensMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetRouterTokens")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteRouterTokenHandler := connect.NewUnaryHandler( PlatformServiceDeleteRouterTokenProcedure, svc.DeleteRouterToken, - connect.WithSchema(platformServiceDeleteRouterTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteRouterToken")), connect.WithHandlerOptions(opts...), ) platformServicePublishPersistedOperationsHandler := connect.NewUnaryHandler( PlatformServicePublishPersistedOperationsProcedure, svc.PublishPersistedOperations, - connect.WithSchema(platformServicePublishPersistedOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PublishPersistedOperations")), connect.WithHandlerOptions(opts...), ) platformServiceCheckPersistedOperationTrafficHandler := connect.NewUnaryHandler( PlatformServiceCheckPersistedOperationTrafficProcedure, svc.CheckPersistedOperationTraffic, - connect.WithSchema(platformServiceCheckPersistedOperationTrafficMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CheckPersistedOperationTraffic")), connect.WithHandlerOptions(opts...), ) platformServiceDeletePersistedOperationHandler := connect.NewUnaryHandler( PlatformServiceDeletePersistedOperationProcedure, svc.DeletePersistedOperation, - connect.WithSchema(platformServiceDeletePersistedOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeletePersistedOperation")), connect.WithHandlerOptions(opts...), ) platformServiceGetPersistedOperationsHandler := connect.NewUnaryHandler( PlatformServiceGetPersistedOperationsProcedure, svc.GetPersistedOperations, - connect.WithSchema(platformServiceGetPersistedOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPersistedOperations")), connect.WithHandlerOptions(opts...), ) platformServiceGetAuditLogsHandler := connect.NewUnaryHandler( PlatformServiceGetAuditLogsProcedure, svc.GetAuditLogs, - connect.WithSchema(platformServiceGetAuditLogsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAuditLogs")), connect.WithHandlerOptions(opts...), ) platformServiceInitializeCosmoUserHandler := connect.NewUnaryHandler( PlatformServiceInitializeCosmoUserProcedure, svc.InitializeCosmoUser, - connect.WithSchema(platformServiceInitializeCosmoUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("InitializeCosmoUser")), connect.WithHandlerOptions(opts...), ) platformServiceListOrganizationsHandler := connect.NewUnaryHandler( PlatformServiceListOrganizationsProcedure, svc.ListOrganizations, - connect.WithSchema(platformServiceListOrganizationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ListOrganizations")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphsHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphsProcedure, svc.GetFederatedGraphs, - connect.WithSchema(platformServiceGetFederatedGraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphs")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphsBySubgraphLabelsHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphsBySubgraphLabelsProcedure, svc.GetFederatedGraphsBySubgraphLabels, - connect.WithSchema(platformServiceGetFederatedGraphsBySubgraphLabelsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphsBySubgraphLabels")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphByNameHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphByNameProcedure, svc.GetFederatedGraphByName, - connect.WithSchema(platformServiceGetFederatedGraphByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphByName")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphSDLByNameHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphSDLByNameProcedure, svc.GetFederatedGraphSDLByName, - connect.WithSchema(platformServiceGetFederatedGraphSDLByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphSDLByName")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphsHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphsProcedure, svc.GetSubgraphs, - connect.WithSchema(platformServiceGetSubgraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphs")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphByNameHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphByNameProcedure, svc.GetSubgraphByName, - connect.WithSchema(platformServiceGetSubgraphByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphByName")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphSDLFromLatestCompositionHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphSDLFromLatestCompositionProcedure, svc.GetSubgraphSDLFromLatestComposition, - connect.WithSchema(platformServiceGetSubgraphSDLFromLatestCompositionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphSDLFromLatestComposition")), connect.WithHandlerOptions(opts...), ) platformServiceGetLatestSubgraphSDLHandler := connect.NewUnaryHandler( PlatformServiceGetLatestSubgraphSDLProcedure, svc.GetLatestSubgraphSDL, - connect.WithSchema(platformServiceGetLatestSubgraphSDLMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetLatestSubgraphSDL")), connect.WithHandlerOptions(opts...), ) platformServiceGetChecksByFederatedGraphNameHandler := connect.NewUnaryHandler( PlatformServiceGetChecksByFederatedGraphNameProcedure, svc.GetChecksByFederatedGraphName, - connect.WithSchema(platformServiceGetChecksByFederatedGraphNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetChecksByFederatedGraphName")), connect.WithHandlerOptions(opts...), ) platformServiceGetCheckSummaryHandler := connect.NewUnaryHandler( PlatformServiceGetCheckSummaryProcedure, svc.GetCheckSummary, - connect.WithSchema(platformServiceGetCheckSummaryMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCheckSummary")), connect.WithHandlerOptions(opts...), ) platformServiceGetCheckOperationsHandler := connect.NewUnaryHandler( PlatformServiceGetCheckOperationsProcedure, svc.GetCheckOperations, - connect.WithSchema(platformServiceGetCheckOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCheckOperations")), connect.WithHandlerOptions(opts...), ) platformServiceForceCheckSuccessHandler := connect.NewUnaryHandler( PlatformServiceForceCheckSuccessProcedure, svc.ForceCheckSuccess, - connect.WithSchema(platformServiceForceCheckSuccessMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ForceCheckSuccess")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOperationOverridesHandler := connect.NewUnaryHandler( PlatformServiceCreateOperationOverridesProcedure, svc.CreateOperationOverrides, - connect.WithSchema(platformServiceCreateOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOperationOverrides")), connect.WithHandlerOptions(opts...), ) platformServiceRemoveOperationOverridesHandler := connect.NewUnaryHandler( PlatformServiceRemoveOperationOverridesProcedure, svc.RemoveOperationOverrides, - connect.WithSchema(platformServiceRemoveOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOperationOverrides")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOperationIgnoreAllOverrideHandler := connect.NewUnaryHandler( PlatformServiceCreateOperationIgnoreAllOverrideProcedure, svc.CreateOperationIgnoreAllOverride, - connect.WithSchema(platformServiceCreateOperationIgnoreAllOverrideMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOperationIgnoreAllOverride")), connect.WithHandlerOptions(opts...), ) platformServiceRemoveOperationIgnoreAllOverrideHandler := connect.NewUnaryHandler( PlatformServiceRemoveOperationIgnoreAllOverrideProcedure, svc.RemoveOperationIgnoreAllOverride, - connect.WithSchema(platformServiceRemoveOperationIgnoreAllOverrideMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOperationIgnoreAllOverride")), connect.WithHandlerOptions(opts...), ) platformServiceGetOperationOverridesHandler := connect.NewUnaryHandler( PlatformServiceGetOperationOverridesProcedure, svc.GetOperationOverrides, - connect.WithSchema(platformServiceGetOperationOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationOverrides")), connect.WithHandlerOptions(opts...), ) platformServiceGetAllOverridesHandler := connect.NewUnaryHandler( PlatformServiceGetAllOverridesProcedure, svc.GetAllOverrides, - connect.WithSchema(platformServiceGetAllOverridesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAllOverrides")), connect.WithHandlerOptions(opts...), ) platformServiceToggleChangeOverridesForAllOperationsHandler := connect.NewUnaryHandler( PlatformServiceToggleChangeOverridesForAllOperationsProcedure, svc.ToggleChangeOverridesForAllOperations, - connect.WithSchema(platformServiceToggleChangeOverridesForAllOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ToggleChangeOverridesForAllOperations")), connect.WithHandlerOptions(opts...), ) platformServiceCreateIgnoreOverridesForAllOperationsHandler := connect.NewUnaryHandler( PlatformServiceCreateIgnoreOverridesForAllOperationsProcedure, svc.CreateIgnoreOverridesForAllOperations, - connect.WithSchema(platformServiceCreateIgnoreOverridesForAllOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateIgnoreOverridesForAllOperations")), connect.WithHandlerOptions(opts...), ) platformServiceGetOperationContentHandler := connect.NewUnaryHandler( PlatformServiceGetOperationContentProcedure, svc.GetOperationContent, - connect.WithSchema(platformServiceGetOperationContentMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationContent")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphChangelogHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphChangelogProcedure, svc.GetFederatedGraphChangelog, - connect.WithSchema(platformServiceGetFederatedGraphChangelogMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphChangelog")), connect.WithHandlerOptions(opts...), ) platformServiceCreateFederatedGraphTokenHandler := connect.NewUnaryHandler( PlatformServiceCreateFederatedGraphTokenProcedure, svc.CreateFederatedGraphToken, - connect.WithSchema(platformServiceCreateFederatedGraphTokenMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFederatedGraphToken")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationBySlugHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationBySlugProcedure, svc.GetOrganizationBySlug, - connect.WithSchema(platformServiceGetOrganizationBySlugMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationBySlug")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationMembersHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationMembersProcedure, svc.GetOrganizationMembers, - connect.WithSchema(platformServiceGetOrganizationMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationMembers")), connect.WithHandlerOptions(opts...), ) platformServiceGetPendingOrganizationMembersHandler := connect.NewUnaryHandler( PlatformServiceGetPendingOrganizationMembersProcedure, svc.GetPendingOrganizationMembers, - connect.WithSchema(platformServiceGetPendingOrganizationMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetPendingOrganizationMembers")), connect.WithHandlerOptions(opts...), ) platformServiceIsMemberLimitReachedHandler := connect.NewUnaryHandler( PlatformServiceIsMemberLimitReachedProcedure, svc.IsMemberLimitReached, - connect.WithSchema(platformServiceIsMemberLimitReachedMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("IsMemberLimitReached")), connect.WithHandlerOptions(opts...), ) platformServiceInviteUserHandler := connect.NewUnaryHandler( PlatformServiceInviteUserProcedure, svc.InviteUser, - connect.WithSchema(platformServiceInviteUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("InviteUser")), + connect.WithHandlerOptions(opts...), + ) + platformServiceInviteUsersHandler := connect.NewUnaryHandler( + PlatformServiceInviteUsersProcedure, + svc.InviteUsers, + connect.WithSchema(platformServiceMethods.ByName("InviteUsers")), connect.WithHandlerOptions(opts...), ) platformServiceGetAPIKeysHandler := connect.NewUnaryHandler( PlatformServiceGetAPIKeysProcedure, svc.GetAPIKeys, - connect.WithSchema(platformServiceGetAPIKeysMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAPIKeys")), connect.WithHandlerOptions(opts...), ) platformServiceCreateAPIKeyHandler := connect.NewUnaryHandler( PlatformServiceCreateAPIKeyProcedure, svc.CreateAPIKey, - connect.WithSchema(platformServiceCreateAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateAPIKey")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateAPIKeyHandler := connect.NewUnaryHandler( PlatformServiceUpdateAPIKeyProcedure, svc.UpdateAPIKey, - connect.WithSchema(platformServiceUpdateAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateAPIKey")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteAPIKeyHandler := connect.NewUnaryHandler( PlatformServiceDeleteAPIKeyProcedure, svc.DeleteAPIKey, - connect.WithSchema(platformServiceDeleteAPIKeyMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteAPIKey")), connect.WithHandlerOptions(opts...), ) platformServiceRemoveOrganizationMemberHandler := connect.NewUnaryHandler( PlatformServiceRemoveOrganizationMemberProcedure, svc.RemoveOrganizationMember, - connect.WithSchema(platformServiceRemoveOrganizationMemberMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveOrganizationMember")), connect.WithHandlerOptions(opts...), ) platformServiceRemoveInvitationHandler := connect.NewUnaryHandler( PlatformServiceRemoveInvitationProcedure, svc.RemoveInvitation, - connect.WithSchema(platformServiceRemoveInvitationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RemoveInvitation")), connect.WithHandlerOptions(opts...), ) platformServiceMigrateFromApolloHandler := connect.NewUnaryHandler( PlatformServiceMigrateFromApolloProcedure, svc.MigrateFromApollo, - connect.WithSchema(platformServiceMigrateFromApolloMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("MigrateFromApollo")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOrganizationGroupHandler := connect.NewUnaryHandler( PlatformServiceCreateOrganizationGroupProcedure, svc.CreateOrganizationGroup, - connect.WithSchema(platformServiceCreateOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganizationGroup")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationGroupsHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationGroupsProcedure, svc.GetOrganizationGroups, - connect.WithSchema(platformServiceGetOrganizationGroupsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationGroups")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationGroupMembersHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationGroupMembersProcedure, svc.GetOrganizationGroupMembers, - connect.WithSchema(platformServiceGetOrganizationGroupMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationGroupMembers")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateOrganizationGroupHandler := connect.NewUnaryHandler( PlatformServiceUpdateOrganizationGroupProcedure, svc.UpdateOrganizationGroup, - connect.WithSchema(platformServiceUpdateOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationGroup")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteOrganizationGroupHandler := connect.NewUnaryHandler( PlatformServiceDeleteOrganizationGroupProcedure, svc.DeleteOrganizationGroup, - connect.WithSchema(platformServiceDeleteOrganizationGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganizationGroup")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOrganizationWebhookConfigHandler := connect.NewUnaryHandler( PlatformServiceCreateOrganizationWebhookConfigProcedure, svc.CreateOrganizationWebhookConfig, - connect.WithSchema(platformServiceCreateOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganizationWebhookConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationWebhookConfigsHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationWebhookConfigsProcedure, svc.GetOrganizationWebhookConfigs, - connect.WithSchema(platformServiceGetOrganizationWebhookConfigsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookConfigs")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationWebhookMetaHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationWebhookMetaProcedure, svc.GetOrganizationWebhookMeta, - connect.WithSchema(platformServiceGetOrganizationWebhookMetaMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookMeta")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateOrganizationWebhookConfigHandler := connect.NewUnaryHandler( PlatformServiceUpdateOrganizationWebhookConfigProcedure, svc.UpdateOrganizationWebhookConfig, - connect.WithSchema(platformServiceUpdateOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationWebhookConfig")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteOrganizationWebhookConfigHandler := connect.NewUnaryHandler( PlatformServiceDeleteOrganizationWebhookConfigProcedure, svc.DeleteOrganizationWebhookConfig, - connect.WithSchema(platformServiceDeleteOrganizationWebhookConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganizationWebhookConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationWebhookHistoryHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationWebhookHistoryProcedure, svc.GetOrganizationWebhookHistory, - connect.WithSchema(platformServiceGetOrganizationWebhookHistoryMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationWebhookHistory")), connect.WithHandlerOptions(opts...), ) platformServiceGetWebhookDeliveryDetailsHandler := connect.NewUnaryHandler( PlatformServiceGetWebhookDeliveryDetailsProcedure, svc.GetWebhookDeliveryDetails, - connect.WithSchema(platformServiceGetWebhookDeliveryDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetWebhookDeliveryDetails")), connect.WithHandlerOptions(opts...), ) platformServiceRedeliverWebhookHandler := connect.NewUnaryHandler( PlatformServiceRedeliverWebhookProcedure, svc.RedeliverWebhook, - connect.WithSchema(platformServiceRedeliverWebhookMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RedeliverWebhook")), connect.WithHandlerOptions(opts...), ) platformServiceCreateIntegrationHandler := connect.NewUnaryHandler( PlatformServiceCreateIntegrationProcedure, svc.CreateIntegration, - connect.WithSchema(platformServiceCreateIntegrationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateIntegration")), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationIntegrationsHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationIntegrationsProcedure, svc.GetOrganizationIntegrations, - connect.WithSchema(platformServiceGetOrganizationIntegrationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationIntegrations")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateIntegrationConfigHandler := connect.NewUnaryHandler( PlatformServiceUpdateIntegrationConfigProcedure, svc.UpdateIntegrationConfig, - connect.WithSchema(platformServiceUpdateIntegrationConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateIntegrationConfig")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteIntegrationHandler := connect.NewUnaryHandler( PlatformServiceDeleteIntegrationProcedure, svc.DeleteIntegration, - connect.WithSchema(platformServiceDeleteIntegrationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteIntegration")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteUserHandler := connect.NewUnaryHandler( PlatformServiceDeleteUserProcedure, svc.DeleteUser, - connect.WithSchema(platformServiceDeleteUserMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteUser")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteOrganizationHandler := connect.NewUnaryHandler( PlatformServiceDeleteOrganizationProcedure, svc.DeleteOrganization, - connect.WithSchema(platformServiceDeleteOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOrganization")), connect.WithHandlerOptions(opts...), ) platformServiceRestoreOrganizationHandler := connect.NewUnaryHandler( PlatformServiceRestoreOrganizationProcedure, svc.RestoreOrganization, - connect.WithSchema(platformServiceRestoreOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RestoreOrganization")), connect.WithHandlerOptions(opts...), ) platformServiceLeaveOrganizationHandler := connect.NewUnaryHandler( PlatformServiceLeaveOrganizationProcedure, svc.LeaveOrganization, - connect.WithSchema(platformServiceLeaveOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("LeaveOrganization")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateOrganizationDetailsHandler := connect.NewUnaryHandler( PlatformServiceUpdateOrganizationDetailsProcedure, svc.UpdateOrganizationDetails, - connect.WithSchema(platformServiceUpdateOrganizationDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationDetails")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateOrgMemberGroupHandler := connect.NewUnaryHandler( PlatformServiceUpdateOrgMemberGroupProcedure, svc.UpdateOrgMemberGroup, - connect.WithSchema(platformServiceUpdateOrgMemberGroupMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateOrgMemberGroup")), connect.WithHandlerOptions(opts...), ) platformServiceIsGitHubAppInstalledHandler := connect.NewUnaryHandler( PlatformServiceIsGitHubAppInstalledProcedure, svc.IsGitHubAppInstalled, - connect.WithSchema(platformServiceIsGitHubAppInstalledMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("IsGitHubAppInstalled")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOIDCProviderHandler := connect.NewUnaryHandler( PlatformServiceCreateOIDCProviderProcedure, svc.CreateOIDCProvider, - connect.WithSchema(platformServiceCreateOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOIDCProvider")), connect.WithHandlerOptions(opts...), ) platformServiceGetOIDCProviderHandler := connect.NewUnaryHandler( PlatformServiceGetOIDCProviderProcedure, svc.GetOIDCProvider, - connect.WithSchema(platformServiceGetOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOIDCProvider")), + connect.WithHandlerOptions(opts...), + ) + platformServiceListOIDCProvidersHandler := connect.NewUnaryHandler( + PlatformServiceListOIDCProvidersProcedure, + svc.ListOIDCProviders, + connect.WithSchema(platformServiceMethods.ByName("ListOIDCProviders")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteOIDCProviderHandler := connect.NewUnaryHandler( PlatformServiceDeleteOIDCProviderProcedure, svc.DeleteOIDCProvider, - connect.WithSchema(platformServiceDeleteOIDCProviderMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteOIDCProvider")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateIDPMappersHandler := connect.NewUnaryHandler( PlatformServiceUpdateIDPMappersProcedure, svc.UpdateIDPMappers, - connect.WithSchema(platformServiceUpdateIDPMappersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateIDPMappers")), connect.WithHandlerOptions(opts...), ) platformServiceGetClientsHandler := connect.NewUnaryHandler( PlatformServiceGetClientsProcedure, svc.GetClients, - connect.WithSchema(platformServiceGetClientsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetClients")), connect.WithHandlerOptions(opts...), ) platformServiceGetRoutersHandler := connect.NewUnaryHandler( PlatformServiceGetRoutersProcedure, svc.GetRouters, - connect.WithSchema(platformServiceGetRoutersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetRouters")), connect.WithHandlerOptions(opts...), ) platformServiceGetInvitationsHandler := connect.NewUnaryHandler( PlatformServiceGetInvitationsProcedure, svc.GetInvitations, - connect.WithSchema(platformServiceGetInvitationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetInvitations")), connect.WithHandlerOptions(opts...), ) platformServiceAcceptOrDeclineInvitationHandler := connect.NewUnaryHandler( PlatformServiceAcceptOrDeclineInvitationProcedure, svc.AcceptOrDeclineInvitation, - connect.WithSchema(platformServiceAcceptOrDeclineInvitationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("AcceptOrDeclineInvitation")), connect.WithHandlerOptions(opts...), ) platformServiceGetCompositionsHandler := connect.NewUnaryHandler( PlatformServiceGetCompositionsProcedure, svc.GetCompositions, - connect.WithSchema(platformServiceGetCompositionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCompositions")), connect.WithHandlerOptions(opts...), ) platformServiceGetCompositionDetailsHandler := connect.NewUnaryHandler( PlatformServiceGetCompositionDetailsProcedure, svc.GetCompositionDetails, - connect.WithSchema(platformServiceGetCompositionDetailsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCompositionDetails")), connect.WithHandlerOptions(opts...), ) platformServiceGetSdlBySchemaVersionHandler := connect.NewUnaryHandler( PlatformServiceGetSdlBySchemaVersionProcedure, svc.GetSdlBySchemaVersion, - connect.WithSchema(platformServiceGetSdlBySchemaVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSdlBySchemaVersion")), connect.WithHandlerOptions(opts...), ) platformServiceGetChangelogBySchemaVersionHandler := connect.NewUnaryHandler( PlatformServiceGetChangelogBySchemaVersionProcedure, svc.GetChangelogBySchemaVersion, - connect.WithSchema(platformServiceGetChangelogBySchemaVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetChangelogBySchemaVersion")), connect.WithHandlerOptions(opts...), ) platformServiceGetUserAccessibleResourcesHandler := connect.NewUnaryHandler( PlatformServiceGetUserAccessibleResourcesProcedure, svc.GetUserAccessibleResources, - connect.WithSchema(platformServiceGetUserAccessibleResourcesMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetUserAccessibleResources")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateFeatureSettingsHandler := connect.NewUnaryHandler( PlatformServiceUpdateFeatureSettingsProcedure, svc.UpdateFeatureSettings, - connect.WithSchema(platformServiceUpdateFeatureSettingsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFeatureSettings")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphMembersHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphMembersProcedure, svc.GetSubgraphMembers, - connect.WithSchema(platformServiceGetSubgraphMembersMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMembers")), connect.WithHandlerOptions(opts...), ) platformServiceAddReadmeHandler := connect.NewUnaryHandler( PlatformServiceAddReadmeProcedure, svc.AddReadme, - connect.WithSchema(platformServiceAddReadmeMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("AddReadme")), connect.WithHandlerOptions(opts...), ) platformServiceGetUserAccessiblePermissionsHandler := connect.NewUnaryHandler( PlatformServiceGetUserAccessiblePermissionsProcedure, svc.GetUserAccessiblePermissions, - connect.WithSchema(platformServiceGetUserAccessiblePermissionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetUserAccessiblePermissions")), connect.WithHandlerOptions(opts...), ) platformServiceCreateFeatureFlagHandler := connect.NewUnaryHandler( PlatformServiceCreateFeatureFlagProcedure, svc.CreateFeatureFlag, - connect.WithSchema(platformServiceCreateFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateFeatureFlag")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteFeatureFlagHandler := connect.NewUnaryHandler( PlatformServiceDeleteFeatureFlagProcedure, svc.DeleteFeatureFlag, - connect.WithSchema(platformServiceDeleteFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteFeatureFlag")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateFeatureFlagHandler := connect.NewUnaryHandler( PlatformServiceUpdateFeatureFlagProcedure, svc.UpdateFeatureFlag, - connect.WithSchema(platformServiceUpdateFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateFeatureFlag")), connect.WithHandlerOptions(opts...), ) platformServiceEnableFeatureFlagHandler := connect.NewUnaryHandler( PlatformServiceEnableFeatureFlagProcedure, svc.EnableFeatureFlag, - connect.WithSchema(platformServiceEnableFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableFeatureFlag")), connect.WithHandlerOptions(opts...), ) platformServiceGetAnalyticsViewHandler := connect.NewUnaryHandler( PlatformServiceGetAnalyticsViewProcedure, svc.GetAnalyticsView, - connect.WithSchema(platformServiceGetAnalyticsViewMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetAnalyticsView")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetDashboardAnalyticsViewHandler := connect.NewUnaryHandler( PlatformServiceGetDashboardAnalyticsViewProcedure, svc.GetDashboardAnalyticsView, - connect.WithSchema(platformServiceGetDashboardAnalyticsViewMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetDashboardAnalyticsView")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetTraceHandler := connect.NewUnaryHandler( PlatformServiceGetTraceProcedure, svc.GetTrace, - connect.WithSchema(platformServiceGetTraceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetTrace")), connect.WithHandlerOptions(opts...), ) platformServiceGetGraphMetricsHandler := connect.NewUnaryHandler( PlatformServiceGetGraphMetricsProcedure, svc.GetGraphMetrics, - connect.WithSchema(platformServiceGetGraphMetricsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetGraphMetrics")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetMetricsErrorRateHandler := connect.NewUnaryHandler( PlatformServiceGetMetricsErrorRateProcedure, svc.GetMetricsErrorRate, - connect.WithSchema(platformServiceGetMetricsErrorRateMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetMetricsErrorRate")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphMetricsHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphMetricsProcedure, svc.GetSubgraphMetrics, - connect.WithSchema(platformServiceGetSubgraphMetricsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMetrics")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphMetricsErrorRateHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphMetricsErrorRateProcedure, svc.GetSubgraphMetricsErrorRate, - connect.WithSchema(platformServiceGetSubgraphMetricsErrorRateMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphMetricsErrorRate")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetFieldUsageHandler := connect.NewUnaryHandler( PlatformServiceGetFieldUsageProcedure, svc.GetFieldUsage, - connect.WithSchema(platformServiceGetFieldUsageMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFieldUsage")), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) platformServiceGetOrganizationRequestsCountHandler := connect.NewUnaryHandler( PlatformServiceGetOrganizationRequestsCountProcedure, svc.GetOrganizationRequestsCount, - connect.WithSchema(platformServiceGetOrganizationRequestsCountMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationRequestsCount")), connect.WithHandlerOptions(opts...), ) platformServiceCreateOrganizationHandler := connect.NewUnaryHandler( PlatformServiceCreateOrganizationProcedure, svc.CreateOrganization, - connect.WithSchema(platformServiceCreateOrganizationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateOrganization")), connect.WithHandlerOptions(opts...), ) platformServiceEnableLintingForTheNamespaceHandler := connect.NewUnaryHandler( PlatformServiceEnableLintingForTheNamespaceProcedure, svc.EnableLintingForTheNamespace, - connect.WithSchema(platformServiceEnableLintingForTheNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableLintingForTheNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceConfigureNamespaceLintConfigHandler := connect.NewUnaryHandler( PlatformServiceConfigureNamespaceLintConfigProcedure, svc.ConfigureNamespaceLintConfig, - connect.WithSchema(platformServiceConfigureNamespaceLintConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceLintConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespaceLintConfigHandler := connect.NewUnaryHandler( PlatformServiceGetNamespaceLintConfigProcedure, svc.GetNamespaceLintConfig, - connect.WithSchema(platformServiceGetNamespaceLintConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceLintConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespaceChecksConfigHandler := connect.NewUnaryHandler( PlatformServiceGetNamespaceChecksConfigProcedure, svc.GetNamespaceChecksConfig, - connect.WithSchema(platformServiceGetNamespaceChecksConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceChecksConfig")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateNamespaceChecksConfigHandler := connect.NewUnaryHandler( PlatformServiceUpdateNamespaceChecksConfigProcedure, svc.UpdateNamespaceChecksConfig, - connect.WithSchema(platformServiceUpdateNamespaceChecksConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateNamespaceChecksConfig")), connect.WithHandlerOptions(opts...), ) platformServiceEnableGraphPruningHandler := connect.NewUnaryHandler( PlatformServiceEnableGraphPruningProcedure, svc.EnableGraphPruning, - connect.WithSchema(platformServiceEnableGraphPruningMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableGraphPruning")), connect.WithHandlerOptions(opts...), ) platformServiceConfigureNamespaceGraphPruningConfigHandler := connect.NewUnaryHandler( PlatformServiceConfigureNamespaceGraphPruningConfigProcedure, svc.ConfigureNamespaceGraphPruningConfig, - connect.WithSchema(platformServiceConfigureNamespaceGraphPruningConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceGraphPruningConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespaceGraphPruningConfigHandler := connect.NewUnaryHandler( PlatformServiceGetNamespaceGraphPruningConfigProcedure, svc.GetNamespaceGraphPruningConfig, - connect.WithSchema(platformServiceGetNamespaceGraphPruningConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceGraphPruningConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetFeatureFlagsHandler := connect.NewUnaryHandler( PlatformServiceGetFeatureFlagsProcedure, svc.GetFeatureFlags, - connect.WithSchema(platformServiceGetFeatureFlagsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlags")), connect.WithHandlerOptions(opts...), ) platformServiceGetFeatureFlagByNameHandler := connect.NewUnaryHandler( PlatformServiceGetFeatureFlagByNameProcedure, svc.GetFeatureFlagByName, - connect.WithSchema(platformServiceGetFeatureFlagByNameMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagByName")), connect.WithHandlerOptions(opts...), ) platformServiceGetFeatureSubgraphsByFeatureFlagHandler := connect.NewUnaryHandler( PlatformServiceGetFeatureSubgraphsByFeatureFlagProcedure, svc.GetFeatureSubgraphsByFeatureFlag, - connect.WithSchema(platformServiceGetFeatureSubgraphsByFeatureFlagMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphsByFeatureFlag")), connect.WithHandlerOptions(opts...), ) platformServiceGetFeatureSubgraphsHandler := connect.NewUnaryHandler( PlatformServiceGetFeatureSubgraphsProcedure, svc.GetFeatureSubgraphs, - connect.WithSchema(platformServiceGetFeatureSubgraphsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphs")), connect.WithHandlerOptions(opts...), ) platformServiceGetFeatureFlagsByFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceGetFeatureFlagsByFederatedGraphProcedure, svc.GetFeatureFlagsByFederatedGraph, - connect.WithSchema(platformServiceGetFeatureFlagsByFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagsByFederatedGraph")), + connect.WithHandlerOptions(opts...), + ) + platformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphHandler := connect.NewUnaryHandler( + PlatformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphProcedure, + svc.GetFeatureFlagsInLatestCompositionByFederatedGraph, + connect.WithSchema(platformServiceMethods.ByName("GetFeatureFlagsInLatestCompositionByFederatedGraph")), + connect.WithHandlerOptions(opts...), + ) + platformServiceGetFeatureSubgraphsByFederatedGraphHandler := connect.NewUnaryHandler( + PlatformServiceGetFeatureSubgraphsByFederatedGraphProcedure, + svc.GetFeatureSubgraphsByFederatedGraph, + connect.WithSchema(platformServiceMethods.ByName("GetFeatureSubgraphsByFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceGetFederatedGraphByIdHandler := connect.NewUnaryHandler( PlatformServiceGetFederatedGraphByIdProcedure, svc.GetFederatedGraphById, - connect.WithSchema(platformServiceGetFederatedGraphByIdMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetFederatedGraphById")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphByIdHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphByIdProcedure, svc.GetSubgraphById, - connect.WithSchema(platformServiceGetSubgraphByIdMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphById")), connect.WithHandlerOptions(opts...), ) platformServicePushCacheWarmerOperationHandler := connect.NewUnaryHandler( PlatformServicePushCacheWarmerOperationProcedure, svc.PushCacheWarmerOperation, - connect.WithSchema(platformServicePushCacheWarmerOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("PushCacheWarmerOperation")), connect.WithHandlerOptions(opts...), ) platformServiceGetCacheWarmerOperationsHandler := connect.NewUnaryHandler( PlatformServiceGetCacheWarmerOperationsProcedure, svc.GetCacheWarmerOperations, - connect.WithSchema(platformServiceGetCacheWarmerOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCacheWarmerOperations")), connect.WithHandlerOptions(opts...), ) platformServiceComputeCacheWarmerOperationsHandler := connect.NewUnaryHandler( PlatformServiceComputeCacheWarmerOperationsProcedure, svc.ComputeCacheWarmerOperations, - connect.WithSchema(platformServiceComputeCacheWarmerOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ComputeCacheWarmerOperations")), connect.WithHandlerOptions(opts...), ) platformServiceConfigureCacheWarmerHandler := connect.NewUnaryHandler( PlatformServiceConfigureCacheWarmerProcedure, svc.ConfigureCacheWarmer, - connect.WithSchema(platformServiceConfigureCacheWarmerMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureCacheWarmer")), connect.WithHandlerOptions(opts...), ) platformServiceGetCacheWarmerConfigHandler := connect.NewUnaryHandler( PlatformServiceGetCacheWarmerConfigProcedure, svc.GetCacheWarmerConfig, - connect.WithSchema(platformServiceGetCacheWarmerConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetCacheWarmerConfig")), connect.WithHandlerOptions(opts...), ) platformServiceDeleteCacheWarmerOperationHandler := connect.NewUnaryHandler( PlatformServiceDeleteCacheWarmerOperationProcedure, svc.DeleteCacheWarmerOperation, - connect.WithSchema(platformServiceDeleteCacheWarmerOperationMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("DeleteCacheWarmerOperation")), connect.WithHandlerOptions(opts...), ) platformServiceGetSubgraphCheckExtensionsConfigHandler := connect.NewUnaryHandler( PlatformServiceGetSubgraphCheckExtensionsConfigProcedure, svc.GetSubgraphCheckExtensionsConfig, - connect.WithSchema(platformServiceGetSubgraphCheckExtensionsConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetSubgraphCheckExtensionsConfig")), connect.WithHandlerOptions(opts...), ) platformServiceConfigureSubgraphCheckExtensionsHandler := connect.NewUnaryHandler( PlatformServiceConfigureSubgraphCheckExtensionsProcedure, svc.ConfigureSubgraphCheckExtensions, - connect.WithSchema(platformServiceConfigureSubgraphCheckExtensionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureSubgraphCheckExtensions")), connect.WithHandlerOptions(opts...), ) platformServiceGetBillingPlansHandler := connect.NewUnaryHandler( PlatformServiceGetBillingPlansProcedure, svc.GetBillingPlans, - connect.WithSchema(platformServiceGetBillingPlansMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetBillingPlans")), connect.WithHandlerOptions(opts...), ) platformServiceCreateCheckoutSessionHandler := connect.NewUnaryHandler( PlatformServiceCreateCheckoutSessionProcedure, svc.CreateCheckoutSession, - connect.WithSchema(platformServiceCreateCheckoutSessionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateCheckoutSession")), connect.WithHandlerOptions(opts...), ) platformServiceCreateBillingPortalSessionHandler := connect.NewUnaryHandler( PlatformServiceCreateBillingPortalSessionProcedure, svc.CreateBillingPortalSession, - connect.WithSchema(platformServiceCreateBillingPortalSessionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateBillingPortalSession")), connect.WithHandlerOptions(opts...), ) platformServiceUpgradePlanHandler := connect.NewUnaryHandler( PlatformServiceUpgradePlanProcedure, svc.UpgradePlan, - connect.WithSchema(platformServiceUpgradePlanMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpgradePlan")), connect.WithHandlerOptions(opts...), ) platformServiceListRouterCompatibilityVersionsHandler := connect.NewUnaryHandler( PlatformServiceListRouterCompatibilityVersionsProcedure, svc.ListRouterCompatibilityVersions, - connect.WithSchema(platformServiceListRouterCompatibilityVersionsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ListRouterCompatibilityVersions")), connect.WithHandlerOptions(opts...), ) platformServiceSetGraphRouterCompatibilityVersionHandler := connect.NewUnaryHandler( PlatformServiceSetGraphRouterCompatibilityVersionProcedure, svc.SetGraphRouterCompatibilityVersion, - connect.WithSchema(platformServiceSetGraphRouterCompatibilityVersionMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("SetGraphRouterCompatibilityVersion")), connect.WithHandlerOptions(opts...), ) platformServiceCreateProposalHandler := connect.NewUnaryHandler( PlatformServiceCreateProposalProcedure, svc.CreateProposal, - connect.WithSchema(platformServiceCreateProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("CreateProposal")), connect.WithHandlerOptions(opts...), ) platformServiceGetProposalHandler := connect.NewUnaryHandler( PlatformServiceGetProposalProcedure, svc.GetProposal, - connect.WithSchema(platformServiceGetProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposal")), connect.WithHandlerOptions(opts...), ) platformServiceUpdateProposalHandler := connect.NewUnaryHandler( PlatformServiceUpdateProposalProcedure, svc.UpdateProposal, - connect.WithSchema(platformServiceUpdateProposalMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UpdateProposal")), connect.WithHandlerOptions(opts...), ) platformServiceEnableProposalsForNamespaceHandler := connect.NewUnaryHandler( PlatformServiceEnableProposalsForNamespaceProcedure, svc.EnableProposalsForNamespace, - connect.WithSchema(platformServiceEnableProposalsForNamespaceMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("EnableProposalsForNamespace")), connect.WithHandlerOptions(opts...), ) platformServiceConfigureNamespaceProposalConfigHandler := connect.NewUnaryHandler( PlatformServiceConfigureNamespaceProposalConfigProcedure, svc.ConfigureNamespaceProposalConfig, - connect.WithSchema(platformServiceConfigureNamespaceProposalConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ConfigureNamespaceProposalConfig")), connect.WithHandlerOptions(opts...), ) platformServiceGetNamespaceProposalConfigHandler := connect.NewUnaryHandler( PlatformServiceGetNamespaceProposalConfigProcedure, svc.GetNamespaceProposalConfig, - connect.WithSchema(platformServiceGetNamespaceProposalConfigMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetNamespaceProposalConfig")), + connect.WithHandlerOptions(opts...), + ) + platformServiceUpdateNamespaceLoginMethodsHandler := connect.NewUnaryHandler( + PlatformServiceUpdateNamespaceLoginMethodsProcedure, + svc.UpdateNamespaceLoginMethods, + connect.WithSchema(platformServiceMethods.ByName("UpdateNamespaceLoginMethods")), + connect.WithHandlerOptions(opts...), + ) + platformServiceListNamespaceLoginMethodsHandler := connect.NewUnaryHandler( + PlatformServiceListNamespaceLoginMethodsProcedure, + svc.ListNamespaceLoginMethods, + connect.WithSchema(platformServiceMethods.ByName("ListNamespaceLoginMethods")), + connect.WithHandlerOptions(opts...), + ) + platformServiceGetOrganizationLoginMethodsHandler := connect.NewUnaryHandler( + PlatformServiceGetOrganizationLoginMethodsProcedure, + svc.GetOrganizationLoginMethods, + connect.WithSchema(platformServiceMethods.ByName("GetOrganizationLoginMethods")), + connect.WithHandlerOptions(opts...), + ) + platformServiceUpdateOrganizationLoginMethodsHandler := connect.NewUnaryHandler( + PlatformServiceUpdateOrganizationLoginMethodsProcedure, + svc.UpdateOrganizationLoginMethods, + connect.WithSchema(platformServiceMethods.ByName("UpdateOrganizationLoginMethods")), connect.WithHandlerOptions(opts...), ) platformServiceGetProposalsByFederatedGraphHandler := connect.NewUnaryHandler( PlatformServiceGetProposalsByFederatedGraphProcedure, svc.GetProposalsByFederatedGraph, - connect.WithSchema(platformServiceGetProposalsByFederatedGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposalsByFederatedGraph")), connect.WithHandlerOptions(opts...), ) platformServiceGetProposalChecksHandler := connect.NewUnaryHandler( PlatformServiceGetProposalChecksProcedure, svc.GetProposalChecks, - connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetProposalChecks")), connect.WithHandlerOptions(opts...), ) platformServiceGetOperationsHandler := connect.NewUnaryHandler( PlatformServiceGetOperationsProcedure, svc.GetOperations, - connect.WithSchema(platformServiceGetOperationsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperations")), connect.WithHandlerOptions(opts...), ) platformServiceGetClientsFromAnalyticsHandler := connect.NewUnaryHandler( PlatformServiceGetClientsFromAnalyticsProcedure, svc.GetClientsFromAnalytics, - connect.WithSchema(platformServiceGetClientsFromAnalyticsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetClientsFromAnalytics")), connect.WithHandlerOptions(opts...), ) platformServiceGetOperationClientsHandler := connect.NewUnaryHandler( PlatformServiceGetOperationClientsProcedure, svc.GetOperationClients, - connect.WithSchema(platformServiceGetOperationClientsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationClients")), connect.WithHandlerOptions(opts...), ) platformServiceGetOperationDeprecatedFieldsHandler := connect.NewUnaryHandler( PlatformServiceGetOperationDeprecatedFieldsProcedure, svc.GetOperationDeprecatedFields, - connect.WithSchema(platformServiceGetOperationDeprecatedFieldsMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("GetOperationDeprecatedFields")), connect.WithHandlerOptions(opts...), ) platformServiceValidateAndFetchPluginDataHandler := connect.NewUnaryHandler( PlatformServiceValidateAndFetchPluginDataProcedure, svc.ValidateAndFetchPluginData, - connect.WithSchema(platformServiceValidateAndFetchPluginDataMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("ValidateAndFetchPluginData")), connect.WithHandlerOptions(opts...), ) platformServiceLinkSubgraphHandler := connect.NewUnaryHandler( PlatformServiceLinkSubgraphProcedure, svc.LinkSubgraph, - connect.WithSchema(platformServiceLinkSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("LinkSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceUnlinkSubgraphHandler := connect.NewUnaryHandler( PlatformServiceUnlinkSubgraphProcedure, svc.UnlinkSubgraph, - connect.WithSchema(platformServiceUnlinkSubgraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("UnlinkSubgraph")), connect.WithHandlerOptions(opts...), ) platformServiceVerifyAPIKeyGraphAccessHandler := connect.NewUnaryHandler( PlatformServiceVerifyAPIKeyGraphAccessProcedure, svc.VerifyAPIKeyGraphAccess, - connect.WithSchema(platformServiceVerifyAPIKeyGraphAccessMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("VerifyAPIKeyGraphAccess")), connect.WithHandlerOptions(opts...), ) platformServiceRecomposeGraphHandler := connect.NewUnaryHandler( PlatformServiceRecomposeGraphProcedure, svc.RecomposeGraph, - connect.WithSchema(platformServiceRecomposeGraphMethodDescriptor), + connect.WithSchema(platformServiceMethods.ByName("RecomposeGraph")), + connect.WithHandlerOptions(opts...), + ) + platformServiceRecomposeFeatureFlagHandler := connect.NewUnaryHandler( + PlatformServiceRecomposeFeatureFlagProcedure, + svc.RecomposeFeatureFlag, + connect.WithSchema(platformServiceMethods.ByName("RecomposeFeatureFlag")), + connect.WithHandlerOptions(opts...), + ) + platformServiceGetOnboardingHandler := connect.NewUnaryHandler( + PlatformServiceGetOnboardingProcedure, + svc.GetOnboarding, + connect.WithSchema(platformServiceMethods.ByName("GetOnboarding")), + connect.WithHandlerOptions(opts...), + ) + platformServiceCreateOnboardingHandler := connect.NewUnaryHandler( + PlatformServiceCreateOnboardingProcedure, + svc.CreateOnboarding, + connect.WithSchema(platformServiceMethods.ByName("CreateOnboarding")), + connect.WithHandlerOptions(opts...), + ) + platformServiceFinishOnboardingHandler := connect.NewUnaryHandler( + PlatformServiceFinishOnboardingProcedure, + svc.FinishOnboarding, + connect.WithSchema(platformServiceMethods.ByName("FinishOnboarding")), connect.WithHandlerOptions(opts...), ) return "/wg.cosmo.platform.v1.PlatformService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -4757,6 +4904,8 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceCreateFederatedSubgraphHandler.ServeHTTP(w, r) case PlatformServicePublishFederatedSubgraphProcedure: platformServicePublishFederatedSubgraphHandler.ServeHTTP(w, r) + case PlatformServicePublishFederatedSubgraphsProcedure: + platformServicePublishFederatedSubgraphsHandler.ServeHTTP(w, r) case PlatformServiceCreateFederatedGraphProcedure: platformServiceCreateFederatedGraphHandler.ServeHTTP(w, r) case PlatformServiceDeleteFederatedGraphProcedure: @@ -4853,6 +5002,8 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceIsMemberLimitReachedHandler.ServeHTTP(w, r) case PlatformServiceInviteUserProcedure: platformServiceInviteUserHandler.ServeHTTP(w, r) + case PlatformServiceInviteUsersProcedure: + platformServiceInviteUsersHandler.ServeHTTP(w, r) case PlatformServiceGetAPIKeysProcedure: platformServiceGetAPIKeysHandler.ServeHTTP(w, r) case PlatformServiceCreateAPIKeyProcedure: @@ -4919,6 +5070,8 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceCreateOIDCProviderHandler.ServeHTTP(w, r) case PlatformServiceGetOIDCProviderProcedure: platformServiceGetOIDCProviderHandler.ServeHTTP(w, r) + case PlatformServiceListOIDCProvidersProcedure: + platformServiceListOIDCProvidersHandler.ServeHTTP(w, r) case PlatformServiceDeleteOIDCProviderProcedure: platformServiceDeleteOIDCProviderHandler.ServeHTTP(w, r) case PlatformServiceUpdateIDPMappersProcedure: @@ -5003,6 +5156,10 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceGetFeatureSubgraphsHandler.ServeHTTP(w, r) case PlatformServiceGetFeatureFlagsByFederatedGraphProcedure: platformServiceGetFeatureFlagsByFederatedGraphHandler.ServeHTTP(w, r) + case PlatformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphProcedure: + platformServiceGetFeatureFlagsInLatestCompositionByFederatedGraphHandler.ServeHTTP(w, r) + case PlatformServiceGetFeatureSubgraphsByFederatedGraphProcedure: + platformServiceGetFeatureSubgraphsByFederatedGraphHandler.ServeHTTP(w, r) case PlatformServiceGetFederatedGraphByIdProcedure: platformServiceGetFederatedGraphByIdHandler.ServeHTTP(w, r) case PlatformServiceGetSubgraphByIdProcedure: @@ -5047,6 +5204,14 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceConfigureNamespaceProposalConfigHandler.ServeHTTP(w, r) case PlatformServiceGetNamespaceProposalConfigProcedure: platformServiceGetNamespaceProposalConfigHandler.ServeHTTP(w, r) + case PlatformServiceUpdateNamespaceLoginMethodsProcedure: + platformServiceUpdateNamespaceLoginMethodsHandler.ServeHTTP(w, r) + case PlatformServiceListNamespaceLoginMethodsProcedure: + platformServiceListNamespaceLoginMethodsHandler.ServeHTTP(w, r) + case PlatformServiceGetOrganizationLoginMethodsProcedure: + platformServiceGetOrganizationLoginMethodsHandler.ServeHTTP(w, r) + case PlatformServiceUpdateOrganizationLoginMethodsProcedure: + platformServiceUpdateOrganizationLoginMethodsHandler.ServeHTTP(w, r) case PlatformServiceGetProposalsByFederatedGraphProcedure: platformServiceGetProposalsByFederatedGraphHandler.ServeHTTP(w, r) case PlatformServiceGetProposalChecksProcedure: @@ -5069,6 +5234,14 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceVerifyAPIKeyGraphAccessHandler.ServeHTTP(w, r) case PlatformServiceRecomposeGraphProcedure: platformServiceRecomposeGraphHandler.ServeHTTP(w, r) + case PlatformServiceRecomposeFeatureFlagProcedure: + platformServiceRecomposeFeatureFlagHandler.ServeHTTP(w, r) + case PlatformServiceGetOnboardingProcedure: + platformServiceGetOnboardingHandler.ServeHTTP(w, r) + case PlatformServiceCreateOnboardingProcedure: + platformServiceCreateOnboardingHandler.ServeHTTP(w, r) + case PlatformServiceFinishOnboardingProcedure: + platformServiceFinishOnboardingHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -5166,6 +5339,10 @@ func (UnimplementedPlatformServiceHandler) PublishFederatedSubgraph(context.Cont return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph is not implemented")) } +func (UnimplementedPlatformServiceHandler) PublishFederatedSubgraphs(context.Context, *connect.Request[v1.PublishFederatedSubgraphsRequest]) (*connect.Response[v1.PublishFederatedSubgraphsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs is not implemented")) +} + func (UnimplementedPlatformServiceHandler) CreateFederatedGraph(context.Context, *connect.Request[v1.CreateFederatedGraphRequest]) (*connect.Response[v1.CreateFederatedGraphResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph is not implemented")) } @@ -5358,6 +5535,10 @@ func (UnimplementedPlatformServiceHandler) InviteUser(context.Context, *connect. return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.InviteUser is not implemented")) } +func (UnimplementedPlatformServiceHandler) InviteUsers(context.Context, *connect.Request[v1.InviteUsersRequest]) (*connect.Response[v1.InviteUsersResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.InviteUsers is not implemented")) +} + func (UnimplementedPlatformServiceHandler) GetAPIKeys(context.Context, *connect.Request[v1.GetAPIKeysRequest]) (*connect.Response[v1.GetAPIKeysResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetAPIKeys is not implemented")) } @@ -5490,6 +5671,10 @@ func (UnimplementedPlatformServiceHandler) GetOIDCProvider(context.Context, *con return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetOIDCProvider is not implemented")) } +func (UnimplementedPlatformServiceHandler) ListOIDCProviders(context.Context, *connect.Request[v1.ListOIDCProvidersRequest]) (*connect.Response[v1.ListOIDCProvidersResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.ListOIDCProviders is not implemented")) +} + func (UnimplementedPlatformServiceHandler) DeleteOIDCProvider(context.Context, *connect.Request[v1.DeleteOIDCProviderRequest]) (*connect.Response[v1.DeleteOIDCProviderResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider is not implemented")) } @@ -5658,6 +5843,14 @@ func (UnimplementedPlatformServiceHandler) GetFeatureFlagsByFederatedGraph(conte return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph is not implemented")) } +func (UnimplementedPlatformServiceHandler) GetFeatureFlagsInLatestCompositionByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) GetFeatureSubgraphsByFederatedGraph(context.Context, *connect.Request[v1.GetFeatureSubgraphsByFederatedGraphRequest]) (*connect.Response[v1.GetFeatureSubgraphsByFederatedGraphResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph is not implemented")) +} + func (UnimplementedPlatformServiceHandler) GetFederatedGraphById(context.Context, *connect.Request[v1.GetFederatedGraphByIdRequest]) (*connect.Response[v1.GetFederatedGraphByIdResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById is not implemented")) } @@ -5746,6 +5939,22 @@ func (UnimplementedPlatformServiceHandler) GetNamespaceProposalConfig(context.Co return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig is not implemented")) } +func (UnimplementedPlatformServiceHandler) UpdateNamespaceLoginMethods(context.Context, *connect.Request[v1.UpdateNamespaceLoginMethodsRequest]) (*connect.Response[v1.UpdateNamespaceLoginMethodsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) ListNamespaceLoginMethods(context.Context, *connect.Request[v1.ListNamespaceLoginMethodsRequest]) (*connect.Response[v1.ListNamespaceLoginMethodsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) GetOrganizationLoginMethods(context.Context, *connect.Request[v1.GetOrganizationLoginMethodsRequest]) (*connect.Response[v1.GetOrganizationLoginMethodsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) UpdateOrganizationLoginMethods(context.Context, *connect.Request[v1.UpdateOrganizationLoginMethodsRequest]) (*connect.Response[v1.UpdateOrganizationLoginMethodsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods is not implemented")) +} + func (UnimplementedPlatformServiceHandler) GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph is not implemented")) } @@ -5789,3 +5998,19 @@ func (UnimplementedPlatformServiceHandler) VerifyAPIKeyGraphAccess(context.Conte func (UnimplementedPlatformServiceHandler) RecomposeGraph(context.Context, *connect.Request[v1.RecomposeGraphRequest]) (*connect.Response[v1.RecomposeGraphResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.RecomposeGraph is not implemented")) } + +func (UnimplementedPlatformServiceHandler) RecomposeFeatureFlag(context.Context, *connect.Request[v1.RecomposeFeatureFlagRequest]) (*connect.Response[v1.RecomposeFeatureFlagResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) GetOnboarding(context.Context, *connect.Request[v1.GetOnboardingRequest]) (*connect.Response[v1.GetOnboardingResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetOnboarding is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) CreateOnboarding(context.Context, *connect.Request[v1.CreateOnboardingRequest]) (*connect.Response[v1.CreateOnboardingResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.CreateOnboarding is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) FinishOnboarding(context.Context, *connect.Request[v1.FinishOnboardingRequest]) (*connect.Response[v1.FinishOnboardingResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.FinishOnboarding is not implemented")) +} diff --git a/connect/.gitattributes b/connect/.gitattributes new file mode 100644 index 0000000000..8b9fe49a58 --- /dev/null +++ b/connect/.gitattributes @@ -0,0 +1,3 @@ +# Generated TypeScript/JavaScript protobuf files +# Generated by: pnpm generate +src/** linguist-generated=true diff --git a/connect/CHANGELOG.md b/connect/CHANGELOG.md index a5539b087b..98b04a1ffd 100644 --- a/connect/CHANGELOG.md +++ b/connect/CHANGELOG.md @@ -4,6 +4,78 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.148.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.147.0...@wundergraph/cosmo-connect@0.148.0) (2026-06-06) + +### Features + +* **cli:** add subgraph batch-publish command ([#2899](https://github.com/wundergraph/cosmo/issues/2899)) ([9361a30](https://github.com/wundergraph/cosmo/commit/9361a3073dc207ae9bfb5b9661108c09b42028c8)) (@thisisnithin) + +# [0.147.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.146.0...@wundergraph/cosmo-connect@0.147.0) (2026-06-01) + +### Features + +* add functionality to restrict the login methods of an organization ([#2896](https://github.com/wundergraph/cosmo/issues/2896)) ([2c2cb71](https://github.com/wundergraph/cosmo/commit/2c2cb717f485666aa0bc94297d7c94469e0ce894)) (@JivusAyrus) + +# [0.146.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.145.0...@wundergraph/cosmo-connect@0.146.0) (2026-05-29) + +### Features + +* add options to restrict certain namespaces to certain login methods ([#2876](https://github.com/wundergraph/cosmo/issues/2876)) ([42b307b](https://github.com/wundergraph/cosmo/commit/42b307b1b5ec9d91d9fb4dad90ecae5e364ac189)) (@JivusAyrus) + +# [0.145.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.144.0...@wundergraph/cosmo-connect@0.145.0) (2026-05-27) + +### Features + +* declutter step 1 in the onboarding + new empty state ([#2888](https://github.com/wundergraph/cosmo/issues/2888)) ([89635b7](https://github.com/wundergraph/cosmo/commit/89635b75e4cb6ff893d6c4fbbe2b541cfc0dfa12)) (@comatory) + +# [0.144.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.143.0...@wundergraph/cosmo-connect@0.144.0) (2026-05-27) + +### Features + +* **dx:** add .gitattributes to collapse generated files in GitHub PRs ([#2891](https://github.com/wundergraph/cosmo/issues/2891)) ([b96296a](https://github.com/wundergraph/cosmo/commit/b96296acc66763fb59f9879573658350079fc19c)) (@comatory) +* studio handles analytics downtime gracefully ([#2878](https://github.com/wundergraph/cosmo/issues/2878)) ([716b786](https://github.com/wundergraph/cosmo/commit/716b786bd55008292015ec8950182aa61e98cb16)) (@comatory) + +# [0.143.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.142.1...@wundergraph/cosmo-connect@0.143.0) (2026-05-12) + +### Features + +* add feature flag recomposition support ([#2853](https://github.com/wundergraph/cosmo/issues/2853)) ([3f125a2](https://github.com/wundergraph/cosmo/commit/3f125a2effce36a1a2040f219bc1aa5a872aab93)) (@wilsonrivera) + +## [0.142.1](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.142.0...@wundergraph/cosmo-connect@0.142.1) (2026-05-01) + +**Note:** Version bump only for package @wundergraph/cosmo-connect + +# [0.142.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.141.0...@wundergraph/cosmo-connect@0.142.0) (2026-04-30) + +### Features + +* onboarding wizard ([#2790](https://github.com/wundergraph/cosmo/issues/2790)) ([3227519](https://github.com/wundergraph/cosmo/commit/3227519b3cc7b2dbc163856967bfe36cebf81887)) (@comatory) + +# [0.141.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.140.0...@wundergraph/cosmo-connect@0.141.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) +* **router:** support costs on arguments of directives ([#2781](https://github.com/wundergraph/cosmo/issues/2781)) ([b70a55b](https://github.com/wundergraph/cosmo/commit/b70a55b85b3f50468e3d1218d6746d51cc1b4733)) (@ysmolski) + +# [0.140.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.139.0...@wundergraph/cosmo-connect@0.140.0) (2026-04-16) + +### Features + +* add new endpoints for fetching feature flags and feature subgraphs by federated graph ([#2729](https://github.com/wundergraph/cosmo/issues/2729)) ([74f44a1](https://github.com/wundergraph/cosmo/commit/74f44a1614ef0976231b143b52203c5a9dd2034e)) (@JivusAyrus) + +# [0.139.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.138.0...@wundergraph/cosmo-connect@0.139.0) (2026-04-15) + +### Features + +* use email as main tracking field ([#2700](https://github.com/wundergraph/cosmo/issues/2700)) ([23fc31d](https://github.com/wundergraph/cosmo/commit/23fc31dd11c94fb242e6cec7b820b806a88d4cb6)) (@alepane21) + +# [0.138.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.137.0...@wundergraph/cosmo-connect@0.138.0) (2026-03-27) + +### Features + +* add server-side pagination to operation overrides with limit and offset parameters ([#2695](https://github.com/wundergraph/cosmo/issues/2695)) ([41bb6b9](https://github.com/wundergraph/cosmo/commit/41bb6b9bd149ac9a1eb153ebbeb1c0baf0196351)) (@JivusAyrus) + # [0.137.0](https://github.com/wundergraph/cosmo/compare/@wundergraph/cosmo-connect@0.136.0...@wundergraph/cosmo-connect@0.137.0) (2026-03-17) ### Features diff --git a/connect/package.json b/connect/package.json index b6564e2d30..b8aa289791 100644 --- a/connect/package.json +++ b/connect/package.json @@ -1,6 +1,6 @@ { "name": "@wundergraph/cosmo-connect", - "version": "0.137.0", + "version": "0.148.0", "description": "TypeScript Connect client for WunderGraph Cosmo", "scripts": { "build": "rm -rf dist && tsc" @@ -23,12 +23,12 @@ } }, "dependencies": { - "@bufbuild/protobuf": "1.9.0", - "@connectrpc/connect-query": "^1.4.1" + "@bufbuild/protobuf": "catalog:", + "@connectrpc/connect-query": "catalog:" }, "devDependencies": { - "del-cli": "^5.0.0", - "typescript": "^5.2.2" + "del-cli": "catalog:", + "typescript": "catalog:" }, "keywords": [ "wundergraph", diff --git a/connect/src/wg/cosmo/common/common_pb.ts b/connect/src/wg/cosmo/common/common_pb.ts index 5f6581652c..39f0f008ed 100644 --- a/connect/src/wg/cosmo/common/common_pb.ts +++ b/connect/src/wg/cosmo/common/common_pb.ts @@ -103,6 +103,11 @@ export enum EnumStatusCode { * @generated from enum value: ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL = 18; */ ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL = 18, + + /** + * @generated from enum value: WARN_PARTIAL_DATA = 19; + */ + WARN_PARTIAL_DATA = 19, } // Retrieve enum metadata with: proto3.getEnumType(EnumStatusCode) proto3.util.setEnumType(EnumStatusCode, "wg.cosmo.common.EnumStatusCode", [ @@ -125,6 +130,7 @@ proto3.util.setEnumType(EnumStatusCode, "wg.cosmo.common.EnumStatusCode", [ { no: 16, name: "ERR_UPGRADE_PLAN" }, { no: 17, name: "ERR_BAD_REQUEST" }, { no: 18, name: "ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL" }, + { no: 19, name: "WARN_PARTIAL_DATA" }, ]); /** diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 574f362b4c..b50794f361 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -965,6 +965,11 @@ export class FieldWeightConfiguration extends Message */ argumentWeights: { [key: string]: number } = {}; + /** + * @generated from field: map directive_argument_weights = 5; + */ + directiveArgumentWeights: { [key: string]: number } = {}; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -977,6 +982,7 @@ export class FieldWeightConfiguration extends Message { no: 2, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 3, name: "weight", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, { no: 4, name: "argument_weights", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 5 /* ScalarType.INT32 */} }, + { no: 5, name: "directive_argument_weights", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 5 /* ScalarType.INT32 */} }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): FieldWeightConfiguration { diff --git a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts index d557410015..2bd069c987 100644 --- a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts +++ b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts @@ -6,7 +6,7 @@ // @ts-nocheck import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOnboardingRequest, CreateOnboardingResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FinishOnboardingRequest, FinishOnboardingResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOnboardingRequest, GetOnboardingResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationLoginMethodsRequest, GetOrganizationLoginMethodsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, InviteUsersRequest, InviteUsersResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListNamespaceLoginMethodsRequest, ListNamespaceLoginMethodsResponse, ListOIDCProvidersRequest, ListOIDCProvidersResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishFederatedSubgraphsRequest, PublishFederatedSubgraphsResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeFeatureFlagRequest, RecomposeFeatureFlagResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateNamespaceLoginMethodsRequest, UpdateNamespaceLoginMethodsResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationLoginMethodsRequest, UpdateOrganizationLoginMethodsResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; /** * PlaygroundScripts @@ -338,6 +338,23 @@ export const publishFederatedSubgraph = { } } as const; +/** + * PublishFederatedSubgraphs pushes the schemas of multiple existing subgraphs to the control plane in a single + * request. Affected federated graphs (and their contracts / feature flags) are composed exactly once each. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs + */ +export const publishFederatedSubgraphs = { + localName: "publishFederatedSubgraphs", + name: "PublishFederatedSubgraphs", + kind: MethodKind.Unary, + I: PublishFederatedSubgraphsRequest, + O: PublishFederatedSubgraphsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * CreateFederatedGraph creates a federated graph on the control plane. * @@ -1102,6 +1119,22 @@ export const inviteUser = { } } as const; +/** + * InviteUsers invites multiple users to join the organization + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.InviteUsers + */ +export const inviteUsers = { + localName: "inviteUsers", + name: "InviteUsers", + kind: MethodKind.Unary, + I: InviteUsersRequest, + O: InviteUsersResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * GetAPIKeys returns a list of API keys of the organization * @@ -1631,6 +1664,22 @@ export const getOIDCProvider = { } } as const; +/** + * ListOIDCProviders lists all OIDC providers configured for the organization + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.ListOIDCProviders + */ +export const listOIDCProviders = { + localName: "listOIDCProviders", + name: "ListOIDCProviders", + kind: MethodKind.Unary, + I: ListOIDCProvidersRequest, + O: ListOIDCProvidersResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * DeleteOIDCProvider deletes the oidc provider connected the organization * @@ -2292,6 +2341,38 @@ export const getFeatureFlagsByFederatedGraph = { } } as const; +/** + * GetFeatureFlagsInLatestCompositionByFederatedGraph returns only the feature flags that are part of the latest valid composition. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph + */ +export const getFeatureFlagsInLatestCompositionByFederatedGraph = { + localName: "getFeatureFlagsInLatestCompositionByFederatedGraph", + name: "GetFeatureFlagsInLatestCompositionByFederatedGraph", + kind: MethodKind.Unary, + I: GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, + O: GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * GetFeatureSubgraphsByFederatedGraph returns the paginated list of unique feature subgraphs across all feature flags of the federated graph. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph + */ +export const getFeatureSubgraphsByFederatedGraph = { + localName: "getFeatureSubgraphsByFederatedGraph", + name: "GetFeatureSubgraphsByFederatedGraph", + kind: MethodKind.Unary, + I: GetFeatureSubgraphsByFederatedGraphRequest, + O: GetFeatureSubgraphsByFederatedGraphResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * GetFederatedGraphById returns the federated graph by id. * @@ -2644,6 +2725,70 @@ export const getNamespaceProposalConfig = { } } as const; +/** + * UpdateNamespaceLoginMethods replaces the org's per-namespace login-method configuration in one call. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods + */ +export const updateNamespaceLoginMethods = { + localName: "updateNamespaceLoginMethods", + name: "UpdateNamespaceLoginMethods", + kind: MethodKind.Unary, + I: UpdateNamespaceLoginMethodsRequest, + O: UpdateNamespaceLoginMethodsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * ListNamespaceLoginMethods returns the login-method configuration for every restricted namespace in the org. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods + */ +export const listNamespaceLoginMethods = { + localName: "listNamespaceLoginMethods", + name: "ListNamespaceLoginMethods", + kind: MethodKind.Unary, + I: ListNamespaceLoginMethodsRequest, + O: ListNamespaceLoginMethodsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * GetOrganizationLoginMethods returns the org's allowed login methods (empty restriction = all allowed). + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods + */ +export const getOrganizationLoginMethods = { + localName: "getOrganizationLoginMethods", + name: "GetOrganizationLoginMethods", + kind: MethodKind.Unary, + I: GetOrganizationLoginMethodsRequest, + O: GetOrganizationLoginMethodsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * UpdateOrganizationLoginMethods replaces the org's allowed login methods and reconciles namespace mappings. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods + */ +export const updateOrganizationLoginMethods = { + localName: "updateOrganizationLoginMethods", + name: "UpdateOrganizationLoginMethods", + kind: MethodKind.Unary, + I: UpdateOrganizationLoginMethodsRequest, + O: UpdateOrganizationLoginMethodsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * GetProposalsByFederatedGraph returns proposals for a federated graph. * @@ -2819,3 +2964,63 @@ export const recomposeGraph = { typeName: "wg.cosmo.platform.v1.PlatformService" } } as const; + +/** + * RecomposeFeatureFlag triggers a recomposition of the feature flag using its current subgraphs + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag + */ +export const recomposeFeatureFlag = { + localName: "recomposeFeatureFlag", + name: "RecomposeFeatureFlag", + kind: MethodKind.Unary, + I: RecomposeFeatureFlagRequest, + O: RecomposeFeatureFlagResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * Onboarding + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetOnboarding + */ +export const getOnboarding = { + localName: "getOnboarding", + name: "GetOnboarding", + kind: MethodKind.Unary, + I: GetOnboardingRequest, + O: GetOnboardingResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * @generated from rpc wg.cosmo.platform.v1.PlatformService.CreateOnboarding + */ +export const createOnboarding = { + localName: "createOnboarding", + name: "CreateOnboarding", + kind: MethodKind.Unary, + I: CreateOnboardingRequest, + O: CreateOnboardingResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * @generated from rpc wg.cosmo.platform.v1.PlatformService.FinishOnboarding + */ +export const finishOnboarding = { + localName: "finishOnboarding", + name: "FinishOnboarding", + kind: MethodKind.Unary, + I: FinishOnboardingRequest, + O: FinishOnboardingResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; diff --git a/connect/src/wg/cosmo/platform/v1/platform_connect.ts b/connect/src/wg/cosmo/platform/v1/platform_connect.ts index aa100453ac..7ef04e5d81 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_connect.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_connect.ts @@ -5,7 +5,7 @@ /* eslint-disable */ // @ts-nocheck -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOnboardingRequest, CreateOnboardingResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FinishOnboardingRequest, FinishOnboardingResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOnboardingRequest, GetOnboardingResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationLoginMethodsRequest, GetOrganizationLoginMethodsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, InviteUsersRequest, InviteUsersResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListNamespaceLoginMethodsRequest, ListNamespaceLoginMethodsResponse, ListOIDCProvidersRequest, ListOIDCProvidersResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishFederatedSubgraphsRequest, PublishFederatedSubgraphsResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeFeatureFlagRequest, RecomposeFeatureFlagResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateNamespaceLoginMethodsRequest, UpdateNamespaceLoginMethodsResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationLoginMethodsRequest, UpdateOrganizationLoginMethodsResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; /** @@ -234,6 +234,18 @@ export const PlatformService = { O: PublishFederatedSubgraphResponse, kind: MethodKind.Unary, }, + /** + * PublishFederatedSubgraphs pushes the schemas of multiple existing subgraphs to the control plane in a single + * request. Affected federated graphs (and their contracts / feature flags) are composed exactly once each. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraphs + */ + publishFederatedSubgraphs: { + name: "PublishFederatedSubgraphs", + I: PublishFederatedSubgraphsRequest, + O: PublishFederatedSubgraphsResponse, + kind: MethodKind.Unary, + }, /** * CreateFederatedGraph creates a federated graph on the control plane. * @@ -758,6 +770,17 @@ export const PlatformService = { O: InviteUserResponse, kind: MethodKind.Unary, }, + /** + * InviteUsers invites multiple users to join the organization + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.InviteUsers + */ + inviteUsers: { + name: "InviteUsers", + I: InviteUsersRequest, + O: InviteUsersResponse, + kind: MethodKind.Unary, + }, /** * GetAPIKeys returns a list of API keys of the organization * @@ -1122,6 +1145,17 @@ export const PlatformService = { O: GetOIDCProviderResponse, kind: MethodKind.Unary, }, + /** + * ListOIDCProviders lists all OIDC providers configured for the organization + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.ListOIDCProviders + */ + listOIDCProviders: { + name: "ListOIDCProviders", + I: ListOIDCProvidersRequest, + O: ListOIDCProvidersResponse, + kind: MethodKind.Unary, + }, /** * DeleteOIDCProvider deletes the oidc provider connected the organization * @@ -1573,6 +1607,28 @@ export const PlatformService = { O: GetFeatureFlagsByFederatedGraphResponse, kind: MethodKind.Unary, }, + /** + * GetFeatureFlagsInLatestCompositionByFederatedGraph returns only the feature flags that are part of the latest valid composition. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph + */ + getFeatureFlagsInLatestCompositionByFederatedGraph: { + name: "GetFeatureFlagsInLatestCompositionByFederatedGraph", + I: GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, + O: GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, + kind: MethodKind.Unary, + }, + /** + * GetFeatureSubgraphsByFederatedGraph returns the paginated list of unique feature subgraphs across all feature flags of the federated graph. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph + */ + getFeatureSubgraphsByFederatedGraph: { + name: "GetFeatureSubgraphsByFederatedGraph", + I: GetFeatureSubgraphsByFederatedGraphRequest, + O: GetFeatureSubgraphsByFederatedGraphResponse, + kind: MethodKind.Unary, + }, /** * GetFederatedGraphById returns the federated graph by id. * @@ -1815,6 +1871,50 @@ export const PlatformService = { O: GetNamespaceProposalConfigResponse, kind: MethodKind.Unary, }, + /** + * UpdateNamespaceLoginMethods replaces the org's per-namespace login-method configuration in one call. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.UpdateNamespaceLoginMethods + */ + updateNamespaceLoginMethods: { + name: "UpdateNamespaceLoginMethods", + I: UpdateNamespaceLoginMethodsRequest, + O: UpdateNamespaceLoginMethodsResponse, + kind: MethodKind.Unary, + }, + /** + * ListNamespaceLoginMethods returns the login-method configuration for every restricted namespace in the org. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.ListNamespaceLoginMethods + */ + listNamespaceLoginMethods: { + name: "ListNamespaceLoginMethods", + I: ListNamespaceLoginMethodsRequest, + O: ListNamespaceLoginMethodsResponse, + kind: MethodKind.Unary, + }, + /** + * GetOrganizationLoginMethods returns the org's allowed login methods (empty restriction = all allowed). + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetOrganizationLoginMethods + */ + getOrganizationLoginMethods: { + name: "GetOrganizationLoginMethods", + I: GetOrganizationLoginMethodsRequest, + O: GetOrganizationLoginMethodsResponse, + kind: MethodKind.Unary, + }, + /** + * UpdateOrganizationLoginMethods replaces the org's allowed login methods and reconciles namespace mappings. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.UpdateOrganizationLoginMethods + */ + updateOrganizationLoginMethods: { + name: "UpdateOrganizationLoginMethods", + I: UpdateOrganizationLoginMethodsRequest, + O: UpdateOrganizationLoginMethodsResponse, + kind: MethodKind.Unary, + }, /** * GetProposalsByFederatedGraph returns proposals for a federated graph. * @@ -1936,6 +2036,46 @@ export const PlatformService = { O: RecomposeGraphResponse, kind: MethodKind.Unary, }, + /** + * RecomposeFeatureFlag triggers a recomposition of the feature flag using its current subgraphs + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.RecomposeFeatureFlag + */ + recomposeFeatureFlag: { + name: "RecomposeFeatureFlag", + I: RecomposeFeatureFlagRequest, + O: RecomposeFeatureFlagResponse, + kind: MethodKind.Unary, + }, + /** + * Onboarding + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetOnboarding + */ + getOnboarding: { + name: "GetOnboarding", + I: GetOnboardingRequest, + O: GetOnboardingResponse, + kind: MethodKind.Unary, + }, + /** + * @generated from rpc wg.cosmo.platform.v1.PlatformService.CreateOnboarding + */ + createOnboarding: { + name: "CreateOnboarding", + I: CreateOnboardingRequest, + O: CreateOnboardingResponse, + kind: MethodKind.Unary, + }, + /** + * @generated from rpc wg.cosmo.platform.v1.PlatformService.FinishOnboarding + */ + finishOnboarding: { + name: "FinishOnboarding", + I: FinishOnboardingRequest, + O: FinishOnboardingResponse, + kind: MethodKind.Unary, + }, } } as const; diff --git a/connect/src/wg/cosmo/platform/v1/platform_pb.ts b/connect/src/wg/cosmo/platform/v1/platform_pb.ts index 4fbd6db724..c44b8bc88a 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_pb.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_pb.ts @@ -300,6 +300,70 @@ proto3.util.setEnumType(ExpiresAt, "wg.cosmo.platform.v1.ExpiresAt", [ { no: 3, name: "ONE_YEAR" }, ]); +/** + * @generated from enum wg.cosmo.platform.v1.LoginMethodType + */ +export enum LoginMethodType { + /** + * @generated from enum value: LOGIN_METHOD_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: LOGIN_METHOD_TYPE_SSO = 1; + */ + SSO = 1, + + /** + * @generated from enum value: LOGIN_METHOD_TYPE_PASSWORD = 2; + */ + PASSWORD = 2, + + /** + * @generated from enum value: LOGIN_METHOD_TYPE_API_KEY = 3; + */ + API_KEY = 3, + + /** + * @generated from enum value: LOGIN_METHOD_TYPE_SOCIAL = 4; + */ + SOCIAL = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(LoginMethodType) +proto3.util.setEnumType(LoginMethodType, "wg.cosmo.platform.v1.LoginMethodType", [ + { no: 0, name: "LOGIN_METHOD_TYPE_UNSPECIFIED" }, + { no: 1, name: "LOGIN_METHOD_TYPE_SSO" }, + { no: 2, name: "LOGIN_METHOD_TYPE_PASSWORD" }, + { no: 3, name: "LOGIN_METHOD_TYPE_API_KEY" }, + { no: 4, name: "LOGIN_METHOD_TYPE_SOCIAL" }, +]); + +/** + * @generated from enum wg.cosmo.platform.v1.SocialLoginProvider + */ +export enum SocialLoginProvider { + /** + * @generated from enum value: SOCIAL_LOGIN_PROVIDER_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: SOCIAL_LOGIN_PROVIDER_GOOGLE = 1; + */ + GOOGLE = 1, + + /** + * @generated from enum value: SOCIAL_LOGIN_PROVIDER_GITHUB = 2; + */ + GITHUB = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(SocialLoginProvider) +proto3.util.setEnumType(SocialLoginProvider, "wg.cosmo.platform.v1.SocialLoginProvider", [ + { no: 0, name: "SOCIAL_LOGIN_PROVIDER_UNSPECIFIED" }, + { no: 1, name: "SOCIAL_LOGIN_PROVIDER_GOOGLE" }, + { no: 2, name: "SOCIAL_LOGIN_PROVIDER_GITHUB" }, +]); + /** * @generated from enum wg.cosmo.platform.v1.PublishedOperationStatus */ @@ -1003,6 +1067,185 @@ export class SubgraphPublishStats extends Message { } } +/** + * A single subgraph entry to publish as part of a batch publish request. + * + * @generated from message wg.cosmo.platform.v1.PublishSubgraph + */ +export class PublishSubgraph extends Message { + /** + * The name of the subgraph to publish. + * + * @generated from field: string name = 1; + */ + name = ""; + + /** + * The schema to publish for the subgraph. + * + * @generated from field: string schema = 2; + */ + schema = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.PublishSubgraph"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "schema", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PublishSubgraph { + return new PublishSubgraph().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PublishSubgraph { + return new PublishSubgraph().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PublishSubgraph { + return new PublishSubgraph().fromJsonString(jsonString, options); + } + + static equals(a: PublishSubgraph | PlainMessage | undefined, b: PublishSubgraph | PlainMessage | undefined): boolean { + return proto3.util.equals(PublishSubgraph, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest + */ +export class PublishFederatedSubgraphsRequest extends Message { + /** + * The namespace all the subgraphs belong to. + * + * @generated from field: string namespace = 1; + */ + namespace = ""; + + /** + * The subgraphs to publish. Each must already exist in the namespace. Feature subgraphs are detected automatically. + * + * @generated from field: repeated wg.cosmo.platform.v1.PublishSubgraph subgraphs = 2; + */ + subgraphs: PublishSubgraph[] = []; + + /** + * @generated from field: optional bool disable_resolvability_validation = 3; + */ + disableResolvabilityValidation?: boolean; + + /** + * Optional limit for the number of errors/warnings returned. + * + * @generated from field: optional int32 limit = 4; + */ + limit?: number; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.PublishFederatedSubgraphsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "subgraphs", kind: "message", T: PublishSubgraph, repeated: true }, + { no: 3, name: "disable_resolvability_validation", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + { no: 4, name: "limit", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PublishFederatedSubgraphsRequest { + return new PublishFederatedSubgraphsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PublishFederatedSubgraphsRequest { + return new PublishFederatedSubgraphsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PublishFederatedSubgraphsRequest { + return new PublishFederatedSubgraphsRequest().fromJsonString(jsonString, options); + } + + static equals(a: PublishFederatedSubgraphsRequest | PlainMessage | undefined, b: PublishFederatedSubgraphsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(PublishFederatedSubgraphsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse + */ +export class PublishFederatedSubgraphsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.CompositionError compositionErrors = 2; + */ + compositionErrors: CompositionError[] = []; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.DeploymentError deploymentErrors = 3; + */ + deploymentErrors: DeploymentError[] = []; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.CompositionWarning compositionWarnings = 4; + */ + compositionWarnings: CompositionWarning[] = []; + + /** + * @generated from field: optional wg.cosmo.platform.v1.SubgraphPublishStats counts = 5; + */ + counts?: SubgraphPublishStats; + + /** + * The names of the subgraphs whose schema actually changed as a result of this batch publish. + * + * @generated from field: repeated string updatedSubgraphNames = 6; + */ + updatedSubgraphNames: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.PublishFederatedSubgraphsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "compositionErrors", kind: "message", T: CompositionError, repeated: true }, + { no: 3, name: "deploymentErrors", kind: "message", T: DeploymentError, repeated: true }, + { no: 4, name: "compositionWarnings", kind: "message", T: CompositionWarning, repeated: true }, + { no: 5, name: "counts", kind: "message", T: SubgraphPublishStats, opt: true }, + { no: 6, name: "updatedSubgraphNames", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PublishFederatedSubgraphsResponse { + return new PublishFederatedSubgraphsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PublishFederatedSubgraphsResponse { + return new PublishFederatedSubgraphsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PublishFederatedSubgraphsResponse { + return new PublishFederatedSubgraphsResponse().fromJsonString(jsonString, options); + } + + static equals(a: PublishFederatedSubgraphsResponse | PlainMessage | undefined, b: PublishFederatedSubgraphsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(PublishFederatedSubgraphsResponse, a, b); + } +} + /** * @generated from message wg.cosmo.platform.v1.GitInfo */ @@ -3593,19 +3836,6 @@ export class GetFederatedGraphByNameResponse extends Message) { super(); proto3.util.initPartial(data, this); @@ -3618,8 +3848,6 @@ export class GetFederatedGraphByNameResponse extends Message): GetFederatedGraphByNameResponse { @@ -8306,133 +8534,262 @@ export class InviteUserResponse extends Message { } /** - * @generated from message wg.cosmo.platform.v1.APIKey + * @generated from message wg.cosmo.platform.v1.InviteUsersRequest */ -export class APIKey extends Message { - /** - * @generated from field: string id = 1; - */ - id = ""; - - /** - * @generated from field: string name = 2; - */ - name = ""; - - /** - * @generated from field: string createdBy = 3; - */ - createdBy = ""; - +export class InviteUsersRequest extends Message { /** - * @generated from field: string createdAt = 4; - */ - createdAt = ""; - - /** - * @generated from field: string lastUsedAt = 5; - */ - lastUsedAt = ""; - - /** - * @generated from field: string expiresAt = 6; - */ - expiresAt = ""; - - /** - * @generated from field: optional wg.cosmo.platform.v1.APIKey.Group group = 7; + * @generated from field: repeated string emails = 1; */ - group?: APIKey_Group; + emails: string[] = []; /** - * @generated from field: bool external = 8; + * @generated from field: repeated string groups = 2; */ - external = false; + groups: string[] = []; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.platform.v1.APIKey"; + static readonly typeName = "wg.cosmo.platform.v1.InviteUsersRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "createdBy", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "createdAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "lastUsedAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "expiresAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "group", kind: "message", T: APIKey_Group, opt: true }, - { no: 8, name: "external", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 1, name: "emails", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "groups", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): APIKey { - return new APIKey().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): InviteUsersRequest { + return new InviteUsersRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): APIKey { - return new APIKey().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): InviteUsersRequest { + return new InviteUsersRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): APIKey { - return new APIKey().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): InviteUsersRequest { + return new InviteUsersRequest().fromJsonString(jsonString, options); } - static equals(a: APIKey | PlainMessage | undefined, b: APIKey | PlainMessage | undefined): boolean { - return proto3.util.equals(APIKey, a, b); + static equals(a: InviteUsersRequest | PlainMessage | undefined, b: InviteUsersRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(InviteUsersRequest, a, b); } } /** - * @generated from message wg.cosmo.platform.v1.APIKey.Group + * @generated from message wg.cosmo.platform.v1.InviteUsersInvitationError */ -export class APIKey_Group extends Message { +export class InviteUsersInvitationError extends Message { /** - * @generated from field: string id = 1; + * @generated from field: string email = 1; */ - id = ""; + email = ""; /** - * @generated from field: string name = 2; + * @generated from field: string error = 2; */ - name = ""; + error = ""; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.platform.v1.APIKey.Group"; + static readonly typeName = "wg.cosmo.platform.v1.InviteUsersInvitationError"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 1, name: "email", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "error", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): APIKey_Group { - return new APIKey_Group().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): InviteUsersInvitationError { + return new InviteUsersInvitationError().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): APIKey_Group { - return new APIKey_Group().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): InviteUsersInvitationError { + return new InviteUsersInvitationError().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): APIKey_Group { - return new APIKey_Group().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): InviteUsersInvitationError { + return new InviteUsersInvitationError().fromJsonString(jsonString, options); } - static equals(a: APIKey_Group | PlainMessage | undefined, b: APIKey_Group | PlainMessage | undefined): boolean { - return proto3.util.equals(APIKey_Group, a, b); + static equals(a: InviteUsersInvitationError | PlainMessage | undefined, b: InviteUsersInvitationError | PlainMessage | undefined): boolean { + return proto3.util.equals(InviteUsersInvitationError, a, b); } } /** - * @generated from message wg.cosmo.platform.v1.GetAPIKeysRequest + * @generated from message wg.cosmo.platform.v1.InviteUsersResponse */ -export class GetAPIKeysRequest extends Message { +export class InviteUsersResponse extends Message { /** - * @generated from field: int32 limit = 1; + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.InviteUsersInvitationError invitationErrors = 2; + */ + invitationErrors: InviteUsersInvitationError[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.InviteUsersResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "invitationErrors", kind: "message", T: InviteUsersInvitationError, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): InviteUsersResponse { + return new InviteUsersResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): InviteUsersResponse { + return new InviteUsersResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): InviteUsersResponse { + return new InviteUsersResponse().fromJsonString(jsonString, options); + } + + static equals(a: InviteUsersResponse | PlainMessage | undefined, b: InviteUsersResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(InviteUsersResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.APIKey + */ +export class APIKey extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + /** + * @generated from field: string createdBy = 3; + */ + createdBy = ""; + + /** + * @generated from field: string createdAt = 4; + */ + createdAt = ""; + + /** + * @generated from field: string lastUsedAt = 5; + */ + lastUsedAt = ""; + + /** + * @generated from field: string expiresAt = 6; + */ + expiresAt = ""; + + /** + * @generated from field: optional wg.cosmo.platform.v1.APIKey.Group group = 7; + */ + group?: APIKey_Group; + + /** + * @generated from field: bool external = 8; + */ + external = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.APIKey"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "createdBy", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "createdAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "lastUsedAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "expiresAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "group", kind: "message", T: APIKey_Group, opt: true }, + { no: 8, name: "external", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): APIKey { + return new APIKey().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): APIKey { + return new APIKey().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): APIKey { + return new APIKey().fromJsonString(jsonString, options); + } + + static equals(a: APIKey | PlainMessage | undefined, b: APIKey | PlainMessage | undefined): boolean { + return proto3.util.equals(APIKey, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.APIKey.Group + */ +export class APIKey_Group extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.APIKey.Group"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): APIKey_Group { + return new APIKey_Group().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): APIKey_Group { + return new APIKey_Group().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): APIKey_Group { + return new APIKey_Group().fromJsonString(jsonString, options); + } + + static equals(a: APIKey_Group | PlainMessage | undefined, b: APIKey_Group | PlainMessage | undefined): boolean { + return proto3.util.equals(APIKey_Group, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetAPIKeysRequest + */ +export class GetAPIKeysRequest extends Message { + /** + * @generated from field: int32 limit = 1; */ limit = 0; @@ -9273,6 +9630,16 @@ export class WhoAmIResponse extends Message { */ organizationSlug = ""; + /** + * @generated from field: string organizationId = 5; + */ + organizationId = ""; + + /** + * @generated from field: wg.cosmo.platform.v1.LoginMethod login_method = 6; + */ + loginMethod?: LoginMethod; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -9285,6 +9652,8 @@ export class WhoAmIResponse extends Message { { no: 2, name: "organizationName", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 3, name: "userEmail", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 4, name: "organizationSlug", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "organizationId", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "login_method", kind: "message", T: LoginMethod }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): WhoAmIResponse { @@ -9304,6 +9673,71 @@ export class WhoAmIResponse extends Message { } } +/** + * @generated from message wg.cosmo.platform.v1.LoginMethod + */ +export class LoginMethod extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.LoginMethodType type = 1; + */ + type = LoginMethodType.UNSPECIFIED; + + /** + * Only populated when type = LOGIN_METHOD_TYPE_SSO. + * + * @generated from field: string sso_provider_id = 2; + */ + ssoProviderId = ""; + + /** + * @generated from field: string sso_provider_name = 3; + */ + ssoProviderName = ""; + + /** + * @generated from field: string sso_alias = 4; + */ + ssoAlias = ""; + + /** + * Only populated when type = LOGIN_METHOD_TYPE_SOCIAL. + * + * @generated from field: wg.cosmo.platform.v1.SocialLoginProvider social_provider = 5; + */ + socialProvider = SocialLoginProvider.UNSPECIFIED; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.LoginMethod"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "type", kind: "enum", T: proto3.getEnumType(LoginMethodType) }, + { no: 2, name: "sso_provider_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "sso_provider_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "sso_alias", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "social_provider", kind: "enum", T: proto3.getEnumType(SocialLoginProvider) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): LoginMethod { + return new LoginMethod().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): LoginMethod { + return new LoginMethod().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): LoginMethod { + return new LoginMethod().fromJsonString(jsonString, options); + } + + static equals(a: LoginMethod | PlainMessage | undefined, b: LoginMethod | PlainMessage | undefined): boolean { + return proto3.util.equals(LoginMethod, a, b); + } +} + /** * @generated from message wg.cosmo.platform.v1.RouterToken */ @@ -13892,6 +14326,16 @@ export class GetAllOverridesRequest extends Message { */ namespace = ""; + /** + * @generated from field: int32 limit = 3; + */ + limit = 0; + + /** + * @generated from field: int32 offset = 4; + */ + offset = 0; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -13902,6 +14346,8 @@ export class GetAllOverridesRequest extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "graph_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "limit", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "offset", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetAllOverridesRequest { @@ -13935,6 +14381,11 @@ export class GetAllOverridesResponse extends Message { */ overrides: GetAllOverridesResponse_Override[] = []; + /** + * @generated from field: int32 total_count = 3; + */ + totalCount = 0; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -13945,6 +14396,7 @@ export class GetAllOverridesResponse extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "response", kind: "message", T: Response }, { no: 2, name: "overrides", kind: "message", T: GetAllOverridesResponse_Override, repeated: true }, + { no: 3, name: "total_count", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetAllOverridesResponse { @@ -14168,9 +14620,9 @@ export class CreateOIDCProviderRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.platform.v1.GetOIDCProviderRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): GetOIDCProviderRequest { - return new GetOIDCProviderRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): GetOIDCProviderRequest { - return new GetOIDCProviderRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): GetOIDCProviderRequest { - return new GetOIDCProviderRequest().fromJsonString(jsonString, options); - } - - static equals(a: GetOIDCProviderRequest | PlainMessage | undefined, b: GetOIDCProviderRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetOIDCProviderRequest, a, b); - } -} - -/** - * @generated from message wg.cosmo.platform.v1.GetOIDCProviderResponse + * @generated from message wg.cosmo.platform.v1.OIDCProvider */ -export class GetOIDCProviderResponse extends Message { +export class OIDCProvider extends Message { /** - * @generated from field: wg.cosmo.platform.v1.Response response = 1; + * @generated from field: string id = 1; */ - response?: Response; + id = ""; /** * @generated from field: string name = 2; @@ -14310,14 +14731,204 @@ export class GetOIDCProviderResponse extends Message { name = ""; /** - * @generated from field: string endpoint = 3; + * @generated from field: string alias = 3; */ - endpoint = ""; + alias = ""; /** - * @generated from field: string loginURL = 4; + * @generated from field: string endpoint = 4; */ - loginURL = ""; + endpoint = ""; + + /** + * @generated from field: string login_url = 5; + */ + loginUrl = ""; + + /** + * @generated from field: string sign_in_redirect_url = 6; + */ + signInRedirectUrl = ""; + + /** + * @generated from field: string sign_out_redirect_url = 7; + */ + signOutRedirectUrl = ""; + + /** + * @generated from field: string createdAt = 8; + */ + createdAt = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.OIDCProvider"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "alias", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "endpoint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "login_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "sign_in_redirect_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "sign_out_redirect_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "createdAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): OIDCProvider { + return new OIDCProvider().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): OIDCProvider { + return new OIDCProvider().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): OIDCProvider { + return new OIDCProvider().fromJsonString(jsonString, options); + } + + static equals(a: OIDCProvider | PlainMessage | undefined, b: OIDCProvider | PlainMessage | undefined): boolean { + return proto3.util.equals(OIDCProvider, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.ListOIDCProvidersRequest + */ +export class ListOIDCProvidersRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.ListOIDCProvidersRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListOIDCProvidersRequest { + return new ListOIDCProvidersRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListOIDCProvidersRequest { + return new ListOIDCProvidersRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListOIDCProvidersRequest { + return new ListOIDCProvidersRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListOIDCProvidersRequest | PlainMessage | undefined, b: ListOIDCProvidersRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListOIDCProvidersRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.ListOIDCProvidersResponse + */ +export class ListOIDCProvidersResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.OIDCProvider providers = 2; + */ + providers: OIDCProvider[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.ListOIDCProvidersResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "providers", kind: "message", T: OIDCProvider, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListOIDCProvidersResponse { + return new ListOIDCProvidersResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListOIDCProvidersResponse { + return new ListOIDCProvidersResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListOIDCProvidersResponse { + return new ListOIDCProvidersResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListOIDCProvidersResponse | PlainMessage | undefined, b: ListOIDCProvidersResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListOIDCProvidersResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOIDCProviderRequest + */ +export class GetOIDCProviderRequest extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOIDCProviderRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOIDCProviderRequest { + return new GetOIDCProviderRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOIDCProviderRequest { + return new GetOIDCProviderRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOIDCProviderRequest { + return new GetOIDCProviderRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetOIDCProviderRequest | PlainMessage | undefined, b: GetOIDCProviderRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOIDCProviderRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOIDCProviderResponse + */ +export class GetOIDCProviderResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + /** + * @generated from field: string endpoint = 3; + */ + endpoint = ""; + + /** + * @generated from field: string loginURL = 4; + */ + loginURL = ""; /** * @generated from field: string signInRedirectURL = 5; @@ -14372,6 +14983,11 @@ export class GetOIDCProviderResponse extends Message { * @generated from message wg.cosmo.platform.v1.DeleteOIDCProviderRequest */ export class DeleteOIDCProviderRequest extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -14380,6 +14996,7 @@ export class DeleteOIDCProviderRequest extends Message [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): DeleteOIDCProviderRequest { @@ -14445,6 +15062,11 @@ export class UpdateIDPMappersRequest extends Message { */ mappers: GroupMapper[] = []; + /** + * @generated from field: string id = 2; + */ + id = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -14454,6 +15076,7 @@ export class UpdateIDPMappersRequest extends Message { static readonly typeName = "wg.cosmo.platform.v1.UpdateIDPMappersRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "mappers", kind: "message", T: GroupMapper, repeated: true }, + { no: 2, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): UpdateIDPMappersRequest { @@ -19807,127 +20430,327 @@ export class GetFeatureFlagsByFederatedGraphResponse extends Message { - /** - * @generated from field: wg.cosmo.platform.v1.Pagination pagination = 1; - */ - pagination?: Pagination; - +export class GetFeatureFlagsInLatestCompositionByFederatedGraphRequest extends Message { /** - * @generated from field: wg.cosmo.platform.v1.DateRange date_range = 2; + * @generated from field: string federated_graph_name = 1; */ - dateRange?: DateRange; + federatedGraphName = ""; /** - * @generated from field: optional string filter_by_type = 3; + * @generated from field: string namespace = 2; */ - filterByType?: string; + namespace = ""; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest"; + static readonly typeName = "wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "pagination", kind: "message", T: Pagination }, - { no: 2, name: "date_range", kind: "message", T: DateRange }, - { no: 3, name: "filter_by_type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 1, name: "federated_graph_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationWebhookHistoryRequest { - return new GetOrganizationWebhookHistoryRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphRequest { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationWebhookHistoryRequest { - return new GetOrganizationWebhookHistoryRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphRequest { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): GetOrganizationWebhookHistoryRequest { - return new GetOrganizationWebhookHistoryRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphRequest { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphRequest().fromJsonString(jsonString, options); } - static equals(a: GetOrganizationWebhookHistoryRequest | PlainMessage | undefined, b: GetOrganizationWebhookHistoryRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetOrganizationWebhookHistoryRequest, a, b); + static equals(a: GetFeatureFlagsInLatestCompositionByFederatedGraphRequest | PlainMessage | undefined, b: GetFeatureFlagsInLatestCompositionByFederatedGraphRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, a, b); } } /** - * @generated from message wg.cosmo.platform.v1.WebhookDelivery + * @generated from message wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse */ -export class WebhookDelivery extends Message { +export class GetFeatureFlagsInLatestCompositionByFederatedGraphResponse extends Message { /** - * @generated from field: string id = 1; + * @generated from field: wg.cosmo.platform.v1.Response response = 1; */ - id = ""; + response?: Response; /** - * @generated from field: string created_at = 2; + * feature flags that are part of the latest valid composition of the federated graph + * + * @generated from field: repeated wg.cosmo.platform.v1.FeatureFlag feature_flags = 2; */ - createdAt = ""; + featureFlags: FeatureFlag[] = []; - /** - * @generated from field: optional string created_by = 3; - */ - createdBy?: string; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } - /** - * @generated from field: string type = 4; - */ - type = ""; + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "feature_flags", kind: "message", T: FeatureFlag, repeated: true }, + ]); - /** - * @generated from field: string endpoint = 5; - */ - endpoint = ""; + static fromBinary(bytes: Uint8Array, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphResponse { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphResponse().fromBinary(bytes, options); + } - /** - * @generated from field: string event_name = 6; - */ - eventName = ""; + static fromJson(jsonValue: JsonValue, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphResponse { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphResponse().fromJson(jsonValue, options); + } - /** - * @generated from field: string payload = 7; - */ - payload = ""; + static fromJsonString(jsonString: string, options?: Partial): GetFeatureFlagsInLatestCompositionByFederatedGraphResponse { + return new GetFeatureFlagsInLatestCompositionByFederatedGraphResponse().fromJsonString(jsonString, options); + } - /** - * @generated from field: string request_headers = 8; - */ - requestHeaders = ""; + static equals(a: GetFeatureFlagsInLatestCompositionByFederatedGraphResponse | PlainMessage | undefined, b: GetFeatureFlagsInLatestCompositionByFederatedGraphResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, a, b); + } +} +/** + * @generated from message wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest + */ +export class GetFeatureSubgraphsByFederatedGraphRequest extends Message { /** - * @generated from field: optional string response_headers = 9; + * @generated from field: string federated_graph_name = 1; */ - responseHeaders?: string; + federatedGraphName = ""; /** - * @generated from field: optional int32 response_status_code = 10; + * @generated from field: string namespace = 2; */ - responseStatusCode?: number; + namespace = ""; /** - * @generated from field: optional string response_error_code = 11; + * @generated from field: int32 limit = 3; */ - responseErrorCode?: string; + limit = 0; /** - * @generated from field: optional string error_message = 12; + * @generated from field: int32 offset = 4; */ - errorMessage?: string; + offset = 0; /** - * @generated from field: optional string response_body = 13; + * @generated from field: optional string query = 5; */ - responseBody?: string; + query?: string; - /** - * @generated from field: int32 retry_count = 14; - */ - retryCount = 0; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "federated_graph_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "limit", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "offset", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 5, name: "query", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetFeatureSubgraphsByFederatedGraphRequest { + return new GetFeatureSubgraphsByFederatedGraphRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetFeatureSubgraphsByFederatedGraphRequest { + return new GetFeatureSubgraphsByFederatedGraphRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetFeatureSubgraphsByFederatedGraphRequest { + return new GetFeatureSubgraphsByFederatedGraphRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetFeatureSubgraphsByFederatedGraphRequest | PlainMessage | undefined, b: GetFeatureSubgraphsByFederatedGraphRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetFeatureSubgraphsByFederatedGraphRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse + */ +export class GetFeatureSubgraphsByFederatedGraphResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * all unique feature subgraphs across all feature flags of the federated graph + * + * @generated from field: repeated wg.cosmo.platform.v1.Subgraph feature_subgraphs = 2; + */ + featureSubgraphs: Subgraph[] = []; + + /** + * @generated from field: int32 total_count = 3; + */ + totalCount = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "feature_subgraphs", kind: "message", T: Subgraph, repeated: true }, + { no: 3, name: "total_count", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetFeatureSubgraphsByFederatedGraphResponse { + return new GetFeatureSubgraphsByFederatedGraphResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetFeatureSubgraphsByFederatedGraphResponse { + return new GetFeatureSubgraphsByFederatedGraphResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetFeatureSubgraphsByFederatedGraphResponse { + return new GetFeatureSubgraphsByFederatedGraphResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetFeatureSubgraphsByFederatedGraphResponse | PlainMessage | undefined, b: GetFeatureSubgraphsByFederatedGraphResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetFeatureSubgraphsByFederatedGraphResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest + */ +export class GetOrganizationWebhookHistoryRequest extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Pagination pagination = 1; + */ + pagination?: Pagination; + + /** + * @generated from field: wg.cosmo.platform.v1.DateRange date_range = 2; + */ + dateRange?: DateRange; + + /** + * @generated from field: optional string filter_by_type = 3; + */ + filterByType?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "pagination", kind: "message", T: Pagination }, + { no: 2, name: "date_range", kind: "message", T: DateRange }, + { no: 3, name: "filter_by_type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationWebhookHistoryRequest { + return new GetOrganizationWebhookHistoryRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationWebhookHistoryRequest { + return new GetOrganizationWebhookHistoryRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOrganizationWebhookHistoryRequest { + return new GetOrganizationWebhookHistoryRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetOrganizationWebhookHistoryRequest | PlainMessage | undefined, b: GetOrganizationWebhookHistoryRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOrganizationWebhookHistoryRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.WebhookDelivery + */ +export class WebhookDelivery extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + + /** + * @generated from field: string created_at = 2; + */ + createdAt = ""; + + /** + * @generated from field: optional string created_by = 3; + */ + createdBy?: string; + + /** + * @generated from field: string type = 4; + */ + type = ""; + + /** + * @generated from field: string endpoint = 5; + */ + endpoint = ""; + + /** + * @generated from field: string event_name = 6; + */ + eventName = ""; + + /** + * @generated from field: string payload = 7; + */ + payload = ""; + + /** + * @generated from field: string request_headers = 8; + */ + requestHeaders = ""; + + /** + * @generated from field: optional string response_headers = 9; + */ + responseHeaders?: string; + + /** + * @generated from field: optional int32 response_status_code = 10; + */ + responseStatusCode?: number; + + /** + * @generated from field: optional string response_error_code = 11; + */ + responseErrorCode?: string; + + /** + * @generated from field: optional string error_message = 12; + */ + errorMessage?: string; + + /** + * @generated from field: optional string response_body = 13; + */ + responseBody?: string; + + /** + * @generated from field: int32 retry_count = 14; + */ + retryCount = 0; /** * @generated from field: float duration = 15; @@ -23519,89 +24342,555 @@ export class GetNamespaceProposalConfigResponse extends Message { +export class NamespaceLoginMethodMapping extends Message { /** - * @generated from field: string federatedGraphName = 1; + * @generated from field: string namespace_id = 1; */ - federatedGraphName = ""; + namespaceId = ""; /** - * @generated from field: string namespace = 2; + * @generated from field: repeated string allowed_sso_provider_ids = 2; */ - namespace = ""; + allowedSsoProviderIds: string[] = []; /** - * filter by client names - * - * @generated from field: repeated string clientNames = 3; + * @generated from field: bool allow_password_login = 3; */ - clientNames: string[] = []; + allowPasswordLogin = false; /** - * @generated from field: optional int32 limit = 4; + * @generated from field: bool allow_google_login = 4; */ - limit?: number; + allowGoogleLogin = false; /** - * pagination offset - * - * @generated from field: optional int32 offset = 5; + * @generated from field: bool allow_github_login = 5; */ - offset?: number; + allowGithubLogin = false; - /** - * @generated from field: optional bool includeHasDeprecatedFields = 6; - */ - includeHasDeprecatedFields?: boolean; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } - /** - * determines which metric to fetch and sort by - * - * @generated from field: optional wg.cosmo.platform.v1.OperationsFetchBasedOn fetchBasedOn = 7; - */ - fetchBasedOn?: OperationsFetchBasedOn; + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.NamespaceLoginMethodMapping"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "namespace_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "allowed_sso_provider_ids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 3, name: "allow_password_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "allow_google_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "allow_github_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); - /** - * defaults to false - * - * @generated from field: optional bool includeContent = 8; - */ - includeContent?: boolean; + static fromBinary(bytes: Uint8Array, options?: Partial): NamespaceLoginMethodMapping { + return new NamespaceLoginMethodMapping().fromBinary(bytes, options); + } - /** - * range in hours - * - * @generated from field: optional int32 range = 9; - */ - range?: number; + static fromJson(jsonValue: JsonValue, options?: Partial): NamespaceLoginMethodMapping { + return new NamespaceLoginMethodMapping().fromJson(jsonValue, options); + } - /** - * @generated from field: optional wg.cosmo.platform.v1.DateRange dateRange = 10; - */ - dateRange?: DateRange; + static fromJsonString(jsonString: string, options?: Partial): NamespaceLoginMethodMapping { + return new NamespaceLoginMethodMapping().fromJsonString(jsonString, options); + } - /** - * search by operation name or hash - * - * @generated from field: optional string searchQuery = 11; - */ - searchQuery?: string; + static equals(a: NamespaceLoginMethodMapping | PlainMessage | undefined, b: NamespaceLoginMethodMapping | PlainMessage | undefined): boolean { + return proto3.util.equals(NamespaceLoginMethodMapping, a, b); + } +} +/** + * @generated from message wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest + */ +export class UpdateNamespaceLoginMethodsRequest extends Message { /** - * defaults to false - * - * @generated from field: optional bool includeOperationsWithDeprecatedFieldsOnly = 12; + * @generated from field: repeated wg.cosmo.platform.v1.NamespaceLoginMethodMapping mappings = 1; */ - includeOperationsWithDeprecatedFieldsOnly?: boolean; + mappings: NamespaceLoginMethodMapping[] = []; - /** - * defaults to DESC - * - * @generated from field: optional wg.cosmo.platform.v1.SortDirection sortDirection = 13; - */ - sortDirection?: SortDirection; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "mappings", kind: "message", T: NamespaceLoginMethodMapping, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateNamespaceLoginMethodsRequest { + return new UpdateNamespaceLoginMethodsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateNamespaceLoginMethodsRequest { + return new UpdateNamespaceLoginMethodsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateNamespaceLoginMethodsRequest { + return new UpdateNamespaceLoginMethodsRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateNamespaceLoginMethodsRequest | PlainMessage | undefined, b: UpdateNamespaceLoginMethodsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateNamespaceLoginMethodsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse + */ +export class UpdateNamespaceLoginMethodsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.UpdateNamespaceLoginMethodsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateNamespaceLoginMethodsResponse { + return new UpdateNamespaceLoginMethodsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateNamespaceLoginMethodsResponse { + return new UpdateNamespaceLoginMethodsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateNamespaceLoginMethodsResponse { + return new UpdateNamespaceLoginMethodsResponse().fromJsonString(jsonString, options); + } + + static equals(a: UpdateNamespaceLoginMethodsResponse | PlainMessage | undefined, b: UpdateNamespaceLoginMethodsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateNamespaceLoginMethodsResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.ListNamespaceLoginMethodsRequest + */ +export class ListNamespaceLoginMethodsRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.ListNamespaceLoginMethodsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListNamespaceLoginMethodsRequest { + return new ListNamespaceLoginMethodsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListNamespaceLoginMethodsRequest { + return new ListNamespaceLoginMethodsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListNamespaceLoginMethodsRequest { + return new ListNamespaceLoginMethodsRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListNamespaceLoginMethodsRequest | PlainMessage | undefined, b: ListNamespaceLoginMethodsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListNamespaceLoginMethodsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse + */ +export class ListNamespaceLoginMethodsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * One entry per namespace that is restricted to specific login methods. + * Namespaces with no mapping (default-open) are omitted. + * + * @generated from field: repeated wg.cosmo.platform.v1.NamespaceLoginMethodMapping mappings = 2; + */ + mappings: NamespaceLoginMethodMapping[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.ListNamespaceLoginMethodsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "mappings", kind: "message", T: NamespaceLoginMethodMapping, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListNamespaceLoginMethodsResponse { + return new ListNamespaceLoginMethodsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListNamespaceLoginMethodsResponse { + return new ListNamespaceLoginMethodsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListNamespaceLoginMethodsResponse { + return new ListNamespaceLoginMethodsResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListNamespaceLoginMethodsResponse | PlainMessage | undefined, b: ListNamespaceLoginMethodsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListNamespaceLoginMethodsResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.OrganizationLoginMethods + */ +export class OrganizationLoginMethods extends Message { + /** + * @generated from field: repeated string allowed_sso_provider_ids = 1; + */ + allowedSsoProviderIds: string[] = []; + + /** + * @generated from field: bool allow_password_login = 2; + */ + allowPasswordLogin = false; + + /** + * @generated from field: bool allow_google_login = 3; + */ + allowGoogleLogin = false; + + /** + * @generated from field: bool allow_github_login = 4; + */ + allowGithubLogin = false; + + /** + * Output only. False when the org has no restriction configured (all methods allowed). + * + * @generated from field: bool is_restricted = 5; + */ + isRestricted = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.OrganizationLoginMethods"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "allowed_sso_provider_ids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "allow_password_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "allow_google_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "allow_github_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "is_restricted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): OrganizationLoginMethods { + return new OrganizationLoginMethods().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): OrganizationLoginMethods { + return new OrganizationLoginMethods().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): OrganizationLoginMethods { + return new OrganizationLoginMethods().fromJsonString(jsonString, options); + } + + static equals(a: OrganizationLoginMethods | PlainMessage | undefined, b: OrganizationLoginMethods | PlainMessage | undefined): boolean { + return proto3.util.equals(OrganizationLoginMethods, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOrganizationLoginMethodsRequest + */ +export class GetOrganizationLoginMethodsRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOrganizationLoginMethodsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationLoginMethodsRequest { + return new GetOrganizationLoginMethodsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationLoginMethodsRequest { + return new GetOrganizationLoginMethodsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOrganizationLoginMethodsRequest { + return new GetOrganizationLoginMethodsRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetOrganizationLoginMethodsRequest | PlainMessage | undefined, b: GetOrganizationLoginMethodsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOrganizationLoginMethodsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse + */ +export class GetOrganizationLoginMethodsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: wg.cosmo.platform.v1.OrganizationLoginMethods login_methods = 2; + */ + loginMethods?: OrganizationLoginMethods; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOrganizationLoginMethodsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "login_methods", kind: "message", T: OrganizationLoginMethods }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationLoginMethodsResponse { + return new GetOrganizationLoginMethodsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationLoginMethodsResponse { + return new GetOrganizationLoginMethodsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOrganizationLoginMethodsResponse { + return new GetOrganizationLoginMethodsResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetOrganizationLoginMethodsResponse | PlainMessage | undefined, b: GetOrganizationLoginMethodsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOrganizationLoginMethodsResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsRequest + */ +export class UpdateOrganizationLoginMethodsRequest extends Message { + /** + * @generated from field: repeated string allowed_sso_provider_ids = 1; + */ + allowedSsoProviderIds: string[] = []; + + /** + * @generated from field: bool allow_password_login = 2; + */ + allowPasswordLogin = false; + + /** + * @generated from field: bool allow_google_login = 3; + */ + allowGoogleLogin = false; + + /** + * @generated from field: bool allow_github_login = 4; + */ + allowGithubLogin = false; + + /** + * Set true to confirm that namespace mappings may be altered by this change. + * Left false (a preview), if the change would strip methods from existing + * namespace mappings the server returns requires_confirmation and makes no changes. + * + * @generated from field: bool confirm_namespace_changes = 5; + */ + confirmNamespaceChanges = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "allowed_sso_provider_ids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "allow_password_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "allow_google_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "allow_github_login", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "confirm_namespace_changes", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationLoginMethodsRequest { + return new UpdateOrganizationLoginMethodsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateOrganizationLoginMethodsRequest { + return new UpdateOrganizationLoginMethodsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateOrganizationLoginMethodsRequest { + return new UpdateOrganizationLoginMethodsRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateOrganizationLoginMethodsRequest | PlainMessage | undefined, b: UpdateOrganizationLoginMethodsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateOrganizationLoginMethodsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse + */ +export class UpdateOrganizationLoginMethodsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * True when the change needs confirmation because it would alter namespace + * mappings listed in affected_namespaces. No changes were made in this case. + * + * @generated from field: bool requires_confirmation = 2; + */ + requiresConfirmation = false; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.Namespace affected_namespaces = 3; + */ + affectedNamespaces: Namespace[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.UpdateOrganizationLoginMethodsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "requires_confirmation", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "affected_namespaces", kind: "message", T: Namespace, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationLoginMethodsResponse { + return new UpdateOrganizationLoginMethodsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateOrganizationLoginMethodsResponse { + return new UpdateOrganizationLoginMethodsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateOrganizationLoginMethodsResponse { + return new UpdateOrganizationLoginMethodsResponse().fromJsonString(jsonString, options); + } + + static equals(a: UpdateOrganizationLoginMethodsResponse | PlainMessage | undefined, b: UpdateOrganizationLoginMethodsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateOrganizationLoginMethodsResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOperationsRequest + */ +export class GetOperationsRequest extends Message { + /** + * @generated from field: string federatedGraphName = 1; + */ + federatedGraphName = ""; + + /** + * @generated from field: string namespace = 2; + */ + namespace = ""; + + /** + * filter by client names + * + * @generated from field: repeated string clientNames = 3; + */ + clientNames: string[] = []; + + /** + * @generated from field: optional int32 limit = 4; + */ + limit?: number; + + /** + * pagination offset + * + * @generated from field: optional int32 offset = 5; + */ + offset?: number; + + /** + * @generated from field: optional bool includeHasDeprecatedFields = 6; + */ + includeHasDeprecatedFields?: boolean; + + /** + * determines which metric to fetch and sort by + * + * @generated from field: optional wg.cosmo.platform.v1.OperationsFetchBasedOn fetchBasedOn = 7; + */ + fetchBasedOn?: OperationsFetchBasedOn; + + /** + * defaults to false + * + * @generated from field: optional bool includeContent = 8; + */ + includeContent?: boolean; + + /** + * range in hours + * + * @generated from field: optional int32 range = 9; + */ + range?: number; + + /** + * @generated from field: optional wg.cosmo.platform.v1.DateRange dateRange = 10; + */ + dateRange?: DateRange; + + /** + * search by operation name or hash + * + * @generated from field: optional string searchQuery = 11; + */ + searchQuery?: string; + + /** + * defaults to false + * + * @generated from field: optional bool includeOperationsWithDeprecatedFieldsOnly = 12; + */ + includeOperationsWithDeprecatedFieldsOnly?: boolean; + + /** + * defaults to DESC + * + * @generated from field: optional wg.cosmo.platform.v1.SortDirection sortDirection = 13; + */ + sortDirection?: SortDirection; /** * defaults to false @@ -24959,3 +26248,365 @@ export class RecomposeGraphResponse extends Message { } } +/** + * @generated from message wg.cosmo.platform.v1.RecomposeFeatureFlagRequest + */ +export class RecomposeFeatureFlagRequest extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: string namespace = 2; + */ + namespace = ""; + + /** + * @generated from field: optional int32 limit = 3; + */ + limit?: number; + + /** + * @generated from field: optional bool disable_resolvability_validation = 5; + */ + disableResolvabilityValidation?: boolean; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.RecomposeFeatureFlagRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "limit", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, + { no: 5, name: "disable_resolvability_validation", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RecomposeFeatureFlagRequest { + return new RecomposeFeatureFlagRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RecomposeFeatureFlagRequest { + return new RecomposeFeatureFlagRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RecomposeFeatureFlagRequest { + return new RecomposeFeatureFlagRequest().fromJsonString(jsonString, options); + } + + static equals(a: RecomposeFeatureFlagRequest | PlainMessage | undefined, b: RecomposeFeatureFlagRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(RecomposeFeatureFlagRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.RecomposeFeatureFlagResponse + */ +export class RecomposeFeatureFlagResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.CompositionError compositionErrors = 2; + */ + compositionErrors: CompositionError[] = []; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.DeploymentError deploymentErrors = 3; + */ + deploymentErrors: DeploymentError[] = []; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.CompositionWarning compositionWarnings = 4; + */ + compositionWarnings: CompositionWarning[] = []; + + /** + * @generated from field: optional wg.cosmo.platform.v1.SubgraphPublishStats errorCounts = 5; + */ + errorCounts?: SubgraphPublishStats; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.RecomposeFeatureFlagResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "compositionErrors", kind: "message", T: CompositionError, repeated: true }, + { no: 3, name: "deploymentErrors", kind: "message", T: DeploymentError, repeated: true }, + { no: 4, name: "compositionWarnings", kind: "message", T: CompositionWarning, repeated: true }, + { no: 5, name: "errorCounts", kind: "message", T: SubgraphPublishStats, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RecomposeFeatureFlagResponse { + return new RecomposeFeatureFlagResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RecomposeFeatureFlagResponse { + return new RecomposeFeatureFlagResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RecomposeFeatureFlagResponse { + return new RecomposeFeatureFlagResponse().fromJsonString(jsonString, options); + } + + static equals(a: RecomposeFeatureFlagResponse | PlainMessage | undefined, b: RecomposeFeatureFlagResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(RecomposeFeatureFlagResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOnboardingRequest + */ +export class GetOnboardingRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOnboardingRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOnboardingRequest { + return new GetOnboardingRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOnboardingRequest { + return new GetOnboardingRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOnboardingRequest { + return new GetOnboardingRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetOnboardingRequest | PlainMessage | undefined, b: GetOnboardingRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOnboardingRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetOnboardingResponse + */ +export class GetOnboardingResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: optional string finishedAt = 3; + */ + finishedAt?: string; + + /** + * @generated from field: int32 federatedGraphsCount = 4; + */ + federatedGraphsCount = 0; + + /** + * @generated from field: bool enabled = 5; + */ + enabled = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetOnboardingResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 3, name: "finishedAt", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 4, name: "federatedGraphsCount", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 5, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetOnboardingResponse { + return new GetOnboardingResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetOnboardingResponse { + return new GetOnboardingResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetOnboardingResponse { + return new GetOnboardingResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetOnboardingResponse | PlainMessage | undefined, b: GetOnboardingResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetOnboardingResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.CreateOnboardingRequest + */ +export class CreateOnboardingRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.CreateOnboardingRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreateOnboardingRequest { + return new CreateOnboardingRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreateOnboardingRequest { + return new CreateOnboardingRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreateOnboardingRequest { + return new CreateOnboardingRequest().fromJsonString(jsonString, options); + } + + static equals(a: CreateOnboardingRequest | PlainMessage | undefined, b: CreateOnboardingRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(CreateOnboardingRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.CreateOnboardingResponse + */ +export class CreateOnboardingResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: optional string finishedAt = 2; + */ + finishedAt?: string; + + /** + * @generated from field: int32 federatedGraphsCount = 3; + */ + federatedGraphsCount = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.CreateOnboardingResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "finishedAt", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 3, name: "federatedGraphsCount", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreateOnboardingResponse { + return new CreateOnboardingResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreateOnboardingResponse { + return new CreateOnboardingResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreateOnboardingResponse { + return new CreateOnboardingResponse().fromJsonString(jsonString, options); + } + + static equals(a: CreateOnboardingResponse | PlainMessage | undefined, b: CreateOnboardingResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(CreateOnboardingResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.FinishOnboardingRequest + */ +export class FinishOnboardingRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.FinishOnboardingRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FinishOnboardingRequest { + return new FinishOnboardingRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FinishOnboardingRequest { + return new FinishOnboardingRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FinishOnboardingRequest { + return new FinishOnboardingRequest().fromJsonString(jsonString, options); + } + + static equals(a: FinishOnboardingRequest | PlainMessage | undefined, b: FinishOnboardingRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(FinishOnboardingRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.FinishOnboardingResponse + */ +export class FinishOnboardingResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: int32 federatedGraphsCount = 2; + */ + federatedGraphsCount = 0; + + /** + * @generated from field: string finishedAt = 3; + */ + finishedAt = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.FinishOnboardingResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "federatedGraphsCount", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 3, name: "finishedAt", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FinishOnboardingResponse { + return new FinishOnboardingResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FinishOnboardingResponse { + return new FinishOnboardingResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FinishOnboardingResponse { + return new FinishOnboardingResponse().fromJsonString(jsonString, options); + } + + static equals(a: FinishOnboardingResponse | PlainMessage | undefined, b: FinishOnboardingResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(FinishOnboardingResponse, a, b); + } +} + diff --git a/controlplane/.env.example b/controlplane/.env.example index 178b6c482c..80c0d20563 100644 --- a/controlplane/.env.example +++ b/controlplane/.env.example @@ -32,11 +32,11 @@ WEBHOOK_URL= WEBHOOK_SECRET= # S3 -S3_STORAGE_URL="http://minio:changeme@localhost:10000/cosmo" +S3_STORAGE_URL="http://localhost:10000/cosmo" S3_REGION="auto" S3_ENDPOINT="" -S3_ACCESS_KEY_ID= -S3_SECRET_ACCESS_KEY= +S3_ACCESS_KEY_ID="admin" +S3_SECRET_ACCESS_KEY="changeme" S3_FORCE_PATH_STYLE="true" # Optional for Stripe Integration diff --git a/controlplane/.eslintrc b/controlplane/.eslintrc index ee239b4a75..8bb98a4c4e 100644 --- a/controlplane/.eslintrc +++ b/controlplane/.eslintrc @@ -1,6 +1,6 @@ { "extends": ["eslint-config-unjs", "plugin:require-extensions/recommended"], - "plugins": ["require-extensions"], + "plugins": ["require-extensions", "local-rules"], "rules": { "space-before-function-paren": 0, "arrow-parens": 0, @@ -25,5 +25,6 @@ "no-useless-constructor": 0, "unicorn/prefer-ternary": 0, "unicorn/no-nested-ternary": 0, + "local-rules/no-arrow-in-traced": "error", }, } diff --git a/controlplane/CHANGELOG.md b/controlplane/CHANGELOG.md index b263242d9a..172f1f24f3 100644 --- a/controlplane/CHANGELOG.md +++ b/controlplane/CHANGELOG.md @@ -4,6 +4,208 @@ Binaries are attached to the github release otherwise all images can be found [h All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.231.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.230.0...controlplane@0.231.0) (2026-06-06) + +### Features + +* **cli:** add subgraph batch-publish command ([#2899](https://github.com/wundergraph/cosmo/issues/2899)) ([9361a30](https://github.com/wundergraph/cosmo/commit/9361a3073dc207ae9bfb5b9661108c09b42028c8)) (@thisisnithin) + +# [0.230.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.229.0...controlplane@0.230.0) (2026-06-02) + +### Features + +* add more tracing instrumentation to the composition worker pool ([#2905](https://github.com/wundergraph/cosmo/issues/2905)) ([81f82e7](https://github.com/wundergraph/cosmo/commit/81f82e7fc78e136436aa04944d5a463a4fd0b469)) (@wilsonrivera) + +# [0.229.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.228.0...controlplane@0.229.0) (2026-06-01) + +### Features + +* add functionality to restrict the login methods of an organization ([#2896](https://github.com/wundergraph/cosmo/issues/2896)) ([2c2cb71](https://github.com/wundergraph/cosmo/commit/2c2cb717f485666aa0bc94297d7c94469e0ce894)) (@JivusAyrus) +* add span for `composeGraphsInWorker` ([#2901](https://github.com/wundergraph/cosmo/issues/2901)) ([254810f](https://github.com/wundergraph/cosmo/commit/254810f7edf14fab284f25d0f09c0fb8c62e7ded)) (@wilsonrivera) +* make persisted operations limit configurable per organization plan ([#2894](https://github.com/wundergraph/cosmo/issues/2894)) ([c395857](https://github.com/wundergraph/cosmo/commit/c395857d7c0b36234890d0d0c788f25185b565b9)) (@JivusAyrus) +* restrict proposal matching to approved and draft states ([#2898](https://github.com/wundergraph/cosmo/issues/2898)) ([0da10d7](https://github.com/wundergraph/cosmo/commit/0da10d7d4750baed13cbb140495df8ae68f34e61)) (@JivusAyrus) + +# [0.228.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.227.0...controlplane@0.228.0) (2026-05-29) + +### Features + +* add options to restrict certain namespaces to certain login methods ([#2876](https://github.com/wundergraph/cosmo/issues/2876)) ([42b307b](https://github.com/wundergraph/cosmo/commit/42b307b1b5ec9d91d9fb4dad90ecae5e364ac189)) (@JivusAyrus) + +# [0.227.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.226.0...controlplane@0.227.0) (2026-05-27) + +### Features + +* declutter step 1 in the onboarding + new empty state ([#2888](https://github.com/wundergraph/cosmo/issues/2888)) ([89635b7](https://github.com/wundergraph/cosmo/commit/89635b75e4cb6ff893d6c4fbbe2b541cfc0dfa12)) (@comatory) + +# [0.226.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.225.1...controlplane@0.226.0) (2026-05-27) + +### Features + +* studio handles analytics downtime gracefully ([#2878](https://github.com/wundergraph/cosmo/issues/2878)) ([716b786](https://github.com/wundergraph/cosmo/commit/716b786bd55008292015ec8950182aa61e98cb16)) (@comatory) + +## [0.225.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.225.0...controlplane@0.225.1) (2026-05-20) + +### Bug Fixes + +* continuous healthcheck for ClickHouse + HTTP status code for unavailability ([#2875](https://github.com/wundergraph/cosmo/issues/2875)) ([be9d015](https://github.com/wundergraph/cosmo/commit/be9d015228db043b3925b08c4a85065acc26a18b)) (@comatory) + +# [0.225.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.224.2...controlplane@0.225.0) (2026-05-19) + +### Features + +* add PostHog name properties to identify call ([#2857](https://github.com/wundergraph/cosmo/issues/2857)) ([662d279](https://github.com/wundergraph/cosmo/commit/662d279530eb270beef8e0e2ed2a218124ae9430)) (@GrueneKatze) + +## [0.224.2](https://github.com/wundergraph/cosmo/compare/controlplane@0.224.1...controlplane@0.224.2) (2026-05-18) + +**Note:** Version bump only for package controlplane + +## [0.224.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.224.0...controlplane@0.224.1) (2026-05-14) + +**Note:** Version bump only for package controlplane + +# [0.224.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.223.0...controlplane@0.224.0) (2026-05-13) + +### Features + +* fix recomposition bugs and optimise recompositions ([#2860](https://github.com/wundergraph/cosmo/issues/2860)) ([e49a03b](https://github.com/wundergraph/cosmo/commit/e49a03ba5ea9bd62191276662f622615ab7eaaff)) (@wilsonrivera) + +# [0.223.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.222.0...controlplane@0.223.0) (2026-05-12) + +### Features + +* add feature flag recomposition support ([#2853](https://github.com/wundergraph/cosmo/issues/2853)) ([3f125a2](https://github.com/wundergraph/cosmo/commit/3f125a2effce36a1a2040f219bc1aa5a872aab93)) (@wilsonrivera) + +# [0.222.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.221.3...controlplane@0.222.0) (2026-05-11) + +### Features + +* split router execution configs ([#2847](https://github.com/wundergraph/cosmo/issues/2847)) ([893ff72](https://github.com/wundergraph/cosmo/commit/893ff721e28d34eb308b74c845773a0186a7467c)) (@Aenimus) + +## [0.221.3](https://github.com/wundergraph/cosmo/compare/controlplane@0.221.2...controlplane@0.221.3) (2026-05-07) + +### Bug Fixes + +* match draft proposals in Cosmo checks ([#2837](https://github.com/wundergraph/cosmo/issues/2837)) ([0490bb1](https://github.com/wundergraph/cosmo/commit/0490bb18d8971e8bf73c29c268d1470b315a762d)) (@comatory) + +## [0.221.2](https://github.com/wundergraph/cosmo/compare/controlplane@0.221.1...controlplane@0.221.2) (2026-05-01) + +**Note:** Version bump only for package controlplane + +## [0.221.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.221.0...controlplane@0.221.1) (2026-05-01) + +**Note:** Version bump only for package controlplane + +# [0.221.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.220.0...controlplane@0.221.0) (2026-04-30) + +### Features + +* **controlplane:** add support for failover s3 bucket in helm chart ([#2803](https://github.com/wundergraph/cosmo/issues/2803)) ([9780ce7](https://github.com/wundergraph/cosmo/commit/9780ce7b2b883de434bf846018bf28459ac27ea3)) (@pepol) +* onboarding wizard ([#2790](https://github.com/wundergraph/cosmo/issues/2790)) ([3227519](https://github.com/wundergraph/cosmo/commit/3227519b3cc7b2dbc163856967bfe36cebf81887)) (@comatory) + +# [0.220.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.219.1...controlplane@0.220.0) (2026-04-29) + +### Features + +* centralize TS dependency management via catalogs ([#2782](https://github.com/wundergraph/cosmo/issues/2782)) ([a6a6956](https://github.com/wundergraph/cosmo/commit/a6a69565727f01a942a16e6d560d0fedabcb531e)) (@comatory) + +## [0.219.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.219.0...controlplane@0.219.1) (2026-04-27) + +**Note:** Version bump only for package controlplane + +# [0.219.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.218.1...controlplane@0.219.0) (2026-04-24) + +### Bug Fixes + +* use lodash-es in controlplane ([#2793](https://github.com/wundergraph/cosmo/issues/2793)) ([e95aaed](https://github.com/wundergraph/cosmo/commit/e95aaede95a8e03418d29598e0b32c75c8a2010f)) (@comatory) + +### Features + +* update `lodash` and `lodash-es` ([#2780](https://github.com/wundergraph/cosmo/issues/2780)) ([bbf1e38](https://github.com/wundergraph/cosmo/commit/bbf1e38b3a346363fe742801f2982dbafb267454)) (@wilsonrivera) + +## [0.218.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.218.0...controlplane@0.218.1) (2026-04-17) + +### Bug Fixes + +* **controlplane:** populate userEmail in whoAmI response ([#2774](https://github.com/wundergraph/cosmo/issues/2774)) ([13a70dc](https://github.com/wundergraph/cosmo/commit/13a70dca3edd187856232d2746b33c434e1e12ff)) (@thisisnithin) + +# [0.218.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.217.0...controlplane@0.218.0) (2026-04-17) + +### Features + +* improve OpenId Configuration fetching to prevent DoS ([#2748](https://github.com/wundergraph/cosmo/issues/2748)) ([07de56d](https://github.com/wundergraph/cosmo/commit/07de56dd31dd35ad09214d98086eecd8d77fce98)) (@wilsonrivera) + +# [0.217.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.216.0...controlplane@0.217.0) (2026-04-17) + +### Features + +* **controlplane:** add service-level tracing spans to Connect-RPC handlers ([#2771](https://github.com/wundergraph/cosmo/issues/2771)) ([9cf421a](https://github.com/wundergraph/cosmo/commit/9cf421a2540323b617edd8036e3a213fc426e03d)) (@thisisnithin) + +# [0.216.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.215.0...controlplane@0.216.0) (2026-04-16) + +### Features + +* add new endpoints for fetching feature flags and feature subgraphs by federated graph ([#2729](https://github.com/wundergraph/cosmo/issues/2729)) ([74f44a1](https://github.com/wundergraph/cosmo/commit/74f44a1614ef0976231b143b52203c5a9dd2034e)) (@JivusAyrus) + +# [0.215.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.214.1...controlplane@0.215.0) (2026-04-15) + +### Features + +* use email as main tracking field ([#2700](https://github.com/wundergraph/cosmo/issues/2700)) ([23fc31d](https://github.com/wundergraph/cosmo/commit/23fc31dd11c94fb242e6cec7b820b806a88d4cb6)) (@alepane21) + +## [0.214.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.214.0...controlplane@0.214.1) (2026-04-14) + +**Note:** Version bump only for package controlplane + +# [0.214.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.213.1...controlplane@0.214.0) (2026-04-13) + +### Features + +* **controlplane:** implement dual-bucket write for execution configs ([#2717](https://github.com/wundergraph/cosmo/issues/2717)) ([0b0d42d](https://github.com/wundergraph/cosmo/commit/0b0d42d6ea05478904882e44dbace9ff1b17d621)) (@pepol) + +## [0.213.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.213.0...controlplane@0.213.1) (2026-04-02) + +**Note:** Version bump only for package controlplane + +# [0.213.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.212.0...controlplane@0.213.0) (2026-04-01) + +### Features + +* pass `proxy url` to `admission webhook` ([#2718](https://github.com/wundergraph/cosmo/issues/2718)) ([bcb4ed3](https://github.com/wundergraph/cosmo/commit/bcb4ed34ed78bfa5fad072a7ebf62ed648d7d872)) (@wilsonrivera) + +# [0.212.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.211.0...controlplane@0.212.0) (2026-03-31) + +### Bug Fixes + +* pin axios to 1.13.5 across all packages ([#2713](https://github.com/wundergraph/cosmo/issues/2713)) ([9be9143](https://github.com/wundergraph/cosmo/commit/9be91435cbb595626347479c28551bd5d6a11d6f)) (@thisisnithin) + +### Features + +* introduce proxy for webhook requests ([#2671](https://github.com/wundergraph/cosmo/issues/2671)) ([dc4388d](https://github.com/wundergraph/cosmo/commit/dc4388d100a421e0ab6eed390a8d5f80d5b15112)) (@wilsonrivera) + +# [0.211.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.210.0...controlplane@0.211.0) (2026-03-27) + +### Features + +* add PQL manifest support for persisted operations ([#2635](https://github.com/wundergraph/cosmo/issues/2635)) ([38a648c](https://github.com/wundergraph/cosmo/commit/38a648cff927b45d5ee5323bf303f83198c64411)) (@StarpTech) + +# [0.210.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.209.1...controlplane@0.210.0) (2026-03-27) + +### Features + +* add server-side pagination to operation overrides with limit and offset parameters ([#2695](https://github.com/wundergraph/cosmo/issues/2695)) ([41bb6b9](https://github.com/wundergraph/cosmo/commit/41bb6b9bd149ac9a1eb153ebbeb1c0baf0196351)) (@JivusAyrus) + +## [0.209.1](https://github.com/wundergraph/cosmo/compare/controlplane@0.209.0...controlplane@0.209.1) (2026-03-24) + +### Bug Fixes + +* handle arrayJoin of empty arrays in clickhouse queries ([#2682](https://github.com/wundergraph/cosmo/issues/2682)) ([733c14b](https://github.com/wundergraph/cosmo/commit/733c14b4710ed093f9ccee19836054f7e92647a4)) (@JivusAyrus) + +# [0.209.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.208.0...controlplane@0.209.0) (2026-03-23) + +### Features + +* improve efficiency of operation check by parallelizing processing of changes ([#2676](https://github.com/wundergraph/cosmo/issues/2676)) ([1ca1fd0](https://github.com/wundergraph/cosmo/commit/1ca1fd0d41292f784e9f05610674ddf08b611021)) (@JivusAyrus) + # [0.208.0](https://github.com/wundergraph/cosmo/compare/controlplane@0.207.0...controlplane@0.208.0) (2026-03-18) ### Features diff --git a/controlplane/emails/package.json b/controlplane/emails/package.json index 3137499313..fffddbe20e 100644 --- a/controlplane/emails/package.json +++ b/controlplane/emails/package.json @@ -19,7 +19,7 @@ "@react-email/components": "0.0.36", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "react": "18.3.1", + "react": "catalog:", "react-email": "4.0.3" } } diff --git a/controlplane/eslint-local-rules.cjs b/controlplane/eslint-local-rules.cjs new file mode 100644 index 0000000000..5129b46b3e --- /dev/null +++ b/controlplane/eslint-local-rules.cjs @@ -0,0 +1,71 @@ +'use strict'; + +function isTraced(node) { + if (node.decorators && node.decorators.some((d) => d.expression && d.expression.name === 'traced')) { + return true; + } + + let container = node.parent; + let classNode = node; + // export default class wraps the ClassDeclaration in ExportDefaultDeclaration + if (container && container.type === 'ExportDefaultDeclaration') { + classNode = container; + container = container.parent; + } + if (!container || !container.body) { + return false; + } + const siblings = container.body; + const idx = siblings.indexOf(classNode); + for (let i = idx + 1; i < siblings.length; i++) { + const sibling = siblings[i]; + if ( + sibling.type === 'ExpressionStatement' && + sibling.expression && + sibling.expression.type === 'CallExpression' && + sibling.expression.callee && + sibling.expression.callee.name === 'traced' && + sibling.expression.arguments.length === 1 && + sibling.expression.arguments[0].name === node.id?.name + ) { + return true; + } + if (sibling.type === 'ClassDeclaration' || sibling.type === 'FunctionDeclaration') { + break; + } + } + return false; +} + +module.exports = { + 'no-arrow-in-traced': { + meta: { + type: 'problem', + docs: { + description: 'Disallow arrow function class fields in @traced classes', + }, + messages: { + noArrowInTraced: + 'Arrow function class fields are not traced by the @traced decorator. Convert to a regular method.', + }, + }, + create(context) { + return { + ClassDeclaration(node) { + if (!isTraced(node)) { + return; + } + for (const member of node.body.body) { + if ( + member.type === 'PropertyDefinition' && + member.value && + member.value.type === 'ArrowFunctionExpression' + ) { + context.report({ node: member, messageId: 'noArrowInTraced' }); + } + } + }, + }; + }, + }, +}; diff --git a/controlplane/migrations/0137_icy_sasquatch.sql b/controlplane/migrations/0137_icy_sasquatch.sql new file mode 100644 index 0000000000..e63075cc6c --- /dev/null +++ b/controlplane/migrations/0137_icy_sasquatch.sql @@ -0,0 +1,16 @@ +CREATE TABLE IF NOT EXISTS "onboarding" ( + "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "finished_at" timestamp with time zone, + "version" integer DEFAULT 1 NOT NULL, + "slack" boolean DEFAULT false NOT NULL, + "email" boolean DEFAULT false NOT NULL, + "user_id" uuid NOT NULL, + "organization_id" uuid NOT NULL +); +--> statement-breakpoint +ALTER TABLE "onboarding" ADD CONSTRAINT "onboarding_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; +--> statement-breakpoint +ALTER TABLE "onboarding" ADD CONSTRAINT "onboarding_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; +--> statement-breakpoint +ALTER TABLE "onboarding" ADD CONSTRAINT "onboarding_user_id_organization_id_version_unique" UNIQUE ("user_id", "organization_id", "version"); diff --git a/controlplane/migrations/0138_lazy_speedball.sql b/controlplane/migrations/0138_lazy_speedball.sql new file mode 100644 index 0000000000..45a009d909 --- /dev/null +++ b/controlplane/migrations/0138_lazy_speedball.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS "router_config_hash" ( + "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, + "federated_graph_id" uuid NOT NULL, + "feature_flag_id" uuid, + "hash" text NOT NULL, + "created_at" timestamp DEFAULT now(), + "updated_at" timestamp, + CONSTRAINT "fed_graph_feature_flag_idx" UNIQUE NULLS NOT DISTINCT("federated_graph_id","feature_flag_id") +); +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "router_config_hash" ADD CONSTRAINT "router_config_hash_federated_graph_id_federated_graphs_id_fk" FOREIGN KEY ("federated_graph_id") REFERENCES "public"."federated_graphs"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "router_config_hash" ADD CONSTRAINT "router_config_hash_feature_flag_id_feature_flags_id_fk" FOREIGN KEY ("feature_flag_id") REFERENCES "public"."feature_flags"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +ALTER TABLE "onboarding" DROP COLUMN IF EXISTS "updated_at"; \ No newline at end of file diff --git a/controlplane/migrations/0139_familiar_jackpot.sql b/controlplane/migrations/0139_familiar_jackpot.sql new file mode 100644 index 0000000000..622338ac2e --- /dev/null +++ b/controlplane/migrations/0139_familiar_jackpot.sql @@ -0,0 +1,2 @@ +ALTER TABLE "onboarding" ALTER COLUMN "slack" SET DEFAULT true;--> statement-breakpoint +ALTER TABLE "onboarding" ALTER COLUMN "email" SET DEFAULT true; \ No newline at end of file diff --git a/controlplane/migrations/0140_flimsy_joshua_kane.sql b/controlplane/migrations/0140_flimsy_joshua_kane.sql new file mode 100644 index 0000000000..7f270b1ff8 --- /dev/null +++ b/controlplane/migrations/0140_flimsy_joshua_kane.sql @@ -0,0 +1,29 @@ +CREATE TABLE IF NOT EXISTS "namespace_sso_providers" ( + "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, + "namespace_id" uuid NOT NULL, + "sso_provider_id" uuid, + "is_password_login" boolean DEFAULT false NOT NULL, + "is_google_login" boolean DEFAULT false NOT NULL, + "is_github_login" boolean DEFAULT false NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "nssp_builtin_xor_sso_check" CHECK (("namespace_sso_providers"."sso_provider_id" IS NOT NULL) <> ("namespace_sso_providers"."is_password_login" OR "namespace_sso_providers"."is_google_login" OR "namespace_sso_providers"."is_github_login")) +); +--> statement-breakpoint +ALTER TABLE "oidc_providers" ADD COLUMN "created_at" timestamp with time zone DEFAULT now() NOT NULL;--> statement-breakpoint +ALTER TABLE "sessions" ADD COLUMN "idp_alias" text;--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "namespace_sso_providers" ADD CONSTRAINT "namespace_sso_providers_namespace_id_namespaces_id_fk" FOREIGN KEY ("namespace_id") REFERENCES "public"."namespaces"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "namespace_sso_providers" ADD CONSTRAINT "namespace_sso_providers_sso_provider_id_oidc_providers_id_fk" FOREIGN KEY ("sso_provider_id") REFERENCES "public"."oidc_providers"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "nssp_namespace_id_idx" ON "namespace_sso_providers" USING btree ("namespace_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "nssp_sso_provider_id_idx" ON "namespace_sso_providers" USING btree ("sso_provider_id");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "nssp_unique_sso" ON "namespace_sso_providers" USING btree ("namespace_id","sso_provider_id") WHERE "namespace_sso_providers"."sso_provider_id" IS NOT NULL;--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "nssp_unique_builtin" ON "namespace_sso_providers" USING btree ("namespace_id") WHERE "namespace_sso_providers"."sso_provider_id" IS NULL; \ No newline at end of file diff --git a/controlplane/migrations/0141_faithful_boomer.sql b/controlplane/migrations/0141_faithful_boomer.sql new file mode 100644 index 0000000000..ce17896a67 --- /dev/null +++ b/controlplane/migrations/0141_faithful_boomer.sql @@ -0,0 +1,54 @@ +CREATE TABLE IF NOT EXISTS "organization_login_methods" ( + "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, + "organization_id" uuid NOT NULL, + "sso_provider_id" uuid, + "is_password_login" boolean DEFAULT false NOT NULL, + "is_google_login" boolean DEFAULT false NOT NULL, + "is_github_login" boolean DEFAULT false NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "olm_builtin_xor_sso_check" CHECK (("organization_login_methods"."sso_provider_id" IS NOT NULL) <> ("organization_login_methods"."is_password_login" OR "organization_login_methods"."is_google_login" OR "organization_login_methods"."is_github_login")) +); +--> statement-breakpoint +ALTER TABLE "namespace_sso_providers" RENAME TO "namespace_login_methods";--> statement-breakpoint +ALTER TABLE "namespace_login_methods" DROP CONSTRAINT "nssp_builtin_xor_sso_check";--> statement-breakpoint +ALTER TABLE "namespace_login_methods" DROP CONSTRAINT "namespace_sso_providers_namespace_id_namespaces_id_fk"; +--> statement-breakpoint +ALTER TABLE "namespace_login_methods" DROP CONSTRAINT "namespace_sso_providers_sso_provider_id_oidc_providers_id_fk"; +--> statement-breakpoint +DROP INDEX IF EXISTS "nssp_namespace_id_idx";--> statement-breakpoint +DROP INDEX IF EXISTS "nssp_sso_provider_id_idx";--> statement-breakpoint +DROP INDEX IF EXISTS "nssp_unique_sso";--> statement-breakpoint +DROP INDEX IF EXISTS "nssp_unique_builtin";--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "organization_login_methods" ADD CONSTRAINT "organization_login_methods_organization_id_organizations_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "organization_login_methods" ADD CONSTRAINT "organization_login_methods_sso_provider_id_oidc_providers_id_fk" FOREIGN KEY ("sso_provider_id") REFERENCES "public"."oidc_providers"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "olm_organization_id_idx" ON "organization_login_methods" USING btree ("organization_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "olm_sso_provider_id_idx" ON "organization_login_methods" USING btree ("sso_provider_id");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "olm_unique_sso" ON "organization_login_methods" USING btree ("organization_id","sso_provider_id") WHERE "organization_login_methods"."sso_provider_id" IS NOT NULL;--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "olm_unique_builtin" ON "organization_login_methods" USING btree ("organization_id") WHERE "organization_login_methods"."sso_provider_id" IS NULL;--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "namespace_login_methods" ADD CONSTRAINT "namespace_login_methods_namespace_id_namespaces_id_fk" FOREIGN KEY ("namespace_id") REFERENCES "public"."namespaces"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "namespace_login_methods" ADD CONSTRAINT "namespace_login_methods_sso_provider_id_oidc_providers_id_fk" FOREIGN KEY ("sso_provider_id") REFERENCES "public"."oidc_providers"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "nlm_namespace_id_idx" ON "namespace_login_methods" USING btree ("namespace_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "nlm_sso_provider_id_idx" ON "namespace_login_methods" USING btree ("sso_provider_id");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "nlm_unique_sso" ON "namespace_login_methods" USING btree ("namespace_id","sso_provider_id") WHERE "namespace_login_methods"."sso_provider_id" IS NOT NULL;--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "nlm_unique_builtin" ON "namespace_login_methods" USING btree ("namespace_id") WHERE "namespace_login_methods"."sso_provider_id" IS NULL;--> statement-breakpoint +ALTER TABLE "namespace_login_methods" ADD CONSTRAINT "nlm_builtin_xor_sso_check" CHECK (("namespace_login_methods"."sso_provider_id" IS NOT NULL) <> ("namespace_login_methods"."is_password_login" OR "namespace_login_methods"."is_google_login" OR "namespace_login_methods"."is_github_login")); \ No newline at end of file diff --git a/controlplane/migrations/meta/0137_snapshot.json b/controlplane/migrations/meta/0137_snapshot.json new file mode 100644 index 0000000000..f9cda65439 --- /dev/null +++ b/controlplane/migrations/meta/0137_snapshot.json @@ -0,0 +1,8284 @@ +{ + "id": "0bd8c2b5-5d88-4e49-92c8-f96c654a74b9", + "prevId": "d474eefb-2a0d-4a07-8887-3260aee174d4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": ["api_key_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": ["api_key_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": ["key"] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": ["source_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": ["downstream_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": ["source_federated_graph_id", "downstream_federated_graph_id"] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": ["feature_flag_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["feature_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": ["feature_flag_id", "feature_subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["feature_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["base_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": ["feature_subgraph_id", "base_subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "name"] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": ["client_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": ["file_path"] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "client_id", "operation_id"] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": ["composed_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["base_composition_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["composed_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": ["feature_flag_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": ["federated_graph_id", "base_composition_schema_version_id", "composed_schema_version_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": ["graph_composition_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": ["federated_graph_id"] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": ["privateKey"] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": ["publicKey"] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": ["linked_schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["source_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["target_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": ["source_subgraph_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": ["name", "organization_id"] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": ["alias"] + } + }, + "checkConstraints": {} + }, + "public.onboarding": { + "name": "onboarding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "slack": { + "name": "slack", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "email": { + "name": "email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "onboarding_user_id_users_id_fk": { + "name": "onboarding_user_id_users_id_fk", + "tableFrom": "onboarding", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "onboarding_organization_id_organizations_id_fk": { + "name": "onboarding_organization_id_organizations_id_fk", + "tableFrom": "onboarding", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "onboarding_user_id_organization_id_version_unique": { + "name": "onboarding_user_id_organization_id_version_unique", + "nullsNotDistinct": false, + "columns": ["user_id", "organization_id", "version"] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": ["organization_member_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": ["rule_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": ["rule_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": ["kc_group_id"] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": ["invitation_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": ["invited_by"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": ["organization_member_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": ["slug"] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": ["kc_group_id"] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["current_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": ["proposal_id", "subgraph_name"] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "name"] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": ["schema_check_change_action_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": ["schema_check_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": ["schema_check_change_action_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": ["check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": ["schema_check_id", "proposal_id"] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": ["schema_check_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": ["check_extension_delivery_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": ["user_id"] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": ["slack_integration_config_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": ["slack_integration_config_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": ["federated_graph_id", "subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": ["email"] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": ["webhook_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": ["webhook_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": ["webhook_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": ["webhook_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": ["PERSONAL", "ORGANIZATION"] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": ["added", "removed", "updated", "unchanged"] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": ["UNUSED_FIELDS", "DEPRECATED_FIELDS", "REQUIRE_DEPRECATION_BEFORE_DELETION"] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": ["slack"] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": ["warn", "error"] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": ["admin", "developer", "viewer"] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": ["pre-flight", "pre-operation", "post-operation"] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": ["success", "warn", "error"] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": ["INTERNAL", "EXTERNAL"] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": ["DRAFT", "APPROVED", "PUBLISHED", "CLOSED"] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": ["standard", "grpc_plugin", "grpc_service"] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": ["ws", "sse", "sse_post"] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": ["incomplete", "incomplete_expired", "trialing", "active", "past_due", "canceled", "unpaid", "paused"] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": ["federated", "subgraph"] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": ["webhook", "slack", "admission", "check-extension"] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": ["auto", "graphql-ws", "graphql-transport-ws"] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/controlplane/migrations/meta/0138_snapshot.json b/controlplane/migrations/meta/0138_snapshot.json new file mode 100644 index 0000000000..7aa9b0877d --- /dev/null +++ b/controlplane/migrations/meta/0138_snapshot.json @@ -0,0 +1,9083 @@ +{ + "id": "d9d2237f-31b0-415d-b3cc-d921719ab961", + "prevId": "0bd8c2b5-5d88-4e49-92c8-f96c654a74b9", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": [ + "key" + ] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "source_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "downstream_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": [ + "source_federated_graph_id", + "downstream_federated_graph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": [ + "feature_flag_id", + "feature_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "base_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": [ + "feature_subgraph_id", + "base_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": [ + "client_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": [ + "file_path" + ] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "client_id", + "operation_id" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "base_composition_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": [ + "federated_graph_id", + "base_composition_schema_version_id", + "composed_schema_version_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": [ + "token" + ] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": [ + "graph_composition_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id" + ] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": [ + "privateKey" + ] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": [ + "publicKey" + ] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "linked_schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "source_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "target_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "source_subgraph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": [ + "name", + "organization_id" + ] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": [ + "alias" + ] + } + }, + "checkConstraints": {} + }, + "public.onboarding": { + "name": "onboarding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "slack": { + "name": "slack", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "email": { + "name": "email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "onboarding_user_id_users_id_fk": { + "name": "onboarding_user_id_users_id_fk", + "tableFrom": "onboarding", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "onboarding_organization_id_organizations_id_fk": { + "name": "onboarding_organization_id_organizations_id_fk", + "tableFrom": "onboarding", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "onboarding_user_id_organization_id_version_unique": { + "name": "onboarding_user_id_organization_id_version_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "organization_id", + "version" + ] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": [ + "invitation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "current_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": [ + "proposal_id", + "subgraph_name" + ] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.router_config_hash": { + "name": "router_config_hash", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "router_config_hash_federated_graph_id_federated_graphs_id_fk": { + "name": "router_config_hash_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "router_config_hash_feature_flag_id_feature_flags_id_fk": { + "name": "router_config_hash_feature_flag_id_feature_flags_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "fed_graph_feature_flag_idx": { + "name": "fed_graph_feature_flag_idx", + "nullsNotDistinct": true, + "columns": [ + "federated_graph_id", + "feature_flag_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": [ + "schema_check_id", + "proposal_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": [ + "check_extension_delivery_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": [ + "integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": [ + "slack_integration_config_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": [ + "slack_integration_config_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": [ + "federated_graph_id", + "subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": [ + "PERSONAL", + "ORGANIZATION" + ] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": [ + "added", + "removed", + "updated", + "unchanged" + ] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": [ + "UNUSED_FIELDS", + "DEPRECATED_FIELDS", + "REQUIRE_DEPRECATION_BEFORE_DELETION" + ] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": [ + "slack" + ] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": [ + "warn", + "error" + ] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": [ + "admin", + "developer", + "viewer" + ] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": [ + "pre-flight", + "pre-operation", + "post-operation" + ] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": [ + "success", + "warn", + "error" + ] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": [ + "INTERNAL", + "EXTERNAL" + ] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": [ + "DRAFT", + "APPROVED", + "PUBLISHED", + "CLOSED" + ] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": [ + "standard", + "grpc_plugin", + "grpc_service" + ] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": [ + "ws", + "sse", + "sse_post" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "incomplete", + "incomplete_expired", + "trialing", + "active", + "past_due", + "canceled", + "unpaid", + "paused" + ] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": [ + "federated", + "subgraph" + ] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": [ + "webhook", + "slack", + "admission", + "check-extension" + ] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": [ + "auto", + "graphql-ws", + "graphql-transport-ws" + ] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/controlplane/migrations/meta/0139_snapshot.json b/controlplane/migrations/meta/0139_snapshot.json new file mode 100644 index 0000000000..671136f189 --- /dev/null +++ b/controlplane/migrations/meta/0139_snapshot.json @@ -0,0 +1,8352 @@ +{ + "id": "d64b6ece-eddb-46cb-a112-229e1ec17746", + "prevId": "d9d2237f-31b0-415d-b3cc-d921719ab961", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": ["api_key_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": ["api_key_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": ["key"] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": ["source_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": ["downstream_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": ["source_federated_graph_id", "downstream_federated_graph_id"] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": ["feature_flag_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["feature_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": ["feature_flag_id", "feature_subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["feature_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["base_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": ["feature_subgraph_id", "base_subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "name"] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": ["client_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": ["updated_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": ["file_path"] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "client_id", "operation_id"] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": ["composed_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["base_composition_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["composed_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": ["feature_flag_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": ["federated_graph_id", "base_composition_schema_version_id", "composed_schema_version_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": ["graph_composition_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": ["federated_graph_id"] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": ["privateKey"] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": ["publicKey"] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": ["linked_schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["source_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["target_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": ["source_subgraph_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": ["namespace_id"] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": ["name", "organization_id"] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": ["alias"] + } + }, + "checkConstraints": {} + }, + "public.onboarding": { + "name": "onboarding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "slack": { + "name": "slack", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "email": { + "name": "email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "onboarding_user_id_users_id_fk": { + "name": "onboarding_user_id_users_id_fk", + "tableFrom": "onboarding", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "onboarding_organization_id_organizations_id_fk": { + "name": "onboarding_organization_id_organizations_id_fk", + "tableFrom": "onboarding", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "onboarding_user_id_organization_id_version_unique": { + "name": "onboarding_user_id_organization_id_version_unique", + "nullsNotDistinct": false, + "columns": ["user_id", "organization_id", "version"] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": ["organization_member_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": ["rule_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": ["rule_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": ["kc_group_id"] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": ["invitation_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": ["invited_by"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": ["organization_member_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": ["slug"] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": ["kc_group_id"] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["current_schema_version_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": ["proposal_id", "subgraph_name"] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": ["federated_graph_id", "name"] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.router_config_hash": { + "name": "router_config_hash", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "router_config_hash_federated_graph_id_federated_graphs_id_fk": { + "name": "router_config_hash_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "router_config_hash_feature_flag_id_feature_flags_id_fk": { + "name": "router_config_hash_feature_flag_id_feature_flags_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "feature_flags", + "columnsFrom": ["feature_flag_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "fed_graph_feature_flag_idx": { + "name": "fed_graph_feature_flag_idx", + "nullsNotDistinct": true, + "columns": ["federated_graph_id", "feature_flag_id"] + } + }, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": ["schema_check_change_action_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": ["schema_check_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": ["schema_check_change_action_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": ["check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": ["proposal_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": ["schema_check_id", "proposal_id"] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": ["schema_check_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": ["schema_check_federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": ["schema_check_subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": ["check_extension_delivery_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": ["user_id"] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": ["slack_integration_config_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": ["slack_integration_config_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": ["schema_version_id"], + "columnsTo": ["id"], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": ["subgraph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": ["federated_graph_id", "subgraph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": ["target_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": ["created_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": ["namespace_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": ["email"] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": ["created_by_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": ["webhook_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": ["webhook_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": ["webhook_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": ["federated_graph_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": ["webhook_id", "federated_graph_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": ["PERSONAL", "ORGANIZATION"] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": ["added", "removed", "updated", "unchanged"] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": ["UNUSED_FIELDS", "DEPRECATED_FIELDS", "REQUIRE_DEPRECATION_BEFORE_DELETION"] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": ["slack"] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": ["warn", "error"] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": ["admin", "developer", "viewer"] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": ["pre-flight", "pre-operation", "post-operation"] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": ["success", "warn", "error"] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": ["INTERNAL", "EXTERNAL"] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": ["DRAFT", "APPROVED", "PUBLISHED", "CLOSED"] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": ["standard", "grpc_plugin", "grpc_service"] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": ["ws", "sse", "sse_post"] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": ["incomplete", "incomplete_expired", "trialing", "active", "past_due", "canceled", "unpaid", "paused"] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": ["federated", "subgraph"] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": ["webhook", "slack", "admission", "check-extension"] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": ["auto", "graphql-ws", "graphql-transport-ws"] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/controlplane/migrations/meta/0140_snapshot.json b/controlplane/migrations/meta/0140_snapshot.json new file mode 100644 index 0000000000..1980fcc6a7 --- /dev/null +++ b/controlplane/migrations/meta/0140_snapshot.json @@ -0,0 +1,9255 @@ +{ + "id": "8462c8f2-a1d5-418c-8689-972e478ac5d6", + "prevId": "d64b6ece-eddb-46cb-a112-229e1ec17746", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": [ + "key" + ] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "source_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "downstream_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": [ + "source_federated_graph_id", + "downstream_federated_graph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": [ + "feature_flag_id", + "feature_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "base_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": [ + "feature_subgraph_id", + "base_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": [ + "client_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": [ + "file_path" + ] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "client_id", + "operation_id" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "base_composition_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": [ + "federated_graph_id", + "base_composition_schema_version_id", + "composed_schema_version_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": [ + "token" + ] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": [ + "graph_composition_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id" + ] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": [ + "privateKey" + ] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": [ + "publicKey" + ] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "linked_schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "source_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "target_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "source_subgraph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_sso_providers": { + "name": "namespace_sso_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "sso_provider_id": { + "name": "sso_provider_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_password_login": { + "name": "is_password_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_google_login": { + "name": "is_google_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_github_login": { + "name": "is_github_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nssp_namespace_id_idx": { + "name": "nssp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "nssp_sso_provider_id_idx": { + "name": "nssp_sso_provider_id_idx", + "columns": [ + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "nssp_unique_sso": { + "name": "nssp_unique_sso", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"namespace_sso_providers\".\"sso_provider_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "nssp_unique_builtin": { + "name": "nssp_unique_builtin", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"namespace_sso_providers\".\"sso_provider_id\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_sso_providers_namespace_id_namespaces_id_fk": { + "name": "namespace_sso_providers_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_sso_providers", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespace_sso_providers_sso_provider_id_oidc_providers_id_fk": { + "name": "namespace_sso_providers_sso_provider_id_oidc_providers_id_fk", + "tableFrom": "namespace_sso_providers", + "tableTo": "oidc_providers", + "columnsFrom": [ + "sso_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": { + "nssp_builtin_xor_sso_check": { + "name": "nssp_builtin_xor_sso_check", + "value": "(\"namespace_sso_providers\".\"sso_provider_id\" IS NOT NULL) <> (\"namespace_sso_providers\".\"is_password_login\" OR \"namespace_sso_providers\".\"is_google_login\" OR \"namespace_sso_providers\".\"is_github_login\")" + } + } + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": [ + "name", + "organization_id" + ] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": [ + "alias" + ] + } + }, + "checkConstraints": {} + }, + "public.onboarding": { + "name": "onboarding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "slack": { + "name": "slack", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "email": { + "name": "email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "onboarding_user_id_users_id_fk": { + "name": "onboarding_user_id_users_id_fk", + "tableFrom": "onboarding", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "onboarding_organization_id_organizations_id_fk": { + "name": "onboarding_organization_id_organizations_id_fk", + "tableFrom": "onboarding", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "onboarding_user_id_organization_id_version_unique": { + "name": "onboarding_user_id_organization_id_version_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "organization_id", + "version" + ] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": [ + "invitation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "current_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": [ + "proposal_id", + "subgraph_name" + ] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.router_config_hash": { + "name": "router_config_hash", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "router_config_hash_federated_graph_id_federated_graphs_id_fk": { + "name": "router_config_hash_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "router_config_hash_feature_flag_id_feature_flags_id_fk": { + "name": "router_config_hash_feature_flag_id_feature_flags_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "fed_graph_feature_flag_idx": { + "name": "fed_graph_feature_flag_idx", + "nullsNotDistinct": true, + "columns": [ + "federated_graph_id", + "feature_flag_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": [ + "schema_check_id", + "proposal_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": [ + "check_extension_delivery_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "idp_alias": { + "name": "idp_alias", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": [ + "integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": [ + "slack_integration_config_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": [ + "slack_integration_config_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": [ + "federated_graph_id", + "subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": [ + "PERSONAL", + "ORGANIZATION" + ] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": [ + "added", + "removed", + "updated", + "unchanged" + ] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": [ + "UNUSED_FIELDS", + "DEPRECATED_FIELDS", + "REQUIRE_DEPRECATION_BEFORE_DELETION" + ] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": [ + "slack" + ] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": [ + "warn", + "error" + ] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": [ + "admin", + "developer", + "viewer" + ] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": [ + "pre-flight", + "pre-operation", + "post-operation" + ] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": [ + "success", + "warn", + "error" + ] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": [ + "INTERNAL", + "EXTERNAL" + ] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": [ + "DRAFT", + "APPROVED", + "PUBLISHED", + "CLOSED" + ] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": [ + "standard", + "grpc_plugin", + "grpc_service" + ] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": [ + "ws", + "sse", + "sse_post" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "incomplete", + "incomplete_expired", + "trialing", + "active", + "past_due", + "canceled", + "unpaid", + "paused" + ] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": [ + "federated", + "subgraph" + ] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": [ + "webhook", + "slack", + "admission", + "check-extension" + ] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": [ + "auto", + "graphql-ws", + "graphql-transport-ws" + ] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/controlplane/migrations/meta/0141_snapshot.json b/controlplane/migrations/meta/0141_snapshot.json new file mode 100644 index 0000000000..9112e51a3f --- /dev/null +++ b/controlplane/migrations/meta/0141_snapshot.json @@ -0,0 +1,9414 @@ +{ + "id": "cf701524-2af6-40c6-b864-aa8b9a3a95aa", + "prevId": "8462c8f2-a1d5-418c-8689-972e478ac5d6", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": [ + "key" + ] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "source_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "downstream_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": [ + "source_federated_graph_id", + "downstream_federated_graph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": [ + "feature_flag_id", + "feature_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "base_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": [ + "feature_subgraph_id", + "base_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": [ + "client_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": [ + "file_path" + ] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "client_id", + "operation_id" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "base_composition_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": [ + "federated_graph_id", + "base_composition_schema_version_id", + "composed_schema_version_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": [ + "token" + ] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": [ + "graph_composition_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id" + ] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": [ + "privateKey" + ] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": [ + "publicKey" + ] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "linked_schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "source_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "target_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "source_subgraph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_login_methods": { + "name": "namespace_login_methods", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "sso_provider_id": { + "name": "sso_provider_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_password_login": { + "name": "is_password_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_google_login": { + "name": "is_google_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_github_login": { + "name": "is_github_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nlm_namespace_id_idx": { + "name": "nlm_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "nlm_sso_provider_id_idx": { + "name": "nlm_sso_provider_id_idx", + "columns": [ + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "nlm_unique_sso": { + "name": "nlm_unique_sso", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"namespace_login_methods\".\"sso_provider_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "nlm_unique_builtin": { + "name": "nlm_unique_builtin", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"namespace_login_methods\".\"sso_provider_id\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_login_methods_namespace_id_namespaces_id_fk": { + "name": "namespace_login_methods_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_login_methods", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespace_login_methods_sso_provider_id_oidc_providers_id_fk": { + "name": "namespace_login_methods_sso_provider_id_oidc_providers_id_fk", + "tableFrom": "namespace_login_methods", + "tableTo": "oidc_providers", + "columnsFrom": [ + "sso_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": { + "nlm_builtin_xor_sso_check": { + "name": "nlm_builtin_xor_sso_check", + "value": "(\"namespace_login_methods\".\"sso_provider_id\" IS NOT NULL) <> (\"namespace_login_methods\".\"is_password_login\" OR \"namespace_login_methods\".\"is_google_login\" OR \"namespace_login_methods\".\"is_github_login\")" + } + } + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": [ + "name", + "organization_id" + ] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": [ + "alias" + ] + } + }, + "checkConstraints": {} + }, + "public.onboarding": { + "name": "onboarding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "slack": { + "name": "slack", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "email": { + "name": "email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "onboarding_user_id_users_id_fk": { + "name": "onboarding_user_id_users_id_fk", + "tableFrom": "onboarding", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "onboarding_organization_id_organizations_id_fk": { + "name": "onboarding_organization_id_organizations_id_fk", + "tableFrom": "onboarding", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "onboarding_user_id_organization_id_version_unique": { + "name": "onboarding_user_id_organization_id_version_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "organization_id", + "version" + ] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": [ + "invitation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_login_methods": { + "name": "organization_login_methods", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "sso_provider_id": { + "name": "sso_provider_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_password_login": { + "name": "is_password_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_google_login": { + "name": "is_google_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_github_login": { + "name": "is_github_login", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "olm_organization_id_idx": { + "name": "olm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "olm_sso_provider_id_idx": { + "name": "olm_sso_provider_id_idx", + "columns": [ + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "olm_unique_sso": { + "name": "olm_unique_sso", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sso_provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"organization_login_methods\".\"sso_provider_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "olm_unique_builtin": { + "name": "olm_unique_builtin", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"organization_login_methods\".\"sso_provider_id\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_login_methods_organization_id_organizations_id_fk": { + "name": "organization_login_methods_organization_id_organizations_id_fk", + "tableFrom": "organization_login_methods", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_login_methods_sso_provider_id_oidc_providers_id_fk": { + "name": "organization_login_methods_sso_provider_id_oidc_providers_id_fk", + "tableFrom": "organization_login_methods", + "tableTo": "oidc_providers", + "columnsFrom": [ + "sso_provider_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": { + "olm_builtin_xor_sso_check": { + "name": "olm_builtin_xor_sso_check", + "value": "(\"organization_login_methods\".\"sso_provider_id\" IS NOT NULL) <> (\"organization_login_methods\".\"is_password_login\" OR \"organization_login_methods\".\"is_google_login\" OR \"organization_login_methods\".\"is_github_login\")" + } + } + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "current_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": [ + "proposal_id", + "subgraph_name" + ] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.router_config_hash": { + "name": "router_config_hash", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "router_config_hash_federated_graph_id_federated_graphs_id_fk": { + "name": "router_config_hash_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "router_config_hash_feature_flag_id_feature_flags_id_fk": { + "name": "router_config_hash_feature_flag_id_feature_flags_id_fk", + "tableFrom": "router_config_hash", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "fed_graph_feature_flag_idx": { + "name": "fed_graph_feature_flag_idx", + "nullsNotDistinct": true, + "columns": [ + "federated_graph_id", + "feature_flag_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": [ + "schema_check_id", + "proposal_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": [ + "check_extension_delivery_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "idp_alias": { + "name": "idp_alias", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": [ + "integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": [ + "slack_integration_config_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": [ + "slack_integration_config_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": [ + "federated_graph_id", + "subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": [ + "PERSONAL", + "ORGANIZATION" + ] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": [ + "added", + "removed", + "updated", + "unchanged" + ] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": [ + "UNUSED_FIELDS", + "DEPRECATED_FIELDS", + "REQUIRE_DEPRECATION_BEFORE_DELETION" + ] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": [ + "slack" + ] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": [ + "warn", + "error" + ] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": [ + "admin", + "developer", + "viewer" + ] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": [ + "pre-flight", + "pre-operation", + "post-operation" + ] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": [ + "success", + "warn", + "error" + ] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": [ + "INTERNAL", + "EXTERNAL" + ] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": [ + "DRAFT", + "APPROVED", + "PUBLISHED", + "CLOSED" + ] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": [ + "standard", + "grpc_plugin", + "grpc_service" + ] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": [ + "ws", + "sse", + "sse_post" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "incomplete", + "incomplete_expired", + "trialing", + "active", + "past_due", + "canceled", + "unpaid", + "paused" + ] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": [ + "federated", + "subgraph" + ] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": [ + "webhook", + "slack", + "admission", + "check-extension" + ] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": [ + "auto", + "graphql-ws", + "graphql-transport-ws" + ] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/controlplane/migrations/meta/_journal.json b/controlplane/migrations/meta/_journal.json index 20203a0544..59bf6f0b20 100644 --- a/controlplane/migrations/meta/_journal.json +++ b/controlplane/migrations/meta/_journal.json @@ -960,6 +960,41 @@ "when": 1772187315878, "tag": "0136_eminent_vermin", "breakpoints": true + }, + { + "idx": 137, + "version": "7", + "when": 1775025668087, + "tag": "0137_icy_sasquatch", + "breakpoints": true + }, + { + "idx": 138, + "version": "7", + "when": 1778492417221, + "tag": "0138_lazy_speedball", + "breakpoints": true + }, + { + "idx": 139, + "version": "7", + "when": 1779448685202, + "tag": "0139_familiar_jackpot", + "breakpoints": true + }, + { + "idx": 140, + "version": "7", + "when": 1779957152472, + "tag": "0140_flimsy_joshua_kane", + "breakpoints": true + }, + { + "idx": 141, + "version": "7", + "when": 1780043447126, + "tag": "0141_faithful_boomer", + "breakpoints": true } ] } \ No newline at end of file diff --git a/controlplane/package.json b/controlplane/package.json index 56855a7d2e..57a72a52da 100644 --- a/controlplane/package.json +++ b/controlplane/package.json @@ -1,6 +1,6 @@ { "name": "controlplane", - "version": "0.208.0", + "version": "0.231.0", "private": true, "description": "WunderGraph Cosmo Controlplane", "type": "module", @@ -28,6 +28,7 @@ "lint": "eslint --cache --ext .ts,.mjs,.cjs . && prettier -c src", "lint:fix": "eslint --cache --fix --ext .ts,.mjs,.cjs . && pnpm format", "format": "prettier -w .", + "sentry:spotlight": "spotlight", "migrate": "pnpm db:migrate && pnpm ch:migrate", "drizzle:up": "drizzle-kit up", "ch:down": "dbmate -d \"./clickhouse/migrations\" down", @@ -45,13 +46,13 @@ "dependencies": { "@aws-sdk/client-s3": "^3.996.0", "@bufbuild/buf": "^1.32.2", - "@connectrpc/connect": "^1.4.0", - "@connectrpc/connect-fastify": "^1.4.0", - "@connectrpc/connect-node": "^1.4.0", + "@connectrpc/connect": "catalog:", + "@connectrpc/connect-fastify": "1.5.0", + "@connectrpc/connect-node": "catalog:", "@fastify/cors": "^9.0.1", "@graphql-eslint/eslint-plugin": "^3.20.1", "@graphql-inspector/core": "^6.2.1", - "@graphql-tools/utils": "^11.0.0", + "@graphql-tools/utils": "catalog:", "@keycloak/keycloak-admin-client": "26.5.4", "@octokit/webhooks-types": "^7.6.1", "@sentry/node": "^10.19.0", @@ -62,32 +63,34 @@ "@wundergraph/cosmo-connect": "workspace:*", "@wundergraph/cosmo-shared": "workspace:*", "@wundergraph/protographic": "workspace:*", - "axios": "^1.13.5", + "axios": "catalog:", "axios-retry": "^4.5.0", "bullmq": "^5.10.0", "cookie": "^0.7.2", - "date-fns": "^3.6.0", - "dotenv": "^16.4.5", + "date-fns": "catalog:", + "dotenv": "catalog:", "drizzle-orm": "^0.35.3", "ejs": "^3.1.10", - "eslint": "^8.57.1", + "eslint": "catalog:", "execa": "^9.5.2", "fastify": "^4.28.1", "fastify-graceful-shutdown": "^4.0.1", "fastify-plugin": "^4.5.1", "fastify-raw-body": "^4.3.0", - "graphql": "^16.9.0", + "graphql": "catalog:", + "http-proxy-agent": "8.0.0", + "https-proxy-agent": "8.0.0", "ioredis": "^5.4.1", "isomorphic-dompurify": "^2.33.0", "jose": "^5.2.4", - "lodash": "^4.17.21", + "lodash-es": "catalog:", "nodemailer": "^7.0.11", "nuid": "^1.1.6", "octokit": "^4.1.3", "openai": "^4.104.0", "p-limit": "^6.1.0", "p-retry": "^6.2.0", - "pino": "^8.19.0", + "pino": "catalog:", "postgres": "^3.4.5", "prom-client": "^15.1.3", "rxjs": "^7.8.1", @@ -97,30 +100,32 @@ "tinypool": "^2.1.0", "uid": "^2.0.2", "uuid": "^10.0.0", - "zod": "^3.25.0", + "zod": "catalog:", "zod-to-json-schema": "^3.22.4" }, "devDependencies": { - "@bufbuild/protobuf": "^1.9.0", + "@bufbuild/protobuf": "catalog:", "@bufbuild/protoc-gen-es": "^1.9.0", "@connectrpc/protoc-gen-connect-es": "^1.4.0", + "@spotlightjs/spotlight": "^4.10.0", "@types/cookie": "^0.6.0", "@types/ejs": "^3.1.5", "@types/eslint": "^9.6.1", - "@types/lodash": "^4.14.202", - "@types/node": "^18.19.21", + "@types/lodash-es": "catalog:", + "@types/node": "catalog:", "@types/nodemailer": "^7.0.3", "@types/stream-json": "^1.7.7", "@types/uuid": "^9.0.8", - "@vitest/coverage-v8": "3.2.4", - "del-cli": "^5.1.0", + "@vitest/coverage-v8": "catalog:", + "del-cli": "catalog:", "drizzle-kit": "^0.26.2", - "eslint-config-unjs": "^0.2.1", - "eslint-plugin-require-extensions": "^0.1.3", + "eslint-config-unjs": "catalog:", + "eslint-plugin-local-rules": "^3.0.2", + "eslint-plugin-require-extensions": "catalog:", "msw": "^2.2.11", "pino-pretty": "^10.3.1", - "tsx": "^4.16.0", - "typescript": "5.5.2", - "vitest": "^3.2.4" + "tsx": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/controlplane/src/bin/billing.json b/controlplane/src/bin/billing.json index 854457256e..489de9b9fe 100644 --- a/controlplane/src/bin/billing.json +++ b/controlplane/src/bin/billing.json @@ -33,7 +33,8 @@ "id": "plugins", "description": "3 Plugins", "limit": 3 - } + }, + { "id": "persisted-operations", "limit": 3000 } ] }, "launch@1": { @@ -80,6 +81,7 @@ "description": "10 Plugins", "limit": 10 }, + { "id": "persisted-operations", "limit": 3000 }, { "id": "proposals", "description": "Proposals" } ] }, @@ -133,6 +135,7 @@ "description": "20 Plugins", "limit": 20 }, + { "id": "persisted-operations", "limit": 3000 }, { "id": "proposals", "description": "Proposals" } ] }, @@ -189,10 +192,15 @@ "description": "Custom Number of Plugins", "limit": 30 }, + { "id": "persisted-operations", "limit": 3000 }, { "id": "proposals", "description": "Proposals" }, { "id": "subgraph-check-extensions", "description": "Subgraph Check Extensions" + }, + { + "id": "login-method-restrictions", + "description": "Restrict login methods per organization and namespace" } ] } diff --git a/controlplane/src/bin/get-config.ts b/controlplane/src/bin/get-config.ts index 0a78771137..b7a62ea504 100644 --- a/controlplane/src/bin/get-config.ts +++ b/controlplane/src/bin/get-config.ts @@ -49,6 +49,20 @@ const getConfig = () => { password: process.env.S3_SECRET_ACCESS_KEY, forcePathStyle: process.env.S3_FORCE_PATH_STYLE === undefined ? true : process.env.S3_FORCE_PATH_STYLE === 'true', }, + + s3StorageFailover: process.env.S3_FAILOVER_STORAGE_URL + ? { + url: process.env.S3_FAILOVER_STORAGE_URL, + endpoint: process.env.S3_FAILOVER_ENDPOINT, + region: process.env.S3_FAILOVER_REGION || 'auto', + username: process.env.S3_FAILOVER_ACCESS_KEY_ID, + password: process.env.S3_FAILOVER_SECRET_ACCESS_KEY, + forcePathStyle: + process.env.S3_FAILOVER_FORCE_PATH_STYLE === undefined + ? true + : process.env.S3_FAILOVER_FORCE_PATH_STYLE === 'true', + } + : undefined, }; }; diff --git a/controlplane/src/core/auth-utils.ts b/controlplane/src/core/auth-utils.ts index 18dc266b14..340bfffee1 100644 --- a/controlplane/src/core/auth-utils.ts +++ b/controlplane/src/core/auth-utils.ts @@ -26,7 +26,7 @@ import { OrganizationGroupRepository } from './repositories/OrganizationGroupRep import { DefaultNamespace, NamespaceRepository } from './repositories/NamespaceRepository.js'; import Keycloak from './services/Keycloak.js'; import { IPlatformWebhookService } from './webhooks/PlatformWebhookService.js'; - +import { traced } from './tracing.js'; export type AuthUtilsOptions = { webBaseUrl: string; webErrorPath: string; @@ -593,6 +593,17 @@ export default class AuthUtils { // Otherwise, insert a new session. Because we use an Idp like keycloak, // we can assume that the user will have only one session per client at a time. const { accessToken, refreshToken, idToken } = sessionData; + + let idpAlias: string | null = null; + try { + const claims = decodeJWT<{ identity_provider?: string }>(idToken); + if (typeof claims.identity_provider === 'string' && claims.identity_provider.length > 0) { + idpAlias = claims.identity_provider; + } + } catch { + // unsigned/malformed id_token — treat as password login + } + const insertedSessions = await db .insert(sessions) .values({ @@ -600,6 +611,7 @@ export default class AuthUtils { idToken, accessToken, refreshToken, + idpAlias, expiresAt: sessionExpiresDate, }) .onConflictDoUpdate({ @@ -609,6 +621,7 @@ export default class AuthUtils { idToken, accessToken, refreshToken, + idpAlias, expiresAt: sessionExpiresDate, updatedAt: new Date(), }, @@ -711,3 +724,5 @@ export default class AuthUtils { return 0; } } + +traced(AuthUtils); diff --git a/controlplane/src/core/blobstorage/dual.ts b/controlplane/src/core/blobstorage/dual.ts new file mode 100644 index 0000000000..f24f566425 --- /dev/null +++ b/controlplane/src/core/blobstorage/dual.ts @@ -0,0 +1,71 @@ +import { traced } from '../tracing.js'; +import type { BlobObject, BlobStorage } from './index.js'; + +/** + * A BlobStorage implementation that writes to two underlying stores (primary + secondary). + * + * - Writes and deletes go to both stores concurrently; both must succeed. + * - Reads try the primary first, falling back to the secondary on failure. + */ +@traced +export class DualBlobStorage implements BlobStorage { + constructor( + private primary: BlobStorage, + private secondary: BlobStorage, + ) {} + + async putObject>(data: { + key: string; + abortSignal?: AbortSignal; + body: Buffer; + contentType: string; + metadata?: Metadata; + }): Promise { + const results = await Promise.allSettled([this.primary.putObject(data), this.secondary.putObject(data)]); + const [primaryResult, secondaryResult] = results; + + if (primaryResult.status === 'fulfilled' && secondaryResult.status === 'fulfilled') { + return; + } + + // Roll back successful writes before throwing, independent of the caller's signal + const rollbacks: Promise[] = []; + if (primaryResult.status === 'fulfilled') { + rollbacks.push(this.primary.deleteObject({ key: data.key })); + } + if (secondaryResult.status === 'fulfilled') { + rollbacks.push(this.secondary.deleteObject({ key: data.key })); + } + const rollbackResults = await Promise.allSettled(rollbacks); + + const putErrors = results.filter((r): r is PromiseRejectedResult => r.status === 'rejected').map((r) => r.reason); + const rollbackErrors = rollbackResults + .filter((r): r is PromiseRejectedResult => r.status === 'rejected') + .map((r) => r.reason); + throw new AggregateError([...putErrors, ...rollbackErrors], 'Failed to put object into storage'); + } + + async getObject(data: { key: string; abortSignal?: AbortSignal }): Promise { + try { + return await this.primary.getObject(data); + } catch (primaryError) { + try { + return await this.secondary.getObject(data); + } catch (secondaryError) { + throw new AggregateError( + [primaryError, secondaryError], + 'Both primary and secondary storage failed to get object', + ); + } + } + } + + async removeDirectory(data: { key: string; abortSignal?: AbortSignal }): Promise { + const results = await Promise.all([this.primary.removeDirectory(data), this.secondary.removeDirectory(data)]); + return results[0]; + } + + async deleteObject(data: { key: string; abortSignal?: AbortSignal }): Promise { + await Promise.all([this.primary.deleteObject(data), this.secondary.deleteObject(data)]); + } +} diff --git a/controlplane/src/core/blobstorage/index.ts b/controlplane/src/core/blobstorage/index.ts index 33d7fcba0d..7b64ec1baa 100644 --- a/controlplane/src/core/blobstorage/index.ts +++ b/controlplane/src/core/blobstorage/index.ts @@ -1,4 +1,5 @@ export { S3BlobStorage } from './s3.js'; +export { DualBlobStorage } from './dual.js'; export class BlobNotFoundError extends Error { constructor(message: string, cause?: Error) { diff --git a/controlplane/src/core/blobstorage/s3.ts b/controlplane/src/core/blobstorage/s3.ts index 279259db45..f23f7d0d78 100644 --- a/controlplane/src/core/blobstorage/s3.ts +++ b/controlplane/src/core/blobstorage/s3.ts @@ -7,6 +7,7 @@ import { PutObjectCommand, S3Client, } from '@aws-sdk/client-s3'; +import { traced } from '../tracing.js'; import { BlobNotFoundError, BlobObject, type BlobStorage } from './index.js'; const maxConcurrency = 10; // Maximum number of concurrent operations @@ -26,6 +27,7 @@ export interface S3BlobStorageConfig { /** * Stores objects in S3 given an S3Client and a bucket name */ +@traced export class S3BlobStorage implements BlobStorage { private readonly useIndividualDeletes: boolean; diff --git a/controlplane/src/core/bufservices/PlatformService.ts b/controlplane/src/core/bufservices/PlatformService.ts index 77efc792ce..a818e79677 100644 --- a/controlplane/src/core/bufservices/PlatformService.ts +++ b/controlplane/src/core/bufservices/PlatformService.ts @@ -45,8 +45,11 @@ import { enableFeatureFlag } from './feature-flag/enableFeatureFlag.js'; import { getFeatureFlagByName } from './feature-flag/getFeatureFlagByName.js'; import { getFeatureFlags } from './feature-flag/getFeatureFlags.js'; import { getFeatureFlagsByFederatedGraph } from './feature-flag/getFeatureFlagsByFederatedGraph.js'; +import { getFeatureFlagsInLatestCompositionByFederatedGraph } from './feature-flag/getFeatureFlagsInLatestCompositionByFederatedGraph.js'; import { getFeatureSubgraphs } from './feature-flag/getFeatureSubgraphs.js'; +import { getFeatureSubgraphsByFederatedGraph } from './feature-flag/getFeatureSubgraphsByFederatedGraph.js'; import { getFeatureSubgraphsByFeatureFlag } from './feature-flag/getFeatureSubgraphsByFeatureFlag.js'; +import { recomposeFeatureFlag } from './feature-flag/recomposeFeatureFlag.js'; import { updateFeatureFlag } from './feature-flag/updateFeatureFlag.js'; import { checkFederatedGraph } from './federated-graph/checkFederatedGraph.js'; import { createFederatedGraph } from './federated-graph/createFederatedGraph.js'; @@ -81,9 +84,16 @@ import { migrateMonograph } from './monograph/migrateMonograph.js'; import { moveMonograph } from './monograph/moveMonograph.js'; import { publishMonograph } from './monograph/publishMonograph.js'; import { updateMonograph } from './monograph/updateMonograph.js'; +import { createOnboarding } from './onboarding/createOnboarding.js'; +import { finishOnboarding } from './onboarding/finishOnboarding.js'; +import { getOnboarding } from './onboarding/getOnboarding.js'; import { createNamespace } from './namespace/createNamespace.js'; import { deleteNamespace } from './namespace/deleteNamespace.js'; import { getNamespace } from './namespace/getNamespace.js'; +import { updateNamespaceLoginMethods } from './namespace/updateNamespaceLoginMethods.js'; +import { listNamespaceLoginMethods } from './namespace/listNamespaceLoginMethods.js'; +import { getOrganizationLoginMethods } from './organization/getOrganizationLoginMethods.js'; +import { updateOrganizationLoginMethods } from './organization/updateOrganizationLoginMethods.js'; import { getNamespaces } from './namespace/getNamespaces.js'; import { renameNamespace } from './namespace/renameNamespace.js'; import { createIntegration } from './notification/createIntegration.js'; @@ -129,6 +139,7 @@ import { getSdlBySchemaVersion } from './schema-version/getSdlBySchemaVersion.js import { createOIDCProvider } from './sso/createOIDCProvider.js'; import { deleteOIDCProvider } from './sso/deleteOIDCProvider.js'; import { getOIDCProvider } from './sso/getOIDCProvider.js'; +import { listOIDCProviders } from './sso/listOIDCProviders.js'; import { updateIDPMappers } from './sso/updateIDPMappers.js'; import { addReadme } from './subgraph/addReadme.js'; import { checkSubgraphSchema } from './subgraph/checkSubgraphSchema.js'; @@ -143,6 +154,7 @@ import { getSubgraphSDLFromLatestComposition } from './subgraph/getSubgraphSDLFr import { getSubgraphs } from './subgraph/getSubgraphs.js'; import { moveSubgraph } from './subgraph/moveSubgraph.js'; import { publishFederatedSubgraph } from './subgraph/publishFederatedSubgraph.js'; +import { publishFederatedSubgraphs } from './subgraph/publishFederatedSubgraphs.js'; import { updateSubgraph } from './subgraph/updateSubgraph.js'; import { acceptOrDeclineInvitation } from './user/acceptOrDeclineInvitation.js'; import { deleteUser } from './user/deleteUser.js'; @@ -150,6 +162,7 @@ import { getInvitations } from './user/getInvitations.js'; import { getUserAccessiblePermissions } from './user/getUserAccessiblePermissions.js'; import { getUserAccessibleResources } from './user/getUserAccessibleResources.js'; import { inviteUser } from './user/inviteUser.js'; +import { inviteUsers } from './user/inviteUsers.js'; import { removeInvitation } from './user/removeInvitation.js'; import { removeOrganizationMember } from './user/removeOrganizationMember.js'; import { updateOrgMemberGroup } from './user/updateOrgMemberGroup.js'; @@ -258,6 +271,10 @@ export default function (opts: RouterOptions): Partial { + return publishFederatedSubgraphs(opts, req, ctx); + }, + forceCheckSuccess: (req, ctx) => { return forceCheckSuccess(opts, req, ctx); }, @@ -346,6 +363,10 @@ export default function (opts: RouterOptions): Partial { + return inviteUsers(opts, req, ctx); + }, + createAPIKey: (req, ctx) => { return createAPIKey(opts, req, ctx); }, @@ -638,6 +659,10 @@ export default function (opts: RouterOptions): Partial { + return listOIDCProviders(opts, req, ctx); + }, + getPersistedOperations: (req, ctx) => { return getPersistedOperations(opts, req, ctx); }, @@ -755,6 +780,14 @@ export default function (opts: RouterOptions): Partial { + return getFeatureFlagsInLatestCompositionByFederatedGraph(opts, req, ctx); + }, + + getFeatureSubgraphsByFederatedGraph: (req, ctx) => { + return getFeatureSubgraphsByFederatedGraph(opts, req, ctx); + }, + getOrganizationWebhookHistory: (req, ctx) => { return getOrganizationWebhookHistory(opts, req, ctx); }, @@ -871,6 +904,19 @@ export default function (opts: RouterOptions): Partial { + return updateNamespaceLoginMethods(opts, req, ctx); + }, + listNamespaceLoginMethods: (req, ctx) => { + return listNamespaceLoginMethods(opts, req, ctx); + }, + getOrganizationLoginMethods: (req, ctx) => { + return getOrganizationLoginMethods(opts, req, ctx); + }, + updateOrganizationLoginMethods: (req, ctx) => { + return updateOrganizationLoginMethods(opts, req, ctx); + }, + getOperations: (req, ctx) => { return getOperations(opts, req, ctx); }, @@ -906,5 +952,21 @@ export default function (opts: RouterOptions): Partial { return recomposeGraph(opts, req, ctx); }, + + recomposeFeatureFlag: (req, ctx) => { + return recomposeFeatureFlag(opts, req, ctx); + }, + + getOnboarding: (req, ctx) => { + return getOnboarding(opts, req, ctx); + }, + + createOnboarding: (req, ctx) => { + return createOnboarding(opts, req, ctx); + }, + + finishOnboarding: (req, ctx) => { + return finishOnboarding(opts, req, ctx); + }, }; } diff --git a/controlplane/src/core/bufservices/analytics/getAnalyticsView.ts b/controlplane/src/core/bufservices/analytics/getAnalyticsView.ts index def6ed266e..5b3d16b236 100644 --- a/controlplane/src/core/bufservices/analytics/getAnalyticsView.ts +++ b/controlplane/src/core/bufservices/analytics/getAnalyticsView.ts @@ -10,6 +10,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { AnalyticsRequestViewRepository } from '../../repositories/analytics/AnalyticsRequestViewRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; export function getAnalyticsView( @@ -44,6 +45,10 @@ export function getAnalyticsView( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const tracingRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'tracing-retention', diff --git a/controlplane/src/core/bufservices/analytics/getDashboardAnalyticsView.ts b/controlplane/src/core/bufservices/analytics/getDashboardAnalyticsView.ts index 0b40bc7f44..db11dd0348 100644 --- a/controlplane/src/core/bufservices/analytics/getDashboardAnalyticsView.ts +++ b/controlplane/src/core/bufservices/analytics/getDashboardAnalyticsView.ts @@ -11,6 +11,7 @@ import { parseTimeFilters } from '../../repositories/analytics/util.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; export function getDashboardAnalyticsView( @@ -50,6 +51,10 @@ export function getDashboardAnalyticsView( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const analyticsRetention = await orgRepo.getFeature({ @@ -77,15 +82,20 @@ export function getDashboardAnalyticsView( published: true, }); const view = await analyticsDashRepo.getView(graph.id, authContext.organizationId, timeFilters, subgraphs); + const isStaleData = + !view.mostRequestedOperations.ok || + !view.requestSeries.ok || + !view.subgraphMetrics.ok || + !view.federatedGraphMetrics.ok; return { response: { - code: EnumStatusCode.OK, + code: isStaleData ? EnumStatusCode.WARN_PARTIAL_DATA : EnumStatusCode.OK, }, - mostRequestedOperations: view.mostRequestedOperations, - requestSeries: view.requestSeries, - subgraphMetrics: view.subgraphMetrics, - federatedGraphMetrics: view.federatedGraphMetrics, + mostRequestedOperations: view.mostRequestedOperations.operations, + requestSeries: view.requestSeries.series, + subgraphMetrics: view.subgraphMetrics.metrics, + federatedGraphMetrics: view.federatedGraphMetrics.view, }; }); } diff --git a/controlplane/src/core/bufservices/analytics/getFieldUsage.ts b/controlplane/src/core/bufservices/analytics/getFieldUsage.ts index ad99510554..3f84da3e61 100644 --- a/controlplane/src/core/bufservices/analytics/getFieldUsage.ts +++ b/controlplane/src/core/bufservices/analytics/getFieldUsage.ts @@ -7,6 +7,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; import { UsageRepository } from '../../repositories/analytics/UsageRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getFieldUsage( @@ -59,6 +60,10 @@ export function getFieldUsage( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + let dr: DateRange | undefined; if (req.dateRange?.start && req.dateRange?.end) { diff --git a/controlplane/src/core/bufservices/analytics/getGraphMetrics.ts b/controlplane/src/core/bufservices/analytics/getGraphMetrics.ts index 27f5beaabe..ae0ed2be84 100644 --- a/controlplane/src/core/bufservices/analytics/getGraphMetrics.ts +++ b/controlplane/src/core/bufservices/analytics/getGraphMetrics.ts @@ -9,6 +9,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { MetricsRepository } from '../../repositories/analytics/MetricsRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; export function getGraphMetrics( @@ -45,6 +46,10 @@ export function getGraphMetrics( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const analyticsRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'analytics-retention', diff --git a/controlplane/src/core/bufservices/analytics/getMetricsErrorRate.ts b/controlplane/src/core/bufservices/analytics/getMetricsErrorRate.ts index 926fb5e3ee..6f29cd7db5 100644 --- a/controlplane/src/core/bufservices/analytics/getMetricsErrorRate.ts +++ b/controlplane/src/core/bufservices/analytics/getMetricsErrorRate.ts @@ -9,6 +9,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { MetricsRepository } from '../../repositories/analytics/MetricsRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; export function getMetricsErrorRate( @@ -45,6 +46,10 @@ export function getMetricsErrorRate( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const analyticsRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'analytics-retention', diff --git a/controlplane/src/core/bufservices/analytics/getOperationClients.ts b/controlplane/src/core/bufservices/analytics/getOperationClients.ts index 1e5e7cf625..3a22b8ddbd 100644 --- a/controlplane/src/core/bufservices/analytics/getOperationClients.ts +++ b/controlplane/src/core/bufservices/analytics/getOperationClients.ts @@ -9,6 +9,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { MetricsRepository } from '../../repositories/analytics/MetricsRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; import { isoDateRangeToTimestamps, getDateRange } from '../../repositories/analytics/util.js'; @@ -45,6 +46,10 @@ export function getOperationClients( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const analyticsRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'analytics-retention', diff --git a/controlplane/src/core/bufservices/analytics/getOperationContent.ts b/controlplane/src/core/bufservices/analytics/getOperationContent.ts index f69fbef3b5..1328539909 100644 --- a/controlplane/src/core/bufservices/analytics/getOperationContent.ts +++ b/controlplane/src/core/bufservices/analytics/getOperationContent.ts @@ -6,6 +6,7 @@ import { GetOperationContentResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; @@ -43,6 +44,10 @@ export function getOperationContent( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const query = ` SELECT OperationContent as operationContent FROM ${opts.chClient?.database}.gql_metrics_operations diff --git a/controlplane/src/core/bufservices/analytics/getOperationDeprecatedFields.ts b/controlplane/src/core/bufservices/analytics/getOperationDeprecatedFields.ts index a044e1e2c4..a0ad6057c5 100644 --- a/controlplane/src/core/bufservices/analytics/getOperationDeprecatedFields.ts +++ b/controlplane/src/core/bufservices/analytics/getOperationDeprecatedFields.ts @@ -13,6 +13,7 @@ import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import { UsageRepository } from '../../repositories/analytics/UsageRepository.js'; import type { RouterOptions } from '../../routes.js'; import SchemaGraphPruner from '../../services/SchemaGraphPruner.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; import { Field } from '../../../types/index.js'; @@ -51,6 +52,10 @@ export function getOperationDeprecatedFields( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const analyticsRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'analytics-retention', diff --git a/controlplane/src/core/bufservices/analytics/getOperations.ts b/controlplane/src/core/bufservices/analytics/getOperations.ts index 16e938723d..e22a2bda74 100644 --- a/controlplane/src/core/bufservices/analytics/getOperations.ts +++ b/controlplane/src/core/bufservices/analytics/getOperations.ts @@ -24,6 +24,7 @@ import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../ import SchemaGraphPruner from '../../services/SchemaGraphPruner.js'; import { UsageRepository } from '../../repositories/analytics/UsageRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; +import { UnauthorizedError } from '../../errors/errors.js'; export function getOperations( opts: RouterOptions, @@ -62,6 +63,10 @@ export function getOperations( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + req.limit = req.limit ?? 100; req.offset = req.offset ?? 0; // Validate limit is within reasonable bounds diff --git a/controlplane/src/core/bufservices/analytics/getTrace.ts b/controlplane/src/core/bufservices/analytics/getTrace.ts index 13473bb91e..f17590367f 100644 --- a/controlplane/src/core/bufservices/analytics/getTrace.ts +++ b/controlplane/src/core/bufservices/analytics/getTrace.ts @@ -2,8 +2,10 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { GetTraceRequest, GetTraceResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { TraceRepository } from '../../repositories/analytics/TraceRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getTrace( @@ -25,6 +27,22 @@ export function getTrace( const authContext = await opts.authenticator.authenticate(ctx.requestHeader); logger = enrichLogger(ctx, logger, authContext); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const graph = await fedGraphRepo.byId(req.federatedGraphId); + if (!graph) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Federated graph not found`, + }, + spans: [], + }; + } + + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + const traceRepo = new TraceRepository(opts.chClient); const spans = await traceRepo.getTrace(req.id, req.spanId, authContext.organizationId, req.federatedGraphId); diff --git a/controlplane/src/core/bufservices/cache-warmer/computeCacheWarmerOperations.ts b/controlplane/src/core/bufservices/cache-warmer/computeCacheWarmerOperations.ts index b6d3f45f17..a55539592a 100644 --- a/controlplane/src/core/bufservices/cache-warmer/computeCacheWarmerOperations.ts +++ b/controlplane/src/core/bufservices/cache-warmer/computeCacheWarmerOperations.ts @@ -59,6 +59,10 @@ export function computeCacheWarmerOperations( }; } + if (!authContext.rbac.hasFederatedGraphWriteAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const namespace = await namespaceRepository.byId(federatedGraph!.namespaceId); if (!namespace?.enableCacheWarmer) { return { diff --git a/controlplane/src/core/bufservices/cache-warmer/configureCacheWarmer.ts b/controlplane/src/core/bufservices/cache-warmer/configureCacheWarmer.ts index b444a89362..a93c100842 100644 --- a/controlplane/src/core/bufservices/cache-warmer/configureCacheWarmer.ts +++ b/controlplane/src/core/bufservices/cache-warmer/configureCacheWarmer.ts @@ -61,6 +61,10 @@ export function configureCacheWarmer( }; } + if (!authContext.rbac.hasNamespaceWriteAccess(namespace)) { + throw new UnauthorizedError(); + } + if (req.maxOperationsCount > 500) { return { response: { diff --git a/controlplane/src/core/bufservices/check/getAllOverrides.ts b/controlplane/src/core/bufservices/check/getAllOverrides.ts index 29766e937b..cb68c65481 100644 --- a/controlplane/src/core/bufservices/check/getAllOverrides.ts +++ b/controlplane/src/core/bufservices/check/getAllOverrides.ts @@ -8,7 +8,7 @@ import { import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { OperationsRepository } from '../../repositories/OperationsRepository.js'; import type { RouterOptions } from '../../routes.js'; -import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { enrichLogger, getLogger, handleError, normalizePagination } from '../../util.js'; import { UnauthorizedError } from '../../errors/errors.js'; export function getAllOverrides( @@ -33,6 +33,7 @@ export function getAllOverrides( details: 'Requested graph does not exist', }, overrides: [], + totalCount: 0, }; } @@ -42,8 +43,12 @@ export function getAllOverrides( const operationsRepo = new OperationsRepository(opts.db, graph.id); - const overrides = await operationsRepo.getConsolidatedOverridesView({ + const { limit, offset } = normalizePagination({ limit: req.limit, offset: req.offset }); + + const { overrides, totalCount } = await operationsRepo.getConsolidatedOverridesView({ namespaceId: graph.namespaceId, + limit, + offset, }); return { @@ -51,6 +56,7 @@ export function getAllOverrides( code: EnumStatusCode.OK, }, overrides, + totalCount, }; }); } diff --git a/controlplane/src/core/bufservices/contract/createContract.ts b/controlplane/src/core/bufservices/contract/createContract.ts index e77ffb689c..93fa200ca4 100644 --- a/controlplane/src/core/bufservices/contract/createContract.ts +++ b/controlplane/src/core/bufservices/contract/createContract.ts @@ -1,13 +1,7 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { - CompositionError, - CompositionWarning, - CreateContractRequest, - CreateContractResponse, - DeploymentError, -} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { CreateContractRequest, CreateContractResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { isValidUrl } from '@wundergraph/cosmo-shared'; import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { PublicError, UnauthorizedError } from '../../errors/errors.js'; @@ -18,6 +12,7 @@ import { DefaultNamespace, NamespaceRepository } from '../../repositories/Namesp import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidGraphName, isValidSchemaTags } from '../../util.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function createContract( opts: RouterOptions, @@ -77,7 +72,6 @@ export function createContract( } req.excludeTags = [...new Set(req.excludeTags)]; - if (!isValidSchemaTags(req.excludeTags)) { throw new PublicError(EnumStatusCode.ERR, `Provided exclude tags are invalid`); } @@ -100,7 +94,6 @@ export function createContract( } const count = await fedGraphRepo.count(); - const feature = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'federated-graphs', @@ -111,7 +104,6 @@ export function createContract( }); const limit = feature?.limit === -1 ? undefined : feature?.limit; - if (limit && count >= limit) { throw new PublicError( EnumStatusCode.ERR_LIMIT_REACHED, @@ -190,54 +182,31 @@ export function createContract( targetNamespaceDisplayName: contractGraph.namespace, }); - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - disableResolvabilityValidation: req.disableResolvabilityValidation, - }, - federatedGraphs: [{ ...contractGraph, contract }], - }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); - - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - compositionWarnings, - deploymentErrors: [], - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - compositionWarnings, - deploymentErrors, - }; - } + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + const { deploymentErrors, compositionErrors, compositionWarnings } = + await compositionService.composeAndDeployFederatedGraph({ + actorId: authContext.userId, + federatedGraph: { ...contractGraph, contract }, + }); return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, compositionErrors, compositionWarnings, diff --git a/controlplane/src/core/bufservices/contract/updateContract.ts b/controlplane/src/core/bufservices/contract/updateContract.ts index 912035b4c4..06bda62af1 100644 --- a/controlplane/src/core/bufservices/contract/updateContract.ts +++ b/controlplane/src/core/bufservices/contract/updateContract.ts @@ -2,23 +2,16 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; -import { - CompositionError, - CompositionWarning, - DeploymentError, - UpdateContractRequest, - UpdateContractResponse, -} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; +import { UpdateContractRequest, UpdateContractResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { ContractRepository } from '../../repositories/ContractRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidSchemaTags } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function updateContract( opts: RouterOptions, @@ -34,14 +27,13 @@ export function updateContract( logger = enrichLogger(ctx, logger, authContext); const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const contractRepo = new ContractRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const auditLogRepo = new AuditLogRepository(opts.db); const orgWebhooks = new OrganizationWebhookService( opts.db, authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); req.excludeTags = [...new Set(req.excludeTags)]; @@ -119,79 +111,57 @@ export function updateContract( }; } - const ignoreExternalKeys = - ( - await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }) - )?.enabled ?? false; - - const updatedContractDetails = await contractRepo.update({ - id: graph.contract.id, - excludeTags: req.excludeTags, - includeTags: req.includeTags, - actorId: authContext.userId, - }); - - await fedGraphRepo.update({ - targetId: graph.targetId, - // if the routingUrl is not provided, it will be set to an empty string. - // As the routing url wont be updated in this case. - routingUrl: req.routingUrl || '', - updatedBy: authContext.userId, - readme: req.readme, - blobStorage: opts.blobStorage, - namespaceId: graph.namespaceId, - admissionWebhookURL: req.admissionWebhookUrl, - admissionWebhookSecret: req.admissionWebhookSecret, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, - labelMatchers: [], - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys, - }, - }); - - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys, - }, - federatedGraphs: [ - { - ...graph, + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { + const contractRepo = new ContractRepository(logger, tx, authContext.organizationId); + const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + // Update the contract details + const updatedContractDetails = await contractRepo.update({ + id: graph.contract!.id, + excludeTags: req.excludeTags, + includeTags: req.includeTags, + actorId: authContext.userId, + }); + + // Update the federated graph details + await fedGraphRepo.update({ + compositionService, + targetId: graph.targetId, + // if the routingUrl is not provided, it will be set to an empty string. + // As the routing url wont be updated in this case. + routingUrl: req.routingUrl || '', + updatedBy: authContext.userId, + readme: req.readme, + namespaceId: graph.namespaceId, + admissionWebhookURL: req.admissionWebhookUrl, + admissionWebhookSecret: req.admissionWebhookSecret, + labelMatchers: [], + }); + + // Compose the contract + return await compositionService.composeAndDeployFederatedGraph({ + actorId: authContext.userId, + federatedGraph: { + ...graph!, routingUrl: req.routingUrl || graph.routingUrl, admissionWebhookURL: req.admissionWebhookUrl || graph.admissionWebhookURL, admissionWebhookSecret: req.admissionWebhookSecret || graph.admissionWebhookSecret, readme: req.readme || graph.readme, - contract: { - ...graph.contract, - ...updatedContractDetails, - }, + contract: { ...graph.contract!, ...updatedContractDetails }, }, - ], + }); }); - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); - await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, @@ -227,31 +197,14 @@ export function updateContract( authContext.userId, ); - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - deploymentErrors: [], - compositionWarnings, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors, - compositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, deploymentErrors, compositionErrors, diff --git a/controlplane/src/core/bufservices/feature-flag/createFeatureFlag.ts b/controlplane/src/core/bufservices/feature-flag/createFeatureFlag.ts index 0ac581eb53..dc5213bb86 100644 --- a/controlplane/src/core/bufservices/feature-flag/createFeatureFlag.ts +++ b/controlplane/src/core/bufservices/feature-flag/createFeatureFlag.ts @@ -1,24 +1,18 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, CreateFeatureFlagRequest, CreateFeatureFlagResponse, - DeploymentError, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; -import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidLabels } from '../../util.js'; -import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function createFeatureFlag( opts: RouterOptions, @@ -34,15 +28,8 @@ export function createFeatureFlag( const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); - const orgWebhooks = new OrganizationWebhookService( - opts.db, - authContext.organizationId, - opts.logger, - opts.billingDefaultPlanId, - ); req.namespace = req.namespace || DefaultNamespace; - if (authContext.organizationDeactivated) { throw new UnauthorizedError(); } @@ -74,7 +61,6 @@ export function createFeatureFlag( if (limit !== undefined && limit !== null) { const count = await featureFlagRepo.count(authContext.organizationId); - if (count >= limit) { return { response: { @@ -148,7 +134,6 @@ export function createFeatureFlag( } const auditLogRepo = new AuditLogRepository(opts.db); - const featureFlag = await featureFlagRepo.createFeatureFlag({ namespaceId: namespace.id, name: req.name, @@ -185,93 +170,50 @@ export function createFeatureFlag( }; } - const federatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ + const createdFeatureFlag = await featureFlagRepo.getFeatureFlagById({ featureFlagId: featureFlag.id, namespaceId: namespace.id, - excludeDisabled: true, - }); - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, + includeSubgraphs: true, }); - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); - - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs, - }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); - }); - - for (const graph of federatedGraphs) { - const hasErrors = - compositionErrors.some((error) => error.federatedGraphName === graph.name) || - deploymentErrors.some((error) => error.federatedGraphName === graph.name); - orgWebhooks.send( - { - eventName: OrganizationEventName.FEDERATED_GRAPH_SCHEMA_UPDATED, - payload: { - federated_graph: { - id: graph.id, - name: graph.name, - namespace: graph.namespace, - }, - organization: { - id: authContext.organizationId, - slug: authContext.organizationSlug, - }, - errors: hasErrors, - actor_id: authContext.userId, - }, - }, - authContext.userId, - ); - } - - if (compositionErrors.length > 0) { + if (!createdFeatureFlag) { return { response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Feature flag "${featureFlag.name}" was not found after creation.`, }, - compositionErrors, + compositionErrors: [], deploymentErrors: [], - compositionWarnings, + compositionWarnings: [], }; } - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors, - compositionWarnings, - }; - } + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction((tx) => { + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + return compositionService.composeAndDeployFeatureFlag({ + actorId: authContext.userId, + featureFlag: createdFeatureFlag, + }); + }); return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, compositionErrors, deploymentErrors, diff --git a/controlplane/src/core/bufservices/feature-flag/deleteFeatureFlag.ts b/controlplane/src/core/bufservices/feature-flag/deleteFeatureFlag.ts index 2312a4313a..54c7e9fa6b 100644 --- a/controlplane/src/core/bufservices/feature-flag/deleteFeatureFlag.ts +++ b/controlplane/src/core/bufservices/feature-flag/deleteFeatureFlag.ts @@ -1,24 +1,17 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, - DeploymentError, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; -import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; -import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function deleteFeatureFlag( opts: RouterOptions, @@ -33,16 +26,8 @@ export function deleteFeatureFlag( const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); - const orgWebhooks = new OrganizationWebhookService( - opts.db, - authContext.organizationId, - opts.logger, - opts.billingDefaultPlanId, - ); req.namespace = req.namespace || DefaultNamespace; - if (authContext.organizationDeactivated) { throw new UnauthorizedError(); } @@ -81,44 +66,32 @@ export function deleteFeatureFlag( throw new UnauthorizedError(); } - // Collect the federated graph DTOs that have the feature flag enabled because they will be re-composed - const federatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ - featureFlagId: featureFlag.id, - namespaceId: namespace.id, - // if deleting when already disabled, there are no compositions to be done. - excludeDisabled: true, - }); + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { + const auditLogRepo = new AuditLogRepository(tx); + const featureFlagRepo = new FeatureFlagRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); - /* Check that the user is authorized to delete the feature flag - * The user must have authorization for each related federated graph - * */ - for (const federatedGraph of federatedGraphs) { - // check if the user is authorized to perform the action - await opts.authorizer.authorize({ - db: opts.db, - graph: { - targetId: federatedGraph.targetId, - targetType: 'federatedGraph', + const result = await compositionService.deleteFeatureFlag({ + actorId: authContext.userId, + featureFlag, + authorize(graph) { + return opts.authorizer.authorize({ + db: tx, + graph: { targetId: graph.targetId, targetType: 'federatedGraph' }, + headers: ctx.requestHeader, + authContext, + }); }, - headers: ctx.requestHeader, - authContext, }); - } - - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); - const auditLogRepo = new AuditLogRepository(tx); - - await featureFlagRepo.delete(featureFlag.id); await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, @@ -135,73 +108,17 @@ export function deleteFeatureFlag( targetNamespaceDisplayName: namespace.name, }); - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs, - }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); + return result; }); - for (const graph of federatedGraphs) { - orgWebhooks.send( - { - eventName: OrganizationEventName.FEDERATED_GRAPH_SCHEMA_UPDATED, - payload: { - federated_graph: { - id: graph.id, - name: graph.name, - namespace: graph.namespace, - }, - organization: { - id: authContext.organizationId, - slug: authContext.organizationSlug, - }, - errors: compositionErrors.length > 0 || deploymentErrors.length > 0, - actor_id: authContext.userId, - }, - }, - authContext.userId, - ); - } - - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - deploymentErrors: [], - compositionWarnings, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors, - compositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, compositionErrors, deploymentErrors, diff --git a/controlplane/src/core/bufservices/feature-flag/enableFeatureFlag.ts b/controlplane/src/core/bufservices/feature-flag/enableFeatureFlag.ts index fa543dc05d..a97bd1683b 100644 --- a/controlplane/src/core/bufservices/feature-flag/enableFeatureFlag.ts +++ b/controlplane/src/core/bufservices/feature-flag/enableFeatureFlag.ts @@ -1,24 +1,17 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, - DeploymentError, EnableFeatureFlagRequest, EnableFeatureFlagResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; -import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; -import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function enableFeatureFlag( opts: RouterOptions, @@ -33,17 +26,9 @@ export function enableFeatureFlag( const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const auditLogRepo = new AuditLogRepository(opts.db); - const orgWebhooks = new OrganizationWebhookService( - opts.db, - authContext.organizationId, - opts.logger, - opts.billingDefaultPlanId, - ); req.namespace = req.namespace || DefaultNamespace; - if (authContext.organizationDeactivated) { throw new UnauthorizedError(); } @@ -94,72 +79,32 @@ export function enableFeatureFlag( }; } - await featureFlagRepo.enableFeatureFlag({ - featureFlagId: featureFlag.id, - namespaceId: namespace.id, - isEnabled: req.enabled, - }); - - const federatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ - featureFlagId: featureFlag.id, - namespaceId: namespace.id, - // fetch the federated graphs based on the state that has just been set for the feature flag above - excludeDisabled: req.enabled, - }); - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { + const txFeatureFlagRepo = new FeatureFlagRepository(logger, tx, authContext.organizationId); + await txFeatureFlagRepo.enableFeatureFlag({ + featureFlagId: featureFlag.id, + namespaceId: namespace.id, + isEnabled: req.enabled, + }); - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); - const composition = await fedGraphRepo.composeAndDeployGraphs({ + return compositionService.composeAndDeployFeatureFlag({ actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs, + featureFlag, + isEnabled: req.enabled, }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); }); - for (const graph of federatedGraphs) { - orgWebhooks.send( - { - eventName: OrganizationEventName.FEDERATED_GRAPH_SCHEMA_UPDATED, - payload: { - federated_graph: { - id: graph.id, - name: graph.name, - namespace: graph.namespace, - }, - organization: { - id: authContext.organizationId, - slug: authContext.organizationSlug, - }, - errors: compositionErrors.length > 0 || deploymentErrors.length > 0, - actor_id: authContext.userId, - }, - }, - authContext.userId, - ); - } - await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, @@ -175,31 +120,14 @@ export function enableFeatureFlag( targetNamespaceDisplayName: featureFlag.namespace, }); - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - deploymentErrors: [], - compositionWarnings, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors, - compositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, compositionErrors, deploymentErrors, diff --git a/controlplane/src/core/bufservices/feature-flag/getFeatureFlags.ts b/controlplane/src/core/bufservices/feature-flag/getFeatureFlags.ts index 1bfdfe81b6..e4b44266f9 100644 --- a/controlplane/src/core/bufservices/feature-flag/getFeatureFlags.ts +++ b/controlplane/src/core/bufservices/feature-flag/getFeatureFlags.ts @@ -45,9 +45,10 @@ export function getFeatureFlags( offset: req.offset, namespaceId, query: req.query, + rbac: authContext.rbac, }); - const totalCount = await featureFlagRepo.getFeatureFlagsCount({ namespaceId }); + const totalCount = await featureFlagRepo.getFeatureFlagsCount({ namespaceId, rbac: authContext.rbac }); return { response: { diff --git a/controlplane/src/core/bufservices/feature-flag/getFeatureFlagsInLatestCompositionByFederatedGraph.ts b/controlplane/src/core/bufservices/feature-flag/getFeatureFlagsInLatestCompositionByFederatedGraph.ts new file mode 100644 index 0000000000..08f5885297 --- /dev/null +++ b/controlplane/src/core/bufservices/feature-flag/getFeatureFlagsInLatestCompositionByFederatedGraph.ts @@ -0,0 +1,98 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, + GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FeatureFlagDTO } from '../../../types/index.js'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function getFeatureFlagsInLatestCompositionByFederatedGraph( + opts: RouterOptions, + req: GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>( + ctx, + logger, + async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + + const namespace = await namespaceRepo.byName(req.namespace); + if (!namespace) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Namespace ${req.namespace} not found`, + }, + featureFlags: [], + }; + } + + const federatedGraph = await fedGraphRepo.byName(req.federatedGraphName, req.namespace); + if (!federatedGraph) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Federated Graph '${req.federatedGraphName}' not found`, + }, + featureFlags: [], + }; + } + + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + + if (!federatedGraph.schemaVersionId) { + return { + response: { + code: EnumStatusCode.OK, + }, + featureFlags: [], + }; + } + + // Get feature flag IDs from the latest valid composition + const ffsInLatestValidComposition = await featureFlagRepo.getFeatureFlagSchemaVersionsByBaseSchemaVersion({ + baseSchemaVersionId: federatedGraph.schemaVersionId, + }); + + const featureFlags: FeatureFlagDTO[] = []; + if (ffsInLatestValidComposition) { + for (const ff of ffsInLatestValidComposition) { + if (!ff.featureFlagId) { + continue; + } + const flag = await featureFlagRepo.getFeatureFlagById({ + featureFlagId: ff.featureFlagId, + namespaceId: namespace.id, + includeSubgraphs: false, + }); + if (flag) { + featureFlags.push(flag); + } + } + } + + return { + response: { + code: EnumStatusCode.OK, + }, + featureFlags, + }; + }, + ); +} diff --git a/controlplane/src/core/bufservices/feature-flag/getFeatureSubgraphsByFederatedGraph.ts b/controlplane/src/core/bufservices/feature-flag/getFeatureSubgraphsByFederatedGraph.ts new file mode 100644 index 0000000000..2f61b64959 --- /dev/null +++ b/controlplane/src/core/bufservices/feature-flag/getFeatureSubgraphsByFederatedGraph.ts @@ -0,0 +1,92 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + GetFeatureSubgraphsByFederatedGraphRequest, + GetFeatureSubgraphsByFederatedGraphResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { convertToSubgraphType, enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function getFeatureSubgraphsByFederatedGraph( + opts: RouterOptions, + req: GetFeatureSubgraphsByFederatedGraphRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + + const namespace = await namespaceRepo.byName(req.namespace); + if (!namespace) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Namespace ${req.namespace} not found`, + }, + featureSubgraphs: [], + totalCount: 0, + }; + } + + const federatedGraph = await fedGraphRepo.byName(req.federatedGraphName, req.namespace); + if (!federatedGraph) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Federated Graph '${req.federatedGraphName}' not found`, + }, + featureSubgraphs: [], + totalCount: 0, + }; + } + + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + + const { featureSubgraphs, totalCount } = await featureFlagRepo.getFeatureSubgraphsByFederatedGraph({ + federatedGraphId: federatedGraph.id, + namespaceId: namespace.id, + fedGraphLabelMatchers: federatedGraph.labelMatchers, + limit: req.limit, + offset: req.offset, + query: req.query || undefined, + }); + + return { + response: { + code: EnumStatusCode.OK, + }, + featureSubgraphs: featureSubgraphs.map((fs) => ({ + id: fs.id, + name: fs.name, + routingURL: fs.routingUrl, + lastUpdatedAt: fs.lastUpdatedAt, + labels: fs.labels, + targetId: fs.targetId, + creatorUserId: fs.creatorUserId, + subscriptionUrl: fs.subscriptionUrl, + namespace: fs.namespace, + subscriptionProtocol: fs.subscriptionProtocol, + isEventDrivenGraph: fs.isEventDrivenGraph, + isV2Graph: fs.isV2Graph, + websocketSubprotocol: fs.websocketSubprotocol || '', + isFeatureSubgraph: fs.isFeatureSubgraph, + baseSubgraphId: fs.baseSubgraphId, + baseSubgraphName: fs.baseSubgraphName, + type: convertToSubgraphType(fs.type), + })), + totalCount, + }; + }); +} diff --git a/controlplane/src/core/bufservices/feature-flag/recomposeFeatureFlag.ts b/controlplane/src/core/bufservices/feature-flag/recomposeFeatureFlag.ts new file mode 100644 index 0000000000..f636e786c1 --- /dev/null +++ b/controlplane/src/core/bufservices/feature-flag/recomposeFeatureFlag.ts @@ -0,0 +1,155 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + RecomposeFeatureFlagRequest, + RecomposeFeatureFlagResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { clamp, enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { maxRowLimitForChecks } from '../../constants.js'; + +export function recomposeFeatureFlag( + opts: RouterOptions, + req: RecomposeFeatureFlagRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + req.namespace = req.namespace || DefaultNamespace; + if (authContext.organizationDeactivated) { + throw new UnauthorizedError(); + } + + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); + + // Make sure that the config splitting is enabled for the organization + const feature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'split-config-loading', + }); + + if (!feature?.enabled) { + return { + response: { + code: EnumStatusCode.ERR, + details: 'Configuration splitting not enabled', + }, + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + } + + // Validate that the namespace exists for the organization + const namespace = await namespaceRepo.byName(req.namespace); + if (!namespace) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Could not find namespace ${req.namespace}`, + }, + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + } + + // Validate that the feature flag exists in the namespace + const featureFlag = await featureFlagRepo.getFeatureFlagByName({ + featureFlagName: req.name, + namespaceId: namespace.id, + }); + + if (!featureFlag) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `The feature flag "${req.name}" was not found`, + }, + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + } + + if (!authContext.rbac.hasFeatureFlagWriteAccess(featureFlag)) { + throw new UnauthorizedError(); + } + + // Compose and deploy the feature flag + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction((tx) => { + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + return compositionService.composeAndDeployFeatureFlag({ + actorId: authContext.userId, + featureFlag, + }); + }); + + const auditLogRepo = new AuditLogRepository(opts.db); + await auditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'feature_flag.recomposed', + action: 'recomposed', + actorId: authContext.userId, + auditableType: 'feature_flag', + auditableDisplayName: featureFlag.name, + actorDisplayName: authContext.userDisplayName, + apiKeyName: authContext.apiKeyName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: featureFlag.namespaceId, + targetNamespaceDisplayName: featureFlag.namespace, + }); + + // If req.limit is not provided, use maxRowLimitForChecks as default + const boundedLimit = req.limit === undefined ? maxRowLimitForChecks : clamp(req.limit, 1, maxRowLimitForChecks); + + const boundedDeploymentErrors = deploymentErrors.slice(0, boundedLimit); + const boundedCompositionErrors = compositionErrors.slice(0, boundedLimit); + const boundedCompositionWarnings = compositionWarnings.slice(0, boundedLimit); + + const errorCounts = { + compositionErrors: compositionErrors.length, + compositionWarnings: compositionWarnings.length, + deploymentErrors: deploymentErrors.length, + }; + + return { + response: { + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, + }, + deploymentErrors: boundedDeploymentErrors, + compositionErrors: boundedCompositionErrors, + compositionWarnings: boundedCompositionWarnings, + errorCounts, + }; + }); +} diff --git a/controlplane/src/core/bufservices/feature-flag/updateFeatureFlag.ts b/controlplane/src/core/bufservices/feature-flag/updateFeatureFlag.ts index bb52d9b2b8..1024fd81eb 100644 --- a/controlplane/src/core/bufservices/feature-flag/updateFeatureFlag.ts +++ b/controlplane/src/core/bufservices/feature-flag/updateFeatureFlag.ts @@ -1,24 +1,17 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, - DeploymentError, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, FederatedGraphDTO } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; -import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidLabels } from '../../util.js'; -import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function updateFeatureFlag( opts: RouterOptions, @@ -33,13 +26,6 @@ export function updateFeatureFlag( const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); - const orgWebhooks = new OrganizationWebhookService( - opts.db, - authContext.organizationId, - opts.logger, - opts.billingDefaultPlanId, - ); req.namespace = req.namespace || DefaultNamespace; @@ -110,139 +96,98 @@ export function updateFeatureFlag( }; } - const auditLogRepo = new AuditLogRepository(opts.db); - - const allFederatedGraphsToCompose: FederatedGraphDTO[] = []; - const allFederatedGraphIdsToCompose = new Set(); - const prevFederatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ featureFlagId: featureFlagDTO.id, namespaceId: namespace.id, excludeDisabled: true, }); - for (const prevFederatedGraph of prevFederatedGraphs) { - allFederatedGraphIdsToCompose.add(prevFederatedGraph.id); - allFederatedGraphsToCompose.push(prevFederatedGraph); - } - - await featureFlagRepo.updateFeatureFlag({ - featureFlag: featureFlagDTO, - labels: req.labels, - featureSubgraphIds, - unsetLabels: req.unsetLabels ?? false, - }); - - await auditLogRepo.addAuditLog({ - organizationId: authContext.organizationId, - organizationSlug: authContext.organizationSlug, - auditAction: 'feature_flag.updated', - action: 'updated', - actorId: authContext.userId, - auditableType: 'feature_flag', - auditableDisplayName: featureFlagDTO.name, - apiKeyName: authContext.apiKeyName, - actorDisplayName: authContext.userDisplayName, - actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', - targetNamespaceId: namespace.id, - targetNamespaceDisplayName: namespace.name, - }); - - const newFederatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ - featureFlagId: featureFlagDTO.id, - namespaceId: namespace.id, - excludeDisabled: true, - }); - - for (const newFederatedGraph of newFederatedGraphs) { - if (allFederatedGraphIdsToCompose.has(newFederatedGraph.id)) { - continue; - } - allFederatedGraphsToCompose.push(newFederatedGraph); - } - - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); - - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs: allFederatedGraphsToCompose, - }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); - }); - - for (const graph of allFederatedGraphsToCompose) { - const hasErrors = - compositionErrors.some((error) => error.federatedGraphName === graph.name) || - deploymentErrors.some((error) => error.federatedGraphName === graph.name); - orgWebhooks.send( - { - eventName: OrganizationEventName.FEDERATED_GRAPH_SCHEMA_UPDATED, - payload: { - federated_graph: { - id: graph.id, - name: graph.name, - namespace: graph.namespace, - }, - organization: { - id: authContext.organizationId, - slug: authContext.organizationSlug, - }, - errors: hasErrors, - actor_id: authContext.userId, - }, - }, - authContext.userId, - ); - } - - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - deploymentErrors: [], - compositionWarnings, - }; - } + const { deploymentErrors, compositionErrors, compositionWarnings, notFoundError } = await opts.db.transaction( + async (tx) => { + const txFeatureFlagRepo = new FeatureFlagRepository(logger, tx, authContext.organizationId); + await txFeatureFlagRepo.updateFeatureFlag({ + featureFlag: featureFlagDTO, + labels: req.labels, + featureSubgraphIds, + unsetLabels: req.unsetLabels ?? false, + }); + + const auditLogRepo = new AuditLogRepository(tx); + await auditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'feature_flag.updated', + action: 'updated', + actorId: authContext.userId, + auditableType: 'feature_flag', + auditableDisplayName: featureFlagDTO.name, + apiKeyName: authContext.apiKeyName, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: namespace.id, + targetNamespaceDisplayName: namespace.name, + }); + + const updatedFeatureFlag = await txFeatureFlagRepo.getFeatureFlagById({ + featureFlagId: featureFlagDTO.id, + namespaceId: namespace.id, + includeSubgraphs: true, + }); + + if (!updatedFeatureFlag) { + return { + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + notFoundError: `Feature flag "${featureFlagDTO.name}" was not found after updating.`, + }; + } + + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + const compositionResult = await compositionService.composeAndDeployFeatureFlag({ + actorId: authContext.userId, + featureFlag: updatedFeatureFlag, + prevFederatedGraphs, + }); + + return { + deploymentErrors: compositionResult.deploymentErrors, + compositionErrors: compositionResult.compositionErrors, + compositionWarnings: compositionResult.compositionWarnings, + }; + }, + ); - if (deploymentErrors.length > 0) { + if (notFoundError) { return { response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, + code: EnumStatusCode.ERR_NOT_FOUND, + details: notFoundError, }, compositionErrors: [], - deploymentErrors, - compositionWarnings, + deploymentErrors: [], + compositionWarnings: [], }; } return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, compositionErrors, deploymentErrors, diff --git a/controlplane/src/core/bufservices/federated-graph/createFederatedGraph.ts b/controlplane/src/core/bufservices/federated-graph/createFederatedGraph.ts index afed804970..605743c38b 100644 --- a/controlplane/src/core/bufservices/federated-graph/createFederatedGraph.ts +++ b/controlplane/src/core/bufservices/federated-graph/createFederatedGraph.ts @@ -3,14 +3,10 @@ import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, CreateFederatedGraphRequest, CreateFederatedGraphResponse, - DeploymentError, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { isValidUrl } from '@wundergraph/cosmo-shared'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; @@ -20,6 +16,7 @@ import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidGraphName, isValidLabelMatchers } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function createFederatedGraph( opts: RouterOptions, @@ -40,6 +37,7 @@ export function createFederatedGraph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); @@ -129,14 +127,12 @@ export function createFederatedGraph( } const count = await fedGraphRepo.count(); - const feature = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'federated-graphs', }); const limit = feature?.limit === -1 ? undefined : feature?.limit; - if (limit && count >= limit) { return { response: { @@ -211,36 +207,19 @@ export function createFederatedGraph( }; } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - const compositionErrors: PlainMessage[] = []; - const deploymentErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; - - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction((tx) => { + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs: [federatedGraph], - }); - - compositionErrors.push(...composition.compositionErrors); - deploymentErrors.push(...composition.deploymentErrors); - compositionWarnings.push(...composition.compositionWarnings); + return compositionService.composeAndDeployFederatedGraph({ actorId: authContext.userId, federatedGraph }); }); orgWebhooks.send( @@ -263,34 +242,17 @@ export function createFederatedGraph( authContext.userId, ); - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors, - deploymentErrors: [], - compositionWarnings, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors, - compositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, - compositionErrors: [], - deploymentErrors: [], + compositionErrors, + deploymentErrors, compositionWarnings, }; }); diff --git a/controlplane/src/core/bufservices/federated-graph/createFederatedGraphToken.ts b/controlplane/src/core/bufservices/federated-graph/createFederatedGraphToken.ts index 337a437f13..71e2bd0870 100644 --- a/controlplane/src/core/bufservices/federated-graph/createFederatedGraphToken.ts +++ b/controlplane/src/core/bufservices/federated-graph/createFederatedGraphToken.ts @@ -13,6 +13,7 @@ import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; export function createFederatedGraphToken( opts: RouterOptions, @@ -71,6 +72,17 @@ export function createFederatedGraphToken( }; } + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); + const splitConfigFeature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'split-config-loading', + }); + + const features: string[] = []; + if (splitConfigFeature?.enabled) { + features.push('split-config-loading'); + } + const tokenValue = await signJwtHS256({ secret: opts.jwtSecret, token: { @@ -78,6 +90,7 @@ export function createFederatedGraphToken( federated_graph_id: graph.id, aud: audiences.cosmoGraphKey, // to distinguish from other tokens organization_id: authContext.organizationId, + features: features.length > 0 ? features : undefined, }, }); diff --git a/controlplane/src/core/bufservices/federated-graph/getClientsFromAnalytics.ts b/controlplane/src/core/bufservices/federated-graph/getClientsFromAnalytics.ts index b874be3a4b..8e948bff0e 100644 --- a/controlplane/src/core/bufservices/federated-graph/getClientsFromAnalytics.ts +++ b/controlplane/src/core/bufservices/federated-graph/getClientsFromAnalytics.ts @@ -8,6 +8,7 @@ import { import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; import { MetricsRepository } from '../../repositories/analytics/MetricsRepository.js'; @@ -44,6 +45,10 @@ export function getClientsFromAnalytics( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const analyticsRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'analytics-retention', diff --git a/controlplane/src/core/bufservices/federated-graph/getCompositionDetails.ts b/controlplane/src/core/bufservices/federated-graph/getCompositionDetails.ts index 536c33c31a..fda3ad03ad 100644 --- a/controlplane/src/core/bufservices/federated-graph/getCompositionDetails.ts +++ b/controlplane/src/core/bufservices/federated-graph/getCompositionDetails.ts @@ -10,6 +10,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { GraphCompositionRepository } from '../../repositories/GraphCompositionRepository.js'; import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { convertToSubgraphType, enrichLogger, getLogger, handleError } from '../../util.js'; export function getCompositionDetails( @@ -57,6 +58,13 @@ export function getCompositionDetails( }; } + if (composition.targetId) { + const graph = await fedRepo.byTargetId(composition.targetId); + if (graph && !authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + } + const compositionSubgraphs = await compositionRepo.getCompositionSubgraphs({ compositionId: req.compositionId, }); diff --git a/controlplane/src/core/bufservices/federated-graph/getFederatedGraphByName.ts b/controlplane/src/core/bufservices/federated-graph/getFederatedGraphByName.ts index 5ad1632ed3..73a7b46ee0 100644 --- a/controlplane/src/core/bufservices/federated-graph/getFederatedGraphByName.ts +++ b/controlplane/src/core/bufservices/federated-graph/getFederatedGraphByName.ts @@ -5,10 +5,7 @@ import { GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, RequestSeriesItem, - Subgraph, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { FeatureFlagDTO } from '../../../types/index.js'; -import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; @@ -30,18 +27,13 @@ export function getFederatedGraphByName( const fedRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); - const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); req.namespace = req.namespace || DefaultNamespace; const federatedGraph = await fedRepo.byName(req.name, req.namespace); - if (!federatedGraph) { return { subgraphs: [], - featureFlags: [], - featureFlagsInLatestValidComposition: [], - featureSubgraphs: [], graphRequestToken: '', response: { code: EnumStatusCode.ERR_NOT_FOUND, @@ -66,55 +58,6 @@ export function getFederatedGraphByName( rbac: authContext.rbac, }); - const featureFlags = await featureFlagRepo.getFeatureFlagsByFederatedGraph({ - federatedGraph, - namespaceId: federatedGraph.namespaceId, - rbac: authContext.rbac, - }); - - const featureFlagsInLatestValidComposition: FeatureFlagDTO[] = []; - - if (federatedGraph.schemaVersionId) { - const ffsInLatestValidComposition = await featureFlagRepo.getFeatureFlagSchemaVersionsByBaseSchemaVersion({ - baseSchemaVersionId: federatedGraph.schemaVersionId, - }); - if (ffsInLatestValidComposition) { - for (const ff of ffsInLatestValidComposition) { - const flag = featureFlags.find((f) => f.id === ff.featureFlagId); - if (flag) { - featureFlagsInLatestValidComposition.push(flag); - } - } - } - } - - const featureSubgraphs: Subgraph[] = []; - for (const ff of featureFlags) { - for (const fs of ff.featureSubgraphs) { - if (!featureSubgraphs.some((f) => f.id === fs.id)) { - featureSubgraphs.push( - new Subgraph({ - id: fs.id, - name: fs.name, - routingURL: fs.routingUrl, - lastUpdatedAt: fs.lastUpdatedAt, - labels: fs.labels, - targetId: fs.targetId, - subscriptionUrl: fs.subscriptionUrl, - namespace: fs.namespace, - subscriptionProtocol: fs.subscriptionProtocol, - isEventDrivenGraph: fs.isEventDrivenGraph, - isV2Graph: fs.isV2Graph, - websocketSubprotocol: fs.websocketSubprotocol || '', - isFeatureSubgraph: fs.isFeatureSubgraph, - baseSubgraphId: fs.baseSubgraphId, - baseSubgraphName: fs.baseSubgraphName, - }), - ); - } - } - } - const routerRequestToken = await fedRepo.getGraphSignedToken({ federatedGraphId: federatedGraph.id, organizationId: authContext.organizationId, @@ -123,9 +66,6 @@ export function getFederatedGraphByName( if (!routerRequestToken) { return { subgraphs: [], - featureFlags: [], - featureFlagsInLatestValidComposition: [], - featureSubgraphs: [], graphRequestToken: '', response: { code: EnumStatusCode.ERR, @@ -170,10 +110,7 @@ export function getFederatedGraphByName( isFeatureSubgraph: g.isFeatureSubgraph, type: convertToSubgraphType(g.type), })), - featureFlags, graphRequestToken: routerRequestToken, - featureFlagsInLatestValidComposition, - featureSubgraphs, response: { code: EnumStatusCode.OK, }, diff --git a/controlplane/src/core/bufservices/federated-graph/getFederatedGraphs.ts b/controlplane/src/core/bufservices/federated-graph/getFederatedGraphs.ts index 2cdf2d8746..2a57a3f533 100644 --- a/controlplane/src/core/bufservices/federated-graph/getFederatedGraphs.ts +++ b/controlplane/src/core/bufservices/federated-graph/getFederatedGraphs.ts @@ -53,7 +53,7 @@ export function getFederatedGraphs( rbac: authContext.rbac, }); - const requestSeriesList: Record[]> = {}; + const requestSeriesList: Record[]; ok: boolean }> = {}; const { dateRange } = parseTimeFilters({ start: subHours(new Date(), 4).toString(), @@ -65,15 +65,21 @@ export function getFederatedGraphs( await Promise.all( list.map(async (g) => { - const requestSeries = await analyticsDashRepo.getRequestSeries(g.id, authContext.organizationId, { - granule: '5', - dateRange, - }); - requestSeriesList[g.id] = []; - requestSeriesList[g.id].push(...requestSeries); + const { series: requestSeries, ok } = await analyticsDashRepo.getRequestSeries( + g.id, + authContext.organizationId, + { + granule: '5', + dateRange, + }, + ); + requestSeriesList[g.id] = { requestSeries: [], ok }; + requestSeriesList[g.id].requestSeries.push(...requestSeries); }), ); } + const isRequestSeriesDataStale = + req.includeMetrics && opts.chClient && Object.values(requestSeriesList).some(({ ok }) => !ok); return { graphs: list.map((g) => ({ @@ -88,14 +94,14 @@ export function getFederatedGraphs( compositionErrors: g.compositionErrors ?? '', isComposable: g.isComposable, compositionId: g.compositionId, - requestSeries: requestSeriesList[g.id] ?? [], + requestSeries: requestSeriesList[g.id]?.requestSeries ?? [], supportsFederation: g.supportsFederation, contract: g.contract, admissionWebhookUrl: g.admissionWebhookURL, routerCompatibilityVersion: g.routerCompatibilityVersion, })), response: { - code: EnumStatusCode.OK, + code: isRequestSeriesDataStale ? EnumStatusCode.WARN_PARTIAL_DATA : EnumStatusCode.OK, }, }; }); diff --git a/controlplane/src/core/bufservices/federated-graph/getRouters.ts b/controlplane/src/core/bufservices/federated-graph/getRouters.ts index 9320b158be..a20a6936f1 100644 --- a/controlplane/src/core/bufservices/federated-graph/getRouters.ts +++ b/controlplane/src/core/bufservices/federated-graph/getRouters.ts @@ -55,7 +55,7 @@ export function getRouters( const routers: PlainMessage[] = []; const routerRepo = new RouterMetricsRepository(opts.chClient); - const routersDTOs = await routerRepo.getActiveRouters({ + const { routers: routersDTOs, ok } = await routerRepo.getActiveRouters({ federatedGraphId: federatedGraph.id, organizationId: authContext.organizationId, }); @@ -99,7 +99,7 @@ export function getRouters( return { response: { - code: EnumStatusCode.OK, + code: ok ? EnumStatusCode.OK : EnumStatusCode.WARN_PARTIAL_DATA, }, routers, }; diff --git a/controlplane/src/core/bufservices/federated-graph/migrateFromApollo.ts b/controlplane/src/core/bufservices/federated-graph/migrateFromApollo.ts index c800acffea..0cd835febd 100644 --- a/controlplane/src/core/bufservices/federated-graph/migrateFromApollo.ts +++ b/controlplane/src/core/bufservices/federated-graph/migrateFromApollo.ts @@ -6,7 +6,7 @@ import { MigrateFromApolloRequest, MigrateFromApolloResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, GraphApiKeyJwtPayload } from '../../../types/index.js'; +import { GraphApiKeyJwtPayload } from '../../../types/index.js'; import { audiences, signJwtHS256 } from '../../crypto/jwt.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; @@ -19,6 +19,7 @@ import ApolloMigrator from '../../services/ApolloMigrator.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function migrateFromApollo( opts: RouterOptions, @@ -40,6 +41,7 @@ export function migrateFromApollo( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const auditLogRepo = new AuditLogRepository(opts.db); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); @@ -64,6 +66,10 @@ export function migrateFromApollo( }; } + if (!authContext.rbac.canCreateFederatedGraph(namespace)) { + throw new UnauthorizedError(); + } + const org = await orgRepo.byId(authContext.organizationId); if (!org) { return { @@ -76,7 +82,6 @@ export function migrateFromApollo( } const user = await userRepo.byId(authContext.userId || ''); - const apolloMigrator = new ApolloMigrator({ apiKey: req.apiKey, organizationSlug: org.slug, @@ -98,7 +103,6 @@ export function migrateFromApollo( } const graphDetails = await apolloMigrator.fetchGraphDetails({ graphID: graph.id }); - if (!graphDetails.success) { return { response: { @@ -131,14 +135,7 @@ export function migrateFromApollo( } } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - await opts.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); - const federatedGraph = await apolloMigrator.migrateGraphFromApollo({ fedGraph: { name: graph.name, @@ -152,20 +149,18 @@ export function migrateFromApollo( namespaceId: namespace.id, }); - await fedGraphRepo.composeAndDeployGraphs({ - federatedGraphs: [federatedGraph], - actorId: authContext.userId, - blobStorage: opts.blobStorage, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: true, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - }); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + true, + ); + + await compositionService.composeAndDeployFederatedGraph({ actorId: authContext.userId, federatedGraph }); }); const migratedGraph = await fedGraphRepo.byName(graph.name, req.namespace); diff --git a/controlplane/src/core/bufservices/federated-graph/moveFederatedGraph.ts b/controlplane/src/core/bufservices/federated-graph/moveFederatedGraph.ts index 7889ef6ddb..27e3aefd09 100644 --- a/controlplane/src/core/bufservices/federated-graph/moveFederatedGraph.ts +++ b/controlplane/src/core/bufservices/federated-graph/moveFederatedGraph.ts @@ -2,13 +2,7 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; -import { - CompositionError, - CompositionWarning, - DeploymentError, - MoveGraphRequest, - MoveGraphResponse, -} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { MoveGraphRequest, MoveGraphResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { ContractRepository } from '../../repositories/ContractRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; @@ -17,6 +11,7 @@ import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function moveFederatedGraph( opts: RouterOptions, @@ -41,6 +36,7 @@ export function moveFederatedGraph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const auditLogRepo = new AuditLogRepository(tx); const namespaceRepo = new NamespaceRepository(tx, authContext.organizationId); @@ -108,70 +104,61 @@ export function moveFederatedGraph( }; } - if (!authContext.rbac.isOrganizationAdminOrDeveloper) { + if (!authContext.rbac.canDeleteFederatedGraph(graph) || !authContext.rbac.canCreateFederatedGraph(newNamespace)) { throw new UnauthorizedError(); } - const { compositionErrors, deploymentErrors, compositionWarnings } = await fedGraphRepo.move( - { - targetId: graph.targetId, - newNamespaceId: newNamespace.id, - updatedBy: authContext.userId, - federatedGraph: graph, - }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - ); - - const allDeploymentErrors: PlainMessage[] = []; - const allCompositionErrors: PlainMessage[] = []; - const allCompositionWarnings: PlainMessage[] = []; - - allCompositionErrors.push(...compositionErrors); - allDeploymentErrors.push(...deploymentErrors); - allCompositionWarnings.push(...compositionWarnings); + // Does not call `composeAndDeployFederatedGraph` by design + await fedGraphRepo.move({ + targetId: graph.targetId, + newNamespaceId: newNamespace.id, + updatedBy: authContext.userId, + federatedGraph: graph, + }); const movedGraphs = [graph]; const contracts = await contractRepo.bySourceFederatedGraphId(graph.id); - for (const contract of contracts) { const contractGraph = await fedGraphRepo.byId(contract.downstreamFederatedGraphId); if (!contractGraph) { continue; } - const { - compositionErrors: contractErrors, - deploymentErrors: contractDeploymentErrors, - compositionWarnings: contractWarnings, - } = await fedGraphRepo.move( - { - targetId: contractGraph.targetId, - newNamespaceId: newNamespace.id, - updatedBy: authContext.userId, - federatedGraph: contractGraph, - skipDeployment: compositionErrors.length > 0, - }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - ); - - allCompositionErrors.push(...contractErrors); - allDeploymentErrors.push(...contractDeploymentErrors); - allCompositionWarnings.push(...contractWarnings); + // Does not call `composeAndDeployFederatedGraph` by design + await fedGraphRepo.move({ + targetId: contractGraph.targetId, + newNamespaceId: newNamespace.id, + updatedBy: authContext.userId, + federatedGraph: contractGraph, + }); movedGraphs.push(contractGraph); } + const movedFederatedGraph = await fedGraphRepo.byId(graph.id); + if (!movedFederatedGraph) { + throw new Error('Federated graph not found'); + } + + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + // Only call `composeAndDeployFederatedGraph` after all contracts have been moved + const { compositionErrors, deploymentErrors, compositionWarnings } = + await compositionService.composeAndDeployFederatedGraph({ + actorId: authContext.userId, + federatedGraph: movedFederatedGraph, + }); + for (const movedGraph of movedGraphs) { await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, @@ -214,35 +201,18 @@ export function moveFederatedGraph( ); } - if (allCompositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - deploymentErrors: [], - compositionErrors: allCompositionErrors, - compositionWarnings: allCompositionWarnings, - }; - } - - if (allDeploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - deploymentErrors: allDeploymentErrors, - compositionErrors: [], - compositionWarnings: allCompositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, - compositionErrors: [], - deploymentErrors: [], - compositionWarnings: allCompositionWarnings, + compositionErrors, + deploymentErrors, + compositionWarnings, }; }); }); diff --git a/controlplane/src/core/bufservices/federated-graph/updateFederatedGraph.ts b/controlplane/src/core/bufservices/federated-graph/updateFederatedGraph.ts index baa1c5cf4e..375183dd9b 100644 --- a/controlplane/src/core/bufservices/federated-graph/updateFederatedGraph.ts +++ b/controlplane/src/core/bufservices/federated-graph/updateFederatedGraph.ts @@ -3,22 +3,18 @@ import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { - CompositionError, - CompositionWarning, - DeploymentError, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { isValidUrl } from '@wundergraph/cosmo-shared'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError, isValidLabelMatchers } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function updateFederatedGraph( opts: RouterOptions, @@ -32,13 +28,13 @@ export function updateFederatedGraph( logger = enrichLogger(ctx, logger, authContext); const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const auditLogRepo = new AuditLogRepository(opts.db); const orgWebhooks = new OrganizationWebhookService( opts.db, authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); req.namespace = req.namespace || DefaultNamespace; @@ -109,49 +105,33 @@ export function updateFederatedGraph( }; } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - const deploymentErrors: PlainMessage[] = []; - let compositionErrors: PlainMessage[] = []; - const compositionWarnings: PlainMessage[] = []; + const result = await opts.db.transaction((tx) => { + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); - const result = await fedGraphRepo.update({ - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, - admissionWebhookSecret: req.admissionWebhookSecret, - admissionWebhookURL: req.admissionWebhookURL, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - labelMatchers: req.labelMatchers, - namespaceId: federatedGraph.namespaceId, - readme: req.readme, - routingUrl: req.routingUrl, - targetId: federatedGraph.targetId, - unsetLabelMatchers: req.unsetLabelMatchers, - updatedBy: authContext.userId, + const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); + return fedGraphRepo.update({ + compositionService, + admissionWebhookSecret: req.admissionWebhookSecret, + admissionWebhookURL: req.admissionWebhookURL, + labelMatchers: req.labelMatchers, + namespaceId: federatedGraph.namespaceId, + readme: req.readme, + routingUrl: req.routingUrl, + targetId: federatedGraph.targetId, + unsetLabelMatchers: req.unsetLabelMatchers, + updatedBy: authContext.userId, + }); }); - if (result?.deploymentErrors) { - deploymentErrors.push(...result.deploymentErrors); - } - - if (result?.compositionErrors) { - compositionErrors = result.compositionErrors; - } - - if (result?.compositionWarnings) { - compositionWarnings.push(...result.compositionWarnings); - } - await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, @@ -182,7 +162,7 @@ export function updateFederatedGraph( id: authContext.organizationId, slug: authContext.organizationSlug, }, - errors: compositionErrors.length > 0 || deploymentErrors.length > 0, + errors: result.compositionErrors.length > 0 || result.deploymentErrors.length > 0, actor_id: authContext.userId, }, }, @@ -190,35 +170,18 @@ export function updateFederatedGraph( ); } - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - deploymentErrors: [], - compositionErrors, - compositionWarnings, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - deploymentErrors, - compositionErrors: [], - compositionWarnings, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + result && result.compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : result && result.deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, - compositionErrors: [], - deploymentErrors: [], - compositionWarnings, + compositionErrors: result?.compositionErrors || [], + deploymentErrors: result?.deploymentErrors || [], + compositionWarnings: result?.compositionWarnings || [], }; }); } diff --git a/controlplane/src/core/bufservices/graph/recomposeGraph.ts b/controlplane/src/core/bufservices/graph/recomposeGraph.ts index 6a9cf6fc48..20a4336173 100644 --- a/controlplane/src/core/bufservices/graph/recomposeGraph.ts +++ b/controlplane/src/core/bufservices/graph/recomposeGraph.ts @@ -5,14 +5,14 @@ import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notificat import { RecomposeGraphRequest, RecomposeGraphResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { clamp, enrichLogger, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; -import { AuthContext, COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, FederatedGraphDTO } from '../../../types/index.js'; +import { AuthContext, FederatedGraphDTO } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { maxRowLimitForChecks } from '../../constants.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function recomposeGraph( opts: RouterOptions, @@ -30,10 +30,9 @@ export function recomposeGraph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const federatedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); - if (authContext.organizationDeactivated) { throw new UnauthorizedError(); } @@ -68,29 +67,20 @@ export function recomposeGraph( authContext, }); - const ignoreExternalKeys = - ( - await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }) - )?.enabled ?? false; - - const { compositionErrors, compositionWarnings, deploymentErrors } = - await federatedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys, - }, - federatedGraphs: [graph], - }); + const { compositionErrors, compositionWarnings, deploymentErrors } = await opts.db.transaction((tx) => { + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + return compositionService.composeAndDeployFederatedGraph({ actorId: authContext.userId, federatedGraph: graph }); + }); sendOrgWebhooks({ authContext, @@ -101,7 +91,6 @@ export function recomposeGraph( }); const auditLogRepo = new AuditLogRepository(opts.db); - await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, diff --git a/controlplane/src/core/bufservices/graph/setGraphRouterCompatibilityVersion.ts b/controlplane/src/core/bufservices/graph/setGraphRouterCompatibilityVersion.ts index 27d42b0d57..f7d28f03ca 100644 --- a/controlplane/src/core/bufservices/graph/setGraphRouterCompatibilityVersion.ts +++ b/controlplane/src/core/bufservices/graph/setGraphRouterCompatibilityVersion.ts @@ -6,15 +6,14 @@ import { SetGraphRouterCompatibilityVersionResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { ROUTER_COMPATIBILITY_VERSIONS, SupportedRouterCompatibilityVersion } from '@wundergraph/composition'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function setGraphRouterCompatibilityVersion( opts: RouterOptions, @@ -32,8 +31,6 @@ export function setGraphRouterCompatibilityVersion( } const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); - req.namespace = req.namespace || DefaultNamespace; const federatedGraph = await fedGraphRepo.byName(req.name, req.namespace); @@ -100,6 +97,8 @@ export function setGraphRouterCompatibilityVersion( // If there are no subgraphs, we don't need to compose anything // and avoid producing a version with a composition error if (subgraphs.length === 0) { + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + await fedGraphRepo.updateRouterCompatibilityVersion(federatedGraph.id, version); return { response: { code: EnumStatusCode.OK, @@ -113,18 +112,11 @@ export function setGraphRouterCompatibilityVersion( }; } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - - await opts.db.transaction(async (tx) => { + const { deploymentErrors, compositionErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); - await fedGraphRepo.updateRouterCompatibilityVersion(federatedGraph.id, version); - const auditLogRepo = new AuditLogRepository(opts.db); - + const auditLogRepo = new AuditLogRepository(tx); await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, @@ -140,57 +132,37 @@ export function setGraphRouterCompatibilityVersion( targetNamespaceDisplayName: federatedGraph.namespace, }); - const composition = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs: [federatedGraph], - }); - - if (composition.compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - previousVersion: federatedGraph.routerCompatibilityVersion, - newVersion: federatedGraph.routerCompatibilityVersion, - compositionErrors: composition.compositionErrors, - compositionWarnings: composition.compositionWarnings, - deploymentErrors: composition.deploymentErrors, - }; - } - - if (composition.deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - previousVersion: federatedGraph.routerCompatibilityVersion, - newVersion: federatedGraph.routerCompatibilityVersion, - compositionErrors: composition.compositionErrors, - compositionWarnings: composition.compositionWarnings, - deploymentErrors: composition.deploymentErrors, - }; - } + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + return await compositionService.composeAndDeployFederatedGraph({ actorId: authContext.userId, federatedGraph }); }); return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, previousVersion: federatedGraph.routerCompatibilityVersion, - newVersion: version, - compositionErrors: [], - compositionWarnings: [], - deploymentErrors: [], + newVersion: + compositionErrors.length > 0 || deploymentErrors.length > 0 + ? federatedGraph.routerCompatibilityVersion + : version, + compositionErrors, + compositionWarnings, + deploymentErrors, }; }); } diff --git a/controlplane/src/core/bufservices/monograph/publishMonograph.ts b/controlplane/src/core/bufservices/monograph/publishMonograph.ts index bb30418df7..ed292099f2 100644 --- a/controlplane/src/core/bufservices/monograph/publishMonograph.ts +++ b/controlplane/src/core/bufservices/monograph/publishMonograph.ts @@ -15,6 +15,7 @@ import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function publishMonograph( opts: RouterOptions, @@ -32,6 +33,7 @@ export function publishMonograph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); @@ -138,24 +140,33 @@ export function publishMonograph( authContext, }); - const { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings } = - await subgraphRepo.update( - { - targetId: subgraphs[0].targetId, - labels: [], - unsetLabels: false, - schemaSDL: subgraphSchemaSDL, - updatedBy: authContext.userId, - namespaceId: namespace.id, - isV2Graph, - }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - ); + const { deploymentErrors, compositionErrors, compositionWarnings, updatedFederatedGraphs } = + await opts.db.transaction((tx) => { + const subgraphRepo = new SubgraphRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + false, + ); + + return subgraphRepo.update( + { + targetId: subgraphs[0].targetId, + labels: [], + unsetLabels: false, + schemaSDL: subgraphSchemaSDL, + updatedBy: authContext.userId, + namespaceId: namespace.id, + isV2Graph, + }, + compositionService, + ); + }); for (const graph of updatedFederatedGraphs) { orgWebhooks.send( diff --git a/controlplane/src/core/bufservices/monograph/updateMonograph.ts b/controlplane/src/core/bufservices/monograph/updateMonograph.ts index 9443ede21c..cee8113a1f 100644 --- a/controlplane/src/core/bufservices/monograph/updateMonograph.ts +++ b/controlplane/src/core/bufservices/monograph/updateMonograph.ts @@ -21,6 +21,7 @@ import { } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function updateMonograph( opts: RouterOptions, @@ -47,6 +48,7 @@ export function updateMonograph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); if (req.subscriptionUrl && !isValidUrl(req.subscriptionUrl)) { @@ -134,24 +136,32 @@ export function updateMonograph( authContext, }); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient!, + opts.webhookProxyUrl, + false, + ); + + // Update the federated graph await fedGraphRepo.update({ + compositionService, targetId: graph.targetId, labelMatchers: [], routingUrl: req.routingUrl, updatedBy: authContext.userId, readme: req.readme, - blobStorage: opts.blobStorage, namespaceId: graph.namespaceId, unsetLabelMatchers: false, - admissionConfig: { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, admissionWebhookURL: req.admissionWebhookURL, admissionWebhookSecret: req.admissionWebhookSecret, - chClient: opts.chClient!, }); + // Update the subgraph await subgraphRepo.update( { targetId: subgraph.targetId, @@ -167,12 +177,7 @@ export function updateMonograph( readme: req.readme, namespaceId: subgraph.namespaceId, }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, + compositionService, ); await auditLogRepo.addAuditLog({ diff --git a/controlplane/src/core/bufservices/namespace/listNamespaceLoginMethods.ts b/controlplane/src/core/bufservices/namespace/listNamespaceLoginMethods.ts new file mode 100644 index 0000000000..dcf5259175 --- /dev/null +++ b/controlplane/src/core/bufservices/namespace/listNamespaceLoginMethods.ts @@ -0,0 +1,63 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + ListNamespaceLoginMethodsRequest, + ListNamespaceLoginMethodsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { NamespaceLoginMethodRepository } from '../../repositories/NamespaceLoginMethodRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function listNamespaceLoginMethods( + opts: RouterOptions, + _req: ListNamespaceLoginMethodsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (!authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + const orgRepo = new OrganizationRepository(logger, opts.db); + const feature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'login-method-restrictions', + }); + if (!feature?.enabled) { + return { + response: { + code: EnumStatusCode.ERR_UPGRADE_PLAN, + details: 'Login method restrictions are available on the Enterprise plan.', + }, + mappings: [], + }; + } + + const mappingRepo = new NamespaceLoginMethodRepository(opts.db); + // Pass rbac so the repo limits results to namespaces the caller's login + // method can access (matches the namespace dropdown and the update self-check). + const mappings = await mappingRepo.listMappings({ + organizationId: authContext.organizationId, + rbac: authContext.rbac, + }); + + return { + response: { code: EnumStatusCode.OK }, + mappings: mappings.map((m) => ({ + namespaceId: m.namespaceId, + allowedSsoProviderIds: m.allowedSsoProviderIds, + allowPasswordLogin: m.allowPasswordLogin, + allowGoogleLogin: m.allowGoogleLogin, + allowGithubLogin: m.allowGithubLogin, + })), + }; + }); +} diff --git a/controlplane/src/core/bufservices/namespace/updateNamespaceLoginMethods.ts b/controlplane/src/core/bufservices/namespace/updateNamespaceLoginMethods.ts new file mode 100644 index 0000000000..43fd6bdb30 --- /dev/null +++ b/controlplane/src/core/bufservices/namespace/updateNamespaceLoginMethods.ts @@ -0,0 +1,166 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + UpdateNamespaceLoginMethodsRequest, + UpdateNamespaceLoginMethodsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { NamespaceLoginMethodRepository } from '../../repositories/NamespaceLoginMethodRepository.js'; +import { OidcRepository } from '../../repositories/OidcRepository.js'; +import { OrganizationLoginMethodRepository } from '../../repositories/OrganizationLoginMethodRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError, isNamespaceAllowed } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function updateNamespaceLoginMethods( + opts: RouterOptions, + req: UpdateNamespaceLoginMethodsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (!authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + const orgRepo = new OrganizationRepository(logger, opts.db); + const feature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'login-method-restrictions', + }); + if (!feature?.enabled) { + return { + response: { + code: EnumStatusCode.ERR_UPGRADE_PLAN, + details: 'Login method restrictions are available on the Enterprise plan.', + }, + }; + } + + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + const oidcRepo = new OidcRepository(opts.db); + const orgProviderIds = new Set( + (await oidcRepo.listOidcProvidersByOrganizationId({ organizationId: authContext.organizationId })).map( + (p) => p.id, + ), + ); + + const orgLoginMethodRepo = new OrganizationLoginMethodRepository(opts.db); + const orgAllowed = await orgLoginMethodRepo.getAllowedLoginMethods({ organizationId: authContext.organizationId }); + + // Validate every namespace and SSO provider in the payload before writing. + const namespacesById = new Map(); + for (const mapping of req.mappings) { + if (namespacesById.has(mapping.namespaceId)) { + return { + response: { + code: EnumStatusCode.ERR_BAD_REQUEST, + details: `Namespace appears more than once in the request: ${mapping.namespaceId}`, + }, + }; + } + + const namespace = await namespaceRepo.byId(mapping.namespaceId); + if (!namespace) { + return { + response: { code: EnumStatusCode.ERR_NOT_FOUND, details: `Namespace not found: ${mapping.namespaceId}` }, + }; + } + + // Gate-self check: an admin can only configure a namespace their current + // login method can already access (prevents a compromised non-prod IdP + // from re-mapping prod namespaces). API-key contexts are never gated, so + // their gate is `all` and this always passes. + if (!isNamespaceAllowed(authContext.rbac.idpNamespaceAccess, namespace.id)) { + throw new UnauthorizedError(); + } + + for (const id of mapping.allowedSsoProviderIds) { + if (!orgProviderIds.has(id)) { + return { response: { code: EnumStatusCode.ERR_BAD_REQUEST, details: `Unknown SSO provider id: ${id}` } }; + } + } + + if (orgAllowed.isRestricted) { + if (mapping.allowPasswordLogin && !orgAllowed.allowPasswordLogin) { + return { + response: { + code: EnumStatusCode.ERR_BAD_REQUEST, + details: 'Password login is not allowed for this organization.', + }, + }; + } + if (mapping.allowGoogleLogin && !orgAllowed.allowGoogleLogin) { + return { + response: { + code: EnumStatusCode.ERR_BAD_REQUEST, + details: 'Google login is not allowed for this organization.', + }, + }; + } + if (mapping.allowGithubLogin && !orgAllowed.allowGithubLogin) { + return { + response: { + code: EnumStatusCode.ERR_BAD_REQUEST, + details: 'GitHub login is not allowed for this organization.', + }, + }; + } + for (const id of mapping.allowedSsoProviderIds) { + if (!orgAllowed.allowedSsoProviderIds.includes(id)) { + return { + response: { + code: EnumStatusCode.ERR_BAD_REQUEST, + details: `SSO provider ${id} is not allowed for this organization.`, + }, + }; + } + } + } + + namespacesById.set(namespace.id, namespace); + } + + const mappingRepo = new NamespaceLoginMethodRepository(opts.db); + await mappingRepo.setMappings({ + organizationId: authContext.organizationId, + rbac: authContext.rbac, + mappings: req.mappings.map((m) => ({ + namespaceId: m.namespaceId, + ssoProviderIds: m.allowedSsoProviderIds, + allowPasswordLogin: m.allowPasswordLogin, + allowGoogleLogin: m.allowGoogleLogin, + allowGithubLogin: m.allowGithubLogin, + })), + }); + + const auditRepo = new AuditLogRepository(opts.db); + for (const namespace of namespacesById.values()) { + await auditRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'namespace_sso_mapping.updated', + action: 'updated', + actorId: authContext.userId, + auditableType: 'namespace_sso_mapping', + auditableDisplayName: namespace.name, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + apiKeyName: authContext.apiKeyName, + targetNamespaceId: namespace.id, + targetNamespaceDisplayName: namespace.name, + }); + } + + return { + response: { code: EnumStatusCode.OK }, + }; + }); +} diff --git a/controlplane/src/core/bufservices/onboarding/createOnboarding.ts b/controlplane/src/core/bufservices/onboarding/createOnboarding.ts new file mode 100644 index 0000000000..974326f1b2 --- /dev/null +++ b/controlplane/src/core/bufservices/onboarding/createOnboarding.ts @@ -0,0 +1,56 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + CreateOnboardingRequest, + CreateOnboardingResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { OnboardingRepository } from '../../repositories/OnboardingRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; + +export function createOnboarding( + opts: RouterOptions, + req: CreateOnboardingRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); + const org = await orgRepo.byId(authContext.organizationId); + + if (!org || org.creatorUserId !== authContext.userId) { + return { + response: { + code: EnumStatusCode.ERR, + details: 'Only the organization creator can create onboarding.', + }, + federatedGraphsCount: 0, + }; + } + + const onboardingRepo = new OnboardingRepository(opts.db, authContext.organizationId); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + + const [onboarding, federatedGraphsCount] = await Promise.all([ + onboardingRepo.createOrUpdate({ + userId: authContext.userId, + }), + fedGraphRepo.count(), + ]); + + return { + response: { + code: EnumStatusCode.OK, + }, + finishedAt: onboarding.finishedAt?.toISOString(), + federatedGraphsCount, + }; + }); +} diff --git a/controlplane/src/core/bufservices/onboarding/finishOnboarding.ts b/controlplane/src/core/bufservices/onboarding/finishOnboarding.ts new file mode 100644 index 0000000000..dc1cdf9e3b --- /dev/null +++ b/controlplane/src/core/bufservices/onboarding/finishOnboarding.ts @@ -0,0 +1,49 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + FinishOnboardingRequest, + FinishOnboardingResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { OnboardingRepository } from '../../repositories/OnboardingRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; + +export function finishOnboarding( + opts: RouterOptions, + req: FinishOnboardingRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + const onboardingRepo = new OnboardingRepository(opts.db, authContext.organizationId); + const onboarding = await onboardingRepo.finish(authContext.userId); + + if (!onboarding) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: 'Onboarding not found', + }, + federatedGraphsCount: 0, + finishedAt: '', + }; + } + + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const federatedGraphsCount = await fedGraphRepo.count(); + + return { + response: { + code: EnumStatusCode.OK, + }, + federatedGraphsCount, + finishedAt: onboarding.finishedAt!.toISOString(), + }; + }); +} diff --git a/controlplane/src/core/bufservices/onboarding/getOnboarding.ts b/controlplane/src/core/bufservices/onboarding/getOnboarding.ts new file mode 100644 index 0000000000..45a2466836 --- /dev/null +++ b/controlplane/src/core/bufservices/onboarding/getOnboarding.ts @@ -0,0 +1,61 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { GetOnboardingRequest, GetOnboardingResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { OnboardingRepository } from '../../repositories/OnboardingRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; + +export function getOnboarding( + opts: RouterOptions, + req: GetOnboardingRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const [org, federatedGraphsCount] = await Promise.all([ + orgRepo.byId(authContext.organizationId), + fedGraphRepo.count(), + ]); + + if (!org || org.creatorUserId !== authContext.userId) { + return { + response: { + code: EnumStatusCode.OK, + }, + federatedGraphsCount, + enabled: false, + }; + } + + const onboardingRepo = new OnboardingRepository(opts.db, authContext.organizationId); + const onboarding = await onboardingRepo.getByUserId(authContext.userId); + + if (!onboarding) { + return { + response: { + code: EnumStatusCode.OK, + }, + federatedGraphsCount, + enabled: true, + }; + } + + return { + response: { + code: EnumStatusCode.OK, + }, + finishedAt: onboarding.finishedAt?.toISOString(), + federatedGraphsCount, + enabled: true, + }; + }); +} diff --git a/controlplane/src/core/bufservices/organization/deleteOrganizationGroup.ts b/controlplane/src/core/bufservices/organization/deleteOrganizationGroup.ts index 665b4450fc..f99aa39d9a 100644 --- a/controlplane/src/core/bufservices/organization/deleteOrganizationGroup.ts +++ b/controlplane/src/core/bufservices/organization/deleteOrganizationGroup.ts @@ -71,21 +71,31 @@ export function deleteOrganizationGroup( await opts.keycloakClient.authenticateClient(); - // Retrieve the OIDC mappers that have been assigned to the group - const oidc = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); + // Retrieve the OIDC mappers that have been assigned to the group, across + // every configured provider. Each mapper carries the alias of the provider + // it belongs to so it can be re-created on the same provider below. + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ + organizationId: authContext.organizationId, + }); - let oidcMappersForGroup: { id: string; claims: string }[] = []; - if (oidc) { + const oidcMappersForGroup: { id: string; claims: string; alias: string }[] = []; + if (providers.length > 0) { const oidcProvider = new OidcProvider(); - const oidcMappers = await oidcProvider.fetchIDPMappers({ - kcClient: opts.keycloakClient, - kcRealm: opts.keycloakRealm, - alias: oidc.alias, - organizationId: authContext.organizationId, - db: opts.db, - }); + for (const provider of providers) { + const oidcMappers = await oidcProvider.fetchIDPMappers({ + kcClient: opts.keycloakClient, + kcRealm: opts.keycloakRealm, + alias: provider.alias, + organizationId: authContext.organizationId, + db: opts.db, + }); - oidcMappersForGroup = oidcMappers.filter((mapper) => mapper.groupId === orgGroup.groupId); + oidcMappersForGroup.push( + ...oidcMappers + .filter((mapper) => mapper.groupId === orgGroup.groupId) + .map((mapper) => ({ id: mapper.id, claims: mapper.claims, alias: provider.alias })), + ); + } } // If the group have one member or the organization OIDC is enabled, we need to move the members to the @@ -151,9 +161,9 @@ export function deleteOrganizationGroup( }); } - // When the organization have linked an OIDC provider, we need to update the mappers that were tied - // to the group we are deleting - if (oidc && oidcMappersForGroup.length > 0 && moveToGroup) { + // When the organization has linked OIDC providers, we need to update the mappers that were tied + // to the group we are deleting — on whichever provider each mapper belongs to. + if (oidcMappersForGroup.length > 0 && moveToGroup) { for (const mapper of oidcMappersForGroup) { // To update the mapper, we need to delete the existing mapper and create a new one with the same claims. // @@ -163,13 +173,13 @@ export function deleteOrganizationGroup( // parameters as returned by Keycloak await opts.keycloakClient.client.identityProviders.delMapper({ realm: opts.keycloakRealm, - alias: oidc.alias, + alias: mapper.alias, id: mapper.id, }); await opts.keycloakClient.createIDPMapper({ realm: opts.keycloakRealm, - alias: oidc.alias, + alias: mapper.alias, keycloakGroupName: `/${authContext.organizationSlug}/${moveToGroup.name}`, claims: mapper.claims, }); diff --git a/controlplane/src/core/bufservices/organization/getOrganizationGroups.ts b/controlplane/src/core/bufservices/organization/getOrganizationGroups.ts index 612b9c0d5a..5606a12d94 100644 --- a/controlplane/src/core/bufservices/organization/getOrganizationGroups.ts +++ b/controlplane/src/core/bufservices/organization/getOrganizationGroups.ts @@ -28,25 +28,28 @@ export function getOrganizationGroups( const groups = await orgGroupRepo.forOrganization(authContext.organizationId); - let oidcMappers: { groupId: string }[] = []; - const oidc = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); - if (oidc) { - // Retrieve all the OIDC mappers from Keycloak + const oidcMappers: { groupId: string }[] = []; + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ organizationId: authContext.organizationId }); + if (providers.length > 0) { + // Retrieve the OIDC mappers from Keycloak for every configured provider. await opts.keycloakClient.authenticateClient(); - oidcMappers = await oidcProvider.fetchIDPMappers({ - kcClient: opts.keycloakClient, - kcRealm: opts.keycloakRealm, - alias: oidc.alias, - organizationId: authContext.organizationId, - db: opts.db, - }); + for (const provider of providers) { + const mappers = await oidcProvider.fetchIDPMappers({ + kcClient: opts.keycloakClient, + kcRealm: opts.keycloakRealm, + alias: provider.alias, + organizationId: authContext.organizationId, + db: opts.db, + }); + oidcMappers.push(...mappers); + } } return { response: { code: EnumStatusCode.OK, }, - hasConnectedOidc: !!oidc, + hasConnectedOidc: providers.length > 0, groups: groups.map(({ kcGroupId, ...rest }) => ({ ...rest, hasOidcMappers: oidcMappers.some((mapper) => mapper.groupId === rest.groupId), diff --git a/controlplane/src/core/bufservices/organization/getOrganizationLoginMethods.ts b/controlplane/src/core/bufservices/organization/getOrganizationLoginMethods.ts new file mode 100644 index 0000000000..adc3c0c8c8 --- /dev/null +++ b/controlplane/src/core/bufservices/organization/getOrganizationLoginMethods.ts @@ -0,0 +1,51 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + GetOrganizationLoginMethodsRequest, + GetOrganizationLoginMethodsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { OrganizationLoginMethodRepository } from '../../repositories/OrganizationLoginMethodRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function getOrganizationLoginMethods( + opts: RouterOptions, + _req: GetOrganizationLoginMethodsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (!authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + const orgRepo = new OrganizationRepository(logger, opts.db); + const feature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'login-method-restrictions', + }); + if (!feature?.enabled) { + return { + response: { + code: EnumStatusCode.ERR_UPGRADE_PLAN, + details: 'Login method restrictions are available on the Enterprise plan.', + }, + }; + } + + const repo = new OrganizationLoginMethodRepository(opts.db); + const methods = await repo.getAllowedLoginMethods({ organizationId: authContext.organizationId }); + + return { + response: { code: EnumStatusCode.OK }, + loginMethods: { ...methods }, + }; + }); +} diff --git a/controlplane/src/core/bufservices/organization/updateOrganizationLoginMethods.ts b/controlplane/src/core/bufservices/organization/updateOrganizationLoginMethods.ts new file mode 100644 index 0000000000..47c1d939f7 --- /dev/null +++ b/controlplane/src/core/bufservices/organization/updateOrganizationLoginMethods.ts @@ -0,0 +1,160 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + UpdateOrganizationLoginMethodsRequest, + UpdateOrganizationLoginMethodsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { NamespaceLoginMethodRepository } from '../../repositories/NamespaceLoginMethodRepository.js'; +import { OidcRepository } from '../../repositories/OidcRepository.js'; +import { OrganizationLoginMethodRepository } from '../../repositories/OrganizationLoginMethodRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { + enrichLogger, + getLogger, + handleError, + isLoginMethodAllowedToUpdate, + doesNamespaceMappingExceedsOrgAllowList, +} from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; + +export function updateOrganizationLoginMethods( + opts: RouterOptions, + req: UpdateOrganizationLoginMethodsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (!authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + const orgRepo = new OrganizationRepository(logger, opts.db); + const feature = await orgRepo.getFeature({ + organizationId: authContext.organizationId, + featureId: 'login-method-restrictions', + }); + if (!feature?.enabled) { + return { + response: { + code: EnumStatusCode.ERR_UPGRADE_PLAN, + details: 'Login method restrictions are available on the Enterprise plan.', + }, + requiresConfirmation: false, + affectedNamespaces: [], + }; + } + + // Only interactive sessions may change this, so the self-lockout guard + // always has a login method to validate. + const actorMethod = authContext.loginMethod; + if (!actorMethod || actorMethod.type === 'api-key') { + return { + response: { + code: EnumStatusCode.ERR, + details: 'Login methods can only be changed from an interactive session, not an API key.', + }, + requiresConfirmation: false, + affectedNamespaces: [], + }; + } + + const allow = { + allowPasswordLogin: req.allowPasswordLogin, + allowGoogleLogin: req.allowGoogleLogin, + allowGithubLogin: req.allowGithubLogin, + allowedSsoProviderIds: req.allowedSsoProviderIds, + }; + + // An empty allow-list means "no restriction": every login method is allowed + // (default-open). It is the safe state, so the floor, the self-lockout block, + // and namespace reconciliation are all skipped — nothing is disallowed. + const isUnrestricted = + !allow.allowPasswordLogin && + !allow.allowGoogleLogin && + !allow.allowGithubLogin && + allow.allowedSsoProviderIds.length === 0; + + const affected: { id: string; name: string }[] = []; + + if (!isUnrestricted) { + // Validate provider ids belong to the org. + const oidcRepo = new OidcRepository(opts.db); + const orgProviderIds = new Set( + (await oidcRepo.listOidcProvidersByOrganizationId({ organizationId: authContext.organizationId })).map( + (p) => p.id, + ), + ); + for (const id of allow.allowedSsoProviderIds) { + if (!orgProviderIds.has(id)) { + return { + response: { code: EnumStatusCode.ERR_BAD_REQUEST, details: `Unknown SSO provider id: ${id}` }, + requiresConfirmation: false, + affectedNamespaces: [], + }; + } + } + + // Self-lockout block: the actor's current method must stay allowed. + if (!isLoginMethodAllowedToUpdate(allow, actorMethod)) { + return { + response: { + code: EnumStatusCode.ERR, + details: + 'This change would lock you out: your current login method would no longer be allowed. Sign in with an allowed method first, then apply the change.', + }, + requiresConfirmation: false, + affectedNamespaces: [], + }; + } + + // Namespace reconciliation: find namespace mappings referencing a method the + // new org allow-list disallows. + const mappingRepo = new NamespaceLoginMethodRepository(opts.db); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + const mappings = await mappingRepo.listMappings({ organizationId: authContext.organizationId }); + for (const m of mappings) { + if (doesNamespaceMappingExceedsOrgAllowList(m, allow)) { + const ns = await namespaceRepo.byId(m.namespaceId); + if (ns) { + affected.push({ id: ns.id, name: ns.name }); + } + } + } + } + + if (affected.length > 0 && !req.confirmNamespaceChanges) { + return { + response: { code: EnumStatusCode.OK }, + requiresConfirmation: true, + affectedNamespaces: affected.map((a) => ({ id: a.id, name: a.name })), + }; + } + + const repo = new OrganizationLoginMethodRepository(opts.db); + await repo.setAllowedLoginMethods({ organizationId: authContext.organizationId, ...allow }); + + const auditRepo = new AuditLogRepository(opts.db); + await auditRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'organization_login_methods.updated', + action: 'updated', + actorId: authContext.userId, + auditableType: 'organization_login_methods', + auditableDisplayName: authContext.organizationSlug, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + apiKeyName: authContext.apiKeyName, + }); + + return { response: { code: EnumStatusCode.OK }, requiresConfirmation: false, affectedNamespaces: [] }; + }); +} diff --git a/controlplane/src/core/bufservices/organization/whoAmI.ts b/controlplane/src/core/bufservices/organization/whoAmI.ts index 9880c5cf52..2188aa547b 100644 --- a/controlplane/src/core/bufservices/organization/whoAmI.ts +++ b/controlplane/src/core/bufservices/organization/whoAmI.ts @@ -1,14 +1,21 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { WhoAmIRequest, WhoAmIResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { + LoginMethod, + LoginMethodType, + SocialLoginProvider, + WhoAmIRequest, + WhoAmIResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { OidcRepository } from '../../repositories/OidcRepository.js'; import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function whoAmI( opts: RouterOptions, - req: WhoAmIRequest, + _req: WhoAmIRequest, ctx: HandlerContext, ): Promise> { let logger = getLogger(ctx, opts.logger); @@ -29,15 +36,68 @@ export function whoAmI( }, organizationName: '', organizationSlug: '', + organizationId: '', }; } + const lm = authContext.loginMethod; + const emptyLoginMethod = { + ssoProviderId: '', + ssoProviderName: '', + ssoAlias: '', + socialProvider: SocialLoginProvider.UNSPECIFIED, + }; + let loginMethod: PlainMessage; + switch (lm?.type) { + case 'sso': { + const oidcRepo = new OidcRepository(opts.db); + const provider = await oidcRepo.getOidcProviderById({ + id: lm.ssoProviderId, + organizationId: authContext.organizationId, + }); + loginMethod = { + ...emptyLoginMethod, + type: LoginMethodType.SSO, + ssoProviderId: lm.ssoProviderId, + ssoProviderName: provider?.name ?? '', + ssoAlias: lm.alias, + }; + + break; + } + case 'social': { + loginMethod = { + ...emptyLoginMethod, + type: LoginMethodType.SOCIAL, + socialProvider: lm.provider === 'google' ? SocialLoginProvider.GOOGLE : SocialLoginProvider.GITHUB, + }; + + break; + } + case 'password': { + loginMethod = { ...emptyLoginMethod, type: LoginMethodType.PASSWORD }; + + break; + } + case 'api-key': { + loginMethod = { ...emptyLoginMethod, type: LoginMethodType.API_KEY }; + + break; + } + default: { + loginMethod = { ...emptyLoginMethod, type: LoginMethodType.UNSPECIFIED }; + } + } + return { response: { code: EnumStatusCode.OK, }, + organizationId: organization.id, + userEmail: authContext.userDisplayName, organizationName: organization.name, organizationSlug: organization.slug, + loginMethod, }; }); } diff --git a/controlplane/src/core/bufservices/persisted-operation/deletePersistedOperation.ts b/controlplane/src/core/bufservices/persisted-operation/deletePersistedOperation.ts index 4c74c270a5..59baf9e45b 100644 --- a/controlplane/src/core/bufservices/persisted-operation/deletePersistedOperation.ts +++ b/controlplane/src/core/bufservices/persisted-operation/deletePersistedOperation.ts @@ -5,12 +5,10 @@ import type { DeletePersistedOperationRequest, DeletePersistedOperationResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import type { BlobStorage } from '../../blobstorage/index.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { UnauthorizedError } from '../../errors/errors.js'; import { OperationsRepository } from '../../repositories/OperationsRepository.js'; import type { RouterOptions } from '../../routes.js'; -import type { PersistedOperationWithClientDTO } from '../../../types/index.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { createBlobStoragePath } from './utils.js'; @@ -76,22 +74,7 @@ export function deletePersistedOperation( }); try { - await opts.blobStorage.deleteObject({ - key: path, - }); - return { - response: { - code: EnumStatusCode.OK, - }, - operation: deletedOperation - ? { - id: deletedOperation.id, - operationId: deletedOperation.operationId, - clientName: deletedOperation.clientName, - operationNames: deletedOperation.operationNames, - } - : undefined, - }; + await opts.blobStorage.deleteObject({ key: path }); } catch (e) { const error = e instanceof Error ? e : new Error('Unknown error'); logger.error(error, `Could not delete operation for ${operation.operationId} at ${path}`); @@ -103,5 +86,33 @@ export function deletePersistedOperation( }, }; } + + try { + await operationsRepo.generateAndUploadManifest({ + organizationId: authContext.organizationId, + blobStorage: opts.blobStorage, + logger, + }); + } catch (e) { + const error = e instanceof Error ? e : new Error('Unknown error'); + logger.error(error, `Failed to regenerate PQL manifest after deleting operation ${operation.operationId}`, { + federatedGraphId: federatedGraph.id, + organizationId: authContext.organizationId, + }); + } + + return { + response: { + code: EnumStatusCode.OK, + }, + operation: deletedOperation + ? { + id: deletedOperation.id, + operationId: deletedOperation.operationId, + clientName: deletedOperation.clientName, + operationNames: deletedOperation.operationNames, + } + : undefined, + }; }); } diff --git a/controlplane/src/core/bufservices/persisted-operation/getClients.ts b/controlplane/src/core/bufservices/persisted-operation/getClients.ts index e8054e5e0a..746d1edf90 100644 --- a/controlplane/src/core/bufservices/persisted-operation/getClients.ts +++ b/controlplane/src/core/bufservices/persisted-operation/getClients.ts @@ -5,6 +5,7 @@ import { GetClientsRequest, GetClientsResponse } from '@wundergraph/cosmo-connec import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { OperationsRepository } from '../../repositories/OperationsRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getClients( @@ -29,6 +30,11 @@ export function getClients( clients: [], }; } + + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const operationsRepo = new OperationsRepository(opts.db, federatedGraph.id); const clients = await operationsRepo.getRegisteredClients(); diff --git a/controlplane/src/core/bufservices/persisted-operation/getPersistedOperations.ts b/controlplane/src/core/bufservices/persisted-operation/getPersistedOperations.ts index 059cd28190..504a7699bf 100644 --- a/controlplane/src/core/bufservices/persisted-operation/getPersistedOperations.ts +++ b/controlplane/src/core/bufservices/persisted-operation/getPersistedOperations.ts @@ -8,6 +8,7 @@ import { import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { OperationsRepository } from '../../repositories/OperationsRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getPersistedOperations( @@ -34,6 +35,10 @@ export function getPersistedOperations( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const operationsRepo = new OperationsRepository(opts.db, federatedGraph.id); const operations = await operationsRepo.getPersistedOperations(req.clientId); diff --git a/controlplane/src/core/bufservices/persisted-operation/publishPersistedOperations.ts b/controlplane/src/core/bufservices/persisted-operation/publishPersistedOperations.ts index 1b646ed281..87664449e3 100644 --- a/controlplane/src/core/bufservices/persisted-operation/publishPersistedOperations.ts +++ b/controlplane/src/core/bufservices/persisted-operation/publishPersistedOperations.ts @@ -15,6 +15,7 @@ import { PublishedOperationData, UpdatedPersistedOperation } from '../../../type import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; import { OperationsRepository } from '../../repositories/OperationsRepository.js'; +import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, extractOperationNames, getLogger, handleError } from '../../util.js'; import { UnauthorizedError } from '../../errors/errors.js'; @@ -22,6 +23,8 @@ import { createBlobStoragePath } from './utils.js'; const MAX_PERSISTED_OPERATIONS = 100; const PARALLEL_PERSISTED_OPERATIONS_LIMIT = 25; +// Fallback used when no `persisted-operations` limit is configured for the organization's plan. +const DEFAULT_MAX_MANIFEST_OPERATIONS = 3000; export function publishPersistedOperations( opts: RouterOptions, @@ -158,6 +161,31 @@ export function publishPersistedOperations( operationsResult.map((op) => [op.operationId, { hash: op.hash, operationNames: op.operationNames }]), ); + // Check if adding new operations would exceed the manifest limit + const allExistingOperations = await operationsRepo.getAllPersistedOperationsForGraph(); + const existingHashes = new Set(allExistingOperations.map((op) => op.hash)); + const newOperationCount = req.operations.filter((op) => { + const hash = crypto.createHash('sha256').update(op.contents).digest('hex'); + return !existingHashes.has(hash); + }).length; + + const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); + const operationsFeature = await orgRepo.getFeature({ + organizationId, + featureId: 'persisted-operations', + }); + const maxManifestOperations = operationsFeature?.limit ?? DEFAULT_MAX_MANIFEST_OPERATIONS; + + if (allExistingOperations.length + newOperationCount > maxManifestOperations) { + return { + response: { + code: EnumStatusCode.ERR, + details: `Operation limit exceeded: adding ${newOperationCount} new operations would bring the total to ${allExistingOperations.length + newOperationCount}, which exceeds the maximum of ${maxManifestOperations} operations per graph`, + }, + operations: [], + }; + } + const processOperation = async ( operation: PersistedOperation, ): Promise<{ @@ -202,6 +230,9 @@ export function publishPersistedOperations( version: 1, body: operation.contents, }; + // Deprecated: Uploading individual operations to blob storage is deprecated. + // The router now downloads all operations at once via the PQL manifest, avoiding + // per-request CDN latency. This upload is kept for backward compatibility with older routers. try { await opts.blobStorage.putObject({ key: path, @@ -263,6 +294,20 @@ export function publishPersistedOperations( await operationsRepo.updatePersistedOperations(clientId, userId, updatedOperations); + try { + await operationsRepo.generateAndUploadManifest({ + organizationId, + blobStorage: opts.blobStorage, + logger, + }); + } catch (e) { + const error = e instanceof Error ? e : new Error('Unknown error'); + logger.error(error, 'Failed to regenerate PQL manifest after publishing persisted operations', { + federatedGraphId: federatedGraph.id, + organizationId, + }); + } + return { response: { code: EnumStatusCode.OK, diff --git a/controlplane/src/core/bufservices/persisted-operation/utils.ts b/controlplane/src/core/bufservices/persisted-operation/utils.ts index d58ce64da5..b814115eb3 100644 --- a/controlplane/src/core/bufservices/persisted-operation/utils.ts +++ b/controlplane/src/core/bufservices/persisted-operation/utils.ts @@ -9,3 +9,11 @@ export const createBlobStoragePath = ({ clientName: string; operationId: string; }): string => `${organizationId}/${fedGraphId}/operations/${clientName}/${operationId}.json`; + +export const createManifestBlobStoragePath = ({ + organizationId, + fedGraphId, +}: { + organizationId: string; + fedGraphId: string; +}): string => `${organizationId}/${fedGraphId}/operations/manifest.json`; diff --git a/controlplane/src/core/bufservices/proposal/createProposal.ts b/controlplane/src/core/bufservices/proposal/createProposal.ts index 393261bf50..66760f87d8 100644 --- a/controlplane/src/core/bufservices/proposal/createProposal.ts +++ b/controlplane/src/core/bufservices/proposal/createProposal.ts @@ -394,6 +394,7 @@ export function createProposal( contractRepo, graphCompostionRepo, opts.chClient, + opts.webhookProxyUrl, ); const { @@ -444,7 +445,9 @@ export function createProposal( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ), + webhookProxyUrl: opts.webhookProxyUrl, }); if (checkId) { diff --git a/controlplane/src/core/bufservices/proposal/getNamespaceProposalConfig.ts b/controlplane/src/core/bufservices/proposal/getNamespaceProposalConfig.ts index 80f56a963e..99bbf05c74 100644 --- a/controlplane/src/core/bufservices/proposal/getNamespaceProposalConfig.ts +++ b/controlplane/src/core/bufservices/proposal/getNamespaceProposalConfig.ts @@ -6,10 +6,10 @@ import { GetNamespaceProposalConfigResponse, LintSeverity, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { CacheWarmerRepository } from '../../../core/repositories/CacheWarmerRepository.js'; import { OrganizationRepository } from '../../../core/repositories/OrganizationRepository.js'; import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { ProposalRepository } from '../../repositories/ProposalRepository.js'; @@ -56,6 +56,10 @@ export function getNamespaceProposalConfig( }; } + if (!authContext.rbac.hasNamespaceReadAccess(namespace)) { + throw new UnauthorizedError(); + } + if (!namespace.enableProposals) { return { response: { diff --git a/controlplane/src/core/bufservices/proposal/getProposal.ts b/controlplane/src/core/bufservices/proposal/getProposal.ts index cdbd5353c0..efdd0cf926 100644 --- a/controlplane/src/core/bufservices/proposal/getProposal.ts +++ b/controlplane/src/core/bufservices/proposal/getProposal.ts @@ -10,6 +10,7 @@ import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepos import { ProposalRepository } from '../../repositories/ProposalRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, fromProposalOriginEnum, getLogger, handleError } from '../../util.js'; export function getProposal( @@ -49,6 +50,10 @@ export function getProposal( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const latestCheck = await proposalRepo.getLatestCheckForProposal(proposal.proposal.id); const currentSubgraphs = []; diff --git a/controlplane/src/core/bufservices/proposal/getProposalChecks.ts b/controlplane/src/core/bufservices/proposal/getProposalChecks.ts index ae8f70dc01..37649f1869 100644 --- a/controlplane/src/core/bufservices/proposal/getProposalChecks.ts +++ b/controlplane/src/core/bufservices/proposal/getProposalChecks.ts @@ -10,6 +10,7 @@ import { ProposalRepository } from '../../repositories/ProposalRepository.js'; import type { RouterOptions } from '../../routes.js'; import { clamp, enrichLogger, getLogger, handleError, validateDateRanges } from '../../util.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { UnauthorizedError } from '../../errors/errors.js'; export function getProposalChecks( opts: RouterOptions, @@ -51,6 +52,10 @@ export function getProposalChecks( }; } + if (!authContext.rbac.hasFederatedGraphReadAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + const breakingChangeRetention = await orgRepo.getFeature({ organizationId: authContext.organizationId, featureId: 'breaking-change-retention', diff --git a/controlplane/src/core/bufservices/proposal/updateProposal.ts b/controlplane/src/core/bufservices/proposal/updateProposal.ts index d67ff05250..02b6fbea00 100644 --- a/controlplane/src/core/bufservices/proposal/updateProposal.ts +++ b/controlplane/src/core/bufservices/proposal/updateProposal.ts @@ -48,6 +48,7 @@ export function updateProposal( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); @@ -462,6 +463,7 @@ export function updateProposal( contractRepo, graphCompostionRepo, opts.chClient, + opts.webhookProxyUrl, ); const { @@ -512,7 +514,9 @@ export function updateProposal( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ), + webhookProxyUrl: opts.webhookProxyUrl, }); if (checkId) { diff --git a/controlplane/src/core/bufservices/schema-version/getChangelogBySchemaVersion.ts b/controlplane/src/core/bufservices/schema-version/getChangelogBySchemaVersion.ts index ee9eebff16..5099acb686 100644 --- a/controlplane/src/core/bufservices/schema-version/getChangelogBySchemaVersion.ts +++ b/controlplane/src/core/bufservices/schema-version/getChangelogBySchemaVersion.ts @@ -8,6 +8,7 @@ import { import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { GraphCompositionRepository } from '../../repositories/GraphCompositionRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getChangelogBySchemaVersion( @@ -38,6 +39,13 @@ export function getChangelogBySchemaVersion( }; } + if (composition.targetId) { + const graph = await fedRepo.byTargetId(composition.targetId); + if (graph && !authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + } + const changelogs = await fedRepo.fetchChangelogByVersion({ schemaVersionId: req.schemaVersionId, }); diff --git a/controlplane/src/core/bufservices/schema-version/getSdlBySchemaVersion.ts b/controlplane/src/core/bufservices/schema-version/getSdlBySchemaVersion.ts index 7b2b2f7e6a..942fcc9a56 100644 --- a/controlplane/src/core/bufservices/schema-version/getSdlBySchemaVersion.ts +++ b/controlplane/src/core/bufservices/schema-version/getSdlBySchemaVersion.ts @@ -6,7 +6,9 @@ import { GetSdlBySchemaVersionResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; +import { UnauthorizedError } from '../../errors/errors.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; export function getSdlBySchemaVersion( @@ -22,7 +24,26 @@ export function getSdlBySchemaVersion( const fedRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const schema = await fedRepo.getSdlBasedOnSchemaVersion({ + // Determine whether the target is a federated graph or a subgraph and gate + // accordingly. `byTargetId` returns undefined when the target isn't of that + // kind, so we try the federated graph first and fall back to the subgraph. + // A target that resolves to neither falls through (returns empty SDL). + if (req.targetId) { + const graph = await fedRepo.byTargetId(req.targetId); + if (graph) { + if (!authContext.rbac.hasFederatedGraphReadAccess(graph)) { + throw new UnauthorizedError(); + } + } else { + const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); + const subgraph = await subgraphRepo.byTargetId(req.targetId); + if (subgraph && !authContext.rbac.hasSubGraphReadAccess(subgraph)) { + throw new UnauthorizedError(); + } + } + } + + const sdlSchema = await fedRepo.getSdlBasedOnSchemaVersion({ targetId: req.targetId, schemaVersionId: req.schemaVersionId, }); @@ -31,8 +52,8 @@ export function getSdlBySchemaVersion( response: { code: EnumStatusCode.OK, }, - sdl: schema?.sdl || '', - clientSchema: schema?.clientSchema || '', + sdl: sdlSchema?.sdl || '', + clientSchema: sdlSchema?.clientSchema || '', }; }); } diff --git a/controlplane/src/core/bufservices/sso/createOIDCProvider.ts b/controlplane/src/core/bufservices/sso/createOIDCProvider.ts index 01949abfc2..882061893f 100644 --- a/controlplane/src/core/bufservices/sso/createOIDCProvider.ts +++ b/controlplane/src/core/bufservices/sso/createOIDCProvider.ts @@ -23,7 +23,6 @@ export function createOIDCProvider( const authContext = await opts.authenticator.authenticate(ctx.requestHeader); logger = enrichLogger(ctx, logger, authContext); - const oidcProvider = new OidcProvider(); if (authContext.organizationDeactivated || !authContext.rbac.isOrganizationAdmin) { throw new UnauthorizedError(); } @@ -58,6 +57,7 @@ export function createOIDCProvider( const alias = `${authContext.organizationSlug}_${uid(3)}`; + const oidcProvider = new OidcProvider(); await oidcProvider.createOidcProvider({ kcClient: opts.keycloakClient, kcRealm: opts.keycloakRealm, @@ -66,6 +66,7 @@ export function createOIDCProvider( alias, db: opts.db, input: req, + abortSignal: ctx.signal, }); return { diff --git a/controlplane/src/core/bufservices/sso/deleteOIDCProvider.ts b/controlplane/src/core/bufservices/sso/deleteOIDCProvider.ts index 1f08a0ed13..71c5933e33 100644 --- a/controlplane/src/core/bufservices/sso/deleteOIDCProvider.ts +++ b/controlplane/src/core/bufservices/sso/deleteOIDCProvider.ts @@ -43,12 +43,15 @@ export function deleteOIDCProvider( }; } - const provider = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); + const provider = await oidcRepo.getOidcProviderById({ + id: req.id, + organizationId: authContext.organizationId, + }); if (!provider) { return { response: { code: EnumStatusCode.ERR_NOT_FOUND, - details: `Organization ${authContext.organizationSlug} doesn't have an oidc identity provider `, + details: 'OIDC provider not found', }, }; } @@ -61,7 +64,7 @@ export function deleteOIDCProvider( alias: provider.alias, }); - await oidcRepo.deleteOidcProvider({ organizationId: authContext.organizationId }); + await oidcRepo.deleteOidcProviderById({ id: provider.id, organizationId: authContext.organizationId }); return { response: { diff --git a/controlplane/src/core/bufservices/sso/getOIDCProvider.ts b/controlplane/src/core/bufservices/sso/getOIDCProvider.ts index 8a188c7f57..f021591692 100644 --- a/controlplane/src/core/bufservices/sso/getOIDCProvider.ts +++ b/controlplane/src/core/bufservices/sso/getOIDCProvider.ts @@ -26,7 +26,10 @@ export function getOIDCProvider( await opts.keycloakClient.authenticateClient(); - const provider = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); + const provider = await oidcRepo.getOidcProviderById({ + id: req.id, + organizationId: authContext.organizationId, + }); if (!provider) { return { response: { diff --git a/controlplane/src/core/bufservices/sso/listOIDCProviders.ts b/controlplane/src/core/bufservices/sso/listOIDCProviders.ts new file mode 100644 index 0000000000..10c2260bbe --- /dev/null +++ b/controlplane/src/core/bufservices/sso/listOIDCProviders.ts @@ -0,0 +1,52 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + ListOIDCProvidersRequest, + ListOIDCProvidersResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { OidcRepository } from '../../repositories/OidcRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError, mergeUrls } from '../../util.js'; + +export function listOIDCProviders( + opts: RouterOptions, + _req: ListOIDCProvidersRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (!authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + const oidcRepo = new OidcRepository(opts.db); + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ + organizationId: authContext.organizationId, + }); + + return { + response: { + code: EnumStatusCode.OK, + }, + providers: providers.map((p) => ({ + id: p.id, + name: p.name, + alias: p.alias, + endpoint: p.endpoint, + loginUrl: `${opts.webBaseUrl}/login?sso=${p.alias}`, + signInRedirectUrl: mergeUrls(opts.keycloakApiUrl, `realms/${opts.keycloakRealm}/broker/${p.alias}/endpoint`), + signOutRedirectUrl: mergeUrls( + opts.keycloakApiUrl, + `realms/${opts.keycloakRealm}/broker/${p.alias}/endpoint/logout_response`, + ), + createdAt: p.createdAt.toISOString(), + })), + }; + }); +} diff --git a/controlplane/src/core/bufservices/sso/updateIDPMappers.ts b/controlplane/src/core/bufservices/sso/updateIDPMappers.ts index 4f20b512ee..3680cbe166 100644 --- a/controlplane/src/core/bufservices/sso/updateIDPMappers.ts +++ b/controlplane/src/core/bufservices/sso/updateIDPMappers.ts @@ -43,7 +43,10 @@ export function updateIDPMappers( await opts.keycloakClient.authenticateClient(); - const provider = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); + const provider = await oidcRepo.getOidcProviderById({ + id: req.id, + organizationId: authContext.organizationId, + }); if (!provider) { return { response: { diff --git a/controlplane/src/core/bufservices/subgraph/checkSubgraphSchema.ts b/controlplane/src/core/bufservices/subgraph/checkSubgraphSchema.ts index 7807f22263..f7cd2bf8da 100644 --- a/controlplane/src/core/bufservices/subgraph/checkSubgraphSchema.ts +++ b/controlplane/src/core/bufservices/subgraph/checkSubgraphSchema.ts @@ -123,6 +123,7 @@ export function checkSubgraphSchema( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); let linkedSubgraph: @@ -299,6 +300,7 @@ export function checkSubgraphSchema( ignoreExternalKeys, }, webhookService, + webhookProxyUrl: opts.webhookProxyUrl, }); // Extract variables from checkResult @@ -470,6 +472,7 @@ export function checkSubgraphSchema( ignoreExternalKeys, }, webhookService, + webhookProxyUrl: opts.webhookProxyUrl, }); await schemaCheckRepo.addLinkedSchemaCheck({ diff --git a/controlplane/src/core/bufservices/subgraph/deleteFederatedSubgraph.ts b/controlplane/src/core/bufservices/subgraph/deleteFederatedSubgraph.ts index bf115bc853..d44eb0b275 100644 --- a/controlplane/src/core/bufservices/subgraph/deleteFederatedSubgraph.ts +++ b/controlplane/src/core/bufservices/subgraph/deleteFederatedSubgraph.ts @@ -6,18 +6,18 @@ import { DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; +import { FeatureFlagDTO } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getFederatedGraphRouterCompatibilityVersion, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { ProposalRepository } from '../../repositories/ProposalRepository.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function deleteFederatedSubgraph( opts: RouterOptions, @@ -34,12 +34,12 @@ export function deleteFederatedSubgraph( const proposalRepo = new ProposalRepository(opts.db, authContext.organizationId); const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const orgWebhooks = new OrganizationWebhookService( opts.db, authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); req.namespace = req.namespace || DefaultNamespace; @@ -103,6 +103,7 @@ export function deleteFederatedSubgraph( schemaSDL: '', routerCompatibilityVersion: getFederatedGraphRouterCompatibilityVersion(federatedGraphs), isDeleted: true, + approvedOnly: true, }); if (matches.length === 0) { if (proposalConfig.publishSeverityLevel === 'warn') { @@ -124,11 +125,6 @@ export function deleteFederatedSubgraph( } } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - const { affectedFederatedGraphs, compositionErrors, deploymentErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { const fedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); @@ -136,11 +132,29 @@ export function deleteFederatedSubgraph( const featureFlagRepo = new FeatureFlagRepository(logger, tx, authContext.organizationId); const auditLogRepo = new AuditLogRepository(tx); + const affectedFeatureFlags: FeatureFlagDTO[] = []; + let labels = subgraph.labels; if (subgraph.isFeatureSubgraph) { const baseSubgraph = await featureFlagRepo.getBaseSubgraphByFeatureSubgraphId({ id: subgraph.id }); if (baseSubgraph) { labels = baseSubgraph.labels; + const enabledFeatureFlags = await featureFlagRepo.getFeatureFlagsByBaseSubgraphId({ + baseSubgraphId: baseSubgraph.id, + namespaceId: namespace.id, + excludeDisabled: true, + }); + + for (const enabledFeatureFlag of enabledFeatureFlags) { + const featureFlag = await featureFlagRepo.getFeatureFlagById({ + featureFlagId: enabledFeatureFlag.id, + namespaceId: namespace.id, + }); + + if (featureFlag) { + affectedFeatureFlags.push(featureFlag); + } + } } } else { await featureFlagRepo.deleteFeatureSubgraphsByBaseSubgraphId({ @@ -176,20 +190,32 @@ export function deleteFederatedSubgraph( // Recompose and deploy all affected federated graphs and their respective contracts. // Collects all composition and deployment errors if any. - const { compositionErrors, deploymentErrors, compositionWarnings } = await fedGraphRepo.composeAndDeployGraphs({ - actorId: authContext.userId, - admissionConfig: { - webhookJWTSecret: opts.admissionWebhookJWTSecret, - cdnBaseUrl: opts.cdnBaseUrl, - }, - blobStorage: opts.blobStorage, - chClient: opts.chClient!, - compositionOptions: { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - federatedGraphs: affectedFederatedGraphs, - }); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + if (subgraph.isFeatureSubgraph) { + // To avoid having to re-fetch the feature flags for v2, we are just going to update the feature flag + // reference to remove the deleted feature subgraph, that way, we have an up-to-date view of the feature flag + for (const featureFlag of affectedFeatureFlags) { + featureFlag.featureSubgraphs = featureFlag.featureSubgraphs.filter((fs) => fs.id !== subgraph.id); + } + } + + const { deploymentErrors, compositionErrors, compositionWarnings } = + await compositionService.recomposeAndDeployAffected({ + actorId: authContext.userId, + affectedFederatedGraphs, + affectedFeatureFlags, + isFeatureSubgraph: subgraph.isFeatureSubgraph, + }); // Re-fetch the federated graphs to get the updated composedSchemaVersionId const refreshedGraphs = await Promise.all(affectedFederatedGraphs.map((g) => fedGraphRepo.byId(g.id))); @@ -287,36 +313,17 @@ export function deleteFederatedSubgraph( } } - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - deploymentErrors: [], - compositionErrors, - compositionWarnings, - proposalMatchMessage, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - deploymentErrors, - compositionErrors: [], - compositionWarnings, - proposalMatchMessage, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, - deploymentErrors: [], - compositionErrors: [], + deploymentErrors, + compositionErrors, compositionWarnings, proposalMatchMessage, }; diff --git a/controlplane/src/core/bufservices/subgraph/fixSubgraphSchema.ts b/controlplane/src/core/bufservices/subgraph/fixSubgraphSchema.ts index fef57b1e57..eaf2213566 100644 --- a/controlplane/src/core/bufservices/subgraph/fixSubgraphSchema.ts +++ b/controlplane/src/core/bufservices/subgraph/fixSubgraphSchema.ts @@ -44,6 +44,7 @@ export function fixSubgraphSchema( contractRepo, graphCompositionRepo, opts.chClient, + opts.webhookProxyUrl, ); req.namespace = req.namespace || DefaultNamespace; diff --git a/controlplane/src/core/bufservices/subgraph/moveSubgraph.ts b/controlplane/src/core/bufservices/subgraph/moveSubgraph.ts index 64d26723d7..2405bc5148 100644 --- a/controlplane/src/core/bufservices/subgraph/moveSubgraph.ts +++ b/controlplane/src/core/bufservices/subgraph/moveSubgraph.ts @@ -3,16 +3,15 @@ import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { MoveGraphRequest, MoveGraphResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { PublicError } from '../../errors/errors.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function moveSubgraph( opts: RouterOptions, @@ -27,12 +26,12 @@ export function moveSubgraph( const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const orgWebhooks = new OrganizationWebhookService( opts.db, authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const subgraph = await subgraphRepo.byName(req.name, req.namespace); @@ -85,11 +84,6 @@ export function moveSubgraph( authContext, }); - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - const { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings } = await opts.db.transaction(async (tx) => { const auditLogRepo = new AuditLogRepository(tx); @@ -109,7 +103,18 @@ export function moveSubgraph( throw new PublicError(EnumStatusCode.ERR_NOT_FOUND, `Could not find namespace ${req.newNamespace}`); } - const { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings } = + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + const { deploymentErrors, compositionErrors, compositionWarnings, updatedFederatedGraphs } = await subgraphRepo.move( { currentNamespaceId: subgraph.namespaceId, @@ -119,16 +124,7 @@ export function moveSubgraph( targetId: subgraph.targetId, updatedBy: authContext.userId, }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - jwtSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, + compositionService, ); await auditLogRepo.addAuditLog({ diff --git a/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraph.ts b/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraph.ts index 6eff21a250..26b9792438 100644 --- a/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraph.ts +++ b/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraph.ts @@ -9,7 +9,6 @@ import { } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { isValidUrl } from '@wundergraph/cosmo-shared'; import { maxRowLimitForChecks } from '../../constants.js'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { buildSchema } from '../../composition/composition.js'; import { UnauthorizedError } from '../../errors/errors.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; @@ -37,6 +36,7 @@ import { isValidPluginVersion, } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function publishFederatedSubgraph( opts: RouterOptions, @@ -54,6 +54,7 @@ export function publishFederatedSubgraph( authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); const auditLogRepo = new AuditLogRepository(opts.db); const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); @@ -71,11 +72,6 @@ export function publishFederatedSubgraph( throw new UnauthorizedError(); } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); - const subgraphSchemaSDL = req.schema; const namespace = await namespaceRepo.byName(req.namespace); if (!namespace) { @@ -153,6 +149,7 @@ export function publishFederatedSubgraph( schemaSDL: subgraphSchemaSDL, routerCompatibilityVersion, isDeleted: false, + approvedOnly: true, }); if (matches.length === 0) { const message = `The subgraph ${req.name}'s schema does not match to this subgraph's schema in any approved proposal.`; @@ -565,46 +562,51 @@ export function publishFederatedSubgraph( } } - const { compositionErrors, updatedFederatedGraphs, deploymentErrors, subgraphChanged, compositionWarnings } = - await subgraphRepo.update( - { - targetId: subgraph.targetId, - labels: subgraph.labels, - unsetLabels: false, - schemaSDL: subgraphSchemaSDL, - updatedBy: authContext.userId, - namespaceId: namespace.id, - isV2Graph, - proto: - subgraph.type === 'grpc_plugin' - ? { - schema: req.proto?.schema || '', - mappings: req.proto?.mappings || '', - lock: req.proto?.lock || '', - pluginData: { - platforms: req.proto?.platforms || [], - version: req.proto?.version || '', - }, - } - : subgraph.type === 'grpc_service' + const { deploymentErrors, compositionErrors, compositionWarnings, updatedFederatedGraphs, subgraphChanged } = + await opts.db.transaction((tx) => { + const subgraphRepo = new SubgraphRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + return subgraphRepo.update( + { + targetId: subgraph.targetId, + labels: subgraph.labels, + unsetLabels: false, + schemaSDL: subgraphSchemaSDL, + updatedBy: authContext.userId, + namespaceId: namespace.id, + isV2Graph, + proto: + subgraph.type === 'grpc_plugin' ? { schema: req.proto?.schema || '', mappings: req.proto?.mappings || '', lock: req.proto?.lock || '', + pluginData: { + platforms: req.proto?.platforms || [], + version: req.proto?.version || '', + }, } - : undefined, - }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - ); + : subgraph.type === 'grpc_service' + ? { + schema: req.proto?.schema || '', + mappings: req.proto?.mappings || '', + lock: req.proto?.lock || '', + } + : undefined, + }, + compositionService, + ); + }); // if this subgraph is part of a proposal, mark the proposal subgraph as published // and if all proposal subgraphs are published, collect proposal details for the webhook @@ -754,38 +756,17 @@ export function publishFederatedSubgraph( deploymentErrors: deploymentErrors.length, }; - if (compositionErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED, - }, - compositionErrors: boundedCompositionErrors, - compositionWarnings: boundedCompositionWarnings, - deploymentErrors: [], - proposalMatchMessage, - counts, - }; - } - - if (deploymentErrors.length > 0) { - return { - response: { - code: EnumStatusCode.ERR_DEPLOYMENT_FAILED, - }, - compositionErrors: [], - deploymentErrors: boundedDeploymentErrors, - compositionWarnings: boundedCompositionWarnings, - proposalMatchMessage, - counts, - }; - } - return { response: { - code: EnumStatusCode.OK, + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, }, - compositionErrors: [], - deploymentErrors: [], + deploymentErrors: boundedDeploymentErrors, + compositionErrors: boundedCompositionErrors, hasChanged: subgraphChanged, compositionWarnings: boundedCompositionWarnings, proposalMatchMessage, diff --git a/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraphs.ts b/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraphs.ts new file mode 100644 index 0000000000..42c3e3229d --- /dev/null +++ b/controlplane/src/core/bufservices/subgraph/publishFederatedSubgraphs.ts @@ -0,0 +1,347 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; +import { + PublishFederatedSubgraphsRequest, + PublishFederatedSubgraphsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { maxRowLimitForChecks } from '../../constants.js'; +import { buildSchema } from '../../composition/composition.js'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { DefaultNamespace, NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { SubgraphRepository, UpdateSubgraphSchemaData } from '../../repositories/SubgraphRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { FederatedGraphDTO, SubgraphDTO } from '../../../types/index.js'; +import { + clamp, + enrichLogger, + getFederatedGraphRouterCompatibilityVersion, + getLogger, + handleError, +} from '../../util.js'; +import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; +import { CompositionService } from '../../services/CompositionService.js'; + +/** + * PublishFederatedSubgraphs publishes the schemas of multiple existing subgraphs (and feature subgraphs) in a single + * request. Every subgraph must already exist. All schema versions are written first; then the union of affected + * federated graphs (and their contracts / feature flags) is composed exactly once each, rather than once per + * subgraph. This dramatically reduces the number of compositions when publishing many subgraphs at once. + */ +export function publishFederatedSubgraphs( + opts: RouterOptions, + req: PublishFederatedSubgraphsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (authContext.organizationDeactivated) { + throw new UnauthorizedError(); + } + + const orgWebhooks = new OrganizationWebhookService( + opts.db, + authContext.organizationId, + opts.logger, + opts.billingDefaultPlanId, + opts.webhookProxyUrl, + ); + const auditLogRepo = new AuditLogRepository(opts.db); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); + + req.namespace = req.namespace || DefaultNamespace; + + const namespace = await namespaceRepo.byName(req.namespace); + if (!namespace) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Could not find namespace ${req.namespace}`, + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + // A single list of subgraphs to publish. Regular subgraphs and feature subgraphs share a namespace and cannot + // have the same name, so the kind of each entry is resolved from the database rather than from the request. + const requestedEntries = req.subgraphs; + + if (requestedEntries.length === 0) { + return { + response: { + code: EnumStatusCode.ERR, + details: `At least one subgraph or feature subgraph must be provided.`, + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + // Reject duplicate names within the request to avoid ambiguous, non-deterministic writes. + const seenNames = new Set(); + const duplicateNames = new Set(); + for (const entry of requestedEntries) { + if (seenNames.has(entry.name)) { + duplicateNames.add(entry.name); + } + seenNames.add(entry.name); + } + if (duplicateNames.size > 0) { + return { + response: { + code: EnumStatusCode.ERR, + details: `The following subgraphs were provided more than once: ${[...duplicateNames].join(', ')}`, + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + // Resolve every requested subgraph; all of them must already exist. + const resolved: { subgraph: SubgraphDTO; schema: string }[] = []; + const notFound: string[] = []; + const typeErrors: string[] = []; + for (const entry of requestedEntries) { + const subgraph = await subgraphRepo.byName(entry.name, req.namespace); + if (!subgraph) { + notFound.push(entry.name); + continue; + } + + if (subgraph.type === 'grpc_plugin') { + typeErrors.push( + `Subgraph "${subgraph.name}" is a plugin. Please use the 'wgc router plugin publish' command to publish it.`, + ); + continue; + } + if (subgraph.type === 'grpc_service') { + typeErrors.push( + `Subgraph "${subgraph.name}" is a grpc service. Please use the 'wgc grpc-service publish' command to publish it.`, + ); + continue; + } + + resolved.push({ subgraph, schema: entry.schema }); + } + + if (notFound.length > 0) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `The following subgraphs do not exist in the namespace "${req.namespace}": ${notFound.join(', ')}`, + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + if (typeErrors.length > 0) { + return { + response: { + code: EnumStatusCode.ERR, + details: typeErrors.join('\n'), + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + // The user must be authorized to publish each of the subgraphs. + for (const { subgraph } of resolved) { + await opts.authorizer.authorize({ + db: opts.db, + graph: { + targetId: subgraph.targetId, + targetType: 'subgraph', + }, + headers: ctx.requestHeader, + authContext, + }); + } + + // Validate every schema as a subgraph SDL before writing anything. + const schemaErrors: string[] = []; + const items: (UpdateSubgraphSchemaData & { name: string })[] = []; + for (const { subgraph, schema } of resolved) { + const federatedGraphs = await fedGraphRepo.bySubgraphLabels({ + labels: subgraph.labels, + namespaceId: namespace.id, + }); + const routerCompatibilityVersion = getFederatedGraphRouterCompatibilityVersion(federatedGraphs); + + let isEventDrivenGraph = false; + let isV2Graph: boolean | undefined; + try { + const result = buildSchema(schema, true, routerCompatibilityVersion); + if (!result.success) { + schemaErrors.push(`Subgraph "${subgraph.name}": ${result.errors.map((e) => e.toString()).join('; ')}`); + continue; + } + isEventDrivenGraph = result.isEventDrivenGraph || false; + isV2Graph = result.isVersionTwo; + } catch (e: any) { + schemaErrors.push(`Subgraph "${subgraph.name}": ${e.message}`); + continue; + } + + // The subgraph already exists, so the stored EDG flag is the source of truth. + if (subgraph.isEventDrivenGraph !== isEventDrivenGraph) { + schemaErrors.push( + subgraph.isEventDrivenGraph + ? `Subgraph "${subgraph.name}" was originally created as an Event-Driven Graph (EDG) and cannot be published with a regular subgraph schema.` + : `Subgraph "${subgraph.name}" was originally created as a regular subgraph and cannot be published with an Event-Driven Graph (EDG) schema.`, + ); + continue; + } + + items.push({ + name: subgraph.name, + targetId: subgraph.targetId, + labels: subgraph.labels, + unsetLabels: false, + schemaSDL: schema, + updatedBy: authContext.userId, + namespaceId: namespace.id, + isV2Graph, + }); + } + + if (schemaErrors.length > 0) { + return { + response: { + code: EnumStatusCode.ERR_INVALID_SUBGRAPH_SCHEMA, + details: schemaErrors.join('\n'), + }, + compositionErrors: [], + deploymentErrors: [], + compositionWarnings: [], + updatedSubgraphNames: [], + }; + } + + // Phase 1: persist all schema versions and collect the deduplicated union of affected graphs/flags in a single + // short transaction. + const { affectedFederatedGraphs, affectedFeatureFlags, changedSubgraphNames } = + await subgraphRepo.batchWriteAndCollect(items); + + // Phase 2: compose and deploy the affected graphs OUTSIDE the transaction. Composition is long-running (worker + // composition, blob uploads, admission webhooks); holding a DB transaction open across it — for the whole batch — + // would tie up a connection and risk timeouts and lock contention. + const compositionService = new CompositionService( + opts.db, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); + + const { compositionErrors, compositionWarnings, deploymentErrors } = + await compositionService.recomposeAndDeployAffected({ + actorId: authContext.userId, + affectedFederatedGraphs, + affectedFeatureFlags, + isFeatureSubgraph: false, + }); + + // Re-fetch the affected federated graphs to pick up the updated composedSchemaVersionId for the webhook payloads. + const updatedFederatedGraphs = ( + await Promise.all(affectedFederatedGraphs.map((graph) => fedGraphRepo.byId(graph.id))) + ).filter((graph): graph is FederatedGraphDTO => graph !== undefined); + + // Send a schema-updated webhook for each federated graph that was recomposed. + for (const graph of updatedFederatedGraphs) { + const hasErrors = + compositionErrors.some((error) => error.federatedGraphName === graph.name) || + deploymentErrors.some((error) => error.federatedGraphName === graph.name); + orgWebhooks.send( + { + eventName: OrganizationEventName.FEDERATED_GRAPH_SCHEMA_UPDATED, + payload: { + federated_graph: { + id: graph.id, + name: graph.name, + namespace: graph.namespace, + composedSchemaVersionId: graph.composedSchemaVersionId, + }, + organization: { + id: authContext.organizationId, + slug: authContext.organizationSlug, + }, + errors: hasErrors, + actor_id: authContext.userId, + }, + }, + authContext.userId, + ); + } + + // Audit log per subgraph that actually changed. + const changedSet = new Set(changedSubgraphNames); + for (const { subgraph } of resolved) { + if (!changedSet.has(subgraph.name)) { + continue; + } + await auditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: subgraph.isFeatureSubgraph ? 'feature_subgraph.updated' : 'subgraph.updated', + action: 'updated', + actorId: authContext.userId, + auditableType: subgraph.isFeatureSubgraph ? 'feature_subgraph' : 'subgraph', + auditableDisplayName: subgraph.name, + actorDisplayName: authContext.userDisplayName, + apiKeyName: authContext.apiKeyName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: subgraph.namespaceId, + targetNamespaceDisplayName: subgraph.namespace, + }); + } + + const boundedLimit = req.limit === undefined ? maxRowLimitForChecks : clamp(req.limit, 1, maxRowLimitForChecks); + + const counts = { + compositionErrors: compositionErrors.length, + compositionWarnings: compositionWarnings.length, + deploymentErrors: deploymentErrors.length, + }; + + return { + response: { + code: + compositionErrors.length > 0 + ? EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED + : deploymentErrors.length > 0 + ? EnumStatusCode.ERR_DEPLOYMENT_FAILED + : EnumStatusCode.OK, + }, + deploymentErrors: deploymentErrors.slice(0, boundedLimit), + compositionErrors: compositionErrors.slice(0, boundedLimit), + compositionWarnings: compositionWarnings.slice(0, boundedLimit), + counts, + updatedSubgraphNames: changedSubgraphNames, + }; + }); +} diff --git a/controlplane/src/core/bufservices/subgraph/updateSubgraph.ts b/controlplane/src/core/bufservices/subgraph/updateSubgraph.ts index f27bf0366e..f0124d8f4d 100644 --- a/controlplane/src/core/bufservices/subgraph/updateSubgraph.ts +++ b/controlplane/src/core/bufservices/subgraph/updateSubgraph.ts @@ -8,10 +8,8 @@ import { UpdateSubgraphResponse, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { isValidUrl } from '@wundergraph/cosmo-shared'; -import { COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID } from '../../../types/index.js'; import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; import { DefaultNamespace } from '../../repositories/NamespaceRepository.js'; -import { OrganizationRepository } from '../../repositories/OrganizationRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; import { @@ -26,6 +24,7 @@ import { } from '../../util.js'; import { OrganizationWebhookService } from '../../webhooks/OrganizationWebhookService.js'; import { UnauthorizedError } from '../../errors/errors.js'; +import { CompositionService } from '../../services/CompositionService.js'; export function updateSubgraph( opts: RouterOptions, @@ -39,13 +38,13 @@ export function updateSubgraph( logger = enrichLogger(ctx, logger, authContext); const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); - const orgRepo = new OrganizationRepository(logger, opts.db, opts.billingDefaultPlanId); const auditLogRepo = new AuditLogRepository(opts.db); const orgWebhooks = new OrganizationWebhookService( opts.db, authContext.organizationId, opts.logger, opts.billingDefaultPlanId, + opts.webhookProxyUrl, ); req.namespace = req.namespace || DefaultNamespace; @@ -188,38 +187,38 @@ export function updateSubgraph( throw new UnauthorizedError(); } - const ignoreExternalKeysFeature = await orgRepo.getFeature({ - organizationId: authContext.organizationId, - featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, - }); + const { deploymentErrors, compositionErrors, compositionWarnings, updatedFederatedGraphs } = + await opts.db.transaction((tx) => { + const subgraphRepo = new SubgraphRepository(logger, tx, authContext.organizationId); + const compositionService = new CompositionService( + tx, + authContext.organizationId, + logger, + { cdnBaseUrl: opts.cdnBaseUrl, webhookJWTSecret: opts.admissionWebhookJWTSecret }, + opts.blobStorage, + opts.chClient, + opts.webhookProxyUrl, + req.disableResolvabilityValidation, + ); - const { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings } = - await subgraphRepo.update( - { - targetId: subgraph.targetId, - labels: req.labels, - unsetLabels: req.unsetLabels ?? false, - subscriptionUrl: req.subscriptionUrl, - routingUrl: req.routingUrl, - subscriptionProtocol: - req.subscriptionProtocol === undefined ? undefined : formatSubscriptionProtocol(req.subscriptionProtocol), - websocketSubprotocol: - req.websocketSubprotocol === undefined ? undefined : formatWebsocketSubprotocol(req.websocketSubprotocol), - updatedBy: authContext.userId, - readme: req.readme, - namespaceId: subgraph.namespaceId, - }, - opts.blobStorage, - { - cdnBaseUrl: opts.cdnBaseUrl, - webhookJWTSecret: opts.admissionWebhookJWTSecret, - }, - opts.chClient!, - { - disableResolvabilityValidation: req.disableResolvabilityValidation, - ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, - }, - ); + return subgraphRepo.update( + { + targetId: subgraph.targetId, + labels: req.labels, + unsetLabels: req.unsetLabels ?? false, + subscriptionUrl: req.subscriptionUrl, + routingUrl: req.routingUrl, + subscriptionProtocol: + req.subscriptionProtocol === undefined ? undefined : formatSubscriptionProtocol(req.subscriptionProtocol), + websocketSubprotocol: + req.websocketSubprotocol === undefined ? undefined : formatWebsocketSubprotocol(req.websocketSubprotocol), + updatedBy: authContext.userId, + readme: req.readme, + namespaceId: subgraph.namespaceId, + }, + compositionService, + ); + }); await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, diff --git a/controlplane/src/core/bufservices/user/inviteUsers.ts b/controlplane/src/core/bufservices/user/inviteUsers.ts new file mode 100644 index 0000000000..5919476fca --- /dev/null +++ b/controlplane/src/core/bufservices/user/inviteUsers.ts @@ -0,0 +1,90 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { InviteUsersRequest, InviteUsersResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { UserInviteService } from '../../services/UserInviteService.js'; + +const MAXIMUM_BATCH_SIZE = 5; + +export function inviteUsers( + opts: RouterOptions, + req: InviteUsersRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (authContext.organizationDeactivated || !authContext.rbac.isOrganizationAdmin) { + throw new UnauthorizedError(); + } + + if (req.emails.length > MAXIMUM_BATCH_SIZE) { + return { + response: { + code: EnumStatusCode.ERR_LIMIT_REACHED, + }, + invitationErrors: [], + }; + } + + const auditLogRepo = new AuditLogRepository(opts.db); + + const service = new UserInviteService({ + db: opts.db, + logger, + keycloakRealm: opts.keycloakRealm, + keycloak: opts.keycloakClient, + mailer: opts.mailerClient, + }); + + const results = await Promise.allSettled( + req.emails.map(async (email) => { + await service.inviteUser({ + organizationId: authContext.organizationId, + inviterUserId: authContext.userId, + email, + groups: req.groups, + }); + + await auditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'organization_invitation.created', + action: 'created', + actorId: authContext.userId, + auditableDisplayName: email, + auditableType: 'user', + actorDisplayName: authContext.userDisplayName, + apiKeyName: authContext.apiKeyName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + }); + }), + ); + + const invitationErrors = results + .map((result, index) => { + if (result.status === 'rejected') { + return { + email: req.emails[index], + error: result.reason instanceof Error ? result.reason.message : 'Unknown error', + }; + } + return null; + }) + .filter((error): error is NonNullable => error !== null); + + return { + response: { + code: EnumStatusCode.OK, + }, + invitationErrors, + }; + }); +} diff --git a/controlplane/src/core/bufservices/user/updateOrgMemberGroup.ts b/controlplane/src/core/bufservices/user/updateOrgMemberGroup.ts index 38de54d301..08ea9d55d6 100644 --- a/controlplane/src/core/bufservices/user/updateOrgMemberGroup.ts +++ b/controlplane/src/core/bufservices/user/updateOrgMemberGroup.ts @@ -60,9 +60,12 @@ export function updateOrgMemberGroup( }; } - // Ensure that the organization member has not signed in with SSO - const provider = await oidcRepo.getOidcProvider({ organizationId: authContext.organizationId }); - if (provider) { + // Ensure that the organization member has not signed in with SSO via any + // of the org's configured providers. + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ + organizationId: authContext.organizationId, + }); + for (const provider of providers) { // checking if the user has logged in using the sso const ssoUser = await opts.keycloakClient.client.users.find({ realm: opts.keycloakRealm, diff --git a/controlplane/src/core/bufservices/workspace/getWorkspace.ts b/controlplane/src/core/bufservices/workspace/getWorkspace.ts index 72d72a9fb6..74f28cb84b 100644 --- a/controlplane/src/core/bufservices/workspace/getWorkspace.ts +++ b/controlplane/src/core/bufservices/workspace/getWorkspace.ts @@ -1,22 +1,14 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { HandlerContext } from '@connectrpc/connect'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; -import { - GetWorkspaceRequest, - GetWorkspaceResponse, - WorkspaceNamespace, - WorkspaceFederatedGraph, - type WorkspaceSubgraph, -} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; -import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { GetWorkspaceRequest, GetWorkspaceResponse } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import type { RouterOptions } from '../../routes.js'; import { enrichLogger, getLogger, handleError } from '../../util.js'; -import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; +import { WorkspaceService } from '../../services/WorkspaceService.js'; export function getWorkspace( opts: RouterOptions, - req: GetWorkspaceRequest, + _: GetWorkspaceRequest, ctx: HandlerContext, ): Promise> { let logger = getLogger(ctx, opts.logger); @@ -25,90 +17,12 @@ export function getWorkspace( const authContext = await opts.authenticator.authenticate(ctx.requestHeader); logger = enrichLogger(ctx, logger, authContext); - // Step 1 - Retrieve all the namespaces the requesting actor have access to - const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); - const namespaces = await namespaceRepo.list(authContext.rbac); - if (namespaces.length === 0) { - // The user doesn't have access to any namespace - return { - response: { code: EnumStatusCode.OK }, - namespaces: [], - }; - } - - // Initialize the response - const result = namespaces - .map((ns) => - WorkspaceNamespace.fromJson({ - id: ns.id, - name: ns.name, - graphs: [], - } satisfies PlainMessage), - ) - .sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); - - // Step 2 - Retrieve all the federated graphs the actor has access to, based on the namespaces - const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); - const federatedGraphs = await fedGraphRepo.list({ - offset: 0, // From the beginning - limit: 0, // Retrieve all federated graphs - namespaceIds: namespaces.map((ns) => ns.id), - rbac: authContext.rbac, - }); - - if (federatedGraphs.length === 0) { - // - return { - response: { code: EnumStatusCode.OK }, - namespaces: result, - }; - } - - // - const subgraphRepo = new SubgraphRepository(logger, opts.db, authContext.organizationId); - await Promise.all( - federatedGraphs.map(async (graph) => { - const namespace = result.find((ns) => ns.id === graph.namespaceId); - if (!namespace) { - // - return; - } - - const subgraphsForFederatedGraph = await subgraphRepo.listByFederatedGraph({ - federatedGraphTargetId: graph.targetId, - rbac: authContext.rbac, - }); - - // - namespace.graphs.push( - WorkspaceFederatedGraph.fromJson({ - id: graph.id, - targetId: graph.targetId, - name: graph.name, - isContract: !!graph.contract?.id, - subgraphs: subgraphsForFederatedGraph - .map( - (subgraph) => - ({ - id: subgraph.id, - targetId: subgraph.targetId, - name: subgraph.name, - }) satisfies PlainMessage, - ) - .sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })), - } satisfies PlainMessage), - ); - }), - ); - - // Finally, sort the namespaces alphabetically - for (const namespace of result) { - namespace.graphs.sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); - } + const workspaceService = new WorkspaceService(authContext.organizationId, authContext.rbac, opts.db); + const namespaces = await workspaceService.getWorkspaceNamespaces(); return { response: { code: EnumStatusCode.OK }, - namespaces: result, + namespaces, }; }); } diff --git a/controlplane/src/core/build-server.ts b/controlplane/src/core/build-server.ts index 76da5e0a0b..1afd1389e5 100644 --- a/controlplane/src/core/build-server.ts +++ b/controlplane/src/core/build-server.ts @@ -1,6 +1,7 @@ import Fastify, { FastifyBaseLogger } from 'fastify'; import { S3Client } from '@aws-sdk/client-s3'; import { fastifyConnectPlugin } from '@connectrpc/connect-fastify'; +import * as Sentry from '@sentry/node'; import { cors, createContextValues } from '@connectrpc/connect'; import fastifyCors from '@fastify/cors'; import { pino, stdTimeFunctions, LoggerOptions } from 'pino'; @@ -29,7 +30,7 @@ import Keycloak from './services/Keycloak.js'; import { PlatformWebhookService } from './webhooks/PlatformWebhookService.js'; import AccessTokenAuthenticator from './services/AccessTokenAuthenticator.js'; import { GitHubRepository } from './repositories/GitHubRepository.js'; -import { S3BlobStorage } from './blobstorage/index.js'; +import { S3BlobStorage, DualBlobStorage, type BlobStorage } from './blobstorage/index.js'; import Mailer from './services/Mailer.js'; import { OrganizationInvitationRepository } from './repositories/OrganizationInvitationRepository.js'; import { Authorization } from './services/Authorization.js'; @@ -37,8 +38,17 @@ import { BillingRepository } from './repositories/BillingRepository.js'; import { BillingService } from './services/BillingService.js'; import { UserRepository } from './repositories/UserRepository.js'; import { AIGraphReadmeQueue, createAIGraphReadmeWorker } from './workers/AIGraphReadmeWorker.js'; -import { fastifyLoggerId, createS3ClientConfig, extractS3BucketName, isGoogleCloudStorageUrl } from './util.js'; +import { + fastifyLoggerId, + sentrySpanId, + createS3ClientConfig, + extractS3BucketName, + isGoogleCloudStorageUrl, +} from './util.js'; import { ApiKeyRepository } from './repositories/ApiKeyRepository.js'; +import { OidcRepository } from './repositories/OidcRepository.js'; +import { NamespaceLoginMethodRepository } from './repositories/NamespaceLoginMethodRepository.js'; +import { OrganizationLoginMethodRepository } from './repositories/OrganizationLoginMethodRepository.js'; import { createDeleteOrganizationWorker, DeleteOrganizationQueue } from './workers/DeleteOrganizationWorker.js'; import { createDeleteOrganizationAuditLogsWorker, @@ -94,6 +104,7 @@ export interface BuildConfig { webhook?: { url?: string; key?: string; + proxyUrl?: string; }; githubApp?: { webhookSecret?: string; @@ -113,6 +124,15 @@ export interface BuildConfig { forcePathStyle?: boolean; useIndividualDeletes?: boolean; }; + s3StorageFailover?: { + url: string; + endpoint?: string; + region?: string; + username?: string; + password?: string; + forcePathStyle?: boolean; + useIndividualDeletes?: boolean; + }; mailer: { smtpEnabled: boolean; smtpHost?: string; @@ -270,13 +290,25 @@ export default async function build(opts: BuildConfig) { const apiKeyRepository = new ApiKeyRepository(fastify.db); const webAuth = new WebSessionAuthenticator(fastify.db, opts.auth.secret, userRepo); const graphKeyAuth = new GraphApiTokenAuthenticator(opts.auth.secret); - const accessTokenAuth = new AccessTokenAuthenticator(organizationRepository, authUtils); + const oidcRepository = new OidcRepository(fastify.db); + const namespaceLoginMethodRepository = new NamespaceLoginMethodRepository(fastify.db); + const organizationLoginMethodRepository = new OrganizationLoginMethodRepository(fastify.db); + const accessTokenAuth = new AccessTokenAuthenticator( + organizationRepository, + authUtils, + oidcRepository, + namespaceLoginMethodRepository, + organizationLoginMethodRepository, + ); const authenticator = new Authentication( webAuth, apiKeyAuth, accessTokenAuth, graphKeyAuth, organizationRepository, + oidcRepository, + namespaceLoginMethodRepository, + organizationLoginMethodRepository, logger, ); @@ -289,6 +321,7 @@ export default async function build(opts: BuildConfig) { adminUser: opts.keycloak.adminUser, adminPassword: opts.keycloak.adminPassword, logger, + webhookProxyUrl: opts.webhook?.proxyUrl, }); let mailerClient: Mailer | undefined; @@ -342,7 +375,7 @@ export default async function build(opts: BuildConfig) { const s3Config = createS3ClientConfig(bucketName, opts.s3Storage); const s3Client = new S3Client(s3Config); - const blobStorage = new S3BlobStorage(s3Client, bucketName, { + const primaryBlobStorage = new S3BlobStorage(s3Client, bucketName, { // GCS does not support DeleteObjects; force individual deletes when detected. useIndividualDeletes: isGoogleCloudStorageUrl(opts.s3Storage.url) || isGoogleCloudStorageUrl(s3Config.endpoint as string) @@ -350,7 +383,29 @@ export default async function build(opts: BuildConfig) { : (opts.s3Storage.useIndividualDeletes ?? false), }); - const platformWebhooks = new PlatformWebhookService(opts.webhook?.url, opts.webhook?.key, logger); + let blobStorage: BlobStorage = primaryBlobStorage; + + if (opts.s3StorageFailover?.url) { + const failoverBucketName = extractS3BucketName(opts.s3StorageFailover); + const failoverS3Config = createS3ClientConfig(failoverBucketName, opts.s3StorageFailover); + const failoverS3Client = new S3Client(failoverS3Config); + const failoverBlobStorage = new S3BlobStorage(failoverS3Client, failoverBucketName, { + useIndividualDeletes: + isGoogleCloudStorageUrl(opts.s3StorageFailover.url) || + isGoogleCloudStorageUrl(failoverS3Config.endpoint as string) + ? true + : (opts.s3StorageFailover.useIndividualDeletes ?? false), + }); + + blobStorage = new DualBlobStorage(primaryBlobStorage, failoverBlobStorage); + } + + const platformWebhooks = new PlatformWebhookService( + opts.webhook?.url, + opts.webhook?.key, + logger, + opts.webhook?.proxyUrl, + ); const readmeQueue = new AIGraphReadmeQueue(logger, fastify.redisForQueue); @@ -499,6 +554,16 @@ export default async function build(opts: BuildConfig) { keycloakRealm: opts.keycloak.realm, }); + // Capture the active Sentry span in preHandler (where OTEL context is still available) + // and store it on the request so Connect interceptors can use it as parentSpan. + fastify.addHook('preHandler', (req, _reply, done) => { + const span = Sentry.getActiveSpan(); + if (span) { + (req.raw as any).__sentrySpan = span; + } + done(); + }); + // Must be registered after custom fastify routes // Because it registers an all-catch route for connect handlers @@ -531,10 +596,20 @@ export default async function build(opts: BuildConfig) { }, stripeSecretKey: opts.stripe?.secret, admissionWebhookJWTSecret: opts.admissionWebhook.secret, + webhookProxyUrl: opts.webhook?.proxyUrl, cdnBaseUrl: opts.cdnBaseUrl, }), contextValues(req) { - return createContextValues().set({ id: fastifyLoggerId, defaultValue: req.log }, req.log); + const values = createContextValues().set( + { id: fastifyLoggerId, defaultValue: req.log }, + req.log, + ); + // Read the parent span captured during the preHandler hook + const parentSpan = (req.raw as any).__sentrySpan; + if (parentSpan) { + values.set({ id: sentrySpanId, defaultValue: undefined }, parentSpan); + } + return values; }, logLevel: opts.logger.level as pino.LevelWithSilent, // Avoid compression for small requests @@ -545,6 +620,18 @@ export default async function build(opts: BuildConfig) { // We go with 32MiB to avoid allocating too much memory for large requests writeMaxBytes: 32 * 1024 * 1024, acceptCompression: [compressionBrotli, compressionGzip], + interceptors: [ + (next) => (req) => { + const parentSpan = req.contextValues?.get({ + id: sentrySpanId, + defaultValue: undefined, + }); + if (parentSpan) { + return Sentry.withActiveSpan(parentSpan, () => next(req)); + } + return next(req); + }, + ], }); await fastify.register(fastifyGracefulShutdown, { diff --git a/controlplane/src/core/clickhouse/client/ClickHouseClient.ts b/controlplane/src/core/clickhouse/client/ClickHouseClient.ts index f32991dcd0..e7d5e08a47 100644 --- a/controlplane/src/core/clickhouse/client/ClickHouseClient.ts +++ b/controlplane/src/core/clickhouse/client/ClickHouseClient.ts @@ -1,5 +1,5 @@ import { IncomingMessage } from 'node:http'; -import axios, { AxiosError, AxiosRequestConfig } from 'axios'; +import axios, { AxiosError, AxiosRequestConfig, isAxiosError } from 'axios'; import Pick from 'stream-json/filters/Pick.js'; import StreamArray from 'stream-json/streamers/StreamArray.js'; @@ -7,15 +7,23 @@ import pkg from 'stream-json'; import { Observable, Subscriber } from 'rxjs'; +import { traced } from '../../tracing.js'; +import { ClickHouseUnavailableError } from '../../errors/errors.js'; +import { pollWithBackoff } from '../../util/poll-with-backoff.js'; import { ClickHouseCompressionMethod, ClickHouseDataFormat } from './enums/index.js'; import { ClickHouseClientOptions } from './interfaces/index.js'; const { Parser } = pkg; +type ClickHouseClientEventMap = { + ping: CustomEvent<{ error: Error; attempt: number } | Record>; +}; + /** * ClickHouse Client * Most of the code is taken from https://github.com/depyronick/clickhouse-client */ +@traced export class ClickHouseClient { /** * ClickHouse Endpoint without path and query @@ -26,6 +34,31 @@ export class ClickHouseClient { * ClickHouse Database */ public database = ''; + /** + * Event emitter + */ + private emitter = new EventTarget(); + private pingStopController?: AbortController; + private pingFailedAttempts = 0; + + /** + * Advisory hint reflecting the healthcheck loop's view: true until consecutive ping failures are observed. + * Intended for metrics, logs, and retry decisions only — do NOT use it to decide whether a specific request + * failure is a transport/unavailability error; inspect the caught AxiosError shape for that. + */ + public get isAvailable(): boolean { + return this.pingFailedAttempts === 0; + } + + /** + * Returns true when an axios error indicates the request never received an HTTP response — + * i.e. ECONNREFUSED, ENOTFOUND, ETIMEDOUT, ECONNABORTED, network drop, etc. + * Anything with an `error.response` is a server-side error (HTTP/SQL) and must be propagated unchanged. + */ + private static isTransportFailure(error: unknown): error is AxiosError { + return isAxiosError(error) && !error.response; + } + /** * ClickHouse Service */ @@ -203,7 +236,11 @@ export class ClickHouseClient { } }) .catch((reason: AxiosError) => { - return reject(this._handlePromiseError(reason)); + this._handlePromiseError(reason); + if (ClickHouseClient.isTransportFailure(reason)) { + return reject(new ClickHouseUnavailableError(reason)); + } + return reject(reason); }); }); } @@ -280,6 +317,43 @@ export class ClickHouseClient { return this._queryPromise(query, params); } + /** + * Promise based query with fallback. Returns data or falls back to empty array on ClickHouseUnavailableError. + * Type T is inferred from the defaultValue parameter (a sample/default element). + * The API for querying is same as [queryPromise]. + */ + public async queryPromiseWithDefault( + query: string, + options: { + params?: Record; + defaultValue?: T extends string ? string | T[] : T[]; + }, + ) { + this._validateQuery(query); + + try { + const maybeData = await this._queryPromise(query, options.params); + + return { + data: maybeData, + ok: true, + }; + } catch (err) { + if (err instanceof ClickHouseUnavailableError) { + this.options?.logger?.warn( + { err }, + 'ClickHouse unavailable, returning default value from queryPromiseWithDefault', + ); + return { + data: options.defaultValue ?? [], + ok: false, + }; + } + + throw err; + } + } + /** * Insert data to table (Observable) */ @@ -338,6 +412,9 @@ export class ClickHouseClient { return new Promise((resolve, reject) => { this.insert(table, data).subscribe({ error: (error) => { + if (ClickHouseClient.isTransportFailure(error)) { + return reject(new ClickHouseUnavailableError(error)); + } return reject(error); }, next: (row) => { @@ -352,16 +429,68 @@ export class ClickHouseClient { }); } + /** + * Starts pinging the clickhouse server with exponential backoff between attempts. + * + * @param baseInterval base delay between pings when healthy (ms), defaults to 5000. + * @param maxInterval maximum delay after consecutive failures (ms), defaults to 3 minutes. + * @param timeout per-request timeout (ms). + */ + public async ping(baseInterval = 5000, maxInterval = 3 * 60_000, timeout?: number) { + this.pingStopController = new AbortController(); + + try { + await pollWithBackoff( + async (signal) => { + const ok = await this.pingRequest(timeout, signal); + if (!ok) { + throw new Error('Failed to ping ClickHouse server'); + } + }, + { + baseInterval, + maxInterval, + signal: this.pingStopController.signal, + onSuccess: () => { + this.pingFailedAttempts = 0; + this.emitter.dispatchEvent(new CustomEvent('ping', { detail: {} })); + }, + onFailure: (error, attempt) => { + this.pingFailedAttempts = attempt; + this.emitter.dispatchEvent( + new CustomEvent('ping', { + detail: { error, attempt }, + }), + ); + }, + jitter: true, + leading: true, + }, + ); + } catch (err) { + this.options?.logger?.error(err); + } + } + + /** + * Stops the ping loop and cancels any in-flight ping request. + */ + public close() { + this.pingStopController?.abort(); + this.pingStopController = undefined; + } + /** * Pings the clickhouse server * * @param timeout timeout in milliseconds, defaults to 30000. */ - public ping(timeout = 30_000) { + private pingRequest(timeout = 30_000, signal?: AbortSignal) { return new Promise((resolve, reject) => { axios .get(`${this.endpoint}/ping`, { timeout, + signal, httpAgent: this.options?.httpConfig?.httpAgent, httpsAgent: this.options?.httpConfig?.httpsAgent, }) @@ -377,4 +506,19 @@ export class ClickHouseClient { }); }); } + + public addEventListener( + type: K, + listener: (event: ClickHouseClientEventMap[K]) => void, + options?: AddEventListenerOptions, + ): void { + this.emitter.addEventListener(type, listener as EventListener, options); + } + + public removeEventListener( + type: K, + listener: (event: ClickHouseClientEventMap[K]) => void, + ): void { + this.emitter.removeEventListener(type, listener as EventListener); + } } diff --git a/controlplane/src/core/composition/composeGraphs.pool.ts b/controlplane/src/core/composition/composeGraphs.pool.ts index 5d3ada1075..e33767c86a 100644 --- a/controlplane/src/core/composition/composeGraphs.pool.ts +++ b/controlplane/src/core/composition/composeGraphs.pool.ts @@ -11,8 +11,10 @@ import { fileURLToPath } from 'node:url'; import { availableParallelism } from 'node:os'; import { Warning } from '@wundergraph/composition'; import { RouterConfig } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; -import WorkerPool from 'tinypool'; +import WorkerPool, { Options } from 'tinypool'; +import * as Sentry from '@sentry/node'; import { FederatedGraphDTO } from '../../types/index.js'; +import { sentryEnvVariables } from '../env.schema.js'; import { validateRouterCompatibilityVersion } from './composition.js'; import { ComposedFederatedGraph, CompositionSubgraphRecord } from './composer.js'; import { @@ -56,18 +58,35 @@ function getComposeGraphsPool() { return composeGraphsPool; } - const { filename } = getWorkerFilename(); - - composeGraphsPool = new WorkerPool({ - filename, + const options = { minThreads: 1, maxThreads: getMaxThreads(), runtime: 'child_process', concurrentTasksPerWorker: 2, serialization: 'advanced', - }); + }; - return composeGraphsPool; + return Sentry.startSpan({ name: 'ComposeGraphsPool.getComposeGraphsPool', attributes: options }, () => { + const { filename } = getWorkerFilename(); + + const env = sentryEnvVariables.parse(process.env); + composeGraphsPool = new WorkerPool({ + filename, + ...(options as Options), + env: { + SENTRY_ENABLED: env.SENTRY_ENABLED ? 'true' : 'false', + SENTRY_DSN: env.SENTRY_DSN || '', + SENTRY_SEND_DEFAULT_PII: env.SENTRY_SEND_DEFAULT_PII ? 'true' : 'false', + SENTRY_TRACES_SAMPLE_RATE: String(env.SENTRY_TRACES_SAMPLE_RATE), + SENTRY_PROFILE_SESSION_SAMPLE_RATE: String(env.SENTRY_PROFILE_SESSION_SAMPLE_RATE), + SENTRY_PROFILE_LIFECYCLE: env.SENTRY_PROFILE_LIFECYCLE, + SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS: String(env.SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS), + SENTRY_ENABLE_LOGS: env.SENTRY_ENABLE_LOGS ? 'true' : 'false', + }, + }); + + return composeGraphsPool; + }); } function deserializeWarning(message: string, subgraphName?: string) { @@ -87,7 +106,7 @@ export function deserializeComposedGraphArtifact( federatedGraph: Pick, artifact: SerializedComposedGraphArtifact, ): DeserializedComposedGraph { - return { + return Sentry.startSpan({ name: 'ComposeGraphsPool.deserializeComposedGraphArtifact' }, () => ({ id: federatedGraph.id, targetID: federatedGraph.targetId, name: federatedGraph.name, @@ -100,7 +119,7 @@ export function deserializeComposedGraphArtifact( fieldConfigurations: artifact.fieldConfigurations, subgraphs: artifact.subgraphs, warnings: artifact.warnings.map((warning) => deserializeWarning(warning.message, warning.subgraphName)), - }; + })); } export function deserializeRouterExecutionConfig(routerExecutionConfigJson?: ReturnType) { @@ -108,15 +127,41 @@ export function deserializeRouterExecutionConfig(routerExecutionConfigJson?: Ret return; } - return RouterConfig.fromJson(routerExecutionConfigJson); + return Sentry.startSpan({ name: 'ComposeGraphsPool.deserializeRouterExecutionConfig' }, () => + RouterConfig.fromJson(routerExecutionConfigJson), + ); } -export function composeGraphsInWorker(task: Omit) { +export function composeGraphsInWorker( + task: Omit, +): Promise { const fullTask: ComposeGraphsTaskInput = { ...task, routerCompatibilityVersion: validateRouterCompatibilityVersion(task.federatedGraph.routerCompatibilityVersion), }; - return getComposeGraphsPool().run(fullTask) as Promise; + + return Sentry.startSpan( + { + name: 'ComposeGraphsPool.composeGraphsInWorker', + attributes: { + federatedGraphId: task.federatedGraph.id, + federatedGraphName: task.federatedGraph.name, + subgraphsCount: task.federatedGraph.subgraphsCount, + organizationId: task.federatedGraph.organizationId, + namespaceId: task.federatedGraph.namespaceId, + }, + }, + () => { + const traceData = Sentry.getTraceData(); + return getComposeGraphsPool().run({ + ...fullTask, + trace: { + sentryTrace: traceData['sentry-trace'], + baggage: traceData.baggage, + }, + } satisfies ComposeGraphsTaskInput) as Promise; + }, + ); } export function configureComposeGraphsPool(options: ConfigureComposeGraphsPoolOptions) { diff --git a/controlplane/src/core/composition/composeGraphs.types.ts b/controlplane/src/core/composition/composeGraphs.types.ts index 3f909f46c7..c80f07c273 100644 --- a/controlplane/src/core/composition/composeGraphs.types.ts +++ b/controlplane/src/core/composition/composeGraphs.types.ts @@ -65,6 +65,10 @@ export interface ComposeGraphsTaskInput { tagOptionsByContractName: SerializedContractTagOptions[]; compositionOptions?: CompositionOptions; skipRouterConfig?: boolean; + trace?: { + sentryTrace: string | undefined; + baggage: string | undefined; + }; } export interface ComposeGraphsTaskResultItem { diff --git a/controlplane/src/core/composition/composeGraphs.worker.ts b/controlplane/src/core/composition/composeGraphs.worker.ts index 0a72a59177..3fa9806e9d 100644 --- a/controlplane/src/core/composition/composeGraphs.worker.ts +++ b/controlplane/src/core/composition/composeGraphs.worker.ts @@ -22,6 +22,11 @@ import { GRPCMapping, ImageReference, RouterConfig } from '@wundergraph/cosmo-co import { parse } from 'graphql'; import type { FederationResult, FederationResultWithContracts } from '@wundergraph/composition'; import type { RouterSubgraph } from '@wundergraph/cosmo-shared'; +import * as Sentry from '@sentry/node'; +import { workerId } from 'tinypool'; +import { z } from 'zod'; +import { eventLoopBlockIntegration } from '@sentry/node-native'; +import { nodeProfilingIntegration } from '@sentry/profiling-node'; import type { SubgraphDTO } from '../../types/index.js'; import type { ComposeGraphsTaskInput, @@ -30,12 +35,68 @@ import type { SerializedComposedGraphArtifact, } from './composeGraphs.types.js'; +/** + * Because of the isolation, we need to handle the Sentry configuration/initialization here as we can't import it from + * source (see header comment) + */ +const sentryEnvVariables = z.object({ + SENTRY_ENABLED: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), + SENTRY_DSN: z.string().optional(), + SENTRY_SEND_DEFAULT_PII: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), + SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional().default(1), + SENTRY_PROFILE_SESSION_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional().default(1), + SENTRY_PROFILE_LIFECYCLE: z.enum(['manual', 'trace']).optional().default('manual'), + SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS: z.coerce.number().int().min(0).optional().default(100), + SENTRY_ENABLE_LOGS: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), +}); + +const { + SENTRY_ENABLED, + SENTRY_DSN, + SENTRY_SEND_DEFAULT_PII, + SENTRY_TRACES_SAMPLE_RATE, + SENTRY_PROFILE_SESSION_SAMPLE_RATE, + SENTRY_PROFILE_LIFECYCLE, + SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS, + SENTRY_ENABLE_LOGS, +} = sentryEnvVariables.parse(process.env); + +if (SENTRY_ENABLED && SENTRY_DSN) { + Sentry.init({ + dsn: SENTRY_DSN, + integrations: [ + eventLoopBlockIntegration({ threshold: SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS }), + nodeProfilingIntegration(), + ], + profileSessionSampleRate: SENTRY_PROFILE_SESSION_SAMPLE_RATE, + sendDefaultPii: SENTRY_SEND_DEFAULT_PII, + tracesSampleRate: SENTRY_TRACES_SAMPLE_RATE, + profileLifecycle: SENTRY_PROFILE_LIFECYCLE, + enableLogs: SENTRY_ENABLE_LOGS, + spotlight: process.env.NODE_ENV !== 'production', + }); +} + function parseGRPCMapping(mappings: string): GRPCMapping { - try { - return GRPCMapping.fromJson(JSON.parse(mappings)); - } catch (error) { - throw new Error(`Failed to parse gRPC mappings: ${error instanceof Error ? error.message : 'Unknown error'}`); - } + return Sentry.startSpan({ name: 'ComposeGraphsWorker.parseGRPCMapping' }, () => { + try { + return GRPCMapping.fromJson(JSON.parse(mappings)); + } catch (error) { + throw new Error(`Failed to parse gRPC mappings: ${error instanceof Error ? error.message : 'Unknown error'}`); + } + }); } /** @@ -47,70 +108,72 @@ function subgraphDTOsToRouterSubgraphs( subgraphs: SubgraphDTO[], result: FederationResult, ): RouterSubgraph[] { - return subgraphs.map((subgraph) => { - const subgraphConfig = result.success ? result.subgraphConfigBySubgraphName.get(subgraph.name) : undefined; - const schema = subgraphConfig?.schema; - const configurationDataByTypeName = subgraphConfig?.configurationDataByTypeName; - const costs = subgraphConfig?.costs; - - if (subgraph.type === 'grpc_plugin') { - if (!subgraph.proto?.pluginData) { - throw new Error(`Subgraph ${subgraph.name} is a plugin but does not have a plugin data`); + return Sentry.startSpan({ name: 'ComposeGraphsWorker.subgraphDTOsToRouterSubgraphs' }, () => + subgraphs.map((subgraph) => { + const subgraphConfig = result.success ? result.subgraphConfigBySubgraphName.get(subgraph.name) : undefined; + const schema = subgraphConfig?.schema; + const configurationDataByTypeName = subgraphConfig?.configurationDataByTypeName; + const costs = subgraphConfig?.costs; + + if (subgraph.type === 'grpc_plugin') { + if (!subgraph.proto?.pluginData) { + throw new Error(`Subgraph ${subgraph.name} is a plugin but does not have a plugin data`); + } + + return { + kind: SubgraphKind.Plugin, + id: subgraph.id, + version: subgraph.proto.pluginData.version, + name: subgraph.name, + sdl: subgraph.schemaSDL, + url: subgraph.routingUrl, + configurationDataByTypeName, + schema, + costs, + protoSchema: subgraph.proto.schema, + mapping: parseGRPCMapping(subgraph.proto.mappings), + imageReference: new ImageReference({ + repository: `${organizationId}/${subgraph.id}`, + reference: subgraph.proto.pluginData.version, + }), + }; } - return { - kind: SubgraphKind.Plugin, - id: subgraph.id, - version: subgraph.proto.pluginData.version, - name: subgraph.name, - sdl: subgraph.schemaSDL, - url: subgraph.routingUrl, - configurationDataByTypeName, - schema, - costs, - protoSchema: subgraph.proto.schema, - mapping: parseGRPCMapping(subgraph.proto.mappings), - imageReference: new ImageReference({ - repository: `${organizationId}/${subgraph.id}`, - reference: subgraph.proto.pluginData.version, - }), - }; - } + if (subgraph.type === 'grpc_service') { + if (!subgraph.proto) { + throw new Error(`Subgraph ${subgraph.name} is a GRPC service but does not have a proto`); + } - if (subgraph.type === 'grpc_service') { - if (!subgraph.proto) { - throw new Error(`Subgraph ${subgraph.name} is a GRPC service but does not have a proto`); + return { + kind: SubgraphKind.GRPC, + id: subgraph.id, + name: subgraph.name, + sdl: subgraph.schemaSDL, + url: subgraph.routingUrl, + configurationDataByTypeName, + schema, + costs, + protoSchema: subgraph.proto.schema, + mapping: parseGRPCMapping(subgraph.proto.mappings), + }; } return { - kind: SubgraphKind.GRPC, + kind: SubgraphKind.Standard, id: subgraph.id, name: subgraph.name, - sdl: subgraph.schemaSDL, url: subgraph.routingUrl, + sdl: subgraph.schemaSDL, + subscriptionUrl: subgraph.subscriptionUrl, + subscriptionProtocol: subgraph.subscriptionProtocol, + websocketSubprotocol: + subgraph.subscriptionProtocol === 'ws' ? subgraph.websocketSubprotocol || 'auto' : undefined, configurationDataByTypeName, schema, costs, - protoSchema: subgraph.proto.schema, - mapping: parseGRPCMapping(subgraph.proto.mappings), }; - } - - return { - kind: SubgraphKind.Standard, - id: subgraph.id, - name: subgraph.name, - url: subgraph.routingUrl, - sdl: subgraph.schemaSDL, - subscriptionUrl: subgraph.subscriptionUrl, - subscriptionProtocol: subgraph.subscriptionProtocol, - websocketSubprotocol: - subgraph.subscriptionProtocol === 'ws' ? subgraph.websocketSubprotocol || 'auto' : undefined, - configurationDataByTypeName, - schema, - costs, - }; - }); + }), + ); } // Serialize the worker-side composition result into a structured-clone-safe @@ -124,127 +187,162 @@ function serializeComposedGraphArtifact( result: FederationResult, includeRouterExecutionConfig: boolean, ): SerializedComposedGraphArtifact { - const composedSchema = result.success ? printSchemaWithDirectives(result.federatedGraphSchema) : undefined; - const federatedClientSchema = result.success - ? printSchemaWithDirectives(result.federatedGraphClientSchema) - : undefined; - const shouldIncludeClientSchema = result.success ? (result.shouldIncludeClientSchema ?? false) : false; - const fieldConfigurations = result.success ? result.fieldConfigurations : []; - - let routerExecutionConfigJson: ReturnType | undefined; - if (includeRouterExecutionConfig && result.success && composedSchema) { - const routerSubgraphs = subgraphDTOsToRouterSubgraphs(organizationId, subgraphs, result); - const routerExecutionConfig = buildRouterConfig({ - federatedClientSDL: shouldIncludeClientSchema ? federatedClientSchema || '' : '', - federatedSDL: composedSchema, + return Sentry.startSpan({ name: 'ComposeGraphsWorker.serializeComposedGraphArtifact' }, () => { + const composedSchema = result.success + ? Sentry.startSpan({ name: 'ComposeGraphsWorker.printSchemaWithDirectives' }, () => + printSchemaWithDirectives(result.federatedGraphSchema), + ) + : undefined; + + const federatedClientSchema = result.success + ? Sentry.startSpan({ name: 'ComposeGraphsWorker.printSchemaWithDirectives' }, () => + printSchemaWithDirectives(result.federatedGraphClientSchema), + ) + : undefined; + + const shouldIncludeClientSchema = result.success ? (result.shouldIncludeClientSchema ?? false) : false; + const fieldConfigurations = result.success ? result.fieldConfigurations : []; + + let routerExecutionConfigJson: ReturnType | undefined; + if (includeRouterExecutionConfig && result.success && composedSchema) { + const routerSubgraphs = subgraphDTOsToRouterSubgraphs(organizationId, subgraphs, result); + const routerExecutionConfig = Sentry.startSpan({ name: 'ComposeGraphsWorker.buildRouterConfig' }, () => + buildRouterConfig({ + federatedClientSDL: shouldIncludeClientSchema ? federatedClientSchema || '' : '', + federatedSDL: composedSchema, + fieldConfigurations, + routerCompatibilityVersion, + subgraphs: routerSubgraphs, + schemaVersionId: randomUUID(), + }), + ); + routerExecutionConfigJson = routerExecutionConfig.toJson(); + } + + return { + success: result.success, + errors: result.success ? [] : result.errors.map((error) => error.message), + warnings: result.warnings.map((warning) => ({ + message: warning.message, + subgraphName: warning.subgraph?.name, + })), + composedSchema, + federatedClientSchema, + shouldIncludeClientSchema, fieldConfigurations, - routerCompatibilityVersion, - subgraphs: routerSubgraphs, - schemaVersionId: randomUUID(), - }); - routerExecutionConfigJson = routerExecutionConfig.toJson(); - } - - return { - success: result.success, - errors: result.success ? [] : result.errors.map((error) => error.message), - warnings: result.warnings.map((warning) => ({ - message: warning.message, - subgraphName: warning.subgraph?.name, - })), - composedSchema, - federatedClientSchema, - shouldIncludeClientSchema, - fieldConfigurations, - subgraphs: subgraphs.map((subgraph) => ({ - id: subgraph.id, - isFeatureSubgraph: subgraph.isFeatureSubgraph, - name: subgraph.name, - sdl: subgraph.schemaSDL, - schemaVersionId: subgraph.schemaVersionId, - targetId: subgraph.targetId, - })), - routerExecutionConfigJson, - }; + subgraphs: subgraphs.map((subgraph) => ({ + id: subgraph.id, + isFeatureSubgraph: subgraph.isFeatureSubgraph, + name: subgraph.name, + sdl: subgraph.schemaSDL, + schemaVersionId: subgraph.schemaVersionId, + targetId: subgraph.targetId, + })), + routerExecutionConfigJson, + }; + }); } function toCompositionSubgraphs(subgraphs: SubgraphDTO[]) { - return subgraphs - .filter((s) => s.schemaSDL !== '') - .map((subgraph) => ({ - name: subgraph.name, - url: subgraph.routingUrl, - definitions: parse(subgraph.schemaSDL), - })); + return Sentry.startSpan({ name: 'ComposeGraphsWorker.toCompositionSubgraphs' }, () => + subgraphs + .filter((s) => s.schemaSDL !== '') + .map((subgraph) => ({ + name: subgraph.name, + url: subgraph.routingUrl, + definitions: parse(subgraph.schemaSDL), + })), + ); } export default function composeGraphsInWorker(task: ComposeGraphsTaskInput): ComposeGraphsTaskResult { - const tagOptionsByContractName = new Map( - task.tagOptionsByContractName.map((tagOptions) => [ - tagOptions.contractName, - newContractTagOptionsFromArrays(tagOptions.excludeTags, tagOptions.includeTags), - ]), - ); + return Sentry.continueTrace({ sentryTrace: task.trace?.sentryTrace, baggage: task.trace?.baggage }, () => + Sentry.startSpan( + { + name: 'ComposeGraphsWorker.composeGraphsInWorker', + attributes: { + workerId, + federatedGraphId: task.federatedGraph.id, + federatedGraphName: task.federatedGraph.name, + subgraphsCount: task.federatedGraph.subgraphsCount, + organizationId: task.federatedGraph.organizationId, + namespaceId: task.federatedGraph.namespaceId, + }, + }, + () => { + const tagOptionsByContractName = new Map( + task.tagOptionsByContractName.map((tagOptions) => [ + tagOptions.contractName, + newContractTagOptionsFromArrays(tagOptions.excludeTags, tagOptions.includeTags), + ]), + ); - return { - results: task.subgraphsToCompose.map((subgraphsToCompose) => { - const compositionSubgraphs = toCompositionSubgraphs(subgraphsToCompose.subgraphs); - - // Version is validated on the main thread before dispatching to the worker. - const version = task.routerCompatibilityVersion; - - const result: FederationResult | FederationResultWithContracts = task.federatedGraph.contract - ? federateSubgraphsContract({ - contractTagOptions: newContractTagOptionsFromArrays( - task.federatedGraph.contract.excludeTags, - task.federatedGraph.contract.includeTags, - ), - options: task.compositionOptions, - subgraphs: compositionSubgraphs, - version, - }) - : federateSubgraphsWithContracts({ - options: task.compositionOptions, - subgraphs: compositionSubgraphs, - tagOptionsByContractName, - version, - }); - - const includeRouterConfig = !task.skipRouterConfig; - const base = serializeComposedGraphArtifact( - task.federatedGraph.organizationId, - task.federatedGraph.routerCompatibilityVersion, - subgraphsToCompose.subgraphs, - result, - includeRouterConfig, - ); + return { + results: task.subgraphsToCompose.map((subgraphsToCompose) => { + const compositionSubgraphs = toCompositionSubgraphs(subgraphsToCompose.subgraphs); + + // Version is validated on the main thread before dispatching to the worker. + const version = task.routerCompatibilityVersion; + + const result: FederationResult | FederationResultWithContracts = task.federatedGraph.contract + ? Sentry.startSpan({ name: 'ComposeGraphsWorker.federateSubgraphsContract' }, () => + federateSubgraphsContract({ + contractTagOptions: newContractTagOptionsFromArrays( + task.federatedGraph.contract!.excludeTags, + task.federatedGraph.contract!.includeTags, + ), + options: task.compositionOptions, + subgraphs: compositionSubgraphs, + version, + }), + ) + : Sentry.startSpan({ name: 'ComposeGraphsWorker.federateSubgraphsWithContracts' }, () => + federateSubgraphsWithContracts({ + options: task.compositionOptions, + subgraphs: compositionSubgraphs, + tagOptionsByContractName, + version, + }), + ); - const contracts: SerializedContractCompositionArtifact[] = []; - if ('federationResultByContractName' in result && result.success) { - for (const [contractName, contractResult] of result.federationResultByContractName as Map< - string, - FederationResult - >) { - contracts.push({ - contractName, - artifact: serializeComposedGraphArtifact( + const includeRouterConfig = !task.skipRouterConfig; + const base = serializeComposedGraphArtifact( task.federatedGraph.organizationId, task.federatedGraph.routerCompatibilityVersion, subgraphsToCompose.subgraphs, - contractResult, + result, includeRouterConfig, - ), - }); - } - } + ); - return { - isFeatureFlagComposition: subgraphsToCompose.isFeatureFlagComposition, - featureFlagName: subgraphsToCompose.featureFlagName, - featureFlagId: subgraphsToCompose.featureFlagId, - base, - contracts, - }; - }), - }; + const contracts: SerializedContractCompositionArtifact[] = []; + if ('federationResultByContractName' in result && result.success) { + for (const [contractName, contractResult] of result.federationResultByContractName as Map< + string, + FederationResult + >) { + contracts.push({ + contractName, + artifact: serializeComposedGraphArtifact( + task.federatedGraph.organizationId, + task.federatedGraph.routerCompatibilityVersion, + subgraphsToCompose.subgraphs, + contractResult, + includeRouterConfig, + ), + }); + } + } + + return { + isFeatureFlagComposition: subgraphsToCompose.isFeatureFlagComposition, + featureFlagName: subgraphsToCompose.featureFlagName, + featureFlagId: subgraphsToCompose.featureFlagId, + base, + contracts, + }; + }), + }; + }, + ), + ); } diff --git a/controlplane/src/core/composition/composer.ts b/controlplane/src/core/composition/composer.ts index 5c592cc021..24f5d5c8f8 100644 --- a/controlplane/src/core/composition/composer.ts +++ b/controlplane/src/core/composition/composer.ts @@ -33,6 +33,7 @@ import { CacheWarmerRepository } from '../repositories/CacheWarmerRepository.js' import { NamespaceRepository } from '../repositories/NamespaceRepository.js'; import { InspectorSchemaChange } from '../services/SchemaUsageTrafficInspector.js'; import { SchemaCheckChangeAction } from '../../db/models.js'; +import { traced } from '../tracing.js'; import { composeGraphsInWorker, DeserializedComposedGraph, @@ -50,6 +51,7 @@ export function getRouterCompatibilityVersionPath(routerCompatibilityVersion: st } } } + export type CompositionResult = { compositions: DeserializedComposedGraph[]; }; @@ -136,6 +138,8 @@ export type CheckSubgraph = { // will be used only for new subgraphs labels?: Label[]; }; + +@traced export class Composer { constructor( private logger: FastifyBaseLogger, @@ -145,6 +149,7 @@ export class Composer { private contractRepo: ContractRepository, private graphCompositionRepository: GraphCompositionRepository, private chClient?: ClickHouseClient, + private proxyUrl?: string, ) {} composeRouterConfigWithFeatureFlags({ @@ -192,6 +197,7 @@ export class Composer { admissionWebhookSecret, actorId, routerCompatibilityVersion, + pathOverride, }: { routerConfig: RouterConfig; blobStorage: BlobStorage; @@ -206,28 +212,38 @@ export class Composer { admissionWebhookSecret?: string; actorId: string; routerCompatibilityVersion: string; + pathOverride?: { ready: string; draft: string }; }): Promise<{ errors: ComposeDeploymentError[]; }> { const routerConfigJsonStringBytes = Buffer.from(routerConfig.toJsonString(), 'utf8'); const errors: ComposeDeploymentError[] = []; - let versionPath = ''; - if (routerCompatibilityVersion !== ROUTER_COMPATIBILITY_VERSION_ONE) { - if (ROUTER_COMPATIBILITY_VERSIONS.has(routerCompatibilityVersion as SupportedRouterCompatibilityVersion)) { - versionPath = `${routerCompatibilityVersion}/`; - } else { - errors.push( - new RouterConfigUploadError(`Invalid router compatibility version "${routerCompatibilityVersion}".`), - ); - return { - errors, - }; + let s3PathDraft: string; + let s3PathReady: string; + + if (pathOverride?.ready && pathOverride?.draft) { + s3PathDraft = pathOverride.draft; + s3PathReady = pathOverride.ready; + } else { + let versionPath = ''; + if (routerCompatibilityVersion !== ROUTER_COMPATIBILITY_VERSION_ONE) { + if (ROUTER_COMPATIBILITY_VERSIONS.has(routerCompatibilityVersion as SupportedRouterCompatibilityVersion)) { + versionPath = `${routerCompatibilityVersion}/`; + } else { + errors.push( + new RouterConfigUploadError(`Invalid router compatibility version "${routerCompatibilityVersion}".`), + ); + return { + errors, + }; + } } + + // CDN path and bucket path are the same in this case + s3PathDraft = `${organizationId}/${federatedGraphId}/routerconfigs/draft.json`; + s3PathReady = `${organizationId}/${federatedGraphId}/routerconfigs/${versionPath}latest.json`; } - // CDN path and bucket path are the same in this case - const s3PathDraft = `${organizationId}/${federatedGraphId}/routerconfigs/draft.json`; - const s3PathReady = `${organizationId}/${federatedGraphId}/routerconfigs/${versionPath}latest.json`; // The signature will be added by the admission webhook let signatureSha256: undefined | string; @@ -266,6 +282,7 @@ export class Composer { this.logger, admissionWebhookURL, admissionWebhookSecret, + this.proxyUrl, ); const resp = await admissionWebhookController.validateConfig( { @@ -353,6 +370,7 @@ export class Composer { federatedGraphAdmissionWebhookURL, federatedGraphAdmissionWebhookSecret, actorId, + pathOverride, }: { admissionConfig: { jwtSecret: string; @@ -367,6 +385,7 @@ export class Composer { federatedGraphAdmissionWebhookURL?: string; federatedGraphAdmissionWebhookSecret?: string; actorId: string; + pathOverride?: { ready: string; draft: string }; }) { const baseRouterConfig = this.composeRouterConfigWithFeatureFlags({ featureFlagRouterExecutionConfigByFeatureFlagName, @@ -405,6 +424,7 @@ export class Composer { }, actorId, routerCompatibilityVersion: federatedGraph.routerCompatibilityVersion, + pathOverride, }); return { diff --git a/controlplane/src/core/constants.ts b/controlplane/src/core/constants.ts index ba83925307..e965fb6012 100644 --- a/controlplane/src/core/constants.ts +++ b/controlplane/src/core/constants.ts @@ -4,6 +4,15 @@ export const hubUserAgent = 'cosmo-hub'; export const maxRowLimitForChecks = 100_000; +// Pagination defaults used by server-side paginated endpoints +export const paginationDefaults = { + defaultLimit: 10, + minLimit: 1, + maxLimit: 50, + minOffset: 0, + maxOffset: 500_000, +} as const; + export const apiKeyPermissions = [ { displayName: 'System for Cross-domain Identity Management (SCIM)', diff --git a/controlplane/src/core/controllers/auth.ts b/controlplane/src/core/controllers/auth.ts index 33bfaf31ff..3065fb064d 100644 --- a/controlplane/src/core/controllers/auth.ts +++ b/controlplane/src/core/controllers/auth.ts @@ -1,14 +1,23 @@ import { FastifyPluginCallback, FastifyReply, FastifyRequest } from 'fastify'; import fp from 'fastify-plugin'; +import { PlainMessage } from '@bufbuild/protobuf'; +import { + LoginMethod, + LoginMethodType, + SocialLoginProvider, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { eq } from 'drizzle-orm'; import { lru } from 'tiny-lru'; import cookie from 'cookie'; import { cosmoIdpHintCookieName, decodeJWT, DEFAULT_SESSION_MAX_AGE_SEC, encrypt } from '../crypto/jwt.js'; import { CustomAccessTokenClaims, UserInfoEndpointResponse, UserSession } from '../../types/index.js'; +import { isSocialLoginProvider, resolveLoginMethod } from '../util.js'; import * as schema from '../../db/schema.js'; import { sessions } from '../../db/schema.js'; import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; +import { OidcRepository } from '../repositories/OidcRepository.js'; +import { OrganizationLoginMethodRepository } from '../repositories/OrganizationLoginMethodRepository.js'; import AuthUtils from '../auth-utils.js'; import WebSessionAuthenticator from '../services/WebSessionAuthenticator.js'; import Keycloak from '../services/Keycloak.js'; @@ -89,9 +98,53 @@ const plugin: FastifyPluginCallback = function Auth(fasti userId: userSession.userId, }); + const oidcRepo = new OidcRepository(opts.db); + const orgLoginMethodRepo = new OrganizationLoginMethodRepository(opts.db); + + const loginMethodAllowedByOrg = new Map(); + await Promise.all( + orgs.map(async (o) => { + const method = await resolveLoginMethod( + { oidcRepo }, + { organizationId: o.id, idpAlias: userSession.idpAlias }, + ); + const allowed = await orgLoginMethodRepo.isLoginMethodAllowed({ organizationId: o.id, loginMethod: method }); + loginMethodAllowedByOrg.set(o.id, allowed); + }), + ); + + const emptyLoginMethod = { + ssoProviderId: '', + ssoProviderName: '', + ssoAlias: '', + socialProvider: SocialLoginProvider.UNSPECIFIED, + }; + let loginMethod: PlainMessage = { ...emptyLoginMethod, type: LoginMethodType.PASSWORD }; + if (userSession.idpAlias) { + const provider = await oidcRepo.getOidcProviderByAliasUnscoped({ alias: userSession.idpAlias }); + if (provider) { + loginMethod = { + ...emptyLoginMethod, + type: LoginMethodType.SSO, + ssoProviderId: provider.id, + ssoProviderName: provider.name, + ssoAlias: userSession.idpAlias, + }; + } else if (isSocialLoginProvider(userSession.idpAlias)) { + loginMethod = { + ...emptyLoginMethod, + type: LoginMethodType.SOCIAL, + socialProvider: userSession.idpAlias === 'google' ? SocialLoginProvider.GOOGLE : SocialLoginProvider.GITHUB, + }; + } + } + return { id: userSession.userId, email: userInfoData.email, + firstName: userInfoData.given_name, + lastName: userInfoData.family_name, + fullName: userInfoData.name, organizations: orgs .filter((o) => !o.deletion || o.rbac.isOrganizationAdmin) .map(({ rbac, ...org }) => ({ @@ -99,9 +152,11 @@ const plugin: FastifyPluginCallback = function Auth(fasti groups: rbac.groups.map(({ description, kcGroupId, ...rest }) => ({ ...rest, })), + loginMethodAllowed: loginMethodAllowedByOrg.get(org.id) ?? true, })), invitations, expiresAt: userSession.expiresAt, + loginMethod, }; } catch (err: any) { if (err instanceof AuthenticationError) { diff --git a/controlplane/src/core/env.schema.ts b/controlplane/src/core/env.schema.ts index d244e9f95f..d423d768f4 100644 --- a/controlplane/src/core/env.schema.ts +++ b/controlplane/src/core/env.schema.ts @@ -1,5 +1,28 @@ import { z } from 'zod'; +export const sentryEnvVariables = z.object({ + SENTRY_ENABLED: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), + SENTRY_DSN: z.string().optional(), + SENTRY_SEND_DEFAULT_PII: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), + SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().optional().default(1), + SENTRY_PROFILE_SESSION_SAMPLE_RATE: z.coerce.number().optional().default(1), + SENTRY_PROFILE_LIFECYCLE: z.enum(['manual', 'trace']).optional().default('manual'), + SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS: z.coerce.number().optional().default(100), + SENTRY_ENABLE_LOGS: z + .string() + .optional() + .transform((val) => val === 'true') + .default('false'), +}); + export const envVariables = z .object({ /** @@ -97,6 +120,7 @@ export const envVariables = z */ WEBHOOK_URL: z.string().optional(), WEBHOOK_SECRET: z.string().optional(), + WEBHOOK_PROXY_URL: z.string().url().optional(), /** * GitHub Integration */ @@ -161,6 +185,22 @@ export const envVariables = z .string() .transform((val) => val === 'true') .optional(), + /** + * S3 Failover Storage (optional secondary bucket for resilience) + */ + S3_FAILOVER_STORAGE_URL: z.string().optional(), + S3_FAILOVER_ENDPOINT: z.string().optional(), + S3_FAILOVER_REGION: z.string().default('auto'), + S3_FAILOVER_ACCESS_KEY_ID: z.string().optional(), + S3_FAILOVER_SECRET_ACCESS_KEY: z.string().optional(), + S3_FAILOVER_FORCE_PATH_STYLE: z + .string() + .transform((val) => val === 'true') + .optional(), + S3_FAILOVER_USE_INDIVIDUAL_DELETES: z + .string() + .transform((val) => val === 'true') + .optional(), /** * Email */ @@ -190,31 +230,8 @@ export const envVariables = z * Admission Webhook */ AUTH_ADMISSION_JWT_SECRET: z.string(), - - /** - * Sentry - */ - SENTRY_ENABLED: z - .string() - .optional() - .transform((val) => val === 'true') - .default('false'), - SENTRY_DSN: z.string().optional(), - SENTRY_SEND_DEFAULT_PII: z - .string() - .optional() - .transform((val) => val === 'true') - .default('false'), - SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().optional().default(1), - SENTRY_PROFILE_SESSION_SAMPLE_RATE: z.coerce.number().optional().default(1), - SENTRY_PROFILE_LIFECYCLE: z.enum(['manual', 'trace']).optional().default('manual'), - SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS: z.coerce.number().optional().default(100), - SENTRY_ENABLE_LOGS: z - .string() - .optional() - .transform((val) => val === 'true') - .default('false'), }) + .merge(sentryEnvVariables) .refine((input) => { if (input.STRIPE_WEBHOOK_SECRET && !input.STRIPE_SECRET_KEY) { return false; diff --git a/controlplane/src/core/errors/errors.ts b/controlplane/src/core/errors/errors.ts index c7dca64575..0fe939536a 100644 --- a/controlplane/src/core/errors/errors.ts +++ b/controlplane/src/core/errors/errors.ts @@ -26,6 +26,20 @@ export class UnauthorizedError extends AuthorizationError { } } +/** + * Thrown when a user authenticates via a login method the organization does not + * allow. Extends AuthenticationError so it surfaces as a not-authenticated + * failure with a message guiding the user to sign in with an allowed method. + */ +export class LoginMethodNotAllowedError extends AuthenticationError { + constructor() { + super( + EnumStatusCode.ERROR_NOT_AUTHENTICATED, + 'Your login method is not permitted for this organization. Sign in with one of the allowed methods.', + ); + } +} + export function isAuthenticationError(e: Error): e is AuthenticationError { return e instanceof AuthenticationError; } @@ -38,6 +52,23 @@ export function isAuthorizationError(e: Error): e is AuthorizationError { return e instanceof AuthorizationError || e instanceof UnauthorizedError; } +/** + * Thrown when a ClickHouse query fails and the client's healthcheck indicates the server is currently unreachable. + * Caller-facing signal for "this is an availability issue, not a query bug" — surfaced as Code.Unavailable / HTTP 503. + * The message intentionally avoids naming ClickHouse so we don't leak implementation details to API consumers. + */ +export class ClickHouseUnavailableError extends Error { + constructor(cause?: unknown) { + super('Analytical service is currently unavailable', cause instanceof Error ? { cause } : undefined); + this.name = 'ClickHouseUnavailableError'; + Object.setPrototypeOf(this, ClickHouseUnavailableError.prototype); + } +} + +export function isClickHouseUnavailableError(e: unknown): e is ClickHouseUnavailableError { + return e instanceof ClickHouseUnavailableError; +} + export function unsuccessfulBaseCompositionError(federatedGraphName: string, namespace = 'default'): CompositionError { return new CompositionError({ message: diff --git a/controlplane/src/core/plugins/clickhouse.ts b/controlplane/src/core/plugins/clickhouse.ts index 6b7ac6f7e0..379b7ee11c 100644 --- a/controlplane/src/core/plugins/clickhouse.ts +++ b/controlplane/src/core/plugins/clickhouse.ts @@ -14,7 +14,7 @@ export interface ChPluginOptions { logger: BaseLogger; } -export default fp(async function ClickHousePlugin(fastify, opts) { +export default fp(function ClickHousePlugin(fastify, opts, done) { const connection = new ClickHouseClient({ dsn: opts.dsn, logger: opts.logger, @@ -23,18 +23,35 @@ export default fp(async function ClickHousePlugin(fastify, opts }, }); + const listenerController = new AbortController(); + fastify.decorate('chHealthcheck', async () => { - try { - await connection.ping(); - - fastify.log.debug('ClickHouse connection healthcheck succeeded'); - } catch (error) { - fastify.log.error(error); - throw new Error('ClickHouse connection healthcheck failed'); - } + connection.addEventListener( + 'ping', + (event) => { + if (event.detail.error) { + fastify.log.error(new Error(`ClickHouse connection healthcheck failed. Attempt: ${event.detail.attempt}`)); + fastify.log.error(event.detail.error); + return; + } + + fastify.log.debug('ClickHouse connection healthcheck succeeded'); + }, + { signal: listenerController.signal }, + ); + + await connection.ping(); }); - await fastify.chHealthcheck(); + fastify.chHealthcheck(); fastify.decorate('ch', connection); + + fastify.addHook('onClose', () => { + fastify.log.debug('Closing ClickHouse connection ...'); + listenerController.abort(); + connection.close(); + }); + + done(); }); diff --git a/controlplane/src/core/repositories/ApiKeyRepository.ts b/controlplane/src/core/repositories/ApiKeyRepository.ts index a0c4443582..2c9f9a599f 100644 --- a/controlplane/src/core/repositories/ApiKeyRepository.ts +++ b/controlplane/src/core/repositories/ApiKeyRepository.ts @@ -4,10 +4,12 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; import { apiKeyPermissions, apiKeyResources, apiKeys, users } from '../../db/schema.js'; import { APIKeyDTO } from '../../types/index.js'; +import { traced } from '../tracing.js'; /** * Repository for organization related operations. */ +@traced export class ApiKeyRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/AuditLogRepository.ts b/controlplane/src/core/repositories/AuditLogRepository.ts index 6c07ebff9d..c6103f1b30 100644 --- a/controlplane/src/core/repositories/AuditLogRepository.ts +++ b/controlplane/src/core/repositories/AuditLogRepository.ts @@ -2,6 +2,7 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { desc, eq, gt, lt, and, sql, count } from 'drizzle-orm'; import * as schema from '../../db/schema.js'; import { AuditableType, AuditActorType, AuditLogAction, AuditLogFullAction, AuditTargetType } from '../../db/models.js'; +import { traced } from '../tracing.js'; export type AddAuditLogInput = { organizationId: string; @@ -25,6 +26,7 @@ export type AddAuditLogInput = { /** * Repository for audit log related operations. */ +@traced export class AuditLogRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/BillingRepository.ts b/controlplane/src/core/repositories/BillingRepository.ts index 05bff34e30..e9eedd107a 100644 --- a/controlplane/src/core/repositories/BillingRepository.ts +++ b/controlplane/src/core/repositories/BillingRepository.ts @@ -4,6 +4,7 @@ import type { DB } from '../../db/index.js'; import { billingPlans, billingSubscriptions, organizationBilling } from '../../db/schema.js'; import { BillingPlanDTO } from '../../types/index.js'; import { BillingService } from '../services/BillingService.js'; +import { traced } from '../tracing.js'; export const billingSchema = z.object({ plans: z.record( @@ -26,6 +27,7 @@ export const billingSchema = z.object({ /** * BillingRepository for billing related operations. */ +@traced export class BillingRepository { constructor(private db: DB) {} diff --git a/controlplane/src/core/repositories/CacheWarmerRepository.ts b/controlplane/src/core/repositories/CacheWarmerRepository.ts index 2fa75f4eba..ffdba6fdd3 100644 --- a/controlplane/src/core/repositories/CacheWarmerRepository.ts +++ b/controlplane/src/core/repositories/CacheWarmerRepository.ts @@ -17,6 +17,7 @@ import { BlobStorage } from '../blobstorage/index.js'; import { ClickHouseClient } from '../clickhouse/index.js'; import { S3RouterConfigMetadata } from '../composition/composer.js'; import { CacheWarmupOperation } from '../../db/models.js'; +import { traced } from '../tracing.js'; import { getDateRange, isoDateRangeToTimestamps } from './analytics/util.js'; import { OperationsRepository } from './OperationsRepository.js'; @@ -28,6 +29,7 @@ interface ComputeCacheWarmerOperationsProps { maxOperationsCount: number; } +@traced export class CacheWarmerRepository { constructor( private client: ClickHouseClient, diff --git a/controlplane/src/core/repositories/ContractRepository.ts b/controlplane/src/core/repositories/ContractRepository.ts index 5cc2c4eb6d..ba6bec2801 100644 --- a/controlplane/src/core/repositories/ContractRepository.ts +++ b/controlplane/src/core/repositories/ContractRepository.ts @@ -3,8 +3,10 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { FastifyBaseLogger } from 'fastify'; import * as schema from '../../db/schema.js'; import { FederatedGraphDTO } from '../../types/index.js'; +import { traced } from '../tracing.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; +@traced export class ContractRepository { constructor( private logger: FastifyBaseLogger, diff --git a/controlplane/src/core/repositories/FeatureFlagRepository.ts b/controlplane/src/core/repositories/FeatureFlagRepository.ts index 773b6daf95..c8a797a428 100644 --- a/controlplane/src/core/repositories/FeatureFlagRepository.ts +++ b/controlplane/src/core/repositories/FeatureFlagRepository.ts @@ -5,6 +5,7 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { FastifyBaseLogger } from 'fastify'; import { validate as isValidUuid } from 'uuid'; import { parse } from 'graphql'; +import { alias } from 'drizzle-orm/pg-core'; import * as schema from '../../db/schema.js'; import { featureFlagToFeatureSubgraphs, @@ -28,8 +29,9 @@ import { ProtoSubgraph, SubgraphDTO, } from '../../types/index.js'; -import { normalizeLabels } from '../util.js'; +import { applyIdpNamespaceGate, normalizeLabels } from '../util.js'; import { RBACEvaluator } from '../services/RBACEvaluator.js'; +import { traced } from '../tracing.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; import { SubgraphRepository } from './SubgraphRepository.js'; import { UserRepository } from './UserRepository.js'; @@ -61,6 +63,7 @@ export type CheckConstituentFeatureSubgraphsResult = { featureSubgraphIds: Array; }; +@traced export class FeatureFlagRepository { constructor( private logger: FastifyBaseLogger, @@ -172,8 +175,8 @@ export class FeatureFlagRepository { .execute(); } - public async getFeatureFlags({ namespaceId, limit, offset, query }: FeatureFlagListFilterOptions) { - const conditions: SQL[] = [eq(featureFlags.organizationId, this.organizationId)]; + public async getFeatureFlags({ namespaceId, limit, offset, query, rbac }: FeatureFlagListFilterOptions) { + const conditions: (SQL | undefined)[] = [eq(featureFlags.organizationId, this.organizationId)]; if (query) { conditions.push(like(featureFlags.name, `%${query}%`)); @@ -183,6 +186,15 @@ export class FeatureFlagRepository { conditions.push(eq(featureFlags.namespaceId, namespaceId)); } + // IdP gate: empty set → no rows; non-empty → restrict to listed namespaces. + if (!applyIdpNamespaceGate(rbac, featureFlags.namespaceId, conditions)) { + return []; + } + + if (!this.applyRbacConditionsToQuery(rbac, conditions)) { + return []; + } + const dbQuery = this.db .select({ id: featureFlags.id, @@ -218,12 +230,21 @@ export class FeatureFlagRepository { })); } - public async getFeatureFlagsCount({ namespaceId }: { namespaceId?: string }) { - const conditions: SQL[] = [eq(featureFlags.organizationId, this.organizationId)]; + public async getFeatureFlagsCount({ namespaceId, rbac }: { namespaceId?: string; rbac?: RBACEvaluator }) { + const conditions: (SQL | undefined)[] = [eq(featureFlags.organizationId, this.organizationId)]; if (namespaceId) { conditions.push(eq(featureFlags.namespaceId, namespaceId)); } + // IdP gate: empty set → 0; non-empty → restrict to listed namespaces. + if (!applyIdpNamespaceGate(rbac, featureFlags.namespaceId, conditions)) { + return 0; + } + + if (!this.applyRbacConditionsToQuery(rbac, conditions)) { + return 0; + } + const featureFlagsCount = await this.db .select({ count: count(), @@ -248,7 +269,7 @@ export class FeatureFlagRepository { * @private */ private applyRbacConditionsToQuery(rbac: RBACEvaluator | undefined, conditions: (SQL | undefined)[]) { - if (!rbac || rbac.isOrganizationAdminOrDeveloper) { + if (!rbac || rbac.isOrganizationAdminOrDeveloper || rbac.isOrganizationViewer) { return true; } @@ -315,6 +336,11 @@ export class FeatureFlagRepository { conditions.push(isValidUuid(query) ? eq(subgraphs.id, query) : like(schema.targets.name, `%${query}%`)); } + // IdP gate: empty set → no rows; non-empty → restrict to listed namespaces. + if (!applyIdpNamespaceGate(rbac, targets.namespaceId, conditions)) { + return []; + } + if (!this.applyRbacConditionsToQuery(rbac, conditions)) { return []; } @@ -381,6 +407,11 @@ export class FeatureFlagRepository { conditions.push(like(targets.name, `%${query}%`)); } + // IdP gate: empty set → 0; non-empty → restrict to listed namespaces. + if (!applyIdpNamespaceGate(rbac, targets.namespaceId, conditions)) { + return 0; + } + if (!this.applyRbacConditionsToQuery(rbac, conditions)) { return 0; } @@ -396,12 +427,134 @@ export class FeatureFlagRepository { return featureSubgraphTargets[0].count; } + // Returns paginated feature subgraphs for a federated graph (DB-level pagination) + public async getFeatureSubgraphsByFederatedGraph({ + federatedGraphId, + namespaceId, + fedGraphLabelMatchers, + limit, + offset, + query, + }: { + federatedGraphId: string; + namespaceId: string; + fedGraphLabelMatchers: string[]; + limit: number; + offset: number; + query?: string; + }): Promise<{ featureSubgraphs: FeatureSubgraphDTO[]; totalCount: number }> { + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); + + // Get feature flag IDs that match the federated graph's label matchers + const matchedFlags = await this.getMatchedFeatureFlags({ + namespaceId, + fedGraphLabelMatchers, + excludeDisabled: false, + }); + + if (matchedFlags.length === 0) { + return { featureSubgraphs: [], totalCount: 0 }; + } + + const matchedFlagIds = matchedFlags.map((f) => f.id); + + const conditions: (SQL | undefined)[] = [ + eq(targets.organizationId, this.organizationId), + eq(targets.type, 'subgraph'), + eq(subgraphs.isFeatureSubgraph, true), + eq(targets.namespaceId, namespaceId), + ]; + + if (query) { + conditions.push(isValidUuid(query) ? eq(subgraphs.id, query) : like(targets.name, `%${query}%`)); + } + + const baseSubgraphs = alias(subgraphs, 'base_subgraphs'); + const baseTargets = alias(targets, 'base_targets'); + const baseQuery = this.db + .selectDistinct({ + id: subgraphs.id, + name: targets.name, + targetId: subgraphs.targetId, + baseSubgraphId: featureSubgraphsToBaseSubgraphs.baseSubgraphId, + baseSubgraphName: baseTargets.name, + schemaVersionId: subgraphs.schemaVersionId, + createdAt: targets.createdAt, + }) + .from(subgraphs) + .innerJoin(targets, eq(subgraphs.targetId, targets.id)) + .innerJoin(featureSubgraphsToBaseSubgraphs, eq(subgraphs.id, featureSubgraphsToBaseSubgraphs.featureSubgraphId)) + // Ensure the feature subgraph is part of a matched feature flag + .innerJoin( + featureFlagToFeatureSubgraphs, + and( + eq(subgraphs.id, featureFlagToFeatureSubgraphs.featureSubgraphId), + inArray(featureFlagToFeatureSubgraphs.featureFlagId, matchedFlagIds), + ), + ) + // Ensure the base subgraph is part of the federated graph + .innerJoin( + subgraphsToFederatedGraph, + eq(featureSubgraphsToBaseSubgraphs.baseSubgraphId, subgraphsToFederatedGraph.subgraphId), + ) + .innerJoin(namespaces, eq(namespaces.id, targets.namespaceId)) + .innerJoin(baseSubgraphs, eq(baseSubgraphs.id, featureSubgraphsToBaseSubgraphs.baseSubgraphId)) + .innerJoin(baseTargets, eq(baseTargets.id, baseSubgraphs.targetId)) + .where(and(...conditions, eq(subgraphsToFederatedGraph.federatedGraphId, federatedGraphId))) + .orderBy(asc(targets.createdAt)); + + // Get total count + const countResult = await this.db + .select({ count: count() }) + .from(baseQuery.as('feature_subgraphs_by_fed_graph')) + .execute(); + + const totalCount = countResult[0]?.count ?? 0; + + // Apply pagination + if (limit > 0) { + baseQuery.limit(limit); + } + if (offset > 0) { + baseQuery.offset(offset); + } + + const featureSubgraphTargets = await baseQuery.execute(); + + // Retrieve the subgraphs in chunks so we don't run into "too many parameters" errors + const a: SubgraphDTO[] = []; + const pendingFeatureSubgraphs = featureSubgraphTargets.map((target) => target.targetId); + while (pendingFeatureSubgraphs.length > 0) { + const chunkOfIdsToFetch = pendingFeatureSubgraphs.splice(0, 100); + const chunkOfSubgraphs = await subgraphRepo.getSubgraphsByTargetIds(chunkOfIdsToFetch); + a.push(...chunkOfSubgraphs); + } + + const featureSubgraphs: FeatureSubgraphDTO[] = []; + for (const f of featureSubgraphTargets) { + const fs = a.find((graph) => graph.targetId === f.targetId); + if (!fs) { + continue; + } + + featureSubgraphs.push({ + ...fs, + baseSubgraphId: f.baseSubgraphId, + baseSubgraphName: f.baseSubgraphName, + }); + } + + return { featureSubgraphs, totalCount }; + } + private async getFeatureFlag({ conditions, namespaceId, + includeSubgraphs = true, }: { conditions: SQL[]; namespaceId: string; + includeSubgraphs?: boolean; }): Promise { const resp = await this.db .select({ @@ -431,10 +584,12 @@ export class FeatureFlagRepository { createdBy = user?.email || ''; } - const featureSubgraphs = await this.getFeatureSubgraphsByFeatureFlagId({ - namespaceId, - featureFlagId: resp[0].id, - }); + const featureSubgraphs = includeSubgraphs + ? await this.getFeatureSubgraphsByFeatureFlagId({ + namespaceId, + featureFlagId: resp[0].id, + }) + : []; return { ...resp[0], @@ -450,12 +605,15 @@ export class FeatureFlagRepository { public getFeatureFlagById({ featureFlagId, namespaceId, + includeSubgraphs, }: { featureFlagId: string; namespaceId: string; + includeSubgraphs?: boolean; }): Promise { return this.getFeatureFlag({ namespaceId, + includeSubgraphs, conditions: [ eq(featureFlags.organizationId, this.organizationId), eq(featureFlags.id, featureFlagId), @@ -604,16 +762,16 @@ export class FeatureFlagRepository { includeContracts?: boolean; }): Promise { const federatedGraphs: FederatedGraphDTO[] = []; - const featureSubraphsOfFeatureFlag = await this.getFeatureSubgraphsByFeatureFlagId({ + const featureSubgraphsOfFeatureFlag = await this.getFeatureSubgraphsByFeatureFlagId({ featureFlagId, namespaceId, }); - if (featureSubraphsOfFeatureFlag.length === 0) { + if (featureSubgraphsOfFeatureFlag.length === 0) { return []; } - const baseSubgraphIds = featureSubraphsOfFeatureFlag.map((f) => f.baseSubgraphId); + const baseSubgraphIds = featureSubgraphsOfFeatureFlag.map((f) => f.baseSubgraphId); - // fetches the federated graphs which contains all the base subgraphs of the feature subgraphs + // fetches the federated graphs which contain all the base subgraphs of the feature subgraphs const federatedGraphIds = await this.db .select({ federatedGraphId: subgraphsToFederatedGraph.federatedGraphId, @@ -867,6 +1025,69 @@ export class FeatureFlagRepository { return featureGraphsByFlag; } + public async getFeatureFlagsBySubgraphLabels({ + namespaceId, + labels, + excludeDisabled, + }: { + namespaceId: string; + labels: Label[]; + excludeDisabled: boolean; + }) { + const uniqueLabels = normalizeLabels(labels); + + const conditions: SQL[] = []; + if (excludeDisabled) { + conditions.push(eq(featureFlags.isEnabled, true)); + } + + if (uniqueLabels.length > 0) { + conditions.push( + arrayOverlaps( + featureFlags.labels, + uniqueLabels.map((l) => joinLabel(l)), + ), + ); + } else { + conditions.push(eq(featureFlags.labels, [])); + } + + const matchingFeatureFlags = await this.db + .select({ + id: featureFlags.id, + name: featureFlags.name, + }) + .from(featureFlags) + .where( + and( + eq(featureFlags.namespaceId, namespaceId), + eq(featureFlags.organizationId, this.organizationId), + ...conditions, + ), + ) + .execute(); + + if (matchingFeatureFlags.length === 0) { + return []; + } + + const result: FeatureFlagWithFeatureSubgraphs[] = []; + for (const featureFlag of matchingFeatureFlags) { + const featureSubgraphsByFlag = await this.getFeatureSubgraphsByFeatureFlagId({ + featureFlagId: featureFlag.id, + namespaceId, + }); + + result.push({ + id: featureFlag.id, + name: featureFlag.name, + featureSubgraphs: featureSubgraphsByFlag.filter((fsg) => fsg.schemaVersionId !== ''), + }); + } + + return result; + } + // evaluates all the feature flags which have fgs whose base subgraph id and fed graph label matchers are passed as input and returns the feature flags that should be composed public async getFeatureFlagsByBaseSubgraphIdAndLabelMatchers({ baseSubgraphId, @@ -912,6 +1133,7 @@ export class FeatureFlagRepository { } const baseSubgraphNamesOfFeatureFlags = featureSubgraphsByFlag.map((ff) => ff.baseSubgraphName); + // check if all base subgraphs of feature flags are one of the base subgraphs of this composition const isSubset = baseSubgraphNamesOfFeatureFlags.every((name) => baseSubgraphNames.includes(name)); if (!isSubset) { @@ -994,6 +1216,7 @@ export class FeatureFlagRepository { baseSubgraphNames: baseCompositionSubgraphs.map((baseSubgraph) => baseSubgraph.name), excludeDisabled: true, }); + for (const flag of enabledFeatureFlags) { if (featureFlagToComposeByFlagId.has(flag.id)) { continue; @@ -1090,7 +1313,7 @@ export class FeatureFlagRepository { featureFlagId: federatedGraphsToFeatureFlagSchemaVersions.featureFlagId, }) .from(federatedGraphsToFeatureFlagSchemaVersions) - .where(and(eq(federatedGraphsToFeatureFlagSchemaVersions.baseCompositionSchemaVersionId, baseSchemaVersionId))) + .where(eq(federatedGraphsToFeatureFlagSchemaVersions.baseCompositionSchemaVersionId, baseSchemaVersionId)) .execute(); if (ffSchemaVersions.length === 0) { diff --git a/controlplane/src/core/repositories/FederatedGraphRepository.ts b/controlplane/src/core/repositories/FederatedGraphRepository.ts index 12ba78de71..f82901a91c 100644 --- a/controlplane/src/core/repositories/FederatedGraphRepository.ts +++ b/controlplane/src/core/repositories/FederatedGraphRepository.ts @@ -53,6 +53,7 @@ import { GraphApiKeyDTO, Label, RouterRequestKeysDTO, + ComposeAndDeployResult, } from '../../types/index.js'; import { BlobStorage } from '../blobstorage/index.js'; import { @@ -70,10 +71,17 @@ import { } from '../composition/composeGraphs.pool.js'; import { SchemaDiff } from '../composition/schemaCheck.js'; import { AdmissionError } from '../services/AdmissionWebhookController.js'; -import { checkIfLabelMatchersChanged, normalizeLabelMatchers, normalizeLabels } from '../util.js'; +import { + applyIdpNamespaceGate, + checkIfLabelMatchersChanged, + normalizeLabelMatchers, + normalizeLabels, +} from '../util.js'; import { unsuccessfulBaseCompositionError } from '../errors/errors.js'; import { ClickHouseClient } from '../clickhouse/index.js'; import { RBACEvaluator } from '../services/RBACEvaluator.js'; +import { traced } from '../tracing.js'; +import type { CompositionService } from '../services/CompositionService.js'; import { ContractRepository } from './ContractRepository.js'; import { FeatureFlagRepository, SubgraphsToCompose } from './FeatureFlagRepository.js'; import { GraphCompositionRepository } from './GraphCompositionRepository.js'; @@ -85,6 +93,7 @@ export interface FederatedGraphConfig { trafficCheckDays: number; } +@traced export class FederatedGraphRepository { constructor( private logger: FastifyBaseLogger, @@ -185,276 +194,199 @@ export class FederatedGraphRepository { }); } - public update(data: { - admissionConfig: { - jwtSecret: string; - cdnBaseUrl: string; - }; - blobStorage: BlobStorage; + public async update({ + compositionService, + ...data + }: { + compositionService: CompositionService; labelMatchers: string[]; namespaceId: string; routingUrl: string; targetId: string; updatedBy: string; - chClient: ClickHouseClient; admissionWebhookSecret?: string; admissionWebhookURL?: string; - compositionOptions?: CompositionOptions; readme?: string; - unsetAdmissionWebhookURL?: boolean; unsetLabelMatchers?: boolean; - }): Promise< - | { - compositionErrors: PlainMessage[]; - deploymentErrors: PlainMessage[]; - compositionWarnings: PlainMessage[]; - } - | undefined - > { + }): Promise { const routingUrl = normalizeURL(data.routingUrl); - return this.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); - const subgraphRepo = new SubgraphRepository(this.logger, tx, this.organizationId); - const targetRepo = new TargetRepository(tx, this.organizationId); - const contractRepo = new ContractRepository(this.logger, tx, this.organizationId); - - const federatedGraph = await fedGraphRepo.byTargetId(data.targetId); - if (!federatedGraph) { - throw new Error(`Federated graph not found`); - } - - // Update routing URL when changed. (Is required) - if (routingUrl && federatedGraph.routingUrl !== routingUrl) { - await tx.update(federatedGraphs).set({ routingUrl }).where(eq(federatedGraphs.id, federatedGraph.id)).execute(); - } - - // Update admission webhook URL when changed. (Is optional) - if (data.admissionWebhookURL !== undefined && federatedGraph.admissionWebhookURL !== data.admissionWebhookURL) { - const admissionWebhookURL = data.admissionWebhookURL ? normalizeURL(data.admissionWebhookURL) : ''; - - await tx - .update(federatedGraphs) - .set({ admissionWebhookURL: admissionWebhookURL || null }) - .where(eq(federatedGraphs.id, federatedGraph.id)) - .execute(); - } - - if (data.admissionWebhookSecret !== undefined) { - await tx - .update(federatedGraphs) - .set({ admissionWebhookSecret: data.admissionWebhookSecret || null }) - .where(eq(federatedGraphs.id, federatedGraph.id)) - .execute(); - } - - // Update the readme of the fed graph. (Is optional) - if (data.readme !== undefined) { - await targetRepo.updateReadmeOfTarget({ id: data.targetId, readme: data.readme }); - } - - const haveLabelMatchersChanged = checkIfLabelMatchersChanged({ - isContract: !!federatedGraph.contract, - currentLabelMatchers: federatedGraph.labelMatchers, - newLabelMatchers: data.labelMatchers, - unsetLabelMatchers: data.unsetLabelMatchers, - }); - - // Update label matchers (Is optional) - if (haveLabelMatchersChanged) { - const labelMatchers = data.unsetLabelMatchers ? [] : normalizeLabelMatchers(data.labelMatchers); - - const contracts = await contractRepo.bySourceFederatedGraphId(federatedGraph.id); - - const subgraphs = await subgraphRepo.byGraphLabelMatchers({ - labelMatchers, - namespaceId: data.namespaceId, - }); - - const graphAndContracts = [federatedGraph, ...contracts.map((c) => c.downstreamFederatedGraph)]; + const fedGraphRepo = new FederatedGraphRepository(this.logger, this.db, this.organizationId); + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); + const targetRepo = new TargetRepository(this.db, this.organizationId); + const contractRepo = new ContractRepository(this.logger, this.db, this.organizationId); + + const federatedGraph = await fedGraphRepo.byTargetId(data.targetId); + if (!federatedGraph) { + throw new Error(`Federated graph not found`); + } - for (const graph of graphAndContracts) { - await tx.delete(schema.targetLabelMatchers).where(eq(schema.targetLabelMatchers.targetId, graph.targetId)); + // Update routing URL when changed. (Is required) + if (routingUrl && federatedGraph.routingUrl !== routingUrl) { + await this.db + .update(federatedGraphs) + .set({ routingUrl }) + .where(eq(federatedGraphs.id, federatedGraph.id)) + .execute(); + } - if (labelMatchers.length > 0) { - await tx - .insert(schema.targetLabelMatchers) - .values( - labelMatchers.map((labelMatcher) => ({ - targetId: graph.targetId, - labelMatcher: labelMatcher.split(','), - })), - ) - .execute(); - } + // Update admission webhook URL when changed. (Is optional) + if (data.admissionWebhookURL !== undefined && federatedGraph.admissionWebhookURL !== data.admissionWebhookURL) { + const admissionWebhookURL = data.admissionWebhookURL ? normalizeURL(data.admissionWebhookURL) : ''; - let deleteCondition: SQL | undefined = eq( - schema.subgraphsToFederatedGraph.federatedGraphId, - graph.id, - ); + await this.db + .update(federatedGraphs) + .set({ admissionWebhookURL: admissionWebhookURL || null }) + .where(eq(federatedGraphs.id, federatedGraph.id)) + .execute(); + } - // we do this conditionally because notInArray cannot take empty value - if (subgraphs.length > 0) { - deleteCondition = and( - deleteCondition, - notInArray( - schema.subgraphsToFederatedGraph.subgraphId, - subgraphs.map((subgraph) => subgraph.id), - ), - ); - } + if (data.admissionWebhookSecret !== undefined) { + await this.db + .update(federatedGraphs) + .set({ admissionWebhookSecret: data.admissionWebhookSecret || null }) + .where(eq(federatedGraphs.id, federatedGraph.id)) + .execute(); + } - await tx.delete(schema.subgraphsToFederatedGraph).where(deleteCondition); + // Update the readme of the fed graph. (Is optional) + if (data.readme !== undefined) { + await targetRepo.updateReadmeOfTarget({ id: data.targetId, readme: data.readme }); + } - if (subgraphs.length > 0) { - await tx - .insert(schema.subgraphsToFederatedGraph) - .values( - subgraphs.map((sg) => ({ - subgraphId: sg.id, - federatedGraphId: graph.id, - })), - ) - .onConflictDoNothing() - .execute(); - } - } + const haveLabelMatchersChanged = checkIfLabelMatchersChanged({ + isContract: !!federatedGraph.contract, + currentLabelMatchers: federatedGraph.labelMatchers, + newLabelMatchers: data.labelMatchers, + unsetLabelMatchers: data.unsetLabelMatchers, + }); - const { compositionErrors, deploymentErrors, compositionWarnings } = await fedGraphRepo.composeAndDeployGraphs({ - federatedGraphs: [federatedGraph], - blobStorage: data.blobStorage, - admissionConfig: { - webhookJWTSecret: data.admissionConfig.jwtSecret, - cdnBaseUrl: data.admissionConfig.cdnBaseUrl, - }, - actorId: data.updatedBy, - chClient: data.chClient, - compositionOptions: data.compositionOptions, - }); + // Update label matchers (Is optional) + if (!haveLabelMatchersChanged) { + return undefined; + } - return { - compositionErrors, - deploymentErrors, - compositionWarnings, - }; - } + const labelMatchers = data.unsetLabelMatchers ? [] : normalizeLabelMatchers(data.labelMatchers); + const contracts = await contractRepo.bySourceFederatedGraphId(federatedGraph.id); + const subgraphs = await subgraphRepo.byGraphLabelMatchers({ + labelMatchers, + namespaceId: data.namespaceId, }); - } - - public updateReadme({ targetId, readme }: { targetId: string; readme: string }) { - return this.db - .update(targets) - .set({ readme }) - .where(and(eq(targets.id, targetId), eq(schema.targets.organizationId, this.organizationId))); - } - public move( - data: { - targetId: string; - newNamespaceId: string; - updatedBy: string; - federatedGraph: FederatedGraphDTO; - skipDeployment?: boolean; - }, - blobStorage: BlobStorage, - admissionConfig: { - jwtSecret: string; - cdnBaseUrl: string; - }, - chClient: ClickHouseClient, - compositionOptions?: CompositionOptions, - ): Promise<{ - compositionErrors: PlainMessage[]; - deploymentErrors: PlainMessage[]; - compositionWarnings: PlainMessage[]; - }> { - return this.db.transaction(async (tx) => { - const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); - const subgraphRepo = new SubgraphRepository(this.logger, tx, this.organizationId); + const graphAndContracts = [federatedGraph, ...contracts.map((c) => c.downstreamFederatedGraph)]; + for (const graph of graphAndContracts) { + await this.db.delete(schema.targetLabelMatchers).where(eq(schema.targetLabelMatchers.targetId, graph.targetId)); - await tx.update(targets).set({ namespaceId: data.newNamespaceId }).where(eq(targets.id, data.targetId)); + if (labelMatchers.length > 0) { + await this.db + .insert(schema.targetLabelMatchers) + .values( + labelMatchers.map((labelMatcher) => ({ + targetId: graph.targetId, + labelMatcher: labelMatcher.split(','), + })), + ) + .execute(); + } - // Delete all mappings because we will deal with new subgraphs in new namespace - await tx - .delete(schema.subgraphsToFederatedGraph) - .where(eq(schema.subgraphsToFederatedGraph.federatedGraphId, data.federatedGraph.id)); + let deleteCondition: SQL | undefined = eq(schema.subgraphsToFederatedGraph.federatedGraphId, graph.id); - const newNamespaceSubgraphs = await subgraphRepo.byGraphLabelMatchers({ - labelMatchers: data.federatedGraph.labelMatchers, - namespaceId: data.newNamespaceId, - }); + // we do this conditionally because notInArray cannot take empty value + if (subgraphs.length > 0) { + deleteCondition = and( + deleteCondition, + notInArray( + schema.subgraphsToFederatedGraph.subgraphId, + subgraphs.map((subgraph) => subgraph.id), + ), + ); + } - // insert new mappings - if (newNamespaceSubgraphs.length > 0) { - await tx + await this.db.delete(schema.subgraphsToFederatedGraph).where(deleteCondition); + if (subgraphs.length > 0) { + await this.db .insert(schema.subgraphsToFederatedGraph) .values( - newNamespaceSubgraphs.map((sg) => ({ + subgraphs.map((sg) => ({ subgraphId: sg.id, - federatedGraphId: data.federatedGraph.id, + federatedGraphId: graph.id, })), ) .onConflictDoNothing() .execute(); } + } - if (data.skipDeployment) { - return { - compositionErrors: [], - deploymentErrors: [], - compositionWarnings: [], - }; - } + // since the label matchers have changed, the current DTO is stale + const updatedFederatedGraph = await fedGraphRepo.byTargetId(data.targetId); + if (!updatedFederatedGraph) { + throw new Error(`Federated graph not found`); + } - // Handle Contract Deployment - if (data.federatedGraph.contract) { - const movedContractGraph = await fedGraphRepo.byId(data.federatedGraph.id); - if (!movedContractGraph) { - throw new Error('Could not find contract after moving'); - } + return await compositionService.composeAndDeployFederatedGraph({ + actorId: data.updatedBy, + federatedGraph: updatedFederatedGraph, + }); + } - const composition = await this.composeAndDeployGraphs({ - actorId: data.updatedBy, - admissionConfig: { - cdnBaseUrl: admissionConfig.cdnBaseUrl, - webhookJWTSecret: admissionConfig.jwtSecret, - }, - blobStorage, - chClient, - compositionOptions, - federatedGraphs: [movedContractGraph], - }); + public updateReadme({ targetId, readme }: { targetId: string; readme: string }) { + return this.db + .update(targets) + .set({ readme }) + .where(and(eq(targets.id, targetId), eq(schema.targets.organizationId, this.organizationId))); + } - return { - compositionErrors: composition.compositionErrors, - deploymentErrors: composition.deploymentErrors, - compositionWarnings: composition.compositionWarnings, - }; - } + /** + * Move does not call `composeAndDeployFederatedGraph` itself. + * This is because contracts need to all be moved to the new namespace before `composeAndDeployFederatedGraph` + * is called. + * + * @param data + */ + public async move(data: { + targetId: string; + newNamespaceId: string; + updatedBy: string; + federatedGraph: FederatedGraphDTO; + skipDeployment?: boolean; + }): Promise { + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); - const composition = await fedGraphRepo.composeAndDeployGraphs({ - federatedGraphs: [data.federatedGraph], - actorId: data.updatedBy, - blobStorage, - admissionConfig: { - cdnBaseUrl: admissionConfig.cdnBaseUrl, - webhookJWTSecret: admissionConfig.jwtSecret, - }, - chClient, - compositionOptions, - }); + await this.db.update(targets).set({ namespaceId: data.newNamespaceId }).where(eq(targets.id, data.targetId)); - return { - compositionErrors: composition.compositionErrors, - deploymentErrors: composition.deploymentErrors, - compositionWarnings: composition.compositionWarnings, - }; + // Delete all mappings because we will deal with new subgraphs in new namespace + await this.db + .delete(schema.subgraphsToFederatedGraph) + .where(eq(schema.subgraphsToFederatedGraph.federatedGraphId, data.federatedGraph.id)); + + const newNamespaceSubgraphs = await subgraphRepo.byGraphLabelMatchers({ + labelMatchers: data.federatedGraph.labelMatchers, + namespaceId: data.newNamespaceId, }); + + // insert new mappings + if (newNamespaceSubgraphs.length > 0) { + await this.db + .insert(schema.subgraphsToFederatedGraph) + .values( + newNamespaceSubgraphs.map((sg) => ({ + subgraphId: sg.id, + federatedGraphId: data.federatedGraph.id, + })), + ) + .onConflictDoNothing() + .execute(); + } } - private applyRbacConditionsToQuery( + static applyRbacConditionsToQuery( rbac: RBACEvaluator | undefined, conditions: (SQL | undefined)[], ): boolean { + // Apply the IdP gate regardless of RBAC level. Empty allowed-set → no rows. + if (!applyIdpNamespaceGate(rbac, schema.targets.namespaceId, conditions)) { + return false; + } + if (!rbac || rbac.isOrganizationViewer) { return true; } @@ -506,7 +438,7 @@ export class FederatedGraphRepository { conditions.push(eq(schema.federatedGraphs.supportsFederation, opts.supportsFederation)); } - if (!this.applyRbacConditionsToQuery(opts.rbac, conditions)) { + if (!FederatedGraphRepository.applyRbacConditionsToQuery(opts.rbac, conditions)) { return []; } @@ -1496,13 +1428,14 @@ export class FederatedGraphRepository { /** * This method recomposes and deploys federated graphs and their respective contract graphs. */ - public composeAndDeployGraphs = ({ + public composeAndDeployGraphs({ actorId, admissionConfig, compositionOptions, chClient, blobStorage, federatedGraphs, + webhookProxyUrl, }: { actorId: string; admissionConfig: { @@ -1513,7 +1446,8 @@ export class FederatedGraphRepository { chClient: ClickHouseClient; federatedGraphs: FederatedGraphDTO[]; compositionOptions?: CompositionOptions; - }) => { + webhookProxyUrl?: string; + }) { return this.db.transaction(async (tx) => { const subgraphRepo = new SubgraphRepository(this.logger, tx, this.organizationId); const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); @@ -1528,6 +1462,7 @@ export class FederatedGraphRepository { contractRepo, graphCompositionRepo, chClient, + webhookProxyUrl, ); const allDeploymentErrors: PlainMessage[] = []; @@ -1852,7 +1787,7 @@ export class FederatedGraphRepository { compositionWarnings: allCompositionWarnings, }; }); - }; + } public updateRouterCompatibilityVersion(id: string, version: string) { return this.db diff --git a/controlplane/src/core/repositories/GitHubRepository.ts b/controlplane/src/core/repositories/GitHubRepository.ts index e784107395..d1871d5fa4 100644 --- a/controlplane/src/core/repositories/GitHubRepository.ts +++ b/controlplane/src/core/repositories/GitHubRepository.ts @@ -4,7 +4,9 @@ import { eq } from 'drizzle-orm'; import { CompositionError, GitInfo } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { PlainMessage } from '@bufbuild/protobuf'; import * as schema from '../../db/schema.js'; +import { traced } from '../tracing.js'; +@traced export class GitHubRepository { constructor( private db: PostgresJsDatabase, diff --git a/controlplane/src/core/repositories/GraphCompositionRepository.ts b/controlplane/src/core/repositories/GraphCompositionRepository.ts index 7651a79968..d82dbcc84d 100644 --- a/controlplane/src/core/repositories/GraphCompositionRepository.ts +++ b/controlplane/src/core/repositories/GraphCompositionRepository.ts @@ -12,8 +12,10 @@ import { } from '../../db/schema.js'; import { DateRange, GraphCompositionDTO } from '../../types/index.js'; import { CompositionSubgraphRecord } from '../composition/composer.js'; +import { traced } from '../tracing.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; +@traced export class GraphCompositionRepository { constructor( private logger: FastifyBaseLogger, @@ -232,6 +234,7 @@ export class GraphCompositionRepository { return { id: composition.id, schemaVersionId: composition.schemaVersionId, + targetId: composition.targetId, createdAt: composition.createdAt.toISOString(), isComposable: composition.isComposable || false, compositionErrors: composition.compositionErrors || undefined, @@ -292,6 +295,7 @@ export class GraphCompositionRepository { return { id: composition.id, schemaVersionId: composition.schemaVersionId, + targetId: composition.targetId, createdAt: composition.createdAt.toISOString(), isComposable: composition.isComposable || false, compositionErrors: composition.compositionErrors || undefined, diff --git a/controlplane/src/core/repositories/NamespaceLoginMethodRepository.ts b/controlplane/src/core/repositories/NamespaceLoginMethodRepository.ts new file mode 100644 index 0000000000..48fd29d44f --- /dev/null +++ b/controlplane/src/core/repositories/NamespaceLoginMethodRepository.ts @@ -0,0 +1,204 @@ +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { and, eq, inArray, SQL } from 'drizzle-orm'; +import * as schema from '../../db/schema.js'; +import { namespaces, namespaceLoginMethods } from '../../db/schema.js'; +import { traced } from '../tracing.js'; +import { applyIdpNamespaceGate, loginMethodMatchesRow } from '../util.js'; +import type { LoginMethod, NamespaceAccess } from '../../types/index.js'; +import type { RBACEvaluator } from '../services/RBACEvaluator.js'; + +@traced +export class NamespaceLoginMethodRepository { + constructor(private db: PostgresJsDatabase) {} + + /** + * Evaluates which namespaces the given login method may access within the org. + * + * Semantics: + * - A namespace with zero rows in namespace_login_methods is open to all login methods (default-open). + * - A namespace with one or more rows is restricted to the listed login methods only. + * + * Returns {@link NamespaceAccess}: `all` when the org has no mapping rows (or + * the login is an API key, which is never gated), `none` when the login method + * matches no namespace, otherwise `restricted` with the reachable namespace ids. + */ + async allowedNamespaces(input: { organizationId: string; loginMethod: LoginMethod }): Promise { + // API keys are never gated; bail before any DB work. + if (input.loginMethod.type === 'api-key') { + return { kind: 'all' }; + } + + // Single LEFT JOIN: every org namespace appears at least once; restricted + // namespaces appear once per mapping row, unmapped ones appear once with + // NULL mapping columns. + const rows = await this.db + .select({ + namespaceId: namespaces.id, + ssoProviderId: namespaceLoginMethods.ssoProviderId, + isPasswordLogin: namespaceLoginMethods.isPasswordLogin, + isGoogleLogin: namespaceLoginMethods.isGoogleLogin, + isGithubLogin: namespaceLoginMethods.isGithubLogin, + }) + .from(namespaces) + .leftJoin(namespaceLoginMethods, eq(namespaceLoginMethods.namespaceId, namespaces.id)) + .where(eq(namespaces.organizationId, input.organizationId)) + .execute(); + + // If no row in the org has any mapping, the gate is default-open everywhere. + const isUnmapped = (r: (typeof rows)[number]) => + r.ssoProviderId === null && !r.isPasswordLogin && !r.isGoogleLogin && !r.isGithubLogin; + if (rows.every((r) => isUnmapped(r))) { + return { kind: 'all' }; + } + + const { loginMethod } = input; + + // Build the allowed set: open namespaces always; restricted namespaces only + // when at least one of their mapping rows matches the current login method. + const namespaceIds = new Set(); + for (const row of rows) { + if (isUnmapped(row) || loginMethodMatchesRow(loginMethod, row)) { + namespaceIds.add(row.namespaceId); + } + } + + return namespaceIds.size === 0 ? { kind: 'none' } : { kind: 'restricted', namespaceIds }; + } + + /** + * Returns one entry per namespace in the org that has at least one mapping row + * (i.e. is restricted). Namespaces with no rows (default-open) are omitted. + * + * When `rbac` is provided, results are limited to the namespaces its IdP gate + * allows, so callers only ever see namespaces they can access. + */ + async listMappings(input: { organizationId: string; rbac?: RBACEvaluator }): Promise< + { + namespaceId: string; + allowedSsoProviderIds: string[]; + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + }[] + > { + const conditions: (SQL | undefined)[] = [eq(namespaces.organizationId, input.organizationId)]; + if (!applyIdpNamespaceGate(input.rbac, namespaces.id, conditions)) { + return []; + } + + const rows = await this.db + .select({ + namespaceId: namespaceLoginMethods.namespaceId, + ssoProviderId: namespaceLoginMethods.ssoProviderId, + isPasswordLogin: namespaceLoginMethods.isPasswordLogin, + isGoogleLogin: namespaceLoginMethods.isGoogleLogin, + isGithubLogin: namespaceLoginMethods.isGithubLogin, + }) + .from(namespaceLoginMethods) + .innerJoin(namespaces, eq(namespaces.id, namespaceLoginMethods.namespaceId)) + .where(and(...conditions)) + .execute(); + + type Entry = { + allowedSsoProviderIds: string[]; + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + }; + const byNamespace = new Map(); + for (const row of rows) { + const entry = byNamespace.get(row.namespaceId) ?? { + allowedSsoProviderIds: [], + allowPasswordLogin: false, + allowGoogleLogin: false, + allowGithubLogin: false, + }; + if (row.ssoProviderId) { + entry.allowedSsoProviderIds.push(row.ssoProviderId); + } + if (row.isPasswordLogin) { + entry.allowPasswordLogin = true; + } + if (row.isGoogleLogin) { + entry.allowGoogleLogin = true; + } + if (row.isGithubLogin) { + entry.allowGithubLogin = true; + } + byNamespace.set(row.namespaceId, entry); + } + + return Array.from(byNamespace, ([namespaceId, entry]) => ({ namespaceId, ...entry })); + } + + /** + * Replaces the org's namespace mappings in a single transaction: every + * namespace the caller can access (per the `rbac` IdP gate) has its rows + * cleared, then the provided `mappings` are inserted. Namespaces not in + * `mappings` therefore become default-open. Namespaces the caller can't access + * are left untouched. + * + * Each SSO provider is its own row; password/google/github share a single + * "built-in methods" row. + */ + async setMappings(input: { + organizationId: string; + rbac?: RBACEvaluator; + mappings: { + namespaceId: string; + ssoProviderIds: string[]; + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + }[]; + }) { + await this.db.transaction(async (tx) => { + // Clear existing rows only for the namespaces the caller can access — NOT + // a blanket org-wide delete. A caller whose own login is IdP-gated only + // sees (and submits) a subset of namespaces, so wiping everything would + // destroy the mappings of namespaces they can't see or manage (e.g. a + // staging-IdP session clearing prod's restrictions). For an ungated caller + // the gate adds no condition, so this still clears every org namespace. + // `none` (gate locks out everything) → wipe nothing. + const conditions: (SQL | undefined)[] = [eq(namespaces.organizationId, input.organizationId)]; + if (applyIdpNamespaceGate(input.rbac, namespaces.id, conditions)) { + const accessibleNamespaces = await tx + .select({ id: namespaces.id }) + .from(namespaces) + .where(and(...conditions)) + .execute(); + const accessibleNamespaceIds = accessibleNamespaces.map((n) => n.id); + if (accessibleNamespaceIds.length > 0) { + await tx + .delete(namespaceLoginMethods) + .where(inArray(namespaceLoginMethods.namespaceId, accessibleNamespaceIds)) + .execute(); + } + } + + const rows: Array<{ + namespaceId: string; + ssoProviderId?: string | null; + isPasswordLogin?: boolean; + isGoogleLogin?: boolean; + isGithubLogin?: boolean; + }> = []; + for (const mapping of input.mappings) { + for (const ssoProviderId of mapping.ssoProviderIds) { + rows.push({ namespaceId: mapping.namespaceId, ssoProviderId }); + } + if (mapping.allowPasswordLogin || mapping.allowGoogleLogin || mapping.allowGithubLogin) { + rows.push({ + namespaceId: mapping.namespaceId, + isPasswordLogin: mapping.allowPasswordLogin, + isGoogleLogin: mapping.allowGoogleLogin, + isGithubLogin: mapping.allowGithubLogin, + }); + } + } + if (rows.length > 0) { + await tx.insert(namespaceLoginMethods).values(rows).execute(); + } + }); + } +} diff --git a/controlplane/src/core/repositories/NamespaceRepository.ts b/controlplane/src/core/repositories/NamespaceRepository.ts index b7b28b03c0..479f00446f 100644 --- a/controlplane/src/core/repositories/NamespaceRepository.ts +++ b/controlplane/src/core/repositories/NamespaceRepository.ts @@ -3,9 +3,12 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; import { NamespaceDTO } from '../../types/index.js'; import { RBACEvaluator } from '../services/RBACEvaluator.js'; +import { traced } from '../tracing.js'; +import { applyIdpNamespaceGate } from '../util.js'; export const DefaultNamespace = 'default'; +@traced export class NamespaceRepository { constructor( private db: PostgresJsDatabase, @@ -115,12 +118,22 @@ export class NamespaceRepository { .where(and(eq(schema.namespaces.name, data.name), eq(schema.namespaces.organizationId, this.organizationId))); } + /** + * Returns `false` when the actor has no access (caller should short-circuit + * to an empty list). Returns `true` after pushing any required filtering + * conditions onto the supplied array. + */ private async applyRbacConditionsToQuery( rbac: RBACEvaluator | undefined, conditions: (SQL | undefined)[], - ): Promise { + ): Promise { + // Apply the IdP gate regardless of RBAC level (org viewer/admin still gated by login method). + if (!applyIdpNamespaceGate(rbac, schema.namespaces.id, conditions)) { + return false; + } + if (!rbac || rbac.isOrganizationViewer) { - return; + return true; } const namespaceAdmin = rbac.ruleFor('namespace-admin'); @@ -133,7 +146,7 @@ export class NamespaceRepository { // The actor have access to every resource (rbac.namespaces.length === 0 && rbac.resources.length === 0) ) { - return; + return true; } const namespacesBasedOnResources: string[] = []; @@ -152,12 +165,16 @@ export class NamespaceRepository { } else { conditions.push(inArray(schema.namespaces.id, [...new Set([...rbac.namespaces, ...namespacesBasedOnResources])])); } + + return true; } public async list(rbac?: RBACEvaluator) { const conditions: (SQL | undefined)[] = [eq(schema.namespaces.organizationId, this.organizationId)]; - await this.applyRbacConditionsToQuery(rbac, conditions); + if (!(await this.applyRbacConditionsToQuery(rbac, conditions))) { + return []; + } return this.db.query.namespaces.findMany({ where: and(...conditions) }); } diff --git a/controlplane/src/core/repositories/OidcRepository.ts b/controlplane/src/core/repositories/OidcRepository.ts index 41616374ce..47858ea179 100644 --- a/controlplane/src/core/repositories/OidcRepository.ts +++ b/controlplane/src/core/repositories/OidcRepository.ts @@ -1,37 +1,91 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; -import { eq } from 'drizzle-orm'; +import { and, eq } from 'drizzle-orm'; import * as schema from '../../db/schema.js'; import { oidcProviders } from '../../db/schema.js'; +import { traced } from '../tracing.js'; +const baseProviderColumns = { + id: oidcProviders.id, + name: oidcProviders.name, + endpoint: oidcProviders.endpoint, + alias: oidcProviders.alias, + organizationId: oidcProviders.organizationId, + createdAt: oidcProviders.createdAt, +} as const; + +@traced export class OidcRepository { constructor(private db: PostgresJsDatabase) {} public async addOidcProvider(input: { name: string; organizationId: string; endpoint: string; alias: string }) { await this.db .insert(oidcProviders) - .values({ name: input.name, organizationId: input.organizationId, endpoint: input.endpoint, alias: input.alias }) + .values({ + name: input.name, + organizationId: input.organizationId, + endpoint: input.endpoint, + alias: input.alias, + }) .execute(); } - public async getOidcProvider(input: { organizationId: string }) { - const providers = await this.db - .select({ - id: oidcProviders.id, - name: oidcProviders.name, - endpoint: oidcProviders.endpoint, - alias: oidcProviders.alias, - }) + public listOidcProvidersByOrganizationId(input: { organizationId: string }) { + return this.db + .select(baseProviderColumns) .from(oidcProviders) .where(eq(oidcProviders.organizationId, input.organizationId)) + .orderBy(oidcProviders.createdAt) .execute(); - if (providers.length === 0) { - return undefined; - } - // as only one provider per organization - return providers[0]; } - public async deleteOidcProvider(input: { organizationId: string }) { - await this.db.delete(oidcProviders).where(eq(oidcProviders.organizationId, input.organizationId)).execute(); + public async getOidcProviderById(input: { id: string; organizationId: string }) { + const rows = await this.db + .select(baseProviderColumns) + .from(oidcProviders) + .where(and(eq(oidcProviders.id, input.id), eq(oidcProviders.organizationId, input.organizationId))) + .limit(1) + .execute(); + return rows[0]; + } + + public async getOidcProviderByAlias(input: { alias: string; organizationId: string }) { + const rows = await this.db + .select(baseProviderColumns) + .from(oidcProviders) + .where(and(eq(oidcProviders.alias, input.alias), eq(oidcProviders.organizationId, input.organizationId))) + .limit(1) + .execute(); + return rows[0]; + } + + /** + * Resolves a provider by its globally-unique alias without org scoping. Only use + * when the alias comes from a trusted source (e.g. a session row), never raw user input. + */ + public async getOidcProviderByAliasUnscoped(input: { alias: string }) { + const rows = await this.db + .select(baseProviderColumns) + .from(oidcProviders) + .where(eq(oidcProviders.alias, input.alias)) + .limit(1) + .execute(); + return rows[0]; + } + + /** + * Returns the org's first OIDC provider. Used by cross-feature flows (group + * sync, user/org management) that only need to know whether the org has SSO + * configured, not which specific provider. + */ + public async getOidcProvider(input: { organizationId: string }) { + const rows = await this.listOidcProvidersByOrganizationId(input); + return rows[0]; + } + + public async deleteOidcProviderById(input: { id: string; organizationId: string }) { + await this.db + .delete(oidcProviders) + .where(and(eq(oidcProviders.id, input.id), eq(oidcProviders.organizationId, input.organizationId))) + .execute(); } } diff --git a/controlplane/src/core/repositories/OnboardingRepository.ts b/controlplane/src/core/repositories/OnboardingRepository.ts new file mode 100644 index 0000000000..92af68177a --- /dev/null +++ b/controlplane/src/core/repositories/OnboardingRepository.ts @@ -0,0 +1,48 @@ +import { and, eq } from 'drizzle-orm'; +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import * as schema from '../../db/schema.js'; + +export class OnboardingRepository { + constructor( + private db: PostgresJsDatabase, + private organizationId: string, + ) {} + + public async createOrUpdate({ userId }: { userId: string }) { + const values = { + userId, + organizationId: this.organizationId, + }; + + const result = await this.db + .insert(schema.onboarding) + .values(values) + .onConflictDoUpdate({ + target: [schema.onboarding.userId, schema.onboarding.organizationId, schema.onboarding.version], + set: { + finishedAt: null, + }, + }) + .returning(); + + return result[0]; + } + + public async finish(userId: string) { + const result = await this.db + .update(schema.onboarding) + .set({ finishedAt: new Date() }) + .where(and(eq(schema.onboarding.organizationId, this.organizationId), eq(schema.onboarding.userId, userId))) + .returning(); + + return result[0]; + } + + public async getByUserId(userId: string) { + const result = await this.db.query.onboarding.findFirst({ + where: and(eq(schema.onboarding.organizationId, this.organizationId), eq(schema.onboarding.userId, userId)), + }); + + return result ?? undefined; + } +} diff --git a/controlplane/src/core/repositories/OperationsRepository.ts b/controlplane/src/core/repositories/OperationsRepository.ts index 9caf4db708..3483c24ab2 100644 --- a/controlplane/src/core/repositories/OperationsRepository.ts +++ b/controlplane/src/core/repositories/OperationsRepository.ts @@ -1,10 +1,14 @@ +import crypto from 'node:crypto'; import { OverrideChange } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; -import { aliasedTable, and, asc, desc, eq, isNull, sql } from 'drizzle-orm'; +import { aliasedTable, and, asc, count, desc, eq, isNull, sql } from 'drizzle-orm'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { PlainMessage } from '@bufbuild/protobuf'; +import { FastifyBaseLogger } from 'fastify'; import { DBSchemaChangeType } from '../../db/models.js'; import * as schema from '../../db/schema.js'; import { federatedGraphClients, federatedGraphPersistedOperations, users } from '../../db/schema.js'; +import type { BlobStorage } from '../blobstorage/index.js'; +import { createManifestBlobStoragePath } from '../bufservices/persisted-operation/utils.js'; import { ClientDTO, PersistedOperationDTO, @@ -13,8 +17,16 @@ import { SchemaCheckDetailsDTO, UpdatedPersistedOperation, } from '../../types/index.js'; +import { traced } from '../tracing.js'; import { SchemaCheckRepository } from './SchemaCheckRepository.js'; +export interface PQLManifest { + version: 1; + revision: string; + generatedAt: string; + operations: Record; // sha256 hash -> operation body +} + type ChangeOverride = IgnoreAllOverride & { changeType: DBSchemaChangeType; path: string | null; @@ -29,6 +41,7 @@ type IgnoreAllOverride = { hash: string; }; +@traced export class OperationsRepository { constructor( private db: PostgresJsDatabase, @@ -227,6 +240,38 @@ export class OperationsRepository { return result!.id; } + public async getAllPersistedOperationsForGraph(): Promise< + Array<{ + hash: string; + operationContent: string; + operationId: string; + operationNames: string[]; + clientName: string; + }> + > { + const results = await this.db + .select({ + hash: federatedGraphPersistedOperations.hash, + operationContent: federatedGraphPersistedOperations.operationContent, + operationId: federatedGraphPersistedOperations.operationId, + operationNames: federatedGraphPersistedOperations.operationNames, + clientName: federatedGraphClients.name, + }) + .from(federatedGraphPersistedOperations) + .innerJoin(federatedGraphClients, eq(federatedGraphClients.id, federatedGraphPersistedOperations.clientId)) + .where(eq(federatedGraphPersistedOperations.federatedGraphId, this.federatedGraphId)); + + return results + .filter((r) => r.operationContent != null) + .map((r) => ({ + hash: r.hash, + operationContent: r.operationContent!, + operationId: r.operationId, + operationNames: r.operationNames ?? [], + clientName: r.clientName, + })); + } + public async getRegisteredClients(): Promise { const fedGraphClients = await this.db.query.federatedGraphClients.findMany({ where: eq(federatedGraphClients.federatedGraphId, this.federatedGraphId), @@ -443,7 +488,7 @@ export class OperationsRepository { }; } - public getConsolidatedOverridesView(data: { namespaceId: string }) { + public async getConsolidatedOverridesView(data: { namespaceId: string; limit: number; offset: number }) { const change = this.db .select({ hash: schema.operationChangeOverrides.hash, @@ -484,7 +529,7 @@ export class OperationsRepository { // We need to retrieve a consolidated view of overrides from both tables. // There is no guarantee that an entry for hash exists in both. - return this.db + const baseQuery = this.db .select({ hash: sql`coalesce(${change.hash}, ${ignore.hash})`, name: sql`coalesce(${change.name}, ${ignore.name})`, @@ -497,7 +542,75 @@ export class OperationsRepository { .from(change) .fullJoin(ignore, and(eq(change.hash, ignore.hash), eq(change.namespaceId, ignore.namespaceId))) .leftJoin(changeCounts, and(eq(change.hash, changeCounts.hash), eq(change.namespaceId, changeCounts.namespaceId))) - .orderBy(({ name, hash }) => [asc(name), asc(hash)]); + .orderBy(({ name, hash }) => [asc(name), asc(hash)]) + .limit(data.limit) + .offset(data.offset); + + // For pagination, we need the total count of unique operations that have an override. This is obtained by counting the full join of the two tables. + const countQuery = this.db + .select({ + count: count(), + }) + .from(change) + .fullJoin(ignore, and(eq(change.hash, ignore.hash), eq(change.namespaceId, ignore.namespaceId))); + + const [overrides, countResult] = await Promise.all([baseQuery, countQuery]); + + return { + overrides, + totalCount: countResult[0]?.count ?? 0, + }; + } + + public async generateAndUploadManifest(params: { + organizationId: string; + blobStorage: BlobStorage; + logger: FastifyBaseLogger; + }): Promise<{ revision: string; operationCount: number }> { + const { organizationId, blobStorage, logger } = params; + + const allOperations = await this.getAllPersistedOperationsForGraph(); + + if (allOperations.length === 0) { + logger.warn( + { federatedGraphId: this.federatedGraphId }, + 'No persisted operations with content found for manifest generation', + ); + } + + const operations: Record = {}; + for (const op of allOperations) { + operations[op.operationId] = op.operationContent; + } + + // Compute revision as SHA256 of the deterministic JSON serialization (sorted keys) + const sortedKeys = Object.keys(operations).sort(); + const sortedOperations: Record = {}; + for (const key of sortedKeys) { + sortedOperations[key] = operations[key]; + } + const serialized = JSON.stringify(sortedOperations); + const revision = crypto.createHash('sha256').update(serialized).digest('hex'); + + const manifest: PQLManifest = { + version: 1, + revision, + generatedAt: new Date().toISOString(), + operations: sortedOperations, + }; + + const path = createManifestBlobStoragePath({ organizationId, fedGraphId: this.federatedGraphId }); + + await blobStorage.putObject({ + key: path, + body: Buffer.from(JSON.stringify(manifest), 'utf8'), + contentType: 'application/json; charset=utf-8', + metadata: { version: revision }, + }); + + logger.debug({ revision, operationCount: allOperations.length, path }, 'PQL manifest generated and uploaded'); + + return { revision, operationCount: allOperations.length }; } private static createPersistedOperationDTO({ diff --git a/controlplane/src/core/repositories/OrganizationGroupRepository.ts b/controlplane/src/core/repositories/OrganizationGroupRepository.ts index 64f6719f6a..fed654fb96 100644 --- a/controlplane/src/core/repositories/OrganizationGroupRepository.ts +++ b/controlplane/src/core/repositories/OrganizationGroupRepository.ts @@ -5,7 +5,9 @@ import { OrganizationGroupDTO } from '../../types/index.js'; import { OrganizationRole } from '../../db/models.js'; import { organizationRoleEnum } from '../../db/schema.js'; import { defaultGroupDescription } from '../test-util.js'; +import { traced } from '../tracing.js'; +@traced export class OrganizationGroupRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/OrganizationInvitationRepository.ts b/controlplane/src/core/repositories/OrganizationInvitationRepository.ts index ca2d9eb2b2..7e8472ae04 100644 --- a/controlplane/src/core/repositories/OrganizationInvitationRepository.ts +++ b/controlplane/src/core/repositories/OrganizationInvitationRepository.ts @@ -5,10 +5,12 @@ import { FastifyBaseLogger } from 'fastify'; import * as schema from '../../db/schema.js'; import { organizationInvitations, organizations, users } from '../../db/schema.js'; import { OrganizationDTO, OrganizationInvitationDTO, UserDTO } from '../../types/index.js'; +import { traced } from '../tracing.js'; import { OrganizationRepository } from './OrganizationRepository.js'; import { UserRepository } from './UserRepository.js'; import { OrganizationGroupRepository } from './OrganizationGroupRepository.js'; +@traced export class OrganizationInvitationRepository { constructor( private logger: FastifyBaseLogger, diff --git a/controlplane/src/core/repositories/OrganizationLoginMethodRepository.ts b/controlplane/src/core/repositories/OrganizationLoginMethodRepository.ts new file mode 100644 index 0000000000..276b52a4a0 --- /dev/null +++ b/controlplane/src/core/repositories/OrganizationLoginMethodRepository.ts @@ -0,0 +1,191 @@ +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { and, eq, inArray, isNotNull, isNull, notInArray } from 'drizzle-orm'; +import * as schema from '../../db/schema.js'; +import { namespaces, namespaceLoginMethods, organizationLoginMethods } from '../../db/schema.js'; +import { traced } from '../tracing.js'; +import { loginMethodMatchesRow } from '../util.js'; +import type { LoginMethod } from '../../types/index.js'; + +@traced +export class OrganizationLoginMethodRepository { + constructor(private db: PostgresJsDatabase) {} + + /** + * Whether the given login method may access the organization. + * - API keys are never gated. + * - An org with zero rows is default-open (every method allowed). + * - Otherwise only the configured methods are allowed. + */ + async isLoginMethodAllowed(input: { organizationId: string; loginMethod: LoginMethod }): Promise { + if (input.loginMethod.type === 'api-key') { + return true; + } + + const rows = await this.db + .select({ + ssoProviderId: organizationLoginMethods.ssoProviderId, + isPasswordLogin: organizationLoginMethods.isPasswordLogin, + isGoogleLogin: organizationLoginMethods.isGoogleLogin, + isGithubLogin: organizationLoginMethods.isGithubLogin, + }) + .from(organizationLoginMethods) + .where(eq(organizationLoginMethods.organizationId, input.organizationId)) + .execute(); + + if (rows.length === 0) { + return true; + } + + return rows.some((r) => loginMethodMatchesRow(input.loginMethod, r)); + } + + /** Returns the org's allowed-method config for the settings UI. */ + async getAllowedLoginMethods(input: { organizationId: string }): Promise<{ + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + allowedSsoProviderIds: string[]; + isRestricted: boolean; + }> { + const rows = await this.db + .select({ + ssoProviderId: organizationLoginMethods.ssoProviderId, + isPasswordLogin: organizationLoginMethods.isPasswordLogin, + isGoogleLogin: organizationLoginMethods.isGoogleLogin, + isGithubLogin: organizationLoginMethods.isGithubLogin, + }) + .from(organizationLoginMethods) + .where(eq(organizationLoginMethods.organizationId, input.organizationId)) + .execute(); + + const result = { + allowPasswordLogin: false, + allowGoogleLogin: false, + allowGithubLogin: false, + allowedSsoProviderIds: [] as string[], + isRestricted: rows.length > 0, + }; + for (const row of rows) { + if (row.ssoProviderId) { + result.allowedSsoProviderIds.push(row.ssoProviderId); + } + if (row.isPasswordLogin) { + result.allowPasswordLogin = true; + } + if (row.isGoogleLogin) { + result.allowGoogleLogin = true; + } + if (row.isGithubLogin) { + result.allowGithubLogin = true; + } + } + return result; + } + + /** + * Replaces the org's allowed login methods and reconciles namespace mappings + * so they stay within the new allow-list, in a single transaction. + * + * Passing all-false flags and an empty provider list clears the restriction + * (the org returns to default-open) and imposes no bound on namespaces. + */ + async setAllowedLoginMethods(input: { + organizationId: string; + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + allowedSsoProviderIds: string[]; + }): Promise { + await this.db.transaction(async (tx) => { + await tx + .delete(organizationLoginMethods) + .where(eq(organizationLoginMethods.organizationId, input.organizationId)) + .execute(); + + const rows: Array<{ + organizationId: string; + ssoProviderId?: string | null; + isPasswordLogin?: boolean; + isGoogleLogin?: boolean; + isGithubLogin?: boolean; + }> = []; + for (const ssoProviderId of input.allowedSsoProviderIds) { + rows.push({ organizationId: input.organizationId, ssoProviderId }); + } + if (input.allowPasswordLogin || input.allowGoogleLogin || input.allowGithubLogin) { + rows.push({ + organizationId: input.organizationId, + isPasswordLogin: input.allowPasswordLogin, + isGoogleLogin: input.allowGoogleLogin, + isGithubLogin: input.allowGithubLogin, + }); + } + if (rows.length > 0) { + await tx.insert(organizationLoginMethods).values(rows).execute(); + } + + // Unrestricted (empty allow-list) imposes no bound on namespaces. + if (rows.length === 0) { + return; + } + + const orgNamespaceIds = tx + .select({ id: namespaces.id }) + .from(namespaces) + .where(eq(namespaces.organizationId, input.organizationId)); + + // Drop namespace SSO rows whose provider is no longer allowed. + const ssoConditions = [ + inArray(namespaceLoginMethods.namespaceId, orgNamespaceIds), + isNotNull(namespaceLoginMethods.ssoProviderId), + ]; + if (input.allowedSsoProviderIds.length > 0) { + ssoConditions.push(notInArray(namespaceLoginMethods.ssoProviderId, input.allowedSsoProviderIds)); + } + await tx + .delete(namespaceLoginMethods) + .where(and(...ssoConditions)) + .execute(); + + // Reconcile each namespace built-in row (ssoProviderId IS NULL) against the new + // org allow-list: a row keeps only the methods that are still allowed. This runs + // only when an admin tightens the org (rare) over the org's restricted + // namespaces (few), so a simple read-then-write per row is clear and sufficient. + const builtinRows = await tx + .select({ + id: namespaceLoginMethods.id, + isPasswordLogin: namespaceLoginMethods.isPasswordLogin, + isGoogleLogin: namespaceLoginMethods.isGoogleLogin, + isGithubLogin: namespaceLoginMethods.isGithubLogin, + }) + .from(namespaceLoginMethods) + .where( + and(inArray(namespaceLoginMethods.namespaceId, orgNamespaceIds), isNull(namespaceLoginMethods.ssoProviderId)), + ) + .execute(); + + for (const row of builtinRows) { + const next = { + isPasswordLogin: row.isPasswordLogin && input.allowPasswordLogin, + isGoogleLogin: row.isGoogleLogin && input.allowGoogleLogin, + isGithubLogin: row.isGithubLogin && input.allowGithubLogin, + }; + + const unchanged = + next.isPasswordLogin === row.isPasswordLogin && + next.isGoogleLogin === row.isGoogleLogin && + next.isGithubLogin === row.isGithubLogin; + if (unchanged) { + continue; + } + + if (!next.isPasswordLogin && !next.isGoogleLogin && !next.isGithubLogin) { + // No allowed method remains, so the namespace falls back to default-open. + await tx.delete(namespaceLoginMethods).where(eq(namespaceLoginMethods.id, row.id)).execute(); + } else { + await tx.update(namespaceLoginMethods).set(next).where(eq(namespaceLoginMethods.id, row.id)).execute(); + } + } + }); + } +} diff --git a/controlplane/src/core/repositories/OrganizationRepository.ts b/controlplane/src/core/repositories/OrganizationRepository.ts index 4879a81a9d..9d68f9be04 100644 --- a/controlplane/src/core/repositories/OrganizationRepository.ts +++ b/controlplane/src/core/repositories/OrganizationRepository.ts @@ -40,6 +40,7 @@ import { BlobStorage } from '../blobstorage/index.js'; import { delayForManualOrgDeletionInDays, delayForOrgAuditLogsDeletionInDays } from '../constants.js'; import { DeleteOrganizationAuditLogsQueue } from '../workers/DeleteOrganizationAuditLogsWorker.js'; import { RBACEvaluator } from '../services/RBACEvaluator.js'; +import { traced } from '../tracing.js'; import { BillingRepository } from './BillingRepository.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; import { TargetRepository } from './TargetRepository.js'; @@ -48,6 +49,7 @@ import { OrganizationGroupRepository } from './OrganizationGroupRepository.js'; /** * Repository for organization related operations. */ +@traced export class OrganizationRepository { protected billing: BillingRepository; @@ -1404,6 +1406,7 @@ export class OrganizationRepository { 'feature-flags': 0, 'field-pruning-grace-period': 0, plugins: 0, + 'persisted-operations': 3000, users: 25, requests: 30, // Boolean features @@ -1418,6 +1421,8 @@ export class OrganizationRepository { sso: false, 'subgraph-check-extensions': false, support: false, + 'split-config-loading': false, + 'login-method-restrictions': false, }; for (const feature of features) { diff --git a/controlplane/src/core/repositories/PlaygroundScriptsRepository.ts b/controlplane/src/core/repositories/PlaygroundScriptsRepository.ts index 5cc69caccb..e1d8cdc1ba 100644 --- a/controlplane/src/core/repositories/PlaygroundScriptsRepository.ts +++ b/controlplane/src/core/repositories/PlaygroundScriptsRepository.ts @@ -1,7 +1,9 @@ import { and, asc, eq } from 'drizzle-orm'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; +import { traced } from '../tracing.js'; +@traced export class PlaygroundScriptsRepository { constructor( private db: PostgresJsDatabase, diff --git a/controlplane/src/core/repositories/PluginRepository.ts b/controlplane/src/core/repositories/PluginRepository.ts index 16ecf68285..88e4e9929e 100644 --- a/controlplane/src/core/repositories/PluginRepository.ts +++ b/controlplane/src/core/repositories/PluginRepository.ts @@ -3,7 +3,9 @@ import { FastifyBaseLogger } from 'fastify'; import { and, eq, count } from 'drizzle-orm'; import * as schema from '../../db/schema.js'; import { subgraphs, targets } from '../../db/schema.js'; +import { traced } from '../tracing.js'; +@traced export class PluginRepository { constructor( private db: PostgresJsDatabase, diff --git a/controlplane/src/core/repositories/ProposalRepository.ts b/controlplane/src/core/repositories/ProposalRepository.ts index 6363f7beb0..6ab102e4dc 100644 --- a/controlplane/src/core/repositories/ProposalRepository.ts +++ b/controlplane/src/core/repositories/ProposalRepository.ts @@ -1,4 +1,4 @@ -import { and, count, desc, eq, gt, lt, SQL } from 'drizzle-orm'; +import { and, count, desc, eq, gt, inArray, lt, SQL } from 'drizzle-orm'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { joinLabel, splitLabel } from '@wundergraph/cosmo-shared'; import { ProposalState, ProposalOrigin } from '../../db/models.js'; @@ -13,11 +13,13 @@ import { } from '../../types/index.js'; import { getDiffBetweenGraphs } from '../composition/schemaCheck.js'; import { isCheckSuccessful, normalizeLabels } from '../util.js'; +import { traced } from '../tracing.js'; import { SchemaCheckRepository } from './SchemaCheckRepository.js'; /** * Repository for organization related operations. */ +@traced export class ProposalRepository { constructor( private db: PostgresJsDatabase, @@ -450,12 +452,14 @@ export class ProposalRepository { return proposalConfig[0]; } - public async getApprovedProposalSubgraphsBySubgraph({ + public async getProposalSubgraphsBySubgraph({ subgraphName, namespaceId, + approvedOnly = false, }: { subgraphName: string; namespaceId: string; + approvedOnly?: boolean; }) { const proposalSubgraphs = await this.db .select({ @@ -472,8 +476,11 @@ export class ProposalRepository { .where( and( eq(schema.proposalSubgraphs.subgraphName, subgraphName), - eq(schema.proposals.state, 'APPROVED'), eq(schema.targets.namespaceId, namespaceId), + eq(schema.targets.organizationId, this.organizationId), + approvedOnly + ? eq(schema.proposals.state, 'APPROVED') + : inArray(schema.proposals.state, ['DRAFT', 'APPROVED']), ), ); @@ -487,6 +494,7 @@ export class ProposalRepository { schemaSDL, routerCompatibilityVersion, isDeleted, + approvedOnly = false, }: { subgraphName: string; namespaceId: string; @@ -494,11 +502,9 @@ export class ProposalRepository { schemaSDL: string; routerCompatibilityVersion: string; isDeleted: boolean; + approvedOnly?: boolean; }): Promise<{ proposalId: string; proposalSubgraphId: string }[]> { - const proposalSubgraphs = await this.getApprovedProposalSubgraphsBySubgraph({ - subgraphName, - namespaceId, - }); + const proposalSubgraphs = await this.getProposalSubgraphsBySubgraph({ subgraphName, namespaceId, approvedOnly }); const matches: { proposalId: string; proposalSubgraphId: string }[] = []; diff --git a/controlplane/src/core/repositories/SchemaCheckRepository.ts b/controlplane/src/core/repositories/SchemaCheckRepository.ts index c5b1270079..dbc06e0708 100644 --- a/controlplane/src/core/repositories/SchemaCheckRepository.ts +++ b/controlplane/src/core/repositories/SchemaCheckRepository.ts @@ -16,7 +16,7 @@ import { and, eq, ilike, inArray, or, SQL, sql } from 'drizzle-orm'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { FastifyBaseLogger } from 'fastify'; import { GraphQLSchema, parse } from 'graphql'; -import _ from 'lodash'; +import { cloneDeep } from 'lodash-es'; import pLimit from 'p-limit'; import { NewSchemaChangeOperationUsage, ProposalMatch, SchemaCheckChangeAction } from '../../db/models.js'; import * as schema from '../../db/schema.js'; @@ -56,6 +56,7 @@ import { import { OrganizationWebhookService } from '../webhooks/OrganizationWebhookService.js'; import { BlobStorage } from '../blobstorage/index.js'; import { defaultRetentionLimitInDays } from '../constants.js'; +import { traced } from '../tracing.js'; import { FederatedGraphConfig, FederatedGraphRepository } from './FederatedGraphRepository.js'; import { OrganizationRepository } from './OrganizationRepository.js'; import { ProposalRepository } from './ProposalRepository.js'; @@ -64,6 +65,7 @@ import { SchemaLintRepository } from './SchemaLintRepository.js'; import { SubgraphRepository } from './SubgraphRepository.js'; import { NamespaceRepository } from './NamespaceRepository.js'; +@traced export class SchemaCheckRepository { constructor(private db: PostgresJsDatabase) {} @@ -284,7 +286,7 @@ export class SchemaCheckRepository { await Promise.all(promises); } - private mapChangesFromDriverValue = (val: any) => { + private mapChangesFromDriverValue(val: any) { if (typeof val === 'string' && val.length > 0 && val !== '{}') { const pairs = val.slice(2, -2).split('","'); @@ -294,7 +296,7 @@ export class SchemaCheckRepository { }); } return []; - }; + } public async checkClientTrafficAgainstOverrides(data: { changes: { id: string; changeType: string | null; path: string | null }[]; @@ -303,7 +305,7 @@ export class SchemaCheckRepository { }) { let hasUnsafeClientTraffic = false; - const result = _.cloneDeep(data.inspectorResultsByChangeId); + const result = cloneDeep(data.inspectorResultsByChangeId); const changeActionsByOperationHash: Map = new Map(); @@ -713,6 +715,7 @@ export class SchemaCheckRepository { chClient, skipProposalMatchCheck, webhookService, + webhookProxyUrl, }: { actorId: string; blobStorage: BlobStorage; @@ -735,6 +738,7 @@ export class SchemaCheckRepository { chClient?: ClickHouseClient; skipProposalMatchCheck: boolean; webhookService: OrganizationWebhookService; + webhookProxyUrl?: string; }) { const breakingChanges: SchemaChange[] = []; const nonBreakingChanges: SchemaChange[] = []; @@ -955,7 +959,7 @@ export class SchemaCheckRepository { }); } - let proposalMatchMessage: string | undefined; + let proposalMatchMessage = ''; for (const [subgraphName, checkSubgraph] of checkSubgraphs.entries()) { const { subgraph, @@ -986,7 +990,7 @@ export class SchemaCheckRepository { if (matches.length === 0) { if (proposalConfig.checkSeverityLevel === 'warn') { - proposalMatchMessage += `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved proposal.\n`; + proposalMatchMessage += `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved or draft proposals.\n`; } else { await this.update({ schemaCheckID, @@ -1000,7 +1004,7 @@ export class SchemaCheckRepository { return { response: { code: EnumStatusCode.ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL, - details: `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved proposal.`, + details: `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved or draft proposals.`, }, breakingChanges: [], nonBreakingChanges: [], @@ -1012,7 +1016,7 @@ export class SchemaCheckRepository { graphPruneWarnings: [], graphPruneErrors: [], compositionWarnings: [], - proposalMatchMessage: `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved proposal.`, + proposalMatchMessage: `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved or draft proposals.`, }; } } @@ -1451,6 +1455,7 @@ export class SchemaCheckRepository { ignoreExternalKeys, }, webhookService, + webhookProxyUrl, }); await this.addLinkedSchemaCheck({ @@ -1477,7 +1482,7 @@ export class SchemaCheckRepository { graphPruneErrors, compositionWarnings, operationUsageStats: collectOperationUsageStats(inspectedOperations), - proposalMatchMessage, + proposalMatchMessage: proposalMatchMessage || undefined, isLinkedTrafficCheckFailed, isLinkedPruningCheckFailed, }; diff --git a/controlplane/src/core/repositories/SchemaGraphPruningRepository.ts b/controlplane/src/core/repositories/SchemaGraphPruningRepository.ts index 71e0836a41..4f48df18f9 100644 --- a/controlplane/src/core/repositories/SchemaGraphPruningRepository.ts +++ b/controlplane/src/core/repositories/SchemaGraphPruningRepository.ts @@ -19,10 +19,12 @@ import { import { ClickHouseClient } from '../clickhouse/index.js'; import { GetDiffBetweenGraphsSuccess } from '../composition/schemaCheck.js'; import SchemaGraphPruner from '../services/SchemaGraphPruner.js'; +import { traced } from '../tracing.js'; import { UsageRepository } from './analytics/UsageRepository.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; import { SubgraphRepository } from './SubgraphRepository.js'; +@traced export class SchemaGraphPruningRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/SchemaLintRepository.ts b/controlplane/src/core/repositories/SchemaLintRepository.ts index d7a5237161..6cc0c8f57e 100644 --- a/controlplane/src/core/repositories/SchemaLintRepository.ts +++ b/controlplane/src/core/repositories/SchemaLintRepository.ts @@ -5,7 +5,9 @@ import * as schema from '../../db/schema.js'; import { namespaceLintCheckConfig, schemaCheckLintAction, schemaCheckSubgraphs } from '../../db/schema.js'; import { SchemaLintDTO, LintSeverityLevel, LintIssueResult, LintRule, SchemaLintIssues } from '../../types/index.js'; import SchemaLinter from '../services/SchemaLinter.js'; +import { traced } from '../tracing.js'; +@traced export class SchemaLintRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/SubgraphCheckExtensionsRepository.ts b/controlplane/src/core/repositories/SubgraphCheckExtensionsRepository.ts index 24b4856311..775f45206e 100644 --- a/controlplane/src/core/repositories/SubgraphCheckExtensionsRepository.ts +++ b/controlplane/src/core/repositories/SubgraphCheckExtensionsRepository.ts @@ -1,7 +1,9 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { eq } from 'drizzle-orm'; import * as schema from '../../db/schema.js'; +import { traced } from '../tracing.js'; +@traced export class SubgraphCheckExtensionsRepository { constructor(private db: PostgresJsDatabase) {} diff --git a/controlplane/src/core/repositories/SubgraphRepository.ts b/controlplane/src/core/repositories/SubgraphRepository.ts index 6dc9976645..4a9601132c 100644 --- a/controlplane/src/core/repositories/SubgraphRepository.ts +++ b/controlplane/src/core/repositories/SubgraphRepository.ts @@ -33,6 +33,7 @@ import { users, } from '../../db/schema.js'; import { + FeatureFlagDTO, FederatedGraphDTO, GetChecksResponse, Label, @@ -47,6 +48,7 @@ import { SubgraphDTO, SubgraphListFilterOptions, SubgraphMemberDTO, + ComposeAndDeployResult, } from '../../types/index.js'; import { BlobStorage } from '../blobstorage/index.js'; import { ClickHouseClient } from '../clickhouse/index.js'; @@ -60,12 +62,15 @@ import { SchemaUsageTrafficInspector, } from '../services/SchemaUsageTrafficInspector.js'; import { + applyIdpNamespaceGate, getFederatedGraphRouterCompatibilityVersion, hasLabelsChanged, normalizeLabels, sanitizeReadme, } from '../util.js'; import { OrganizationWebhookService } from '../webhooks/OrganizationWebhookService.js'; +import { traced } from '../tracing.js'; +import type { CompositionService } from '../services/CompositionService.js'; import { ContractRepository } from './ContractRepository.js'; import { FeatureFlagRepository } from './FeatureFlagRepository.js'; import { FederatedGraphRepository } from './FederatedGraphRepository.js'; @@ -76,12 +81,30 @@ import { SchemaCheckRepository } from './SchemaCheckRepository.js'; import { SchemaGraphPruningRepository } from './SchemaGraphPruningRepository.js'; import { SchemaLintRepository } from './SchemaLintRepository.js'; import { TargetRepository } from './TargetRepository.js'; +import { OrganizationRepository } from './OrganizationRepository.js'; type SubscriptionProtocol = 'ws' | 'sse' | 'sse_post'; +export type UpdateSubgraphSchemaData = { + targetId: string; + labels: Label[]; + updatedBy: string; + namespaceId: string; + unsetLabels: boolean; + routingUrl?: string; + schemaSDL?: string; + subscriptionUrl?: string; + subscriptionProtocol?: SubscriptionProtocol; + websocketSubprotocol?: WebsocketSubprotocol; + isV2Graph?: boolean; + readme?: string; + proto?: ProtoSubgraph; +}; + /** * Repository for managing subgraphs. */ +@traced export class SubgraphRepository { constructor( private logger: FastifyBaseLogger, @@ -226,38 +249,18 @@ export class SubgraphRepository { } public async update( - data: { - targetId: string; - labels: Label[]; - updatedBy: string; - namespaceId: string; - unsetLabels: boolean; - routingUrl?: string; - schemaSDL?: string; - subscriptionUrl?: string; - subscriptionProtocol?: SubscriptionProtocol; - websocketSubprotocol?: WebsocketSubprotocol; - isV2Graph?: boolean; - readme?: string; - proto?: ProtoSubgraph; - }, - blobStorage: BlobStorage, - admissionConfig: { - webhookJWTSecret: string; - cdnBaseUrl: string; - }, - chClient: ClickHouseClient, - compositionOptions?: CompositionOptions, - ): Promise<{ - compositionErrors: PlainMessage[]; - compositionWarnings: PlainMessage[]; - deploymentErrors: PlainMessage[]; - updatedFederatedGraphs: FederatedGraphDTO[]; - subgraphChanged: boolean; - }> { + data: UpdateSubgraphSchemaData, + compositionService: CompositionService, + ): Promise< + ComposeAndDeployResult & { + updatedFederatedGraphs: FederatedGraphDTO[]; + subgraphChanged: boolean; + } + > { const deploymentErrors: PlainMessage[] = []; const compositionErrors: PlainMessage[] = []; const compositionWarnings: PlainMessage[] = []; + // The collection of federated graphs that will be potentially re-composed const updatedFederatedGraphs: FederatedGraphDTO[] = []; let subgraphChanged = false; @@ -265,81 +268,198 @@ export class SubgraphRepository { await this.db.transaction(async (tx) => { const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); - const subgraphRepo = new SubgraphRepository(this.logger, tx, this.organizationId); - const targetRepo = new TargetRepository(tx, this.organizationId); - const featureFlagRepo = new FeatureFlagRepository(this.logger, tx, this.organizationId); - const subgraph = await subgraphRepo.byTargetId(data.targetId); + const collected = await this.writeSchemaAndCollectAffected(tx, data); + const { subgraph, affectedFederatedGraphById, affectedFeatureFlagIds } = collected; + subgraphChanged = collected.subgraphChanged; + labelChanged = collected.labelChanged; + if (!subgraph) { - return { compositionErrors, updatedFederatedGraphs, compositionWarnings }; + return; } - // TODO: avoid downloading the schema use hash instead - if (data.schemaSDL && (subgraph.type === 'grpc_plugin' || data.schemaSDL !== subgraph.schemaSDL)) { - subgraphChanged = true; - const updatedSubgraph = await subgraphRepo.addSchemaVersion({ - targetId: subgraph.targetId, - subgraphSchema: data.schemaSDL, - isV2Graph: data.isV2Graph, - proto: data.proto, - }); - if (!updatedSubgraph) { - throw new Error(`The subgraph "${subgraph.name}" was not found.`); - } - } + // Resolve the affected feature flag DTOs. + const affectedFeatureFlags = await this.resolveFeatureFlags(tx, data.namespaceId, affectedFeatureFlagIds); - if (data.routingUrl !== undefined && data.routingUrl !== subgraph.routingUrl) { - subgraphChanged = true; - const url = normalizeURL(data.routingUrl); - await tx - .update(subgraphs) - .set({ - routingUrl: url, - }) - .where(eq(subgraphs.id, subgraph.id)) - .execute(); + if (affectedFederatedGraphById.size === 0 && affectedFeatureFlags.length === 0) { + return; } - if (data.subscriptionUrl !== undefined && data.subscriptionUrl !== subgraph.subscriptionUrl) { - subgraphChanged = true; - const url = normalizeURL(data.subscriptionUrl); - await tx - .update(subgraphs) - .set({ - subscriptionUrl: url || null, - }) - .where(eq(subgraphs.id, subgraph.id)) - .execute(); + updatedFederatedGraphs.push(...affectedFederatedGraphById.values()); + const result = await compositionService.recomposeAndDeployAffected({ + actorId: data.updatedBy, + affectedFederatedGraphs: [...affectedFederatedGraphById.values()], + affectedFeatureFlags, + isFeatureSubgraph: subgraph.isFeatureSubgraph, + }); + + deploymentErrors.push(...result.deploymentErrors); + compositionErrors.push(...result.compositionErrors); + compositionWarnings.push(...result.compositionWarnings); + + // Re-fetch the federated graphs to get the updated composedSchemaVersionId + const refreshedGraphs = await Promise.all( + [...affectedFederatedGraphById.keys()].map((id) => fedGraphRepo.byId(id)), + ); + for (let i = 0; i < updatedFederatedGraphs.length; i++) { + const refreshedGraph = refreshedGraphs[i]; + if (refreshedGraph) { + updatedFederatedGraphs[i] = refreshedGraph; + } } + }); - if (data.subscriptionProtocol !== undefined && data.subscriptionProtocol !== subgraph.subscriptionProtocol) { - subgraphChanged = true; - await tx - .update(subgraphs) - .set({ - // ws is the default protocol - subscriptionProtocol: data.subscriptionProtocol || 'ws', - }) - .where(eq(subgraphs.id, subgraph.id)) - .execute(); + return { + compositionErrors, + compositionWarnings, + updatedFederatedGraphs, + deploymentErrors, + subgraphChanged: subgraphChanged || labelChanged || data.unsetLabels, + }; + } + + /** + * Resolves feature flag DTOs from a set of feature flag ids within the given transaction. + */ + private async resolveFeatureFlags( + tx: PostgresJsDatabase, + namespaceId: string, + featureFlagIds: Set, + ): Promise { + if (featureFlagIds.size === 0) { + return []; + } + + const featureFlagRepo = new FeatureFlagRepository(this.logger, tx, this.organizationId); + const affectedFeatureFlags: FeatureFlagDTO[] = []; + for (const featureFlagId of featureFlagIds) { + const featureFlag = await featureFlagRepo.getFeatureFlagById({ + namespaceId, + featureFlagId, + }); + + if (!featureFlag) { + throw new Error(`Feature flag with ID ${featureFlagId} not found in namespace ${namespaceId}`); } - if (data.websocketSubprotocol !== undefined && data.websocketSubprotocol !== subgraph.websocketSubprotocol) { - subgraphChanged = true; - await tx - .update(subgraphs) - .set({ - websocketSubprotocol: data.websocketSubprotocol || null, - }) - .where(eq(subgraphs.id, subgraph.id)) - .execute(); + affectedFeatureFlags.push(featureFlag); + } + + return affectedFeatureFlags; + } + + /** + * Writes the schema version + metadata changes for a single subgraph and collects the federated graphs and + * feature flags affected by the change WITHOUT composing them. Must run inside an existing transaction (`tx`); + * it performs no composition. Callers merge the returned maps/sets (union) and compose once. The returned maps + * use the subgraph's own old/new label reconciliation, so callers must merge by union (never delete). + */ + private async writeSchemaAndCollectAffected( + tx: PostgresJsDatabase, + data: UpdateSubgraphSchemaData, + ): Promise<{ + subgraph: SubgraphDTO | undefined; + affectedFederatedGraphById: Map; + affectedFeatureFlagIds: Set; + subgraphChanged: boolean; + labelChanged: boolean; + }> { + /** + * If only the labels of the subgraph are changed, federated graphs that match both the new and the old labels + * need not be recomposed. This map tracks those graphs to prevent unnecessary recompositions. + */ + const affectedFederatedGraphById = new Map(); + /** + * If only the labels of the subgraph are changed, feature flags that match both the new and the old labels + * need not be recomposed. This set tracks those flags to prevent unnecessary recompositions. + */ + const affectedFeatureFlagIds = new Set(); + let subgraphChanged = false; + let labelChanged = false; + + const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); + const subgraphRepo = new SubgraphRepository(this.logger, tx, this.organizationId); + const targetRepo = new TargetRepository(tx, this.organizationId); + const featureFlagRepo = new FeatureFlagRepository(this.logger, tx, this.organizationId); + const orgRepo = new OrganizationRepository(this.logger, tx); + + const splitConfigFeature = await orgRepo.getFeature({ + organizationId: this.organizationId, + featureId: 'split-config-loading', + }); + + const subgraph = await subgraphRepo.byTargetId(data.targetId); + if (!subgraph) { + return { subgraph: undefined, affectedFederatedGraphById, affectedFeatureFlagIds, subgraphChanged, labelChanged }; + } + + // TODO: avoid downloading the schema use hash instead + if (data.schemaSDL && (subgraph.type === 'grpc_plugin' || data.schemaSDL !== subgraph.schemaSDL)) { + subgraphChanged = true; + const updatedSubgraph = await subgraphRepo.addSchemaVersion({ + targetId: subgraph.targetId, + subgraphSchema: data.schemaSDL, + isV2Graph: data.isV2Graph, + proto: data.proto, + }); + + if (!updatedSubgraph) { + throw new Error(`The subgraph "${subgraph.name}" was not found.`); } + } + + if (data.routingUrl !== undefined && data.routingUrl !== subgraph.routingUrl) { + subgraphChanged = true; + const url = normalizeURL(data.routingUrl); + await tx.update(subgraphs).set({ routingUrl: url }).where(eq(subgraphs.id, subgraph.id)).execute(); + } + + if (data.subscriptionUrl !== undefined && data.subscriptionUrl !== subgraph.subscriptionUrl) { + subgraphChanged = true; + const url = normalizeURL(data.subscriptionUrl); + await tx + .update(subgraphs) + .set({ subscriptionUrl: url || null }) + .where(eq(subgraphs.id, subgraph.id)) + .execute(); + } + + if (data.subscriptionProtocol !== undefined && data.subscriptionProtocol !== subgraph.subscriptionProtocol) { + subgraphChanged = true; + await tx + .update(subgraphs) + .set({ + // ws is the default protocol + subscriptionProtocol: data.subscriptionProtocol || 'ws', + }) + .where(eq(subgraphs.id, subgraph.id)) + .execute(); + } + + if (data.websocketSubprotocol !== undefined && data.websocketSubprotocol !== subgraph.websocketSubprotocol) { + subgraphChanged = true; + await tx + .update(subgraphs) + .set({ + websocketSubprotocol: data.websocketSubprotocol || null, + }) + .where(eq(subgraphs.id, subgraph.id)) + .execute(); + } + // update the readme of the subgraph + if (data.readme !== undefined) { + await targetRepo.updateReadmeOfTarget({ id: data.targetId, readme: data.readme }); + } + + // Feature subgraph can't change labels + if (!subgraph.isFeatureSubgraph) { if (data.labels && data.labels.length > 0) { labelChanged = hasLabelsChanged(subgraph.labels, data.labels); } if (labelChanged || data.unsetLabels) { + labelChanged = true; const newLabels = data.unsetLabels ? [] : normalizeLabels(data.labels); // update labels of the subgraph @@ -351,156 +471,218 @@ export class SubgraphRepository { }) .where(eq(targets.id, subgraph.targetId)); - if (!subgraph.isFeatureSubgraph) { - // find all federated graphs that match with the new subgraph labels - const newFederatedGraphs = await fedGraphRepo.bySubgraphLabels({ - labels: newLabels, - namespaceId: data.namespaceId, - }); + // find all federated graphs that match with the new subgraph labels + const newFederatedGraphs = await fedGraphRepo.bySubgraphLabels({ + labels: newLabels, + namespaceId: data.namespaceId, + }); - // add them to the updatedFederatedGraphs array without duplicates - for (const federatedGraph of newFederatedGraphs) { - const exists = updatedFederatedGraphs.find((g) => g.name === federatedGraph.name); - if (!exists) { - updatedFederatedGraphs.push(federatedGraph); - } + // Add federated graphs (not contracts) that match the _new_ labels to `updatedFederatedGraphsById` + for (const federatedGraph of newFederatedGraphs) { + if (!federatedGraph.contract) { + affectedFederatedGraphById.set(federatedGraph.id, federatedGraph); } + } - // delete all subgraphsToFederatedGraphs that are not in the newFederatedGraphs array - let deleteCondition: SQL | undefined = eq(subgraphsToFederatedGraph.subgraphId, subgraph.id); + const newFeatureFlags = await featureFlagRepo.getFeatureFlagsBySubgraphLabels({ + namespaceId: data.namespaceId, + labels: newLabels, + excludeDisabled: true, + }); - // we do this conditionally because notInArray cannot take empty value - if (newFederatedGraphs.length > 0) { - deleteCondition = and( - deleteCondition, - notInArray( - subgraphsToFederatedGraph.federatedGraphId, - newFederatedGraphs.map((g) => g.id), - ), - ); + // Add feature flags that match the _new_ labels to `updatedFederatedGraphsById` + for (const featureFlag of newFeatureFlags) { + if (featureFlag.featureSubgraphs.every((fsg) => fsg.baseSubgraphId !== subgraph.id)) { + affectedFeatureFlagIds.add(featureFlag.id); } + } - await tx.delete(subgraphsToFederatedGraph).where(deleteCondition); - - // we create new connections between the new federated graphs and the subgraph - if (newFederatedGraphs.length > 0) { - await tx - .insert(subgraphsToFederatedGraph) - .values( - newFederatedGraphs.map((federatedGraph) => ({ - federatedGraphId: federatedGraph.id, - subgraphId: subgraph.id, - })), - ) - .onConflictDoNothing() - .execute(); - } + // delete all subgraphsToFederatedGraphs that are not in the newFederatedGraphs array + let deleteCondition: SQL | undefined = eq(subgraphsToFederatedGraph.subgraphId, subgraph.id); + + // we do this conditionally because notInArray cannot take empty value + if (newFederatedGraphs.length > 0) { + deleteCondition = and( + deleteCondition, + notInArray( + subgraphsToFederatedGraph.federatedGraphId, + newFederatedGraphs.map((g) => g.id), + ), + ); + } + + await tx.delete(subgraphsToFederatedGraph).where(deleteCondition); + + // we create new connections between the new federated graphs and the subgraph + if (newFederatedGraphs.length > 0) { + await tx + .insert(subgraphsToFederatedGraph) + .values( + newFederatedGraphs.map((federatedGraph) => ({ + federatedGraphId: federatedGraph.id, + subgraphId: subgraph.id, + })), + ) + .onConflictDoNothing() + .execute(); } } + } - if (subgraph.isFeatureSubgraph) { - // the fed graphs to be composed are to be fetched by using the base subgraph - const baseSubgraph = await tx - .select({ - id: featureSubgraphsToBaseSubgraphs.baseSubgraphId, - labels: targets.labels, - }) - .from(featureSubgraphsToBaseSubgraphs) - .innerJoin(subgraphs, eq(subgraphs.id, featureSubgraphsToBaseSubgraphs.baseSubgraphId)) - .innerJoin(targets, eq(targets.id, subgraphs.targetId)) - .where(eq(featureSubgraphsToBaseSubgraphs.featureSubgraphId, subgraph.id)); - - if (baseSubgraph.length > 0) { - // Retrieve the federated graphs that match the labels for the base graph of the feature graph - const federatedGraphDTOs = await fedGraphRepo.bySubgraphLabels({ - labels: baseSubgraph[0].labels?.map?.((l) => splitLabel(l)) ?? [], + // If the labels haven't changed and the subgraph hasn't changed, there should be nothing further to do + if (!subgraphChanged && !labelChanged) { + return { subgraph, affectedFederatedGraphById, affectedFeatureFlagIds, subgraphChanged, labelChanged }; + } + + if (subgraph.isFeatureSubgraph) { + // the fed graphs to be composed are to be fetched by using the base subgraph + const baseSubgraph = await tx + .select({ + id: featureSubgraphsToBaseSubgraphs.baseSubgraphId, + labels: targets.labels, + }) + .from(featureSubgraphsToBaseSubgraphs) + .innerJoin(subgraphs, eq(subgraphs.id, featureSubgraphsToBaseSubgraphs.baseSubgraphId)) + .innerJoin(targets, eq(targets.id, subgraphs.targetId)) + .where(eq(featureSubgraphsToBaseSubgraphs.featureSubgraphId, subgraph.id)); + + if (baseSubgraph.length > 0) { + // Retrieve the federated graphs that match the labels for the base graph of the feature graph + const federatedGraphDTOs = await fedGraphRepo.bySubgraphLabels({ + labels: baseSubgraph[0].labels?.map?.((l) => splitLabel(l)) ?? [], + namespaceId: data.namespaceId, + }); + + for (const federatedGraphDTO of federatedGraphDTOs) { + // Retrieve all the subgraphs that compose the federated graph to retrieve the feature flags + const subgraphs = await subgraphRepo.listByFederatedGraph({ + federatedGraphTargetId: federatedGraphDTO.targetId, + published: true, + }); + + const enabledFeatureFlags = await featureFlagRepo.getFeatureFlagsByBaseSubgraphIdAndLabelMatchers({ + baseSubgraphId: baseSubgraph[0].id, namespaceId: data.namespaceId, + fedGraphLabelMatchers: federatedGraphDTO.labelMatchers || [], + baseSubgraphNames: subgraphs.map((subgraph) => subgraph.name), + excludeDisabled: true, }); - for (const federatedGraphDTO of federatedGraphDTOs) { - // Retrieve all the subgraphs that compose the federated graph to retrieve the feature flags - const subgraphs = await subgraphRepo.listByFederatedGraph({ - federatedGraphTargetId: federatedGraphDTO.targetId, - published: true, - }); - const enabledFeatureFlags = await featureFlagRepo.getFeatureFlagsByBaseSubgraphIdAndLabelMatchers({ - baseSubgraphId: baseSubgraph[0].id, - namespaceId: data.namespaceId, - fedGraphLabelMatchers: federatedGraphDTO.labelMatchers || [], - baseSubgraphNames: subgraphs.map((subgraph) => subgraph.name), - excludeDisabled: true, - }); - // If an enabled feature flag includes the feature graph that has just been published, push it to the array - if (enabledFeatureFlags.length > 0) { - const exists = updatedFederatedGraphs.find((g) => g.name === federatedGraphDTO.name); - if (!exists) { - updatedFederatedGraphs.push(federatedGraphDTO); - } - } + + // If an enabled feature flag includes the feature graph that has just been published, push it to the array + if (enabledFeatureFlags.length > 0 && !splitConfigFeature?.enabled) { + affectedFederatedGraphById.set(federatedGraphDTO.id, federatedGraphDTO); } - } - // Generate a new router config for non-feature graphs upon routing/subscription urls and labels changes - } else if (subgraphChanged || labelChanged) { - // find all federated graphs that use this subgraph (with old labels). We need evaluate them again. - // When labels change, graphs which matched with old labels may no longer match with new ones - const affectedGraphs = await fedGraphRepo.bySubgraphLabels({ - labels: subgraph.labels, - namespaceId: data.namespaceId, - }); - for (const graph of affectedGraphs) { - const exists = updatedFederatedGraphs.find((g) => g.name === graph.name); - if (!exists) { - updatedFederatedGraphs.push(graph); + for (const featureFlag of enabledFeatureFlags) { + affectedFeatureFlagIds.add(featureFlag.id); } } } + // Generate a new router config for non-feature graphs upon routing/subscription urls and labels changes + } else { + /** Find all federated graphs that use the subgraph's old labels; we need to recompose them. + * When labels change, graphs that matched with old labels may no longer match with new ones. + */ + const affectedGraphs = await fedGraphRepo.bySubgraphLabels({ + labels: subgraph.labels, + namespaceId: data.namespaceId, + }); - // update the readme of the subgraph - if (data.readme !== undefined) { - await targetRepo.updateReadmeOfTarget({ id: data.targetId, readme: data.readme }); - } + for (const graph of affectedGraphs) { + if (graph.contract) { + continue; + } - if (updatedFederatedGraphs.length === 0) { - return; + // If the subgraph has changed, always trigger composition + if (affectedFederatedGraphById.has(graph.id) && !subgraphChanged) { + /** If the federated graph matches the old labels AND the new labels, + * delete the entry because it need not be recomposed. + */ + affectedFederatedGraphById.delete(graph.id); + } else { + affectedFederatedGraphById.set(graph.id, graph); + } } - const { - compositionErrors: cErrors, - deploymentErrors: dErrors, - compositionWarnings: cWarnings, - } = await fedGraphRepo.composeAndDeployGraphs({ - blobStorage, - admissionConfig, - actorId: data.updatedBy, - chClient, - compositionOptions, - federatedGraphs: updatedFederatedGraphs.filter((g) => !g.contract), + const featureFlags = await featureFlagRepo.getFeatureFlagsBySubgraphLabels({ + namespaceId: data.namespaceId, + labels: subgraph.labels, + excludeDisabled: true, }); - compositionErrors.push(...cErrors); - deploymentErrors.push(...dErrors); - compositionWarnings.push(...cWarnings); + for (const featureFlag of featureFlags) { + if (featureFlag.featureSubgraphs.every((fsg) => fsg.baseSubgraphId !== subgraph.id)) { + // Always trigger composition if a relevant subgraph has changed. + if (affectedFeatureFlagIds.has(featureFlag.id) && !subgraphChanged) { + /** If the feature flag matches the old labels AND the new labels, delete the entry because it + * need not be recomposed. + */ + affectedFeatureFlagIds.delete(featureFlag.id); + } else { + affectedFeatureFlagIds.add(featureFlag.id); + } + } + } + } - // Re-fetch the federated graphs to get the updated composedSchemaVersionId - const refreshedGraphs = await Promise.all(updatedFederatedGraphs.map((g) => fedGraphRepo.byId(g.id))); - for (let i = 0; i < updatedFederatedGraphs.length; i++) { - const refreshedGraph = refreshedGraphs[i]; - if (refreshedGraph) { - updatedFederatedGraphs[i] = refreshedGraph; + return { subgraph, affectedFederatedGraphById, affectedFeatureFlagIds, subgraphChanged, labelChanged }; + } + + /** + * Writes the schema versions for multiple subgraphs (and feature subgraphs) in a single transaction and returns + * the deduplicated union of affected federated graphs and feature flags — WITHOUT composing them. + * + * Composition is intentionally NOT performed here. It is long-running (worker composition, blob uploads, admission + * webhooks) and must not hold a database transaction open — especially for a batch, where the union can span many + * graphs. The caller composes the returned graphs once each, outside this transaction. + */ + public async batchWriteAndCollect(items: (UpdateSubgraphSchemaData & { name: string })[]): Promise<{ + affectedFederatedGraphs: FederatedGraphDTO[]; + affectedFeatureFlags: FeatureFlagDTO[]; + changedSubgraphNames: string[]; + }> { + const changedSubgraphNames: string[] = []; + const mergedFederatedGraphById = new Map(); + const mergedFeatureFlagIds = new Set(); + let affectedFeatureFlags: FeatureFlagDTO[] = []; + + if (items.length === 0) { + return { affectedFederatedGraphs: [], affectedFeatureFlags: [], changedSubgraphNames }; + } + + const namespaceId = items[0].namespaceId; + + await this.db.transaction(async (tx) => { + // Write every schema version and collect the affected graphs/flags. NO composition happens here. + for (const item of items) { + const { subgraph, affectedFederatedGraphById, affectedFeatureFlagIds, subgraphChanged, labelChanged } = + await this.writeSchemaAndCollectAffected(tx, item); + + if (subgraph && (subgraphChanged || labelChanged)) { + changedSubgraphNames.push(item.name); + } + + // Merge via union only — never delete, so one subgraph's old/new label reconciliation cannot drop a + // federated graph that another subgraph genuinely needs recomposed. + for (const [id, graph] of affectedFederatedGraphById) { + mergedFederatedGraphById.set(id, graph); + } + for (const id of affectedFeatureFlagIds) { + mergedFeatureFlagIds.add(id); } } + + affectedFeatureFlags = await this.resolveFeatureFlags(tx, namespaceId, mergedFeatureFlagIds); }); return { - compositionErrors, - compositionWarnings, - updatedFederatedGraphs, - deploymentErrors, - subgraphChanged: subgraphChanged || labelChanged || data.unsetLabels, + affectedFederatedGraphs: [...mergedFederatedGraphById.values()], + affectedFeatureFlags, + changedSubgraphNames, }; } - public move( + public async move( data: { targetId: string; subgraphId: string; @@ -509,78 +691,61 @@ export class SubgraphRepository { currentNamespaceId: string; newNamespaceId: string; }, - blobStorage: BlobStorage, - admissionConfig: { - jwtSecret: string; - cdnBaseUrl: string; - }, - chClient: ClickHouseClient, - compositionOptions?: CompositionOptions, - ): Promise<{ - compositionErrors: PlainMessage[]; - updatedFederatedGraphs: FederatedGraphDTO[]; - deploymentErrors: PlainMessage[]; - compositionWarnings: PlainMessage[]; - }> { - return this.db.transaction(async (tx) => { - const updatedFederatedGraphs: FederatedGraphDTO[] = []; - - const fedGraphRepo = new FederatedGraphRepository(this.logger, tx, this.organizationId); + compositionService: CompositionService, + ): Promise { + const updatedFederatedGraphs: FederatedGraphDTO[] = []; - updatedFederatedGraphs.push( - ...(await fedGraphRepo.bySubgraphLabels({ labels: data.subgraphLabels, namespaceId: data.currentNamespaceId })), - ); + const fedGraphRepo = new FederatedGraphRepository(this.logger, this.db, this.organizationId); + updatedFederatedGraphs.push( + ...(await fedGraphRepo.bySubgraphLabels({ labels: data.subgraphLabels, namespaceId: data.currentNamespaceId })), + ); - await tx.update(targets).set({ namespaceId: data.newNamespaceId }).where(eq(targets.id, data.targetId)); + await this.db.update(targets).set({ namespaceId: data.newNamespaceId }).where(eq(targets.id, data.targetId)); - // Delete all mappings with this subgraph. We will create new mappings with federated graphs in new namespace - await tx - .delete(schema.subgraphsToFederatedGraph) - .where(eq(schema.subgraphsToFederatedGraph.subgraphId, data.subgraphId)); + // Delete all mappings with this subgraph. We will create new mappings with federated graphs in new namespace + await this.db + .delete(schema.subgraphsToFederatedGraph) + .where(eq(schema.subgraphsToFederatedGraph.subgraphId, data.subgraphId)); - const newFederatedGraphs = await fedGraphRepo.bySubgraphLabels({ - labels: data.subgraphLabels, - namespaceId: data.newNamespaceId, - }); - updatedFederatedGraphs.push(...newFederatedGraphs); + const newFederatedGraphs = await fedGraphRepo.bySubgraphLabels({ + labels: data.subgraphLabels, + namespaceId: data.newNamespaceId, + }); - // insert new mappings - if (newFederatedGraphs.length > 0) { - await tx - .insert(schema.subgraphsToFederatedGraph) - .values( - newFederatedGraphs.map((fg) => ({ - federatedGraphId: fg.id, - subgraphId: data.subgraphId, - })), - ) - .onConflictDoNothing() - .execute(); - } + updatedFederatedGraphs.push(...newFederatedGraphs); + + // Insert new mappings + if (newFederatedGraphs.length > 0) { + await this.db + .insert(schema.subgraphsToFederatedGraph) + .values( + newFederatedGraphs.map((fg) => ({ + federatedGraphId: fg.id, + subgraphId: data.subgraphId, + })), + ) + .onConflictDoNothing() + .execute(); + } - const { compositionErrors, deploymentErrors, compositionWarnings } = await fedGraphRepo.composeAndDeployGraphs({ - federatedGraphs: updatedFederatedGraphs.filter((g) => !g.contract), - blobStorage, - admissionConfig: { - webhookJWTSecret: admissionConfig.jwtSecret, - cdnBaseUrl: admissionConfig.cdnBaseUrl, - }, + const { deploymentErrors, compositionErrors, compositionWarnings } = + await compositionService.recomposeAndDeployAffected({ actorId: data.updatedBy, - chClient, - compositionOptions, + affectedFederatedGraphs: updatedFederatedGraphs, + affectedFeatureFlags: [], // Feature subgraphs cannot be moved + isFeatureSubgraph: false, }); - // Re-fetch the federated graphs to get the updated composedSchemaVersionId - const refreshedGraphs = await Promise.all(updatedFederatedGraphs.map((g) => fedGraphRepo.byId(g.id))); - for (let i = 0; i < updatedFederatedGraphs.length; i++) { - const refreshedGraph = refreshedGraphs[i]; - if (refreshedGraph) { - updatedFederatedGraphs[i] = refreshedGraph; - } + // Re-fetch the federated graphs to get the updated composedSchemaVersionId + const refreshedGraphs = await Promise.all(updatedFederatedGraphs.map((g) => fedGraphRepo.byId(g.id))); + for (let i = 0; i < updatedFederatedGraphs.length; i++) { + const refreshedGraph = refreshedGraphs[i]; + if (refreshedGraph) { + updatedFederatedGraphs[i] = refreshedGraph; } + } - return { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings }; - }); + return { compositionErrors, updatedFederatedGraphs, deploymentErrors, compositionWarnings }; } public addSchemaVersion(data: { @@ -663,7 +828,12 @@ export class SubgraphRepository { * @param conditions * @private */ - private applyRbacConditionsToQuery(rbac: RBACEvaluator | undefined, conditions: (SQL | undefined)[]) { + static applyRbacConditionsToQuery(rbac: RBACEvaluator | undefined, conditions: (SQL | undefined)[]) { + // Apply the IdP gate regardless of RBAC level. Empty allowed-set → no rows. + if (!applyIdpNamespaceGate(rbac, schema.targets.namespaceId, conditions)) { + return false; + } + if (!rbac || rbac.isOrganizationViewer) { return true; } @@ -729,7 +899,7 @@ export class SubgraphRepository { conditions.push(eq(schema.subgraphs.isFeatureSubgraph, false)); } - if (!this.applyRbacConditionsToQuery(opts.rbac, conditions)) { + if (!SubgraphRepository.applyRbacConditionsToQuery(opts.rbac, conditions)) { return []; } @@ -788,7 +958,7 @@ export class SubgraphRepository { conditions.push(eq(schema.subgraphs.isFeatureSubgraph, false)); } - if (!this.applyRbacConditionsToQuery(opts.rbac, conditions)) { + if (!SubgraphRepository.applyRbacConditionsToQuery(opts.rbac, conditions)) { return []; } @@ -851,7 +1021,7 @@ export class SubgraphRepository { conditions.push(eq(schema.subgraphs.isFeatureSubgraph, false)); } - if (!this.applyRbacConditionsToQuery(opts.rbac, conditions)) { + if (!SubgraphRepository.applyRbacConditionsToQuery(opts.rbac, conditions)) { return 0; } @@ -905,45 +1075,156 @@ export class SubgraphRepository { const conditions: (SQL | undefined)[] = [ eq(schema.targets.organizationId, this.organizationId), + eq(schema.targets.type, 'subgraph'), eq(schema.subgraphsToFederatedGraph.federatedGraphId, target.federatedGraph.id), ]; - if (!this.applyRbacConditionsToQuery(data.rbac, conditions)) { + if (!SubgraphRepository.applyRbacConditionsToQuery(data.rbac, conditions)) { return []; } - const targets = await this.db + return this.getSubgraphsMatching({ + conditions, + published: data.published, + enforceFederatedGraph: true, + includeSubgraphs: data.includeSubgraphs, + }); + } + + public getSubgraphsByTargetIds(ids: string[], rbac?: RBACEvaluator): Promise { + const conditions: (SQL | undefined)[] = [ + eq(schema.targets.organizationId, this.organizationId), + eq(schema.targets.type, 'subgraph'), + inArray(schema.targets.id, ids), + ]; + + return SubgraphRepository.applyRbacConditionsToQuery(rbac, conditions) + ? this.getSubgraphsMatching({ conditions, enforceFederatedGraph: false }) + : Promise.resolve([]); + } + + private async getSubgraphsMatching({ + conditions, + published, + enforceFederatedGraph, + includeSubgraphs, + }: { + conditions: (SQL | undefined)[]; + published?: boolean; + enforceFederatedGraph?: boolean; + includeSubgraphs?: string[]; + }) { + const subgraphs = await this.db .select({ - id: schema.targets.id, name: schema.targets.name, - lastUpdatedAt: schema.schemaVersion.createdAt, + labels: schema.targets.labels, + createdBy: schema.targets.createdBy, + readme: schema.targets.readme, + id: schema.subgraphs.id, + routingUrl: schema.subgraphs.routingUrl, + subscriptionUrl: schema.subgraphs.subscriptionUrl, + subscriptionProtocol: schema.subgraphs.subscriptionProtocol, + websocketSubprotocol: schema.subgraphs.websocketSubprotocol, + targetId: schema.subgraphs.targetId, + namespaceId: schema.namespaces.id, + namespaceName: schema.namespaces.name, + schemaVersionId: schema.subgraphs.schemaVersionId, + isFeatureSubgraph: schema.subgraphs.isFeatureSubgraph, + isEventDrivenGraph: schema.subgraphs.isEventDrivenGraph, + type: schema.subgraphs.type, + // Schema Version + svLastUpdated: schema.schemaVersion.createdAt, + svSchemaSDL: schema.schemaVersion.schemaSDL, + svIsV2Graph: schema.schemaVersion.isV2Graph, + // Proto + protoSchemaVersion: schema.protobufSchemaVersions.protoSchema, + protoMappings: schema.protobufSchemaVersions.protoMappings, + protoLock: schema.protobufSchemaVersions.protoLock, + // Plugin Data + pluginDataPlatforms: schema.pluginImageVersions.platform, + pluginDataVersion: schema.pluginImageVersions.version, }) .from(schema.targets) .innerJoin( schema.subgraphs, - Array.isArray(data.includeSubgraphs) && data.includeSubgraphs.length > 0 - ? and(eq(schema.subgraphs.targetId, schema.targets.id), inArray(schema.subgraphs.id, data.includeSubgraphs)) + Array.isArray(includeSubgraphs) && includeSubgraphs.length > 0 + ? and(eq(schema.subgraphs.targetId, schema.targets.id), inArray(schema.subgraphs.id, includeSubgraphs)) : eq(schema.subgraphs.targetId, schema.targets.id), ) - [data.published ? 'innerJoin' : 'leftJoin']( + .innerJoin(schema.namespaces, eq(schema.namespaces.id, schema.targets.namespaceId)) + [enforceFederatedGraph ? 'innerJoin' : 'leftJoin']( + schema.subgraphsToFederatedGraph, + eq(schema.subgraphsToFederatedGraph.subgraphId, schema.subgraphs.id), + ) + [published ? 'innerJoin' : 'leftJoin']( schema.schemaVersion, eq(schema.subgraphs.schemaVersionId, schema.schemaVersion.id), ) - .innerJoin(schema.subgraphsToFederatedGraph, eq(schema.subgraphsToFederatedGraph.subgraphId, schema.subgraphs.id)) + .leftJoin( + schema.protobufSchemaVersions, + and( + inArray(schema.subgraphs.type, ['grpc_plugin', 'grpc_service']), + eq(schema.subgraphs.schemaVersionId, schema.protobufSchemaVersions.schemaVersionId), + ), + ) + .leftJoin( + schema.pluginImageVersions, + and( + eq(schema.subgraphs.type, 'grpc_plugin'), + eq(schema.subgraphs.schemaVersionId, schema.pluginImageVersions.schemaVersionId), + ), + ) .orderBy(asc(schema.schemaVersion.createdAt)) - .where(and(...conditions)); + .where(and(...conditions)) + .execute(); - const subgraphs: SubgraphDTO[] = []; + // Transform the selected subgraphs into SubgraphDTO objects + return subgraphs.map((sg) => { + let proto: ProtoSubgraph | undefined; + if (sg.type === 'grpc_plugin' || sg.type === 'grpc_service') { + if (!sg.protoSchemaVersion) { + this.logger.warn( + `Missing protobuf schema for ${sg.type} subgraph with schemaVersionId: ${sg.schemaVersionId}`, + ); + } - for (const target of targets) { - const sg = await this.byTargetId(target.id); - if (sg === undefined) { - continue; + proto = { + schema: sg.protoSchemaVersion ?? '', + mappings: sg.protoMappings ?? '', + lock: sg.protoLock ?? '', + }; + + if (sg.type === 'grpc_plugin') { + proto.pluginData = { + platforms: sg.pluginDataPlatforms ?? [], + version: sg.pluginDataVersion ?? 'v1', + }; + } } - subgraphs.push(sg); - } - return subgraphs; + return { + id: sg.id, + targetId: sg.targetId, + routingUrl: sg.routingUrl, + readme: sg.readme || undefined, + subscriptionUrl: sg.subscriptionUrl || '', + subscriptionProtocol: sg.subscriptionProtocol ?? 'ws', + websocketSubprotocol: sg.websocketSubprotocol || undefined, + name: sg.name, + schemaSDL: sg.svSchemaSDL ?? '', + schemaVersionId: sg.schemaVersionId || '', + lastUpdatedAt: sg.svLastUpdated?.toISOString() ?? '', + labels: sg.labels?.map?.((l) => splitLabel(l)) ?? [], + creatorUserId: sg.createdBy || undefined, + namespace: sg.namespaceName, + namespaceId: sg.namespaceId, + isEventDrivenGraph: sg.isEventDrivenGraph, + isV2Graph: sg.svIsV2Graph || undefined, + isFeatureSubgraph: sg.isFeatureSubgraph, + type: sg.type, + proto, + }; + }); } private async getSubgraph(conditions: SQL[]): Promise { @@ -1863,6 +2144,7 @@ export class SubgraphRepository { newGraphQLSchema, compositionOptions, webhookService, + webhookProxyUrl, }: { actorId: string; blobStorage: BlobStorage; @@ -1887,6 +2169,7 @@ export class SubgraphRepository { newGraphQLSchema?: GraphQLSchema; compositionOptions?: CompositionOptions; webhookService: OrganizationWebhookService; + webhookProxyUrl?: string; }): Promise< PlainMessage & { hasClientTraffic: boolean; @@ -1956,8 +2239,8 @@ export class SubgraphRepository { }); if (matches.length === 0) { const message = isDeleted - ? `The subgraph ${subgraphName} is not proposed to be deleted in any of the approved proposals.` - : `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved proposal.`; + ? `The subgraph ${subgraphName} is not proposed to be deleted in any of the approved or draft proposals.` + : `The subgraph ${subgraphName}'s schema does not match to this subgraph's schema in any approved or draft proposals.`; if (proposalConfig.checkSeverityLevel === 'warn') { proposalMatchMessage = message; } else { @@ -2053,6 +2336,7 @@ export class SubgraphRepository { contractRepo, graphCompostionRepo, chClient, + webhookProxyUrl, ); const checkSubgraphs = new Map(); diff --git a/controlplane/src/core/repositories/TargetRepository.ts b/controlplane/src/core/repositories/TargetRepository.ts index c799158618..ad7e3d0c58 100644 --- a/controlplane/src/core/repositories/TargetRepository.ts +++ b/controlplane/src/core/repositories/TargetRepository.ts @@ -3,8 +3,10 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; import { targets } from '../../db/schema.js'; import { sanitizeReadme } from '../util.js'; +import { traced } from '../tracing.js'; import { NamespaceRepository } from './NamespaceRepository.js'; +@traced export class TargetRepository { constructor( private db: PostgresJsDatabase, diff --git a/controlplane/src/core/repositories/UserRepository.ts b/controlplane/src/core/repositories/UserRepository.ts index 1b4305e59c..105ec33ad3 100644 --- a/controlplane/src/core/repositories/UserRepository.ts +++ b/controlplane/src/core/repositories/UserRepository.ts @@ -8,6 +8,7 @@ import { BlobStorage } from '../blobstorage/index.js'; import Keycloak from '../services/Keycloak.js'; import OidcProvider from '../services/OidcProvider.js'; import { DeleteOrganizationAuditLogsQueue } from '../workers/DeleteOrganizationAuditLogsWorker.js'; +import { traced } from '../tracing.js'; import { BillingRepository } from './BillingRepository.js'; import { OidcRepository } from './OidcRepository.js'; import { OrganizationRepository } from './OrganizationRepository.js'; @@ -15,6 +16,7 @@ import { OrganizationRepository } from './OrganizationRepository.js'; /** * Repository for user related operations. */ +@traced export class UserRepository { constructor( private logger: FastifyBaseLogger, @@ -81,8 +83,8 @@ export class UserRepository { // get all providers const oidcProviders: { alias: string; orgSlug: string }[] = []; for (const org of orgMemberships.soloAdminSoloMemberOrgs) { - const provider = await oidcRepo.getOidcProvider({ organizationId: org.id }); - if (provider) { + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ organizationId: org.id }); + for (const provider of providers) { oidcProviders.push({ ...provider, orgSlug: org.slug }); } } diff --git a/controlplane/src/core/repositories/analytics/AnalyticsDashboardViewRepository.ts b/controlplane/src/core/repositories/analytics/AnalyticsDashboardViewRepository.ts index 33a8b0ed77..370a13cdfa 100644 --- a/controlplane/src/core/repositories/analytics/AnalyticsDashboardViewRepository.ts +++ b/controlplane/src/core/repositories/analytics/AnalyticsDashboardViewRepository.ts @@ -14,7 +14,10 @@ import { SubgraphRequestRateResult, TimeFilters, } from '../../../types/index.js'; +import { traced } from '../../tracing.js'; +import { ClickHouseUnavailableError } from 'src/core/errors/errors.js'; +@traced export class AnalyticsDashboardViewRepository { constructor(private client: ClickHouseClient) {} @@ -63,7 +66,7 @@ export class AnalyticsDashboardViewRepository { federatedGraphId: string, organizationId: string, filter: TimeFilters, - ): Promise[]> { + ): Promise<{ series: PlainMessage[]; ok: boolean }> { if (filter?.dateRange && filter.dateRange.start > filter.dateRange.end) { const tmp = filter.dateRange.start; filter.dateRange.start = filter.dateRange.end; @@ -103,24 +106,36 @@ export class AnalyticsDashboardViewRepository { organizationId, }; - const seriesRes = await this.client.queryPromise(query, params); + const { data: seriesRes, ok } = await this.client.queryPromiseWithDefault<{ + timestamp: string; + totalRequests: number; + erroredRequests: number; + }>(query, { + params, + }); if (Array.isArray(seriesRes)) { - return seriesRes.map((p) => ({ - timestamp: p.timestamp, - totalRequests: Number(p.totalRequests), - erroredRequests: Number(p.erroredRequests), - })); + return { + ok, + series: seriesRes.map((p) => ({ + timestamp: p.timestamp, + totalRequests: Number(p.totalRequests), + erroredRequests: Number(p.erroredRequests), + })), + }; } - return []; + return { ok, series: [] }; } private async getMostRequestedOperations( federatedGraphId: string, organizationId: string, dateRange: DateRange, - ): Promise[]> { + ): Promise<{ + operations: PlainMessage[]; + ok: boolean; + }> { const query = ` SELECT OperationHash as operationHash, @@ -141,16 +156,26 @@ export class AnalyticsDashboardViewRepository { federatedGraphId, }; - const res = await this.client.queryPromise(query, params); + const { data: res, ok } = await this.client.queryPromiseWithDefault<{ + operationHash: string; + operationName: string; + totalRequests: string; + }>(query, { params, defaultValue: [] }); if (Array.isArray(res)) { - return res.map((r) => ({ - ...r, - totalRequests: Number(r.totalRequests), - })); + return { + ok, + operations: res.map((r) => ({ + ...r, + totalRequests: Number(r.totalRequests), + })), + }; } - return []; + return { + ok, + operations: [], + }; } private async getFederatedGraphRates( @@ -158,7 +183,7 @@ export class AnalyticsDashboardViewRepository { organizationId: string, dateRange: DateRange, rangeInHours: number, - ): Promise { + ): Promise<{ rates: FederatedGraphRequestRateResult[]; ok: boolean }> { // to minutes const multiplier = rangeInHours * 60; @@ -184,16 +209,26 @@ export class AnalyticsDashboardViewRepository { organizationId, }; - const res = await this.client.queryPromise(query, params); + const { data: res, ok } = await this.client.queryPromiseWithDefault<{ + federatedGraphID: string; + requestRate: number; + errorRate: number; + }>(query, { params, defaultValue: [] }); if (Array.isArray(res)) { - return res.map((r) => ({ - federatedGraphID: r.federatedGraphID, - requestRate: r.requestRate, - errorRate: r.errorRate, - })); + return { + rates: res.map((r) => ({ + federatedGraphID: r.federatedGraphID, + requestRate: r.requestRate, + errorRate: r.errorRate, + })), + ok, + }; } - return []; + return { + rates: [], + ok, + }; } private async getFederatedGraphMetricsView( @@ -201,16 +236,19 @@ export class AnalyticsDashboardViewRepository { organizationId: string, dateRange: DateRange, rangeInHours: number, - ): Promise> { + ): Promise<{ view: PlainMessage; ok: boolean }> { const [requestRates] = await Promise.all([ this.getFederatedGraphRates(federatedGraphId, organizationId, dateRange, rangeInHours), ]); return { - federatedGraphID: federatedGraphId, - requestRate: requestRates[0]?.requestRate || 0, - errorRate: requestRates[0]?.errorRate || 0, - latency: 0, + view: { + federatedGraphID: federatedGraphId, + requestRate: requestRates.rates[0]?.requestRate || 0, + errorRate: requestRates.rates[0]?.errorRate || 0, + latency: 0, + }, + ok: requestRates.ok, }; } @@ -220,7 +258,7 @@ export class AnalyticsDashboardViewRepository { dateRange: DateRange, subgraphs: SubgraphDTO[], rangeInHours: number, - ): Promise { + ): Promise<{ rates: SubgraphRequestRateResult[]; ok: boolean }> { // to minutes const multiplier = rangeInHours * 60; @@ -249,16 +287,26 @@ export class AnalyticsDashboardViewRepository { organizationId, }; - const res = await this.client.queryPromise(query, params); + const { data: res, ok } = await this.client.queryPromiseWithDefault<{ + subgraphID: string; + requestRate: number; + errorRate: number; + }>(query, { params, defaultValue: [] }); if (Array.isArray(res)) { - return res.map((r) => ({ - subgraphID: r.subgraphID, - requestRate: r.requestRate, - errorRate: r.errorRate, - })); + return { + ok, + rates: res.map((r) => ({ + subgraphID: r.subgraphID, + requestRate: r.requestRate, + errorRate: r.errorRate, + })), + }; } - return []; + return { + ok, + rates: [], + }; } private async getSubgraphLatency( @@ -266,7 +314,7 @@ export class AnalyticsDashboardViewRepository { organizationId: string, dateRange: DateRange, subgraphs: SubgraphDTO[], - ): Promise { + ): Promise<{ latencies: SubgraphLatencyResult[]; ok: boolean }> { // Properly escape subgraph IDs for SQL const escapedSubgraphIds = subgraphs.map((s) => `'${s.id.replace(/'/g, "''")}'`).join(','); @@ -303,16 +351,25 @@ export class AnalyticsDashboardViewRepository { organizationId, }; - const res = await this.client.queryPromise(query, params); + const { data: res, ok } = await this.client.queryPromiseWithDefault<{ + subgraphID: string; + latency: number; + }>(query, { params, defaultValue: [] }); if (Array.isArray(res)) { - return res.map((r) => ({ - subgraphID: r.subgraphID, - latency: r.latency, - })); + return { + ok, + latencies: res.map((r) => ({ + subgraphID: r.subgraphID, + latency: r.latency, + })), + }; } - return []; + return { + ok, + latencies: [], + }; } private async getSubgraphMetricsView( @@ -321,11 +378,14 @@ export class AnalyticsDashboardViewRepository { dateRange: DateRange, subgraphs: SubgraphDTO[], rangeInHours: number, - ): Promise[]> { + ): Promise<{ metrics: PlainMessage[]; ok: boolean }> { const metrics: PlainMessage[] = []; if (subgraphs.length === 0) { - return metrics; + return { + metrics: [], + ok: true, + }; } const [requestRates, latency] = await Promise.all([ @@ -334,8 +394,8 @@ export class AnalyticsDashboardViewRepository { ]); for (const subgraph of subgraphs) { - const rate = requestRates.find((r) => r.subgraphID === subgraph.id); - const lat = latency.find((l) => l.subgraphID === subgraph.id); + const rate = requestRates.rates.find((r) => r.subgraphID === subgraph.id); + const lat = latency.latencies.find((l) => l.subgraphID === subgraph.id); const metric: PlainMessage = { subgraphID: subgraph.id, requestRate: 0, @@ -355,7 +415,10 @@ export class AnalyticsDashboardViewRepository { metrics.push(metric); } - return metrics; + return { + metrics, + ok: requestRates.ok && latency.ok, + }; } public async getView( diff --git a/controlplane/src/core/repositories/analytics/AnalyticsRequestViewRepository.ts b/controlplane/src/core/repositories/analytics/AnalyticsRequestViewRepository.ts index ef2a4a7d56..a9fa6d6fee 100644 --- a/controlplane/src/core/repositories/analytics/AnalyticsRequestViewRepository.ts +++ b/controlplane/src/core/repositories/analytics/AnalyticsRequestViewRepository.ts @@ -12,6 +12,7 @@ import { Unit, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { ClickHouseClient } from '../../clickhouse/index.js'; +import { traced } from '../../tracing.js'; import { BaseFilters, ColumnMetaData, @@ -28,6 +29,7 @@ import { /** * Repository for clickhouse analytics data */ +@traced export class AnalyticsRequestViewRepository { constructor(private client: ClickHouseClient) {} @@ -555,7 +557,7 @@ export class AnalyticsRequestViewRepository { return httpStatusCodes; } - private getBaseFiltersForGroup = (name: AnalyticsViewGroupName) => { + private getBaseFiltersForGroup(name: AnalyticsViewGroupName) { const filters = { ...this.baseFilters }; let baseFiltersForGroup: BaseFilters = {}; @@ -606,7 +608,7 @@ export class AnalyticsRequestViewRepository { } return baseFiltersForGroup; - }; + } private getFilters( name: AnalyticsViewGroupName, @@ -677,13 +679,13 @@ export class AnalyticsRequestViewRepository { return filters.filter((f) => allowedColumnNames.has(f.field)); } - private getSortOrder = (id?: string, desc?: boolean) => { + private getSortOrder(id?: string, desc?: boolean) { const allowedColumns = Object.keys(this.columnMetadata); if (id && allowedColumns.includes(id)) { return `ORDER BY ${id} ${desc ? 'DESC' : 'ASC'}`; } - }; + } public async getView( organizationId: string, diff --git a/controlplane/src/core/repositories/analytics/MetricsRepository.ts b/controlplane/src/core/repositories/analytics/MetricsRepository.ts index 156fe66071..a7b8b2fe90 100644 --- a/controlplane/src/core/repositories/analytics/MetricsRepository.ts +++ b/controlplane/src/core/repositories/analytics/MetricsRepository.ts @@ -6,6 +6,7 @@ import { import { DateRange } from '../../../types/index.js'; import { ClickHouseClient } from '../../clickhouse/index.js'; import { flipDateRangeValuesIfNeeded } from '../../util.js'; +import { traced } from '../../tracing.js'; import { BaseFilters, buildAnalyticsViewFilters, @@ -53,6 +54,7 @@ interface LatencySeries { p99?: number; } +@traced export class MetricsRepository { constructor(private client: ClickHouseClient) {} diff --git a/controlplane/src/core/repositories/analytics/MonthlyRequestViewRepository.ts b/controlplane/src/core/repositories/analytics/MonthlyRequestViewRepository.ts index 26ab5e0aaf..f547379746 100644 --- a/controlplane/src/core/repositories/analytics/MonthlyRequestViewRepository.ts +++ b/controlplane/src/core/repositories/analytics/MonthlyRequestViewRepository.ts @@ -1,5 +1,7 @@ import { ClickHouseClient } from '../../../core/clickhouse/index.js'; +import { traced } from '../../tracing.js'; +@traced export class MonthlyRequestViewRepository { constructor(private client: ClickHouseClient) {} diff --git a/controlplane/src/core/repositories/analytics/RouterMetricsRepository.ts b/controlplane/src/core/repositories/analytics/RouterMetricsRepository.ts index b6f0a1e4fd..c8bebe5276 100644 --- a/controlplane/src/core/repositories/analytics/RouterMetricsRepository.ts +++ b/controlplane/src/core/repositories/analytics/RouterMetricsRepository.ts @@ -1,4 +1,5 @@ import { ClickHouseClient } from '../../clickhouse/index.js'; +import { traced } from '../../tracing.js'; export interface RouterDTO { hostname: string; @@ -23,6 +24,7 @@ export interface RouterRuntimeDTO { }; } +@traced export class RouterMetricsRepository { constructor(private client: ClickHouseClient) {} @@ -141,7 +143,10 @@ export class RouterMetricsRepository { }; } - public async getActiveRouters(input: { federatedGraphId: string; organizationId: string }): Promise { + public async getActiveRouters(input: { federatedGraphId: string; organizationId: string }): Promise<{ + routers: RouterDTO[]; + ok: boolean; + }> { const query = ` select first_value(Timestamp) as timestamp, @@ -177,21 +182,21 @@ export class RouterMetricsRepository { organizationId: input.organizationId, }; - const res = await this.client.queryPromise(query, params); + const { data: routers, ok } = await this.client.queryPromiseWithDefault(query, { + params, + defaultValue: [], + }); - if (Array.isArray(res)) { - return res.map((p) => ({ - hostname: p.hostname, - serviceName: p.serviceName, - serviceVersion: p.serviceVersion, - serviceInstanceId: p.serviceInstanceId, - processId: p.processId, - clusterName: p.clusterName, - configVersionId: p.configVersionId, - processUptimeSeconds: p.processUptimeSeconds, - })); + if (Array.isArray(routers)) { + return { + routers, + ok, + }; } - return []; + return { + routers: [], + ok, + }; } } diff --git a/controlplane/src/core/repositories/analytics/SubgraphMetricsRepository.ts b/controlplane/src/core/repositories/analytics/SubgraphMetricsRepository.ts index f16c99bae4..4b6784e560 100644 --- a/controlplane/src/core/repositories/analytics/SubgraphMetricsRepository.ts +++ b/controlplane/src/core/repositories/analytics/SubgraphMetricsRepository.ts @@ -10,6 +10,7 @@ import { DateRange, Label } from '../../../types/index.js'; import { FederatedGraphRepository } from '../FederatedGraphRepository.js'; import * as schema from '../../../db/schema.js'; import { flipDateRangeValuesIfNeeded } from '../../util.js'; +import { traced } from '../../tracing.js'; import { BaseFilters, buildAnalyticsViewFilters, @@ -61,6 +62,7 @@ interface LatencySeries { p99?: number; } +@traced export class SubgraphMetricsRepository { constructor( private logger: FastifyBaseLogger, diff --git a/controlplane/src/core/repositories/analytics/TraceRepository.ts b/controlplane/src/core/repositories/analytics/TraceRepository.ts index b506352dcf..0b585a8477 100644 --- a/controlplane/src/core/repositories/analytics/TraceRepository.ts +++ b/controlplane/src/core/repositories/analytics/TraceRepository.ts @@ -1,8 +1,10 @@ import { PlainMessage } from '@bufbuild/protobuf'; import { Span } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { ClickHouseClient } from '../../clickhouse/index.js'; +import { traced } from '../../tracing.js'; import { timestampToNanoseconds } from './util.js'; +@traced export class TraceRepository { constructor(private client: ClickHouseClient) {} diff --git a/controlplane/src/core/repositories/analytics/UsageRepository.ts b/controlplane/src/core/repositories/analytics/UsageRepository.ts index 6ed323f88c..eade89c67a 100644 --- a/controlplane/src/core/repositories/analytics/UsageRepository.ts +++ b/controlplane/src/core/repositories/analytics/UsageRepository.ts @@ -7,8 +7,10 @@ import { import { ClickHouseClient } from '../../clickhouse/index.js'; import { DateRange, Field, TimeFilters } from '../../../types/index.js'; import { flipDateRangeValuesIfNeeded } from '../../util.js'; +import { traced } from '../../tracing.js'; import { parseTimeFilters } from './util.js'; +@traced export class UsageRepository { constructor(private client: ClickHouseClient) {} @@ -212,6 +214,10 @@ export class UsageRepository { rangeInHours: number; fields: Field[]; }): Promise<{ name: string; typeName: string }[]> { + if (fields.length === 0) { + return []; + } + // Escape single quotes in field names and type names const arrayJoinFields = fields .map((field) => { @@ -301,6 +307,10 @@ export class UsageRepository { range: number; fields: Field[]; }): Promise<{ name: string; typeName: string }[]> { + if (fields.length === 0) { + return []; + } + // Escape single quotes in field names and type names const arrayJoinFields = fields .map((field) => { diff --git a/controlplane/src/core/routes.ts b/controlplane/src/core/routes.ts index d08fe04f42..fdc8112a0c 100644 --- a/controlplane/src/core/routes.ts +++ b/controlplane/src/core/routes.ts @@ -34,6 +34,7 @@ export interface RouterOptions { logger: pino.Logger; keycloakClient: Keycloak; platformWebhooks: IPlatformWebhookService; + webhookProxyUrl?: string; webBaseUrl: string; githubApp?: App; slack: { clientID?: string; clientSecret?: string }; diff --git a/controlplane/src/core/sentry.config.ts b/controlplane/src/core/sentry.config.ts index 923a609f2a..03d0e42e78 100644 --- a/controlplane/src/core/sentry.config.ts +++ b/controlplane/src/core/sentry.config.ts @@ -1,8 +1,9 @@ +import process from 'node:process'; import * as Sentry from '@sentry/node'; import { nodeProfilingIntegration } from '@sentry/profiling-node'; import { eventLoopBlockIntegration } from '@sentry/node-native'; import { fastifyIntegration, pinoIntegration } from '@sentry/node'; -import { envVariables } from './env.schema.js'; +import { sentryEnvVariables } from './env.schema.js'; const { SENTRY_ENABLED, @@ -13,7 +14,7 @@ const { SENTRY_PROFILE_LIFECYCLE, SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS, SENTRY_ENABLE_LOGS, -} = envVariables.parse(process.env); +} = sentryEnvVariables.parse(process.env); if (SENTRY_ENABLED && SENTRY_DSN) { Sentry.init({ @@ -29,6 +30,10 @@ if (SENTRY_ENABLED && SENTRY_DSN) { tracesSampleRate: SENTRY_TRACES_SAMPLE_RATE, profileLifecycle: SENTRY_PROFILE_LIFECYCLE, enableLogs: SENTRY_ENABLE_LOGS, + spotlight: process.env.NODE_ENV !== 'production', }); - console.log('Sentry is initialized.'); + + if (process.env.NODE_ENV !== 'production') { + console.log('Sentry is initialized.'); + } } diff --git a/controlplane/src/core/services/AccessTokenAuthenticator.ts b/controlplane/src/core/services/AccessTokenAuthenticator.ts index 3f98013b7b..dbe1419b24 100644 --- a/controlplane/src/core/services/AccessTokenAuthenticator.ts +++ b/controlplane/src/core/services/AccessTokenAuthenticator.ts @@ -2,7 +2,13 @@ import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb import AuthUtils from '../auth-utils.js'; import { AuthenticationError } from '../errors/errors.js'; import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; -import { RBACEvaluator } from './RBACEvaluator.js'; +import { OidcRepository } from '../repositories/OidcRepository.js'; +import { NamespaceLoginMethodRepository } from '../repositories/NamespaceLoginMethodRepository.js'; +import { OrganizationLoginMethodRepository } from '../repositories/OrganizationLoginMethodRepository.js'; +import { traced } from '../tracing.js'; +import type { LoginMethod } from '../../types/index.js'; +import { buildAuthState } from '../util.js'; +import type { RBACEvaluator } from './RBACEvaluator.js'; export type AccessTokenAuthContext = { auth: 'access_token'; @@ -12,12 +18,17 @@ export type AccessTokenAuthContext = { organizationSlug: string; organizationDeactivated: boolean; rbac: RBACEvaluator; + loginMethod: LoginMethod; }; +@traced export default class AccessTokenAuthenticator { constructor( private orgRepo: OrganizationRepository, private authUtils: AuthUtils, + private oidcRepo: OidcRepository, + private namespaceLoginMethodRepo: NamespaceLoginMethodRepository, + private orgLoginMethodRepo: OrganizationLoginMethodRepository, ) {} /** @@ -47,12 +58,19 @@ export default class AccessTokenAuthenticator { } const organizationDeactivated = !!organization.deactivation; - const rbac = new RBACEvaluator( - await this.orgRepo.getOrganizationMemberGroups({ - userID: userInfoData.sub, - organizationID: organization.id, - }), - userInfoData.sub, + + // The access token is minted from the user's interactive login, so it + // carries the same login method (and therefore the same IdP gate) as a web + // session, derived from the `identity_provider` claim on the userinfo + // response (absent → password login). + const { loginMethod, rbac } = await buildAuthState( + { + oidcRepo: this.oidcRepo, + orgRepo: this.orgRepo, + namespaceLoginMethodRepo: this.namespaceLoginMethodRepo, + orgLoginMethodRepo: this.orgLoginMethodRepo, + }, + { organizationId: organization.id, userId: userInfoData.sub, idpAlias: userInfoData.identity_provider }, ); return { @@ -63,6 +81,7 @@ export default class AccessTokenAuthenticator { userDisplayName: userInfoData.email, organizationDeactivated, rbac, + loginMethod, }; } diff --git a/controlplane/src/core/services/AdmissionWebhookController.ts b/controlplane/src/core/services/AdmissionWebhookController.ts index 87b7755042..c000be480b 100644 --- a/controlplane/src/core/services/AdmissionWebhookController.ts +++ b/controlplane/src/core/services/AdmissionWebhookController.ts @@ -5,9 +5,12 @@ import axiosRetry, { exponentialDelay } from 'axios-retry'; import { FastifyBaseLogger } from 'fastify'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { HttpProxyAgent } from 'http-proxy-agent'; +import { HttpsProxyAgent } from 'https-proxy-agent'; import * as schema from '../../db/schema.js'; import { WebhookDeliveryInfo } from '../../db/models.js'; import { webhookAxiosRetryCond } from '../util.js'; +import { traced } from '../tracing.js'; export class AdmissionError extends Error { constructor(message: string, cause?: Error) { @@ -32,6 +35,7 @@ export interface ValidateConfigResponse { error?: string; } +@traced export class AdmissionWebhookController { httpClient: AxiosInstance; constructor( @@ -39,8 +43,23 @@ export class AdmissionWebhookController { private logger: FastifyBaseLogger, private graphAdmissionWebhookURL?: string, private graphAdmissionWebhookSecret?: string, + proxyUrl?: string, ) { + let httpAgent: HttpProxyAgent | undefined; + let httpsAgent: HttpsProxyAgent | undefined; + if (proxyUrl) { + try { + httpAgent = new HttpProxyAgent(proxyUrl, {}); + httpsAgent = new HttpsProxyAgent(proxyUrl, {}); + } catch (e) { + logger.error(e, 'Failed to create proxy agent'); + } + } + this.httpClient = axios.create({ + httpAgent, + httpsAgent, + proxy: false, timeout: 30_000, baseURL: this.graphAdmissionWebhookURL, }); diff --git a/controlplane/src/core/services/ApiGenerator.ts b/controlplane/src/core/services/ApiGenerator.ts index cc1b7e01a6..a13de4d65a 100644 --- a/controlplane/src/core/services/ApiGenerator.ts +++ b/controlplane/src/core/services/ApiGenerator.ts @@ -1,5 +1,7 @@ import { uid } from 'uid/secure'; +import { traced } from '../tracing.js'; +@traced export class ApiKeyGenerator { public static generate(): string { return `cosmo_${uid(32)}`; diff --git a/controlplane/src/core/services/ApiKeyAuthenticator.ts b/controlplane/src/core/services/ApiKeyAuthenticator.ts index 70c4401b4d..08da5b2b39 100644 --- a/controlplane/src/core/services/ApiKeyAuthenticator.ts +++ b/controlplane/src/core/services/ApiKeyAuthenticator.ts @@ -4,6 +4,8 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; import { AuthenticationError } from '../errors/errors.js'; import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; +import { traced } from '../tracing.js'; +import type { LoginMethod } from '../../types/index.js'; import { RBACEvaluator } from './RBACEvaluator.js'; export type ApiKeyAuthContext = { @@ -15,8 +17,10 @@ export type ApiKeyAuthContext = { userDisplayName: string; apiKeyName: string; rbac: RBACEvaluator; + loginMethod: LoginMethod; }; +@traced export default class ApiKeyAuthenticator { constructor( private db: PostgresJsDatabase, @@ -82,6 +86,7 @@ export default class ApiKeyAuthenticator { organizationSlug: organization.slug, organizationDeactivated, rbac, + loginMethod: { type: 'api-key' }, }; } } diff --git a/controlplane/src/core/services/ApolloMigrator.ts b/controlplane/src/core/services/ApolloMigrator.ts index aa3ee04682..ce80064b52 100644 --- a/controlplane/src/core/services/ApolloMigrator.ts +++ b/controlplane/src/core/services/ApolloMigrator.ts @@ -5,7 +5,9 @@ import { FederatedGraphDTO, MigrationSubgraph } from '../../types/index.js'; import { FederatedGraphRepository } from '../repositories/FederatedGraphRepository.js'; import { SubgraphRepository } from '../repositories/SubgraphRepository.js'; import { sanitizeMigratedGraphName } from '../util.js'; +import { traced } from '../tracing.js'; +@traced export default class ApolloMigrator { apiKey = ''; organizationSlug = ''; diff --git a/controlplane/src/core/services/Authentication.ts b/controlplane/src/core/services/Authentication.ts index 02b5f59c71..0d2b25103d 100644 --- a/controlplane/src/core/services/Authentication.ts +++ b/controlplane/src/core/services/Authentication.ts @@ -2,13 +2,17 @@ import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb import { lru } from 'tiny-lru'; import { FastifyBaseLogger } from 'fastify'; import { AuthContext, UserInfoEndpointResponse } from '../../types/index.js'; +import { buildAuthState } from '../util.js'; import { AuthenticationError } from '../errors/errors.js'; import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; +import { OidcRepository } from '../repositories/OidcRepository.js'; +import { NamespaceLoginMethodRepository } from '../repositories/NamespaceLoginMethodRepository.js'; +import { OrganizationLoginMethodRepository } from '../repositories/OrganizationLoginMethodRepository.js'; +import { traced } from '../tracing.js'; import AccessTokenAuthenticator from './AccessTokenAuthenticator.js'; import ApiKeyAuthenticator from './ApiKeyAuthenticator.js'; import GraphApiTokenAuthenticator, { GraphKeyAuthContext } from './GraphApiTokenAuthenticator.js'; import WebSessionAuthenticator from './WebSessionAuthenticator.js'; -import { RBACEvaluator } from './RBACEvaluator.js'; // The maximum time to cache the user auth context for the web session authentication. const maxAuthCacheTtl = 30 * 1000; // 30 seconds @@ -19,6 +23,7 @@ export interface Authenticator { getUserInfo(token: string): Promise; } +@traced export class Authentication implements Authenticator { #cache = lru(1000, maxAuthCacheTtl); @@ -28,6 +33,9 @@ export class Authentication implements Authenticator { private accessTokenAuth: AccessTokenAuthenticator, private graphKeyAuth: GraphApiTokenAuthenticator, private orgRepo: OrganizationRepository, + private oidcRepo: OidcRepository, + private namespaceLoginMethodRepo: NamespaceLoginMethodRepository, + private orgLoginMethodRepo: OrganizationLoginMethodRepository, private logger: FastifyBaseLogger, ) {} @@ -65,7 +73,9 @@ export class Authentication implements Authenticator { throw new AuthenticationError(EnumStatusCode.ERROR_NOT_AUTHENTICATED, 'Organization not found'); } - const cacheKey = `${user.userId}:${organization.id}`; + // Cache key now includes sessionId so that re-login via a different IdP + // within the cache TTL invalidates cleanly. + const cacheKey = `${user.userId}:${organization.id}:${user.sessionId}`; const cachedUserContext = this.#cache.get(cacheKey); if (cachedUserContext) { @@ -88,12 +98,16 @@ export class Authentication implements Authenticator { } const organizationDeactivated = !!organization.deactivation; - const rbac = new RBACEvaluator( - await this.orgRepo.getOrganizationMemberGroups({ - organizationID: organization.id, - userID: user.userId, - }), - user.userId, + + // Resolve the login method, IdP gate and RBAC from the session's idp_alias. + const { loginMethod, rbac } = await buildAuthState( + { + oidcRepo: this.oidcRepo, + orgRepo: this.orgRepo, + namespaceLoginMethodRepo: this.namespaceLoginMethodRepo, + orgLoginMethodRepo: this.orgLoginMethodRepo, + }, + { organizationId: organization.id, userId: user.userId, idpAlias: user.idpAlias }, ); const userContext: AuthContext = { @@ -104,6 +118,7 @@ export class Authentication implements Authenticator { organizationDeactivated, rbac, userDisplayName: user.userDisplayName, + loginMethod, }; this.#cache.set(cacheKey, userContext); diff --git a/controlplane/src/core/services/Authorization.ts b/controlplane/src/core/services/Authorization.ts index 6d5e048096..4fac79c265 100644 --- a/controlplane/src/core/services/Authorization.ts +++ b/controlplane/src/core/services/Authorization.ts @@ -8,7 +8,10 @@ import { FederatedGraphRepository } from '../repositories/FederatedGraphReposito import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; import { SubgraphRepository } from '../repositories/SubgraphRepository.js'; import { AuthContext } from '../../types/index.js'; +import { isNamespaceAllowed } from '../util.js'; +import { traced } from '../tracing.js'; +@traced export class Authorization { constructor( private logger: FastifyBaseLogger, @@ -68,14 +71,24 @@ export class Authorization { */ const { rbac } = authContext; if (rbac && rbac.groups.length > 0) { - if (rbac.isOrganizationAdminOrDeveloper) { - // When the client have the organization admin or developer roles, they are allowed to access any organization - // resource, we don't need to perform any additional validation - return; - } - + // Resolve the target's namespace so we can intersect with the IdP gate even + // when the org-admin/developer short-circuit would otherwise apply. + let targetNamespaceId: string | undefined; if (targetType === 'federatedGraph') { const federatedGraph = await fedRepo.byTargetId(targetId); + targetNamespaceId = federatedGraph?.namespaceId; + + if (rbac.isOrganizationAdminOrDeveloper) { + // Admin/developer bypass — still subject to the IdP gate. + if ( + rbac.idpNamespaceAccess.kind === 'all' || + (targetNamespaceId !== undefined && isNamespaceAllowed(rbac.idpNamespaceAccess, targetNamespaceId)) + ) { + return; + } + throw new UnauthorizedError(); + } + if ( federatedGraph && ((isDeleteOperation && rbac.canDeleteFederatedGraph(federatedGraph)) || @@ -87,6 +100,18 @@ export class Authorization { throw new UnauthorizedError(); } else if (targetType === 'subgraph') { const subgraph = await subgraphRepo.byTargetId(targetId); + targetNamespaceId = subgraph?.namespaceId; + + if (rbac.isOrganizationAdminOrDeveloper) { + if ( + rbac.idpNamespaceAccess.kind === 'all' || + (targetNamespaceId !== undefined && isNamespaceAllowed(rbac.idpNamespaceAccess, targetNamespaceId)) + ) { + return; + } + throw new UnauthorizedError(); + } + if ( subgraph && ((isDeleteOperation && rbac.canDeleteSubGraph(subgraph)) || diff --git a/controlplane/src/core/services/BillingService.ts b/controlplane/src/core/services/BillingService.ts index 17d32111b1..a1d9b4eb7c 100644 --- a/controlplane/src/core/services/BillingService.ts +++ b/controlplane/src/core/services/BillingService.ts @@ -6,10 +6,12 @@ import { toISODateTime } from '../webhooks/utils.js'; import { NewBillingSubscription } from '../../db/models.js'; import { BillingRepository } from '../repositories/BillingRepository.js'; import { AuditLogRepository } from '../repositories/AuditLogRepository.js'; +import { traced } from '../tracing.js'; /** * BillingService for billing related operations. */ +@traced export class BillingService { public stripe: Stripe; @@ -25,7 +27,7 @@ export class BillingService { }); } - private upsertStripeCustomerId = async ({ id, organizationSlug }: { id: string; organizationSlug: string }) => { + private async upsertStripeCustomerId({ id, organizationSlug }: { id: string; organizationSlug: string }) { const billing = await this.db.query.organizationBilling.findFirst({ where: eq(organizationBilling.organizationId, id), columns: { @@ -61,7 +63,7 @@ export class BillingService { }); return customer.id; - }; + } public async completeCheckoutSession(subscriptionId: string, organizationId: string) { const billing = await this.db.query.billingSubscriptions.findFirst({ @@ -396,7 +398,7 @@ export class BillingService { } } - cancelSubscription = async (organizationId: string, subscriptionId: string, comment: string) => { + async cancelSubscription(organizationId: string, subscriptionId: string, comment: string) { await this.stripe.subscriptions.cancel(subscriptionId, { cancellation_details: { comment, @@ -404,5 +406,5 @@ export class BillingService { }); await this.db.delete(organizationBilling).where(eq(organizationBilling.organizationId, organizationId)); - }; + } } diff --git a/controlplane/src/core/services/CompositionService.ts b/controlplane/src/core/services/CompositionService.ts new file mode 100644 index 0000000000..638d3986bf --- /dev/null +++ b/controlplane/src/core/services/CompositionService.ts @@ -0,0 +1,1137 @@ +/* eslint-disable no-labels */ +import { createHash, randomUUID } from 'node:crypto'; +import { JsonObject, PlainMessage } from '@bufbuild/protobuf'; +import { FeatureFlagRouterExecutionConfig, RouterConfig } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; +import { DeploymentError } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { and, eq, inArray } from 'drizzle-orm'; +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { FastifyBaseLogger } from 'fastify'; +import { parse } from 'graphql'; +import { + CompositionOptions, + ROUTER_COMPATIBILITY_VERSION_ONE, + ROUTER_COMPATIBILITY_VERSIONS, + SupportedRouterCompatibilityVersion, +} from '@wundergraph/composition'; +import * as schema from '../../db/schema.js'; +import { + ComposeAndDeployResult, + COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, + FeatureFlagDTO, + FederatedGraphAndCompositionResults, + FederatedGraphDTO, + OrganizationFeatures, + SPLIT_CONFIG_LOADING_FEATURE_ID, +} from '../../types/index.js'; +import { BlobStorage } from '../blobstorage/index.js'; +import { + BaseCompositionData, + Composer, + ContractBaseCompositionData, + routerConfigToFeatureFlagExecutionConfig, + RouterConfigUploadError, +} from '../composition/composer.js'; +import { + composeGraphsInWorker, + deserializeComposedGraphArtifact, + DeserializedComposedGraph, + deserializeRouterExecutionConfig, +} from '../composition/composeGraphs.pool.js'; +import { unsuccessfulBaseCompositionError } from '../errors/errors.js'; +import { ClickHouseClient } from '../clickhouse/index.js'; +import { traced } from '../tracing.js'; +import { FederatedGraphRepository } from '../repositories/FederatedGraphRepository.js'; +import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; +import { ComposeGraphsTaskResultItem, SerializedContractTagOptions } from '../composition/composeGraphs.types.js'; +import { AdmissionError } from './AdmissionWebhookController.js'; +import { ContractRepository } from './../repositories/ContractRepository.js'; +import { FeatureFlagRepository, SubgraphsToCompose } from './../repositories/FeatureFlagRepository.js'; +import { GraphCompositionRepository } from './../repositories/GraphCompositionRepository.js'; +import { SubgraphRepository } from './../repositories/SubgraphRepository.js'; + +@traced +export class CompositionService { + constructor( + private db: PostgresJsDatabase, + private organizationId: string, + private logger: FastifyBaseLogger, + private admissionConfig: { + webhookJWTSecret: string; + cdnBaseUrl: string; + }, + private blobStorage: BlobStorage, + private chClient: ClickHouseClient | undefined, + private webhookProxyUrl: string | undefined, + private disableResolvabilityValidation: boolean | undefined, + ) {} + + public async composeAndDeployFederatedGraph({ + actorId, + federatedGraph, + }: { + actorId: string; + federatedGraph: FederatedGraphDTO; + }): Promise { + const orgFeatures = await this.#getOrganizationFeatures(); + const compositionOptions: CompositionOptions = { + disableResolvabilityValidation: this.disableResolvabilityValidation, + ignoreExternalKeys: orgFeatures.ignoreExternalKeys, + }; + + if (!orgFeatures.splitConfigLoading) { + return this.#legacyComposeAndDeploy({ + actorId, + federatedGraphs: [federatedGraph], + compositionOptions, + }); + } + + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); + const result: ComposeAndDeployResult = { + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + + // Get published subgraphs for recomposition of the federated graph + const subgraphs = await subgraphRepo.listByFederatedGraph({ + federatedGraphTargetId: federatedGraph.targetId, + published: true, + }); + + let tagOptionsByContractName: SerializedContractTagOptions[]; + if (federatedGraph.contract) { + tagOptionsByContractName = [ + { + contractName: federatedGraph.name, + excludeTags: federatedGraph.contract.excludeTags, + includeTags: federatedGraph.contract.includeTags, + }, + ]; + } else { + const contractRepo = new ContractRepository(this.logger, this.db, this.organizationId); + const contracts = await contractRepo.bySourceFederatedGraphId(federatedGraph.id); + tagOptionsByContractName = contracts.map((contract) => ({ + contractName: contract.downstreamFederatedGraph.target.name, + excludeTags: contract.excludeTags, + includeTags: contract.includeTags, + })); + } + + const { results } = await composeGraphsInWorker({ + federatedGraph, + subgraphsToCompose: [ + { + subgraphs, + isFeatureFlagComposition: false, + featureFlagName: '', + featureFlagId: '', + }, + ], + tagOptionsByContractName, + compositionOptions, + }); + + await this.#handleCompositionResultsAndDeploy({ + actorId, + graphAndCompositionResults: [{ federatedGraph, results }], + result, + splitConfig: true, + }); + + return result; + } + + public async composeAndDeployFeatureFlag({ + actorId, + featureFlag, + isEnabled, + prevFederatedGraphs, + }: { + actorId: string; + featureFlag: FeatureFlagDTO; + isEnabled?: boolean; + prevFederatedGraphs?: FederatedGraphDTO[]; + }): Promise { + const orgFeatures = await this.#getOrganizationFeatures(); + const enabled = isEnabled ?? featureFlag.isEnabled; + if (!orgFeatures.splitConfigLoading) { + return await this.#legacyComposeAndDeployFeatureFlag({ + actorId, + featureFlag, + enabled, + orgFeatures, + prevFederatedGraphs, + }); + } + + const result: ComposeAndDeployResult = { + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + + const featureFlagRepo = new FeatureFlagRepository(this.logger, this.db, this.organizationId); + const federatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ + featureFlagId: featureFlag.id, + namespaceId: featureFlag.namespaceId, + excludeDisabled: enabled, + includeContracts: true, + }); + + // If the feature flag belonged to one or more federated graphs, we need to delete the router config for the + // graphs that are no longer associated with the feature flag + if (prevFederatedGraphs && prevFederatedGraphs.length > 0) { + const federatedGraphsToDeleteFrom: FederatedGraphDTO[] = []; + for (const graph of prevFederatedGraphs) { + if (!federatedGraphs.some((g) => g.id === graph.id)) { + federatedGraphsToDeleteFrom.push(graph); + } + } + + const deleteErrors = await this.#deleteFeatureFlagConfigs(featureFlag, federatedGraphsToDeleteFrom); + if (deleteErrors.length > 0) { + result.deploymentErrors.push(...deleteErrors); + return result; + } + } + + if (federatedGraphs.length === 0) { + // The feature flag is not associated with any federated graphs + return result; + } + + if (!enabled) { + // The feature flag is disabled; instead of recomposing, we are just going to delete the router configuration + // from the federated graphs the feature flag is associated with + const deleteError = await this.#deleteFeatureFlagConfigs(featureFlag, federatedGraphs); + result.deploymentErrors.push(...deleteError); + return result; + } + + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); + const compositionOptions: CompositionOptions = { + disableResolvabilityValidation: this.disableResolvabilityValidation, + ignoreExternalKeys: orgFeatures.ignoreExternalKeys, + }; + + const graphAndCompositionResults: FederatedGraphAndCompositionResults[] = []; + for (const graph of federatedGraphs) { + // Get published subgraphs for recomposition of the federated graph + const subgraphs = await subgraphRepo.listByFederatedGraph({ + federatedGraphTargetId: graph.targetId, + published: true, + }); + + const baseCompositionSubgraphs = subgraphs.map((s) => ({ + name: s.name, + url: s.routingUrl, + definitions: parse(s.schemaSDL), + })); + + const subgraphsToCompose = featureFlagRepo.getFeatureFlagRelatedSubgraphsToCompose( + new Map([[featureFlag.id, featureFlag]]), + baseCompositionSubgraphs, + subgraphs, + [], + ); + + const { results } = await composeGraphsInWorker({ + federatedGraph: graph, + subgraphsToCompose: subgraphsToCompose.map((s) => ({ + subgraphs: s.subgraphs, + isFeatureFlagComposition: s.isFeatureFlagComposition, + featureFlagName: s.featureFlagName, + featureFlagId: s.featureFlagId, + })), + /** + * Do not recompose contracts of a base graph; if the feature flag also belongs to a contract, the + * contract will be itself added to the `federatedGraphs` array. + * + * Consequently, if `graph` is a contract, pass the tag data through to the feature flag composition. + */ + tagOptionsByContractName: graph.contract + ? [ + { + contractName: graph.name, + excludeTags: graph.contract.excludeTags, + includeTags: graph.contract.includeTags, + }, + ] + : [], + compositionOptions, + }); + + graphAndCompositionResults.push({ federatedGraph: graph, results }); + } + + await this.#handleCompositionResultsAndDeploy({ + actorId, + graphAndCompositionResults, + result, + isFeatureFlagComposition: true, + splitConfig: true, + }); + + return result; + } + + public async deleteFeatureFlag({ + actorId, + featureFlag, + authorize, + }: { + actorId: string; + featureFlag: FeatureFlagDTO; + authorize: (graph: FederatedGraphDTO) => Promise; + }): Promise { + const orgFeatures = await this.#getOrganizationFeatures(); + const featureFlagRepo = new FeatureFlagRepository(this.logger, this.db, this.organizationId); + + // Collect the federated graph DTOs that have the feature flag enabled because they will be re-composed + const federatedGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ + featureFlagId: featureFlag.id, + namespaceId: featureFlag.namespaceId, + // if deleting when already disabled, there are no compositions to be done. + excludeDisabled: true, + includeContracts: orgFeatures.splitConfigLoading, + }); + + // Check that the user is authorized to delete the feature flag. + // The user must have authorization for each related federated graph + for (const federatedGraph of federatedGraphs) { + // Check if the user is authorized to perform the action + await authorize(federatedGraph); + } + + /** + * We need to have the actual deletion here because the legacy implementation needs the feature flag to be + * deleted before composition; however, v2 needs it to happen after we know the graphs the feature flag is applied + * to because, instead of recomposing everything, we just remove the feature flag composition. + */ + await featureFlagRepo.delete(featureFlag.id); + + if (!orgFeatures.splitConfigLoading) { + return await this.#legacyComposeAndDeploy({ + actorId, + federatedGraphs, + compositionOptions: { + disableResolvabilityValidation: this.disableResolvabilityValidation, + ignoreExternalKeys: orgFeatures.ignoreExternalKeys, + }, + }); + } + + return { + deploymentErrors: await this.#deleteFeatureFlagConfigs(featureFlag, federatedGraphs), + compositionErrors: [], + compositionWarnings: [], + }; + } + + async recomposeAndDeployAffected({ + actorId, + affectedFederatedGraphs, + affectedFeatureFlags, + isFeatureSubgraph, + }: { + actorId: string; + affectedFederatedGraphs: FederatedGraphDTO[]; + affectedFeatureFlags: FeatureFlagDTO[]; + isFeatureSubgraph: boolean; + }): Promise { + const orgFeatures = await this.#getOrganizationFeatures(); + if (!orgFeatures.splitConfigLoading) { + return await this.#legacyComposeAndDeploy({ + actorId, + federatedGraphs: affectedFederatedGraphs, + compositionOptions: { + disableResolvabilityValidation: this.disableResolvabilityValidation, + ignoreExternalKeys: orgFeatures.ignoreExternalKeys, + }, + }); + } + + const result: ComposeAndDeployResult = { + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + + // Compose all affected federated graphs only when the subgraph we are updating is not a feature subgraph + // as these should not affect federated graphs + if (!isFeatureSubgraph) { + for (const federatedGraph of affectedFederatedGraphs) { + const { deploymentErrors, compositionErrors, compositionWarnings } = await this.composeAndDeployFederatedGraph({ + actorId, + federatedGraph, + }); + + result.deploymentErrors.push(...deploymentErrors); + result.compositionErrors.push(...compositionErrors); + result.compositionWarnings.push(...compositionWarnings); + } + } + + // Compose all affected feature flags + for (const featureFlag of affectedFeatureFlags) { + const { deploymentErrors, compositionErrors, compositionWarnings } = await this.composeAndDeployFeatureFlag({ + actorId, + featureFlag, + isEnabled: true, + }); + + result.deploymentErrors.push(...deploymentErrors); + result.compositionErrors.push(...compositionErrors); + result.compositionWarnings.push(...compositionWarnings); + } + + return result; + } + + async #getOrganizationFeatures(): Promise { + const orgRepo = new OrganizationRepository(this.logger, this.db); + const ignoreExternalKeysFeature = await orgRepo.getFeature({ + organizationId: this.organizationId, + featureId: COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID, + }); + + const splitConfigFeature = await orgRepo.getFeature({ + organizationId: this.organizationId, + featureId: SPLIT_CONFIG_LOADING_FEATURE_ID, + }); + + return { + ignoreExternalKeys: ignoreExternalKeysFeature?.enabled ?? false, + splitConfigLoading: splitConfigFeature?.enabled ?? false, + }; + } + + async #legacyComposeAndDeploy({ + actorId, + federatedGraphs, + compositionOptions, + }: { + actorId: string; + federatedGraphs: FederatedGraphDTO[]; + compositionOptions?: CompositionOptions; + }): Promise { + const result: ComposeAndDeployResult = { + deploymentErrors: [], + compositionErrors: [], + compositionWarnings: [], + }; + + if (federatedGraphs.length === 0) { + return result; + } + + const subgraphRepo = new SubgraphRepository(this.logger, this.db, this.organizationId); + const contractRepo = new ContractRepository(this.logger, this.db, this.organizationId); + const featureFlagRepo = new FeatureFlagRepository(this.logger, this.db, this.organizationId); + + const graphAndCompositionResults: FederatedGraphAndCompositionResults[] = []; + for (const graph of federatedGraphs) { + // Get published subgraphs for recomposition of the federated graph + const subgraphs = await subgraphRepo.listByFederatedGraph({ + federatedGraphTargetId: graph.targetId, + published: true, + }); + + const contracts = await contractRepo.bySourceFederatedGraphId(graph.id); + const tagOptionsByContractName = contracts.map((contract) => ({ + contractName: contract.downstreamFederatedGraph.target.name, + excludeTags: contract.excludeTags, + includeTags: contract.includeTags, + })); + + const baseCompositionSubgraphs = subgraphs.map((s) => ({ + name: s.name, + url: s.routingUrl, + definitions: parse(s.schemaSDL), + })); + + // Collects the base graph and applicable feature flag-related graphs + const allSubgraphsToCompose: SubgraphsToCompose[] = await featureFlagRepo.getSubgraphsToCompose({ + baseSubgraphs: subgraphs, + baseCompositionSubgraphs, + fedGraphLabelMatchers: graph.labelMatchers, + }); + + const { results } = await composeGraphsInWorker({ + federatedGraph: graph, + subgraphsToCompose: allSubgraphsToCompose.map((g) => ({ + subgraphs: g.subgraphs, + isFeatureFlagComposition: g.isFeatureFlagComposition, + featureFlagName: g.featureFlagName, + featureFlagId: g.featureFlagId, + })), + tagOptionsByContractName, + compositionOptions, + }); + + graphAndCompositionResults.push({ federatedGraph: graph, results }); + } + + await this.#handleCompositionResultsAndDeploy({ actorId, graphAndCompositionResults, result }); + return result; + } + + async #legacyComposeAndDeployFeatureFlag({ + actorId, + featureFlag, + enabled, + orgFeatures, + prevFederatedGraphs, + }: { + actorId: string; + featureFlag: FeatureFlagDTO; + enabled: boolean; + orgFeatures: OrganizationFeatures; + prevFederatedGraphs?: FederatedGraphDTO[]; + }) { + const featureFlagRepo = new FeatureFlagRepository(this.logger, this.db, this.organizationId); + const currentGraphs = await featureFlagRepo.getFederatedGraphsByFeatureFlag({ + featureFlagId: featureFlag.id, + namespaceId: featureFlag.namespaceId, + excludeDisabled: enabled, + }); + + const allFederatedGraphIdsToCompose = new Set(); + const allFederatedGraphsToCompose: FederatedGraphDTO[] = []; + for (const graph of [...(prevFederatedGraphs ?? []), ...currentGraphs]) { + if (!allFederatedGraphIdsToCompose.has(graph.id)) { + allFederatedGraphIdsToCompose.add(graph.id); + allFederatedGraphsToCompose.push(graph); + } + } + + return await this.#legacyComposeAndDeploy({ + actorId, + federatedGraphs: allFederatedGraphsToCompose, + compositionOptions: { + disableResolvabilityValidation: this.disableResolvabilityValidation, + ignoreExternalKeys: orgFeatures.ignoreExternalKeys, + }, + }); + } + + #getManifestBasePath(federatedGraphId: string): string { + return `${this.organizationId}/${federatedGraphId}/manifest`; + } + + #getLatestPath(graph: FederatedGraphDTO): string | undefined { + let versionPath = ''; + if (graph.routerCompatibilityVersion !== ROUTER_COMPATIBILITY_VERSION_ONE) { + if (ROUTER_COMPATIBILITY_VERSIONS.has(graph.routerCompatibilityVersion as SupportedRouterCompatibilityVersion)) { + versionPath = `${graph.routerCompatibilityVersion}/`; + } else { + return undefined; + } + } + + return `${versionPath}latest.json`; + } + + async #updateMapperForFederatedGraph(federatedGraphId: string): Promise { + const routerHashesForGraph = await this.db + .select({ + id: schema.routerConfigHash.id, + hash: schema.routerConfigHash.hash, + featureFlagName: schema.featureFlags.name, + }) + .from(schema.routerConfigHash) + .leftJoin(schema.featureFlags, eq(schema.featureFlags.id, schema.routerConfigHash.featureFlagId)) + .where(eq(schema.routerConfigHash.federatedGraphId, federatedGraphId)) + .execute(); + + // Load hashes from database + const mapper = new Map(); + for (const routerHash of routerHashesForGraph) { + mapper.set(routerHash.featureFlagName ?? '', routerHash.hash); + } + + // Serialize the mapper + const serializableMapper: Record = {}; + for (const [key, value] of mapper) { + serializableMapper[key] = value; + } + + // Serialize the mapper content and generate the file signature + const mapperVersion = randomUUID(); + const mapperContent = JSON.stringify(serializableMapper); + const signatureSha256 = createHash('sha256').update(mapperVersion).update(mapperContent).digest('hex'); + + // Upload the mapper file to the CDN + await this.blobStorage.putObject({ + key: `${this.#getManifestBasePath(federatedGraphId)}/mapper.json`, + body: Buffer.from(mapperContent, 'utf8'), + contentType: 'application/json; charset=utf-8', + metadata: { + version: mapperVersion, + 'signature-sha256': signatureSha256, + }, + }); + } + + async #deleteFeatureFlagConfigs( + featureFlag: FeatureFlagDTO, + federatedGraphs: FederatedGraphDTO[], + ): Promise[]> { + if (federatedGraphs.length === 0) { + return []; + } + + // First, we need to delete all the hashes from the database, so we can correctly update the mapper files + await this.db + .delete(schema.routerConfigHash) + .where( + and( + eq(schema.routerConfigHash.featureFlagId, featureFlag.id), + inArray( + schema.routerConfigHash.federatedGraphId, + federatedGraphs.map((graph) => graph.id), + ), + ), + ) + .execute(); + + // Then, we can proceed with deleting the router config for the feature flag and update the mapper files + const deploymentErrors: PlainMessage[] = []; + await Promise.all( + federatedGraphs.map(async (graph) => { + try { + await this.blobStorage.deleteObject({ + key: `${this.#getManifestBasePath(graph.id)}/feature-flags/${featureFlag.name}.json`, + }); + + await this.#updateMapperForFederatedGraph(graph.id); + } catch (err) { + if (err instanceof Error) { + deploymentErrors.push({ + message: err.message, + namespace: graph.namespace, + federatedGraphName: graph.name, + }); + } + } + }), + ); + + return deploymentErrors; + } + + async #handleCompositionResult({ + actorId, + federatedGraph, + compositionResult, + result, + composer, + baseCompositionData, + }: { + actorId: string; + federatedGraph: FederatedGraphDTO; + compositionResult: ComposeGraphsTaskResultItem; + result: ComposeAndDeployResult; + composer: Composer; + baseCompositionData: BaseCompositionData; + }): Promise<{ + baseCompositionFailed: boolean; + federatedSchemaVersionId: string; + baseComposedGraph: DeserializedComposedGraph; + routerExecutionConfig: RouterConfig | undefined; + }> { + if (!compositionResult.base.success) { + // Collect all composition errors + result.compositionErrors.push( + ...compositionResult.base.errors.map((message) => ({ + federatedGraphName: federatedGraph.name, + namespace: federatedGraph.namespace, + message, + featureFlag: compositionResult.featureFlagName || '', + })), + ); + } + + // Collect all composition warnings + result.compositionWarnings.push( + ...compositionResult.base.warnings.map((warning) => ({ + federatedGraphName: federatedGraph.name, + namespace: federatedGraph.namespace, + message: warning.message, + featureFlag: compositionResult.featureFlagName || '', + })), + ); + + if (!compositionResult.isFeatureFlagComposition && !compositionResult.base.success && !federatedGraph.contract) { + result.compositionErrors.push(unsuccessfulBaseCompositionError(federatedGraph.name, federatedGraph.namespace)); + } + + const federatedSchemaVersionId = randomUUID(); + const baseComposedGraph = deserializeComposedGraphArtifact(federatedGraph, compositionResult.base); + let routerExecutionConfig: RouterConfig | undefined; + if (compositionResult.base.success) { + if (!compositionResult.base.routerExecutionConfigJson) { + throw new Error( + `Successful composition for federated graph "${federatedGraph.name}" does not contain a router execution config.`, + ); + } + + routerExecutionConfig = deserializeRouterExecutionConfig(compositionResult.base.routerExecutionConfigJson); + } + + if (routerExecutionConfig) { + routerExecutionConfig.version = federatedSchemaVersionId; + } + + const baseComposition = await composer.saveComposition({ + composedGraph: baseComposedGraph, + composedById: actorId, + isFeatureFlagComposition: compositionResult.isFeatureFlagComposition, + federatedSchemaVersionId, + routerExecutionConfig, + featureFlagId: compositionResult.featureFlagId, + }); + + if (!compositionResult.base.success || !baseComposition.schemaVersionId) { + /* + * If the base composition failed to compose or deploy, return to the parent loop, because + * contracts are not composed if the base composition fails. + */ + if (!compositionResult.isFeatureFlagComposition) { + return { + baseCompositionFailed: true, + federatedSchemaVersionId, + baseComposedGraph, + routerExecutionConfig, + }; + } + + // Record the feature flag composition to upload (if there are no errors) + } else if (compositionResult.isFeatureFlagComposition) { + if (!routerExecutionConfig) { + throw new Error( + `Successful feature flag composition for federated graph "${federatedGraph.name}" does not contain a router execution config.`, + ); + } + + baseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName.set( + compositionResult.featureFlagName, + routerConfigToFeatureFlagExecutionConfig(routerExecutionConfig), + ); + + // Otherwise, this is the base composition, so store the schema version id + } else { + if (!routerExecutionConfig) { + throw new Error( + `Successful composition for federated graph "${federatedGraph.name}" does not contain a router execution config.`, + ); + } + + baseCompositionData.schemaVersionId = baseComposition.schemaVersionId; + baseCompositionData.routerExecutionConfig = routerExecutionConfig; + } + + return { + baseCompositionFailed: false, + federatedSchemaVersionId, + baseComposedGraph, + routerExecutionConfig, + }; + } + + async #handleCompositionResultsAndDeploy({ + actorId, + graphAndCompositionResults, + result, + isFeatureFlagComposition = false, + splitConfig = false, + }: { + actorId: string; + graphAndCompositionResults: FederatedGraphAndCompositionResults[]; + result: ComposeAndDeployResult; + isFeatureFlagComposition?: boolean; + splitConfig?: boolean; + }): Promise { + const fedGraphRepo = new FederatedGraphRepository(this.logger, this.db, this.organizationId); + const composer = new Composer( + this.logger, + this.db, + fedGraphRepo, + new SubgraphRepository(this.logger, this.db, this.organizationId), + new ContractRepository(this.logger, this.db, this.organizationId), + new GraphCompositionRepository(this.logger, this.db), + this.chClient, + this.webhookProxyUrl, + ); + + parentLoop: for (const { federatedGraph, results } of graphAndCompositionResults) { + /* + * baseCompositionData contains the router execution config and the schema version ID for the source graph + * base composition (not a contract or feature flag composition) + */ + const baseCompositionData: BaseCompositionData = { + featureFlagRouterExecutionConfigByFeatureFlagName: new Map(), + }; + + /* + * Map of the contract base composition schema version ID, router execution config, + * and any feature flag schema version IDs by contract ID + */ + const contractBaseCompositionDataByContractId = new Map(); + + for (const compositionResult of results) { + const { baseCompositionFailed } = await this.#handleCompositionResult({ + actorId, + federatedGraph, + compositionResult, + result, + composer, + baseCompositionData, + }); + + if (baseCompositionFailed) { + continue parentLoop; + } + + // If there are no contracts, there is nothing further to do + if (compositionResult.contracts.length === 0) { + continue; + } + + for (const { contractName, artifact } of compositionResult.contracts) { + const contractGraph = await fedGraphRepo.byName(contractName, federatedGraph.namespace); + if (!contractGraph) { + throw new Error(`The contract graph "${contractName}" was not found.`); + } + + if (!artifact.success) { + result.compositionErrors.push( + ...artifact.errors.map((message) => ({ + federatedGraphName: contractGraph.name, + namespace: contractGraph.namespace, + message, + featureFlag: compositionResult.featureFlagName, + })), + ); + } + + result.compositionWarnings.push( + ...artifact.warnings.map((warning) => ({ + federatedGraphName: contractGraph.name, + namespace: contractGraph.namespace, + message: warning.message, + featureFlag: compositionResult.featureFlagName, + })), + ); + + const contractSchemaVersionId = randomUUID(); + const contractComposedGraph = deserializeComposedGraphArtifact(contractGraph, artifact); + let contractRouterExecutionConfig; + if (artifact.success) { + if (!artifact.routerExecutionConfigJson) { + throw new Error( + `Successful contract composition for federated graph "${contractGraph.name}" does not contain a router execution config.`, + ); + } + + contractRouterExecutionConfig = deserializeRouterExecutionConfig(artifact.routerExecutionConfigJson); + if (!contractRouterExecutionConfig) { + throw new Error( + `Successful contract composition for federated graph "${contractGraph.name}" did not produce a router execution config.`, + ); + } + + contractRouterExecutionConfig.version = contractSchemaVersionId; + } + + const contractComposition = await composer.saveComposition({ + composedGraph: contractComposedGraph, + composedById: actorId, + isFeatureFlagComposition: compositionResult.isFeatureFlagComposition, + federatedSchemaVersionId: contractSchemaVersionId, + routerExecutionConfig: contractRouterExecutionConfig, + featureFlagId: compositionResult.featureFlagId, + }); + + if (!artifact.success || !contractComposition.schemaVersionId) { + continue; + } + + if (!contractRouterExecutionConfig) { + throw new Error( + `Successful contract composition for federated graph "${contractGraph.name}" did not produce a router execution config.`, + ); + } + + /* + * If the base composition for which this contract has been made is NOT a feature flag composition, + * it must be the contract base composition, which must always be uploaded. + * The base composition is always the first item in the subgraphsToCompose array. + */ + if (!compositionResult.isFeatureFlagComposition) { + contractBaseCompositionDataByContractId.set(contractGraph.id, { + schemaVersionId: contractComposition.schemaVersionId, + routerExecutionConfig: contractRouterExecutionConfig, + featureFlagRouterExecutionConfigByFeatureFlagName: new Map(), + }); + + continue; + } + + /* + * If the contract has a feature flag, get the current array feature flag versions (or set a new one), + * and then push the current schema version to the array + */ + const existingContractBaseCompositionData = contractBaseCompositionDataByContractId.get(contractGraph.id); + + /* + * If the existingContractSchemaVersions is undefined, it means the contract base composition failed. + * In this case, simply continue, because when iterating a feature flag for the source graph composition, + * there may not be any errors for the feature flag. + */ + if (!existingContractBaseCompositionData) { + continue; + } + + existingContractBaseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName.set( + compositionResult.featureFlagName, + routerConfigToFeatureFlagExecutionConfig(contractRouterExecutionConfig), + ); + } + } + + // Validate composition result + const graph = await fedGraphRepo.byId(federatedGraph.id); + if (!graph) { + throw new Error(`Fatal: The federated graph "${federatedGraph.name}" was not found.`); + } + + if (isFeatureFlagComposition) { + await this.#deployFeatureFlags( + actorId, + graph, + baseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName, + composer, + result, + ); + } else { + if (!baseCompositionData.routerExecutionConfig) { + throw new Error( + `Fatal: The latest router execution config for federated graph "${federatedGraph.name}" was not generated.`, + ); + } + + if (!baseCompositionData.schemaVersionId) { + throw new Error( + `Fatal: The latest base composition for federated graph "${federatedGraph.name}" was not found.`, + ); + } + + await this.#deployGraph({ + actorId, + routerExecutionConfig: baseCompositionData.routerExecutionConfig, + graph, + schemaVersionId: baseCompositionData.schemaVersionId, + featureFlagRouterExecutionConfigByFeatureFlagName: + baseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName, + composer, + result, + splitConfig, + }); + } + + if (splitConfig) { + await this.#updateMapperForFederatedGraph(federatedGraph.id); + } + + // Handle contracts + for (const [ + contractId, + { featureFlagRouterExecutionConfigByFeatureFlagName, schemaVersionId, routerExecutionConfig }, + ] of contractBaseCompositionDataByContractId) { + const contractDTO = await fedGraphRepo.byId(contractId); + if (!contractDTO) { + throw new Error(`Unexpected: Contract graph with id "${contractId}" not found after latest composition`); + } + + await this.#deployGraph({ + actorId, + routerExecutionConfig, + graph: contractDTO, + schemaVersionId, + featureFlagRouterExecutionConfigByFeatureFlagName, + composer, + result, + splitConfig, + }); + + if (splitConfig) { + await this.#updateMapperForFederatedGraph(contractDTO.id); + } + } + } + } + + async #deployGraph({ + actorId, + routerExecutionConfig, + graph, + schemaVersionId, + featureFlagRouterExecutionConfigByFeatureFlagName, + composer, + result, + splitConfig, + }: { + actorId: string; + routerExecutionConfig: RouterConfig; + graph: FederatedGraphDTO; + schemaVersionId: string; + featureFlagRouterExecutionConfigByFeatureFlagName: Map; + composer: Composer; + result: ComposeAndDeployResult; + splitConfig: boolean; + }) { + const manifestBasePath = this.#getManifestBasePath(graph.id); + const readyPathOverride = this.#getLatestPath(graph); + if (readyPathOverride) { + const { errors: uploadErrors } = await composer.composeAndUploadRouterConfig({ + admissionConfig: { + cdnBaseUrl: this.admissionConfig.cdnBaseUrl, + jwtSecret: this.admissionConfig.webhookJWTSecret, + }, + baseCompositionRouterExecutionConfig: routerExecutionConfig, + baseCompositionSchemaVersionId: schemaVersionId, + blobStorage: this.blobStorage, + featureFlagRouterExecutionConfigByFeatureFlagName: splitConfig + ? new Map() // Do not populate feature flags when the router config is being split + : featureFlagRouterExecutionConfigByFeatureFlagName, + federatedGraphId: graph.id, + organizationId: this.organizationId, + federatedGraphAdmissionWebhookURL: graph.admissionWebhookURL, + federatedGraphAdmissionWebhookSecret: graph.admissionWebhookSecret, + actorId, + pathOverride: splitConfig + ? { + ready: `${manifestBasePath}/${readyPathOverride}`, + draft: `${manifestBasePath}/draft.json`, + } + : undefined, + }); + + if (splitConfig) { + await this.#saveRouterConfigHash(graph.id, undefined, routerExecutionConfig); + } + + result.deploymentErrors.push( + ...uploadErrors + .filter((e) => e instanceof AdmissionError || e instanceof RouterConfigUploadError) + .map((e) => ({ + federatedGraphName: graph.name, + namespace: graph.namespace, + message: e.message ?? '', + })), + ); + } else { + result.deploymentErrors.push({ + message: `Invalid router compatibility version "${graph.routerCompatibilityVersion}".`, + federatedGraphName: graph.name, + namespace: graph.namespace, + }); + } + + if (splitConfig && featureFlagRouterExecutionConfigByFeatureFlagName.size > 0) { + await this.#deployFeatureFlags( + actorId, + graph, + featureFlagRouterExecutionConfigByFeatureFlagName, + composer, + result, + ); + } + } + + async #deployFeatureFlags( + actorId: string, + graph: FederatedGraphDTO, + featureFlagRouterExecutionConfigByFeatureFlagName: Map, + composer: Composer, + result: ComposeAndDeployResult, + ): Promise { + const baseManifestPath = this.#getManifestBasePath(graph.id); + for (const [ + featureFlagName, + featureFlagRouterExecutionConfig, + ] of featureFlagRouterExecutionConfigByFeatureFlagName.entries()) { + const routerExecutionConfig = RouterConfig.fromJson({ + ...(featureFlagRouterExecutionConfig.toJson() as JsonObject), + compatibilityVersion: graph.routerCompatibilityVersion, + }); + + const { errors: uploadErrors } = await composer.composeAndUploadRouterConfig({ + admissionConfig: { + cdnBaseUrl: this.admissionConfig.cdnBaseUrl, + jwtSecret: this.admissionConfig.webhookJWTSecret, + }, + baseCompositionRouterExecutionConfig: routerExecutionConfig, + baseCompositionSchemaVersionId: '', + blobStorage: this.blobStorage, + featureFlagRouterExecutionConfigByFeatureFlagName: new Map(), + federatedGraphId: graph.id, + organizationId: this.organizationId, + federatedGraphAdmissionWebhookURL: graph.admissionWebhookURL, + federatedGraphAdmissionWebhookSecret: graph.admissionWebhookSecret, + actorId, + pathOverride: { + ready: `${baseManifestPath}/feature-flags/${featureFlagName}.json`, + draft: `${baseManifestPath}/feature-flags/${featureFlagName}.draft.json`, + }, + }); + + await this.#saveRouterConfigHash(graph.id, featureFlagName, routerExecutionConfig); + result.deploymentErrors.push( + ...uploadErrors + .filter((e) => e instanceof AdmissionError || e instanceof RouterConfigUploadError) + .map((e) => ({ + federatedGraphName: graph.name, + namespace: graph.namespace, + message: e.message ?? '', + })), + ); + } + } + + async #saveRouterConfigHash( + federatedGraphId: string, + featureFlagName: string | undefined, + routerConfig: RouterConfig, + ): Promise { + const hash = createHash('sha256').update(routerConfig.toJsonString()).digest('hex'); + + let featureFlag: { id: string } | undefined; + if (featureFlagName) { + const results = await this.db + .select({ id: schema.featureFlags.id }) + .from(schema.featureFlags) + .where( + and( + eq(schema.featureFlags.organizationId, this.organizationId), + eq(schema.featureFlags.name, featureFlagName), + ), + ) + .limit(1) + .execute(); + + featureFlag = results[0]; + } + + await this.db + .insert(schema.routerConfigHash) + .values({ federatedGraphId, featureFlagId: featureFlag?.id ?? null, hash }) + .onConflictDoUpdate({ + target: [schema.routerConfigHash.federatedGraphId, schema.routerConfigHash.featureFlagId], + set: { hash, updatedAt: new Date() }, + }) + .execute(); + } +} diff --git a/controlplane/src/core/services/GraphApiTokenAuthenticator.ts b/controlplane/src/core/services/GraphApiTokenAuthenticator.ts index 5af82cb019..4e7ab8efdf 100644 --- a/controlplane/src/core/services/GraphApiTokenAuthenticator.ts +++ b/controlplane/src/core/services/GraphApiTokenAuthenticator.ts @@ -1,5 +1,6 @@ import { JWTPayload } from 'jose'; import { verifyJwt } from '../crypto/jwt.js'; +import { traced } from '../tracing.js'; export type GraphKeyAuthContext = { organizationId: string; @@ -11,6 +12,7 @@ export interface GraphApiJwtPayload extends JWTPayload { federated_graph_id: string; } +@traced export default class GraphApiTokenAuthenticator { constructor(private jwtSecret: string) {} diff --git a/controlplane/src/core/services/Keycloak.ts b/controlplane/src/core/services/Keycloak.ts index 8615e9ad76..74b6483325 100644 --- a/controlplane/src/core/services/Keycloak.ts +++ b/controlplane/src/core/services/Keycloak.ts @@ -4,16 +4,32 @@ import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb import { uid } from 'uid'; import { FastifyBaseLogger } from 'fastify'; import { decodeJwt } from 'jose'; +import axios, { type AxiosInstance, isAxiosError, isCancel } from 'axios'; +import { HttpProxyAgent } from 'http-proxy-agent'; +import { HttpsProxyAgent } from 'https-proxy-agent'; import { MemberRole } from '../../db/models.js'; import { organizationRoleEnum } from '../../db/schema.js'; -import { AuthenticationError } from '../errors/errors.js'; +import { AuthenticationError, PublicError } from '../errors/errors.js'; +import { isValidLocalhostOrSecureEndpoint } from '../util.js'; +import { traced } from '../tracing.js'; + +interface ParsedOpenIdConfiguration { + issuer?: string; + userinfo_endpoint?: string; + token_endpoint?: string; + authorization_endpoint?: string; + end_session_endpoint?: string; + jwks_uri?: string; +} +@traced export default class Keycloak { client: KeycloakAdminClient; adminUser = ''; adminPassword = ''; clientId = ''; realm = ''; + #httpClient: AxiosInstance; private logger: FastifyBaseLogger; @@ -24,6 +40,7 @@ export default class Keycloak { adminUser: string; adminPassword: string; logger: FastifyBaseLogger; + webhookProxyUrl?: string; }) { this.client = new KeycloakAdminClient({ baseUrl: options.apiUrl, @@ -35,6 +52,24 @@ export default class Keycloak { this.adminUser = options.adminUser; this.adminPassword = options.adminPassword; this.logger = options.logger; + + let httpAgent: HttpProxyAgent | undefined; + let httpsAgent: HttpsProxyAgent | undefined; + if (options.webhookProxyUrl) { + try { + httpAgent = new HttpProxyAgent(options.webhookProxyUrl, {}); + httpsAgent = new HttpsProxyAgent(options.webhookProxyUrl, {}); + } catch (e) { + this.logger.error(e, 'Failed to create proxy agent'); + } + } + + this.#httpClient = axios.create({ + httpAgent, + httpsAgent, + proxy: false, + baseURL: options.apiUrl, + }); } public async authenticateClient() { @@ -255,6 +290,7 @@ export default class Keycloak { name, alias, discoveryEndpoint, + abortSignal, }: { realm?: string; clientId: string; @@ -262,12 +298,21 @@ export default class Keycloak { name: string; alias: string; discoveryEndpoint: string; + abortSignal?: AbortSignal; }) { - const oidcUrls = await this.client.identityProviders.importFromUrl({ - realm: realm || this.realm, - fromUrl: discoveryEndpoint, - providerId: 'oidc', - }); + const openIdConfiguration = await this.#fetchOpenIdConfiguration(discoveryEndpoint, abortSignal); + if ( + typeof openIdConfiguration !== 'object' || + typeof openIdConfiguration?.token_endpoint !== 'string' || + !isValidLocalhostOrSecureEndpoint(openIdConfiguration.token_endpoint) || + typeof openIdConfiguration.authorization_endpoint !== 'string' || + !isValidLocalhostOrSecureEndpoint(openIdConfiguration.authorization_endpoint) + ) { + throw new PublicError( + EnumStatusCode.ERR, + 'The provided OpenID configuration does not contain a valid token or authorization endpoint.', + ); + } await this.client.identityProviders.create({ alias, @@ -279,11 +324,12 @@ export default class Keycloak { hideOnLoginPage: true, syncMode: 'FORCE', validateSignature: 'true', - tokenUrl: oidcUrls.tokenUrl, - authorizationUrl: oidcUrls.authorizationUrl, - jwksUrl: oidcUrls.jwksUrl, - logoutUrl: oidcUrls.logoutUrl, - issuer: oidcUrls.issuer, + tokenUrl: openIdConfiguration.token_endpoint, + authorizationUrl: openIdConfiguration.authorization_endpoint, + jwksUrl: openIdConfiguration.jwks_uri, + logoutUrl: openIdConfiguration.end_session_endpoint, + userInfoUrl: openIdConfiguration.userinfo_endpoint, + issuer: openIdConfiguration.issuer, useJwksUrl: 'true', defaultScope: 'openid email profile', }, @@ -460,10 +506,17 @@ export default class Keycloak { userID: string; }) { // Delete from the root organization group - await this.client.users.delFromGroup({ id: userID, groupId, realm: realm || this.realm }); + await this.client.users.delFromGroup({ + id: userID, + groupId, + realm: realm || this.realm, + }); // And any subgroup - const subGroups = await this.fetchAllSubGroups({ realm: realm || this.realm, kcGroupId: groupId }); + const subGroups = await this.fetchAllSubGroups({ + realm: realm || this.realm, + kcGroupId: groupId, + }); for (const subGroup of subGroups) { await this.client.users.delFromGroup({ id: userID, @@ -472,4 +525,88 @@ export default class Keycloak { }); } } + + /** + * This method retrieves the OpenID Configuration from the provided discovery endpoint. + * + * The reason to introduce this method is to have more control over how we fetch the configuration, such as + * providing a custom cancellation signal and custom timeout so we try to minimize the workload sent to Keycloak, + * and we don't run into long wait times when the provided endpoint is a valid endpoint but unreachable. + * + * @param discoveryEndpoint The endpoint to fetch the OpenID Configuration from. + * @param signal AbortSignal to allow for cancellation of the request. + * @private + */ + async #fetchOpenIdConfiguration( + discoveryEndpoint: string, + signal: AbortSignal | undefined, + ): Promise { + try { + const response = await this.#httpClient.get(discoveryEndpoint, { + signal, + timeout: 10_000, + maxBodyLength: 3 * 1024 * 1024, // ~3mb + validateStatus: (_) => true, + }); + + if (response.status !== 200) { + throw new PublicError( + EnumStatusCode.ERR, + `Unexpected status code received from discovery endpoint: ${response.status} ${response.statusText}`, + ); + } + + // Make sure that the discovery endpoint returned a valid JSON response + let data = response.data; + if (typeof data === 'object') { + // No need to parse the data + } else if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch { + // Failed to parse the response as JSON + throw new PublicError( + EnumStatusCode.ERR, + 'Failed to parse response from the provided discovery endpoint as JSON.', + ); + } + } else { + // Invalid response format + throw new PublicError( + EnumStatusCode.ERR, + 'Failed to parse response from the provided discovery endpoint as JSON.', + ); + } + + // Cast the data to the expected type + return data as ParsedOpenIdConfiguration; + } catch (e: unknown) { + if (isCancel(e)) { + // The user canceled the request + throw new PublicError(EnumStatusCode.ERR, 'Request cancelled by user'); + } else if (isAxiosError(e)) { + let message: string; + switch (e.code) { + case 'ECONNREFUSED': { + message = + 'The discovery endpoint could not be reached. Please, make sure that the discovery endpoint is correct and reachable.'; + break; + } + case 'ECONNABORTED': { + message = + 'The discovery endpoint did not respond within the time limit. Please, make sure that he discovery endpoint is correct and reachable.'; + break; + } + default: { + message = e.message; + break; + } + } + + throw new PublicError(EnumStatusCode.ERR, message); + } + + throw e; + } + } } diff --git a/controlplane/src/core/services/Mailer.ts b/controlplane/src/core/services/Mailer.ts index 1cdeb3cb68..70b0d12e7f 100644 --- a/controlplane/src/core/services/Mailer.ts +++ b/controlplane/src/core/services/Mailer.ts @@ -3,6 +3,7 @@ import { join } from 'node:path'; import { createTransport, Transporter } from 'nodemailer'; import * as ejs from 'ejs'; import { MailerParams } from '../../types/index.js'; +import { traced } from '../tracing.js'; interface OrganizationInviteBody { organizationName: string; @@ -10,6 +11,7 @@ interface OrganizationInviteBody { inviteLink: string; } +@traced export default class Mailer { client: Transporter; diff --git a/controlplane/src/core/services/OidcProvider.ts b/controlplane/src/core/services/OidcProvider.ts index 30eaaf7c96..28a0233e11 100644 --- a/controlplane/src/core/services/OidcProvider.ts +++ b/controlplane/src/core/services/OidcProvider.ts @@ -4,8 +4,10 @@ import { validate as isValidUuid } from 'uuid'; import { and, eq, inArray } from 'drizzle-orm'; import * as schema from '../../db/schema.js'; import { OidcRepository } from '../repositories/OidcRepository.js'; +import { traced } from '../tracing.js'; import Keycloak from './Keycloak.js'; +@traced export default class OidcProvider { constructor() {} @@ -18,6 +20,7 @@ export default class OidcProvider { alias, db, input, + abortSignal, }: { kcClient: Keycloak; kcRealm: string; @@ -26,16 +29,18 @@ export default class OidcProvider { alias: string; db: PostgresJsDatabase; input: CreateOIDCProviderRequest; + abortSignal?: AbortSignal; }) { const oidcRepo = new OidcRepository(db); await kcClient.createOIDCProvider({ clientId: input.clientID, - clientSecret: input.clientSecrect, + clientSecret: input.clientSecret, discoveryEndpoint: input.discoveryEndpoint, name: input.name, realm: kcRealm, alias, + abortSignal, }); const endpoint = input.discoveryEndpoint.split('/')[2]; diff --git a/controlplane/src/core/services/RBACEvaluator.ts b/controlplane/src/core/services/RBACEvaluator.ts index 68ffa75489..9eccf71dd5 100644 --- a/controlplane/src/core/services/RBACEvaluator.ts +++ b/controlplane/src/core/services/RBACEvaluator.ts @@ -1,5 +1,7 @@ import { OrganizationRole } from '../../db/models.js'; -import { OrganizationGroupDTO } from '../../types/index.js'; +import { NamespaceAccess, OrganizationGroupDTO } from '../../types/index.js'; +import { traced } from '../tracing.js'; +import { isNamespaceAllowed } from '../util.js'; interface RuleData { namespaces: string[]; @@ -21,6 +23,7 @@ interface Target { creatorUserId?: string; } +@traced export class RBACEvaluator { readonly isApiKey: boolean; /** @@ -46,6 +49,7 @@ export class RBACEvaluator { readonly groups: Omit[], private readonly userId?: string, isApiKey?: boolean, + readonly idpNamespaceAccess: NamespaceAccess = { kind: 'all' }, ) { this.isApiKey = !!isApiKey; this.isLegacyApiKey = this.isApiKey && groups.length === 0; @@ -87,94 +91,114 @@ export class RBACEvaluator { return this.rules.get(role); } + private isAllowedByIdpGate(namespaceId: string): boolean { + return isNamespaceAllowed(this.idpNamespaceAccess, namespaceId); + } + canDeleteNamespace(namespace: Namespace) { - return this.isOrganizationAdminOrDeveloper || this.checkNamespaceAccess(namespace, ['namespace-admin']); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || this.checkNamespaceAccess(namespace, ['namespace-admin']); + return baseAllowed && this.isAllowedByIdpGate(namespace.id); } hasNamespaceWriteAccess(namespace: Namespace) { - return this.isOrganizationAdminOrDeveloper || this.checkNamespaceAccess(namespace, ['namespace-admin']); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || this.checkNamespaceAccess(namespace, ['namespace-admin']); + return baseAllowed && this.isAllowedByIdpGate(namespace.id); } hasNamespaceReadAccess(namespace: Namespace) { - return this.isOrganizationViewer || this.checkNamespaceAccess(namespace, ['namespace-admin', 'namespace-viewer']); + const baseAllowed = + this.isOrganizationViewer || this.checkNamespaceAccess(namespace, ['namespace-admin', 'namespace-viewer']); + return baseAllowed && this.isAllowedByIdpGate(namespace.id); } canCreateContract(namespace: Namespace) { - return this.canCreateFederatedGraph(namespace); + return this.canCreateFederatedGraph(namespace) && this.isAllowedByIdpGate(namespace.id); } - canCreateFeatureFlag(_: Namespace) { - return this.isOrganizationAdminOrDeveloper; + canCreateFeatureFlag(namespace: Namespace) { + return this.isOrganizationAdminOrDeveloper && this.isAllowedByIdpGate(namespace.id); } - hasFeatureFlagWriteAccess(_: FeatureFlag) { - return this.isOrganizationAdminOrDeveloper; + hasFeatureFlagWriteAccess(ff: FeatureFlag) { + return this.isOrganizationAdminOrDeveloper && this.isAllowedByIdpGate(ff.namespaceId); } - hasFeatureFlagReadAccess(_: FeatureFlag) { - return this.isOrganizationViewer; + hasFeatureFlagReadAccess(ff: FeatureFlag) { + return this.isOrganizationViewer && this.isAllowedByIdpGate(ff.namespaceId); } canCreateFederatedGraph(namespace: Namespace) { - return ( - this.isOrganizationAdminOrDeveloper || this.hasRoleWithAccessToAllOrGivenNamespace('graph-admin', namespace.id) - ); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || this.hasRoleWithAccessToAllOrGivenNamespace('graph-admin', namespace.id); + return baseAllowed && this.isAllowedByIdpGate(namespace.id); } canDeleteFederatedGraph(graph: Target) { - return ( + const baseAllowed = this.isOrganizationAdminOrDeveloper || this.isTargetOwnedByUser(graph) || - this.hasRoleWithAccessToAllOrGivenNamespace('graph-admin', graph.namespaceId) - ); + this.hasRoleWithAccessToAllOrGivenNamespace('graph-admin', graph.namespaceId); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } hasFederatedGraphWriteAccess(graph: Target) { - return this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['graph-admin']); + const baseAllowed = this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['graph-admin']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } hasFederatedGraphReadAccess(graph: Target) { - return ( + const baseAllowed = this.isOrganizationViewer || - this.hasFederatedGraphWriteAccess(graph) || - this.checkTargetAccess(graph, ['graph-viewer']) - ); + this.isOrganizationAdminOrDeveloper || + this.checkTargetAccess(graph, ['graph-admin']) || + this.checkTargetAccess(graph, ['graph-viewer']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } canCreateSubGraph(namespace: Namespace) { - return ( - this.isOrganizationAdminOrDeveloper || this.hasRoleWithAccessToAllOrGivenNamespace('subgraph-admin', namespace.id) - ); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || + this.hasRoleWithAccessToAllOrGivenNamespace('subgraph-admin', namespace.id); + return baseAllowed && this.isAllowedByIdpGate(namespace.id); } canUpdateSubGraph(graph: Target) { - return this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['subgraph-admin']); + const baseAllowed = this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['subgraph-admin']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } canDeleteSubGraph(graph: Target) { - return ( + const baseAllowed = this.isOrganizationAdminOrDeveloper || this.isTargetOwnedByUser(graph) || - this.hasRoleWithAccessToAllOrGivenNamespace('subgraph-admin', graph.namespaceId) - ); + this.hasRoleWithAccessToAllOrGivenNamespace('subgraph-admin', graph.namespaceId); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } hasSubGraphWriteAccess(graph: Target) { - return ( - this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['subgraph-admin', 'subgraph-publisher']) - ); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || this.checkTargetAccess(graph, ['subgraph-admin', 'subgraph-publisher']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } hasSubGraphCheckAccess(graph: Target) { - return this.hasSubGraphWriteAccess(graph) || this.checkTargetAccess(graph, ['subgraph-checker']); + const baseAllowed = + this.isOrganizationAdminOrDeveloper || + this.checkTargetAccess(graph, ['subgraph-admin', 'subgraph-publisher']) || + this.checkTargetAccess(graph, ['subgraph-checker']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } hasSubGraphReadAccess(graph: Target) { - return ( + const baseAllowed = this.isOrganizationViewer || - this.hasSubGraphCheckAccess(graph) || - this.checkTargetAccess(graph, ['subgraph-viewer']) - ); + this.isOrganizationAdminOrDeveloper || + this.checkTargetAccess(graph, ['subgraph-admin', 'subgraph-publisher']) || + this.checkTargetAccess(graph, ['subgraph-checker']) || + this.checkTargetAccess(graph, ['subgraph-viewer']); + return baseAllowed && this.isAllowedByIdpGate(graph.namespaceId); } private hasRoleWithAccessToAllOrGivenNamespace(role: OrganizationRole, namespaceId: string) { diff --git a/controlplane/src/core/services/SchemaGraphPruner.ts b/controlplane/src/core/services/SchemaGraphPruner.ts index 1f1596a566..c3da04e2d0 100644 --- a/controlplane/src/core/services/SchemaGraphPruner.ts +++ b/controlplane/src/core/services/SchemaGraphPruner.ts @@ -17,7 +17,9 @@ import { UsageRepository } from '../repositories/analytics/UsageRepository.js'; import { FederatedGraphRepository } from '../repositories/FederatedGraphRepository.js'; import { buildSchema } from '../composition/composition.js'; import { getFederatedGraphRouterCompatibilityVersion } from '../util.js'; +import { traced } from '../tracing.js'; +@traced export default class SchemaGraphPruner { constructor( private federatedGraphRepo: FederatedGraphRepository, @@ -26,7 +28,7 @@ export default class SchemaGraphPruner { private schema: GraphQLSchema, ) {} - getAllFields = ({ schema, onlyDeprecated }: { schema?: GraphQLSchema; onlyDeprecated?: boolean }): Field[] => { + getAllFields({ schema, onlyDeprecated }: { schema?: GraphQLSchema; onlyDeprecated?: boolean }): Field[] { const fields: Field[] = []; const schemaToBeUsed = schema || this.schema; @@ -70,9 +72,9 @@ export default class SchemaGraphPruner { } return fields; - }; + } - fetchUnusedFields = async ({ + async fetchUnusedFields({ subgraphId, namespaceId, organizationId, @@ -89,7 +91,7 @@ export default class SchemaGraphPruner { // fields that were added in the proposed schema passed to the check command addedFields: SchemaDiff[]; severityLevel: LintSeverityLevel; - }): Promise => { + }): Promise { const limit = pLimit(5); const allFields = this.getAllFields({}); // fetching all the fields of this subgraph that are in grace period @@ -147,9 +149,9 @@ export default class SchemaGraphPruner { } return graphPruningIssues; - }; + } - fetchDeprecatedFields = async ({ + async fetchDeprecatedFields({ subgraphId, namespaceId, organizationId, @@ -165,7 +167,7 @@ export default class SchemaGraphPruner { rangeInDays: number; severityLevel: LintSeverityLevel; addedDeprecatedFields: SchemaDiff[]; - }): Promise => { + }): Promise { const limit = pLimit(5); const allDeprecatedFields = this.getAllFields({ onlyDeprecated: true }); // fetching all the deprecated fields of this subgraph that are in grace period @@ -237,9 +239,9 @@ export default class SchemaGraphPruner { } return graphPruningIssues; - }; + } - fetchNonDeprecatedDeletedFields = ({ + fetchNonDeprecatedDeletedFields({ federatedGraphs, severityLevel, removedFields, @@ -249,7 +251,7 @@ export default class SchemaGraphPruner { severityLevel: LintSeverityLevel; removedFields: SchemaDiff[]; oldSchema: string; - }): GraphPruningIssueResult[] => { + }): GraphPruningIssueResult[] { let oldGraphQLSchema: GraphQLSchema | undefined; try { @@ -306,9 +308,9 @@ export default class SchemaGraphPruner { } return graphPruningIssues; - }; + } - schemaGraphPruneCheck = async ({ + async schemaGraphPruneCheck({ subgraph, graphPruningConfigs, organizationId, @@ -323,7 +325,7 @@ export default class SchemaGraphPruner { // fields that were added/updated in the proposed schema passed to the check command updatedFields: SchemaDiff[]; removedFields: SchemaDiff[]; - }): Promise => { + }): Promise { const graphPruneWarnings: GraphPruningIssueResult[] = []; const graphPruneErrors: GraphPruningIssueResult[] = []; @@ -401,5 +403,5 @@ export default class SchemaGraphPruner { warnings: graphPruneWarnings, errors: graphPruneErrors, }; - }; + } } diff --git a/controlplane/src/core/services/SchemaLinter.ts b/controlplane/src/core/services/SchemaLinter.ts index 32423c9090..bc1030dfab 100644 --- a/controlplane/src/core/services/SchemaLinter.ts +++ b/controlplane/src/core/services/SchemaLinter.ts @@ -10,14 +10,16 @@ import { SchemaLintDTO, SchemaLintIssues, } from '../../types/index.js'; +import { traced } from '../tracing.js'; +@traced export default class SchemaLinter { linter: Linter; constructor() { this.linter = new Linter(); } - getRuleModule = (rule: LintRule) => { + getRuleModule(rule: LintRule) { switch (rule) { case 'FIELD_NAMES_SHOULD_BE_CAMEL_CASE': case 'TYPE_NAMES_SHOULD_BE_PASCAL_CASE': @@ -53,9 +55,9 @@ export default class SchemaLinter { throw new Error(`Rule ${rule} doesnt exist`); } } - }; + } - createRulesConfig = (rules: SchemaLintDTO[]) => { + createRulesConfig(rules: SchemaLintDTO[]) { const rulesConfig: RulesConfig = {}; for (const rule of rules) { const ruleName = rule.ruleName; @@ -227,9 +229,9 @@ export default class SchemaLinter { } } return rulesConfig; - }; + } - schemaLintCheck = ({ schema, rulesInput }: { schema: string; rulesInput: SchemaLintDTO[] }): SchemaLintIssues => { + schemaLintCheck({ schema, rulesInput }: { schema: string; rulesInput: SchemaLintDTO[] }): SchemaLintIssues { const rulesConfig: RulesConfig = this.createRulesConfig(rulesInput); this.linter.defineParser('@graphql-eslint/eslint-plugin', { @@ -289,7 +291,7 @@ export default class SchemaLinter { warnings: lintWarnings, errors: lintErrors, }; - }; + } static createIgnorePatternFromReservedDefinitionList(list: Set): string { return `^(${[...list].join('|')})$`; diff --git a/controlplane/src/core/services/SchemaUsageTrafficInspector.ts b/controlplane/src/core/services/SchemaUsageTrafficInspector.ts index ce775bfe7d..5dead11852 100644 --- a/controlplane/src/core/services/SchemaUsageTrafficInspector.ts +++ b/controlplane/src/core/services/SchemaUsageTrafficInspector.ts @@ -6,9 +6,11 @@ import { } from '@graphql-inspector/core'; import type { NamedTypeNode, NonNullTypeNode, TypeNode } from 'graphql'; import { parseType, print } from 'graphql'; +import pLimit from 'p-limit'; import { SchemaCheckChangeAction } from '../../db/models.js'; import { ClickHouseClient } from '../clickhouse/index.js'; import { SchemaDiff } from '../composition/schemaCheck.js'; +import { traced } from '../tracing.js'; export enum FieldTypeChangeCategory { /** @@ -166,6 +168,7 @@ export interface InspectorOperationResult { isSafeOverride: boolean; } +@traced export class SchemaUsageTrafficInspector { constructor(private client: ClickHouseClient) {} @@ -180,93 +183,122 @@ export class SchemaUsageTrafficInspector { ): Promise> { const results: Map = new Map(); - for (const change of changes) { - const where: string[] = []; - const params: Record = { - daysToConsider: filter.daysToConsider, - federatedGraphId: filter.federatedGraphId, - organizationId: filter.organizationId, - }; - if (filter.subgraphId) { - params.subgraphId = filter.subgraphId; - } - - // Used for arguments usage check - if (change.path) { - // Escape single quotes in path segments and build the array - const escapedPath = change.path - .map((seg) => { - const escaped = seg.replace(/'/g, "''"); - return `'${escaped}'`; - }) - .join(','); - where.push(`startsWith(Path, [${escapedPath}]) AND length(Path) = ${change.path.length}`); - } - if (change.namedType) { - params.namedType = change.namedType; - where.push(`NamedType = {namedType:String}`); - } - if (change.typeName) { - params.typeName = change.typeName; - where.push(`hasAny(TypeNames, [{typeName:String}])`); - } - - // fieldName can be empty if a type was removed - if (change.fieldName) { - params.fieldName = change.fieldName; - where.push(`FieldName = {fieldName:String}`); - } - - if (change.isInput) { - where.push(`IsInput = true`); - } else if (change.isArgument) { - where.push(`IsArgument = true`); - } + const limit = pLimit(5); - if (change.isNull !== undefined) { - where.push(`IsNull = ${change.isNull}`); - } - where.push(`IsIndirectFieldUsage = false`); - - const subgraphFilter = filter.subgraphId ? `hasAny(SubgraphIDs, [{subgraphId:String}]) AND` : ''; - const query = ` - SELECT OperationHash as operationHash, - last_value(OperationType) as operationType, - last_value(OperationName) as operationName, - min(toUnixTimestamp(Timestamp)) as firstSeen, - max(toUnixTimestamp(Timestamp)) as lastSeen - FROM ${this.client.database}.gql_metrics_schema_usage_lite_1d_90d - WHERE - -- Filter first on date and customer to reduce the amount of data - Timestamp >= toStartOfDay(now()) - interval {daysToConsider:UInt32} day AND - FederatedGraphID = {federatedGraphId:String} AND - ${subgraphFilter} - OrganizationID = {organizationId:String} AND - ${where.join(' AND ')} - GROUP BY OperationHash - `; - - const res: { - operationHash: string; - operationName: string; - operationType: string; - lastSeen: number; - firstSeen: number; - }[] = await this.client.queryPromise(query, params); - - if (Array.isArray(res)) { - const ops = res.map((r) => ({ - schemaChangeId: change.schemaChangeId, - hash: r.operationHash, - name: r.operationName, - type: r.operationType, - lastSeenAt: new Date(r.lastSeen * 1000), - firstSeenAt: new Date(r.firstSeen * 1000), - isSafeOverride: false, - })); - - if (ops.length > 0) { - results.set(change.schemaChangeId, [...(results.get(change.schemaChangeId) || []), ...ops]); + const tasks = changes.map((change) => + limit(async () => { + try { + const where: string[] = []; + const params: Record = { + daysToConsider: filter.daysToConsider, + federatedGraphId: filter.federatedGraphId, + organizationId: filter.organizationId, + }; + if (filter.subgraphId) { + params.subgraphId = filter.subgraphId; + } + + // Used for arguments usage check + if (change.path) { + // Escape single quotes in path segments and build the array + const escapedPath = change.path + .map((seg) => { + const escaped = seg.replace(/'/g, "''"); + return `'${escaped}'`; + }) + .join(','); + where.push(`startsWith(Path, [${escapedPath}]) AND length(Path) = ${change.path.length}`); + } + if (change.namedType) { + params.namedType = change.namedType; + where.push(`NamedType = {namedType:String}`); + } + if (change.typeName) { + params.typeName = change.typeName; + where.push(`hasAny(TypeNames, [{typeName:String}])`); + } + + // fieldName can be empty if a type was removed + if (change.fieldName) { + params.fieldName = change.fieldName; + where.push(`FieldName = {fieldName:String}`); + } + + if (change.isInput) { + where.push(`IsInput = true`); + } else if (change.isArgument) { + where.push(`IsArgument = true`); + } + + if (change.isNull !== undefined) { + where.push(`IsNull = ${change.isNull}`); + } + where.push(`IsIndirectFieldUsage = false`); + + const subgraphFilter = filter.subgraphId ? `hasAny(SubgraphIDs, [{subgraphId:String}]) AND` : ''; + const query = ` + SELECT OperationHash as operationHash, + last_value(OperationType) as operationType, + last_value(OperationName) as operationName, + min(toUnixTimestamp(Timestamp)) as firstSeen, + max(toUnixTimestamp(Timestamp)) as lastSeen + FROM ${this.client.database}.gql_metrics_schema_usage_lite_1d_90d + WHERE + -- Filter first on date and customer to reduce the amount of data + Timestamp >= toStartOfDay(now()) - interval {daysToConsider:UInt32} day AND + FederatedGraphID = {federatedGraphId:String} AND + ${subgraphFilter} + OrganizationID = {organizationId:String} AND + ${where.join(' AND ')} + GROUP BY OperationHash + `; + + const res: { + operationHash: string; + operationName: string; + operationType: string; + lastSeen: number; + firstSeen: number; + }[] = await this.client.queryPromise(query, params); + + if (Array.isArray(res)) { + return res.map((r) => ({ + schemaChangeId: change.schemaChangeId, + hash: r.operationHash, + name: r.operationName, + type: r.operationType, + lastSeenAt: new Date(r.lastSeen * 1000), + firstSeenAt: new Date(r.firstSeen * 1000), + isSafeOverride: false, + })); + } + + return []; + } catch (err: any) { + const changeContext = { + schemaChangeId: change.schemaChangeId, + typeName: change.typeName, + fieldName: change.fieldName, + path: change.path, + namedType: change.namedType, + }; + throw new Error(`Schema usage query failed for change ${change.schemaChangeId}: ${err.message}`, { + cause: { originalError: err, changeContext }, + }); + } + }), + ); + + const taskResults = await Promise.all(tasks); + + for (const ops of taskResults) { + if (ops.length > 0) { + const schemaChangeId = ops[0].schemaChangeId; + const existing = results.get(schemaChangeId); + if (existing) { + existing.push(...ops); + } else { + results.set(schemaChangeId, ops); } } } diff --git a/controlplane/src/core/services/Slack.ts b/controlplane/src/core/services/Slack.ts index 59fe1dea7e..d42fc91f19 100644 --- a/controlplane/src/core/services/Slack.ts +++ b/controlplane/src/core/services/Slack.ts @@ -1,7 +1,9 @@ import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from '../../db/schema.js'; import { SlackAccessTokenResponse } from '../../types/index.js'; +import { traced } from '../tracing.js'; +@traced export default class Slack { clientID = ''; clientSecret = ''; diff --git a/controlplane/src/core/services/UserInviteService.ts b/controlplane/src/core/services/UserInviteService.ts index f961aca498..61dea6ddc1 100644 --- a/controlplane/src/core/services/UserInviteService.ts +++ b/controlplane/src/core/services/UserInviteService.ts @@ -9,9 +9,11 @@ import { OrganizationGroupRepository } from '../repositories/OrganizationGroupRe import { OrganizationInvitationRepository } from '../repositories/OrganizationInvitationRepository.js'; import { UserRepository } from '../repositories/UserRepository.js'; import { OrganizationInvitationDTO, UserDTO } from '../../types/index.js'; +import { traced } from '../tracing.js'; import Keycloak from './Keycloak.js'; import Mailer from './Mailer.js'; +@traced export class UserInviteService { private readonly db: PostgresJsDatabase; private readonly logger: FastifyBaseLogger; diff --git a/controlplane/src/core/services/WebSessionAuthenticator.ts b/controlplane/src/core/services/WebSessionAuthenticator.ts index 6f45decfa3..63a0f5a536 100644 --- a/controlplane/src/core/services/WebSessionAuthenticator.ts +++ b/controlplane/src/core/services/WebSessionAuthenticator.ts @@ -8,6 +8,7 @@ import { UserRepository } from '../repositories/UserRepository.js'; import * as schema from '../../db/schema.js'; import AuthUtils from '../auth-utils.js'; import { AuthenticationError } from '../errors/errors.js'; +import { traced } from '../tracing.js'; export const OrganizationSlugHeader = 'cosmo-org-slug'; @@ -16,8 +17,11 @@ export type WebAuthAuthContext = { userId: string; organizationSlug: string; userDisplayName: string; + sessionId: string; + idpAlias: string | null; }; +@traced export default class WebSessionAuthenticator { constructor( private db: PostgresJsDatabase, @@ -82,6 +86,8 @@ export default class WebSessionAuthenticator { userId: decryptedJwt.iss, organizationSlug, userDisplayName: user.email, + sessionId: existingSessions[0].id, + idpAlias: existingSessions[0].idpAlias ?? null, }; } } diff --git a/controlplane/src/core/services/WorkspaceService.ts b/controlplane/src/core/services/WorkspaceService.ts new file mode 100644 index 0000000000..7d848c8c1a --- /dev/null +++ b/controlplane/src/core/services/WorkspaceService.ts @@ -0,0 +1,164 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { + WorkspaceNamespace, + WorkspaceFederatedGraph, + WorkspaceSubgraph, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { and, eq, inArray, SQL } from 'drizzle-orm'; +import * as schema from '../../db/schema.js'; +import { NamespaceRepository } from '../repositories/NamespaceRepository.js'; +import { FederatedGraphRepository } from '../repositories/FederatedGraphRepository.js'; +import { SubgraphRepository } from '../repositories/SubgraphRepository.js'; +import { traced } from '../tracing.js'; +import { RBACEvaluator } from './RBACEvaluator.js'; + +@traced +export class WorkspaceService { + constructor( + private organizationId: string, + private rbac: RBACEvaluator, + private db: PostgresJsDatabase, + ) {} + + async getWorkspaceNamespaces(): Promise[]> { + const namespaceRepo = new NamespaceRepository(this.db, this.organizationId); + + // Step 1 - Retrieve all the namespaces the requesting actor have access to + const namespaces = await namespaceRepo.list(this.rbac); + if (namespaces.length === 0) { + // The actor doesn't have access to any namespace, no need to continue + return []; + } + + // Step 2 - Initialize the response model and sort the namespaces alphabetically + const result = namespaces + .map((ns) => + WorkspaceNamespace.fromJson({ + id: ns.id, + name: ns.name, + graphs: [], + }), + ) + .sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); + + // Step 2 - Retrieve all the federated graphs the actor has access to, based on the namespaces + const federatedGraphs = await this.fetchFederatedGraphs(result); + if (federatedGraphs === 0) { + return result; + } + + // Step 3 - Retrieve all the subgraphs the actor has access to, based on the federated graphs + await this.fetchSubgraphsForFederatedGraphs(result); + + return result; + } + + /** + * Fetches all the federated graphs the actor has access to based on the provided namespaces. + * + * @private + * @param namespaces The namespaces to fetch the federated graphs for + * @returns The number of federated graphs fetched + */ + private async fetchFederatedGraphs(namespaces: PlainMessage[]): Promise { + const conditions: SQL[] = [ + eq(schema.targets.type, 'federated'), + eq(schema.targets.organizationId, this.organizationId), + inArray( + schema.targets.namespaceId, + namespaces.map((ns) => ns.id), + ), + ]; + + if (!FederatedGraphRepository.applyRbacConditionsToQuery(this.rbac, conditions)) { + // The actor doesn't have access to any federated graph, no need to continue + return 0; + } + + // Retrieve the federated graphs from the database + const federatedGraphs = await this.db + .select({ + id: schema.federatedGraphs.id, + targetId: schema.federatedGraphs.targetId, + name: schema.targets.name, + namespaceId: schema.targets.namespaceId, + contractId: schema.contracts.id, + }) + .from(schema.targets) + .innerJoin(schema.federatedGraphs, eq(schema.federatedGraphs.targetId, schema.targets.id)) + .leftJoin(schema.contracts, eq(schema.contracts.downstreamFederatedGraphId, schema.federatedGraphs.id)) + .where(and(...conditions)) + .execute(); + + // Map the federated graphs to the corresponding namespace + let numberOfFetchedGraphs = 0; + for (const namespace of namespaces) { + const namespaceGraphs = federatedGraphs.filter((graph) => graph.namespaceId === namespace.id); + if (namespaceGraphs.length === 0) { + continue; + } + + numberOfFetchedGraphs += namespaceGraphs.length; + namespace.graphs = namespaceGraphs + .map((graph) => + WorkspaceFederatedGraph.fromJson({ + id: graph.id, + targetId: graph.targetId, + name: graph.name, + isContract: !!graph.contractId, + subgraphs: [], + }), + ) + .sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); + } + + return numberOfFetchedGraphs; + } + + private async fetchSubgraphsForFederatedGraphs(namespaces: PlainMessage[]): Promise { + const conditions: (SQL | undefined)[] = [ + eq(schema.targets.organizationId, this.organizationId), + eq(schema.targets.type, 'subgraph'), + inArray( + schema.subgraphsToFederatedGraph.federatedGraphId, + namespaces.flatMap((ns) => ns.graphs.map((graph) => graph.id)), + ), + ]; + + if (!SubgraphRepository.applyRbacConditionsToQuery(this.rbac, conditions)) { + return; + } + + const a = await this.db + .selectDistinct({ + id: schema.subgraphs.id, + targetId: schema.targets.id, + federatedGraphId: schema.subgraphsToFederatedGraph.federatedGraphId, + name: schema.targets.name, + }) + .from(schema.targets) + .innerJoin(schema.subgraphs, eq(schema.subgraphs.targetId, schema.targets.id)) + .innerJoin(schema.subgraphsToFederatedGraph, eq(schema.subgraphsToFederatedGraph.subgraphId, schema.subgraphs.id)) + .where(and(...conditions)) + .execute(); + + const federatedGraphs = namespaces.flatMap((ns) => ns.graphs); + for (const graph of federatedGraphs) { + const subgraphs = a.filter((sg) => sg.federatedGraphId === graph.id); + if (subgraphs.length === 0) { + continue; + } + + graph.subgraphs = subgraphs + .map((sg) => + WorkspaceSubgraph.fromJson({ + id: sg.id, + targetId: sg.targetId, + name: sg.name, + }), + ) + .sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); + } + } +} diff --git a/controlplane/src/core/tracing.ts b/controlplane/src/core/tracing.ts new file mode 100644 index 0000000000..b0979d28c4 --- /dev/null +++ b/controlplane/src/core/tracing.ts @@ -0,0 +1,44 @@ +import * as Sentry from '@sentry/node'; + +// eslint-disable-next-line @typescript-eslint/ban-types +function wrapMethod(className: string, key: string, original: Function) { + return function (this: any, ...args: any[]) { + return Sentry.startSpan({ name: `${className}.${key}` }, () => original.apply(this, args)); + }; +} + +/** + * Class decorator that wraps all prototype methods with Sentry spans. + * Every method call creates a child span named "ClassName.methodName" + * under the active transaction. + * + * When Sentry is disabled, startSpan is a no-op passthrough. + */ +export function traced any>(target: T): T { + const className = target.name; + const proto = target.prototype; + + for (const key of Object.getOwnPropertyNames(proto)) { + if (key === 'constructor') { + continue; + } + const descriptor = Object.getOwnPropertyDescriptor(proto, key); + if (!descriptor || typeof descriptor.value !== 'function') { + continue; + } + Object.defineProperty(proto, key, { + ...descriptor, + value: wrapMethod(className, key, descriptor.value), + }); + } + + return target; +} + +/** + * Wraps a function call with a Sentry span. + * Use for ad-hoc tracing of service calls, auth, etc. + */ +export function withSpan(name: string, fn: () => Promise | T): Promise { + return Sentry.startSpan({ name }, () => fn()) as Promise; +} diff --git a/controlplane/src/core/util.test.ts b/controlplane/src/core/util.test.ts index 5e628228bc..3d378ca7ec 100644 --- a/controlplane/src/core/util.test.ts +++ b/controlplane/src/core/util.test.ts @@ -5,6 +5,7 @@ import { isValidGrpcNamingScheme, isValidLabels, isValidNamespaceName, + normalizePagination, } from './util.js'; import { organizationSlugSchema } from './constants.js'; @@ -491,4 +492,35 @@ describe('isValidGrpcNamingScheme', () => { expect(isValidGrpcNamingScheme('invalid:')).toBe(false); }); }); + + describe('normalizePagination', () => { + test('should apply defaults when no values are provided', () => { + const result = normalizePagination({}); + expect(result).toEqual({ limit: 10, offset: 0 }); + }); + + test('should pass through valid values', () => { + const result = normalizePagination({ limit: 25, offset: 100 }); + expect(result).toEqual({ limit: 25, offset: 100 }); + }); + + test('should clamp limit to min/max bounds', () => { + expect(normalizePagination({ limit: 0 }).limit).toBe(10); // falsy → default + expect(normalizePagination({ limit: 100 }).limit).toBe(50); // above max + }); + + test('should clamp offset to max bound', () => { + expect(normalizePagination({ offset: 600_000 }).offset).toBe(500_000); + }); + + test('should respect custom maxLimit override', () => { + const result = normalizePagination({ limit: 300 }, { maxLimit: 200 }); + expect(result.limit).toBe(200); + }); + + test('should respect custom maxOffset override', () => { + const result = normalizePagination({ offset: 2000 }, { maxOffset: 1000 }); + expect(result.offset).toBe(1000); + }); + }); }); diff --git a/controlplane/src/core/util.ts b/controlplane/src/core/util.ts index 7cf06bd101..e29d4594a0 100644 --- a/controlplane/src/core/util.ts +++ b/controlplane/src/core/util.ts @@ -1,7 +1,8 @@ import { randomFill } from 'node:crypto'; import { isIPv4, isIPv6 } from 'node:net'; import { S3ClientConfig } from '@aws-sdk/client-s3'; -import { HandlerContext } from '@connectrpc/connect'; +import { Code, ConnectError, HandlerContext } from '@connectrpc/connect'; +import * as Sentry from '@sentry/node'; import { GraphQLSubscriptionProtocol, GraphQLWebsocketSubprotocol, @@ -10,6 +11,8 @@ import { joinLabel, splitLabel } from '@wundergraph/cosmo-shared'; import { AxiosError } from 'axios'; import { isNetworkError, isRetryableError } from 'axios-retry'; import { formatISO, subHours } from 'date-fns'; +import { inArray, SQL } from 'drizzle-orm'; +import { PgColumn } from 'drizzle-orm/pg-core'; import { FastifyBaseLogger } from 'fastify'; import { parse, visit } from 'graphql'; import { uid } from 'uid/secure'; @@ -17,9 +20,32 @@ import DOMPurify from 'isomorphic-dompurify'; import { LATEST_ROUTER_COMPATIBILITY_VERSION } from '@wundergraph/composition'; import { ProposalOrigin, SubgraphType } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { MemberRole, ProposalOrigin as ProposalOriginEnum, WebsocketSubprotocol } from '../db/models.js'; -import { AuthContext, DateRange, FederatedGraphDTO, Label, ResponseMessage, S3StorageOptions } from '../types/index.js'; -import { isAuthenticationError, isAuthorizationError, isPublicError } from './errors/errors.js'; +import { + AuthContext, + DateRange, + FederatedGraphDTO, + Label, + LoginMethod, + NamespaceAccess, + ResponseMessage, + S3StorageOptions, + SOCIAL_LOGIN_PROVIDERS, + SocialLoginProvider, +} from '../types/index.js'; +import { paginationDefaults } from './constants.js'; +import { + isAuthenticationError, + isAuthorizationError, + isClickHouseUnavailableError, + isPublicError, + LoginMethodNotAllowedError, +} from './errors/errors.js'; import { GraphKeyAuthContext } from './services/GraphApiTokenAuthenticator.js'; +import { RBACEvaluator } from './services/RBACEvaluator.js'; +import type { OidcRepository } from './repositories/OidcRepository.js'; +import type { OrganizationRepository } from './repositories/OrganizationRepository.js'; +import type { NamespaceLoginMethodRepository } from './repositories/NamespaceLoginMethodRepository.js'; +import type { OrganizationLoginMethodRepository } from './repositories/OrganizationLoginMethodRepository.js'; const labelRegex = /^[\dA-Za-z](?:[\w.-]{0,61}[\dA-Za-z])?$/; const namespaceRegex = /^[\da-z]+(?:[_-][\da-z]+)*$/; @@ -64,6 +90,9 @@ export async function handleError( details: error.message, }, } as T; + } else if (isClickHouseUnavailableError(error)) { + logger.error(error); + throw new ConnectError(error.message, Code.Unavailable); } logger.error(error); @@ -73,6 +102,7 @@ export async function handleError( } export const fastifyLoggerId = Symbol('logger'); +export const sentrySpanId = Symbol('sentrySpan'); export const getLogger = (ctx: HandlerContext, defaultLogger: FastifyBaseLogger) => { return ctx.values.get({ id: fastifyLoggerId, defaultValue: defaultLogger }); @@ -94,6 +124,25 @@ export const enrichLogger = ( ctx.values.set({ id: fastifyLoggerId, defaultValue: newLogger }, newLogger); + Sentry.setUser({ + id: authContext.userId, + username: authContext.userDisplayName, + }); + + const spanAttributes = Object.fromEntries( + Object.entries({ + 'user.id': authContext.userId, + 'user.displayName': authContext.userDisplayName, + 'organization.id': authContext.organizationId, + 'organization.slug': authContext.organizationSlug, + }).filter(([, v]) => v), + ); + + const activeSpan = Sentry.getActiveSpan(); + if (activeSpan) { + Sentry.getRootSpan(activeSpan).setAttributes(spanAttributes); + } + return newLogger; }; @@ -545,6 +594,23 @@ export function clamp(value: number, min: number, max: number): number { return Math.min(Math.max(value, min), max); } +/** + * Normalizes pagination parameters by applying defaults and clamping to safe bounds. + * Uses the standard pagination defaults from constants unless overridden. + */ +export function normalizePagination( + opts: { limit?: number; offset?: number }, + overrides?: { maxLimit?: number; maxOffset?: number }, +): { limit: number; offset: number } { + const maxLimit = overrides?.maxLimit ?? paginationDefaults.maxLimit; + const maxOffset = overrides?.maxOffset ?? paginationDefaults.maxOffset; + + return { + limit: clamp(opts.limit || paginationDefaults.defaultLimit, paginationDefaults.minLimit, maxLimit), + offset: clamp(opts.offset || 0, paginationDefaults.minOffset, maxOffset), + }; +} + export const isCheckSuccessful = ({ isComposable, isBreaking, @@ -863,3 +929,228 @@ export function isValidGrpcNamingScheme(url: string): boolean { } } } + +/** + * Applies the IdP namespace gate to a list-query's WHERE conditions, based on + * the actor's {@link NamespaceAccess}: + * + * - `all` → pushes nothing, returns `true`. + * - `none` → returns `false`; the caller must short-circuit with its own + * "no rows" value (`[]`, `0`, `false`, …) instead of querying. + * - `restricted` → pushes `namespaceColumn IN (...)`, returns `true`. + * + * `namespaceColumn` is the namespace-id column of the query's FROM table, which + * differs per caller (e.g. `targets.namespaceId`, `namespaces.id`, + * `featureFlags.namespaceId`). + */ +export function applyIdpNamespaceGate( + rbac: RBACEvaluator | undefined, + namespaceColumn: PgColumn, + conditions: (SQL | undefined)[], +): boolean { + const access = rbac?.idpNamespaceAccess ?? { kind: 'all' }; + switch (access.kind) { + case 'all': { + return true; + } + case 'none': { + return false; + } + case 'restricted': { + conditions.push(inArray(namespaceColumn, [...access.namespaceIds])); + return true; + } + } +} + +/** + * Resolves the login method from a session's IdP alias, scoped to a specific + * organization. Returns an `sso` method when the alias matches an org OIDC + * provider, a `social` method for built-in social brokers, or `password` as + * the default. Extracted so callers outside of `buildAuthState` (e.g. the + * `/session` endpoint) can reuse the identical resolution logic. + */ +export async function resolveLoginMethod( + deps: { oidcRepo: OidcRepository }, + input: { organizationId: string; idpAlias: string | null | undefined }, +): Promise { + if (input.idpAlias) { + const provider = await deps.oidcRepo.getOidcProviderByAlias({ + alias: input.idpAlias, + organizationId: input.organizationId, + }); + if (provider) { + return { type: 'sso', ssoProviderId: provider.id, alias: input.idpAlias }; + } + if (isSocialLoginProvider(input.idpAlias)) { + return { type: 'social', provider: input.idpAlias, alias: input.idpAlias }; + } + } + return { type: 'password' }; +} + +/** + * Derives the full auth state for an interactive (web-session or access-token) + * login from the session's IdP alias: + * 1. Resolves the login method — a custom OIDC app when the alias matches an + * org provider, otherwise password (no IdP, or an alias whose provider no + * longer belongs to the org, so default-open namespaces stay reachable). + * 2. Applies the IdP namespace gate for that login method. + * 3. Builds the RBAC evaluator from the org's member groups plus the gate. + * + * Returns the login method and the evaluator. The namespace gate is baked into + * the evaluator (`rbac.idpNamespaceAccess`), which is the single source of + * truth for it. Shared by both authenticators. + */ +export async function buildAuthState( + deps: { + oidcRepo: OidcRepository; + orgRepo: OrganizationRepository; + namespaceLoginMethodRepo: NamespaceLoginMethodRepository; + orgLoginMethodRepo: OrganizationLoginMethodRepository; + }, + input: { organizationId: string; userId: string; idpAlias: string | null | undefined }, +): Promise<{ loginMethod: LoginMethod; rbac: RBACEvaluator }> { + const loginMethod = await resolveLoginMethod( + { oidcRepo: deps.oidcRepo }, + { organizationId: input.organizationId, idpAlias: input.idpAlias }, + ); + + // Org-level login-method gate: deny the whole org when the method is not allowed. + const isOrgLoginMethodAllowed = await deps.orgLoginMethodRepo.isLoginMethodAllowed({ + organizationId: input.organizationId, + loginMethod, + }); + if (!isOrgLoginMethodAllowed) { + throw new LoginMethodNotAllowedError(); + } + + const namespaceAccess = await deps.namespaceLoginMethodRepo.allowedNamespaces({ + organizationId: input.organizationId, + loginMethod, + }); + + const rbac = new RBACEvaluator( + await deps.orgRepo.getOrganizationMemberGroups({ + organizationID: input.organizationId, + userID: input.userId, + }), + input.userId, + /* isApiKey */ false, + namespaceAccess, + ); + + return { loginMethod, rbac }; +} + +/** + * Whether an organization allow-list permits the given login method. Used by the + * org login-method update to verify the acting admin's method stays allowed (the + * self-lockout guard). API keys cannot be the actor — they are rejected before + * this is reached — so they are excluded from the parameter type by design. + */ +export function isLoginMethodAllowedToUpdate( + allow: { + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + allowedSsoProviderIds: string[]; + }, + method: LoginMethod, +): boolean { + switch (method.type) { + case 'sso': { + return allow.allowedSsoProviderIds.includes(method.ssoProviderId); + } + case 'social': { + return method.provider === 'google' ? allow.allowGoogleLogin : allow.allowGithubLogin; + } + case 'password': { + return allow.allowPasswordLogin; + } + case 'api-key': { + return false; + } + default: { + throw new Error(`Unhandled login method type: ${JSON.stringify(method)}`); + } + } +} + +/** + * Whether a single login-method config row (from `organization_login_methods` or + * `namespace_login_methods`) matches the given login method. Shared by both gates + * so the matching rule lives in one place. API keys (and any unknown method) do + * not match a row; callers that exempt API keys must short-circuit before this. + */ +export function loginMethodMatchesRow( + method: LoginMethod, + row: { + ssoProviderId: string | null; + isPasswordLogin: boolean | null; + isGoogleLogin: boolean | null; + isGithubLogin: boolean | null; + }, +): boolean { + switch (method.type) { + case 'sso': { + return row.ssoProviderId === method.ssoProviderId; + } + case 'social': { + return method.provider === 'google' ? !!row.isGoogleLogin : !!row.isGithubLogin; + } + case 'password': { + return !!row.isPasswordLogin; + } + default: { + return false; + } + } +} + +/** + * Whether a namespace login-method mapping references any method that the given + * org allow-list no longer permits. Used to find the namespace mappings an org + * restriction would have to prune. + */ +export function doesNamespaceMappingExceedsOrgAllowList( + mapping: { + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + allowedSsoProviderIds: string[]; + }, + allow: { + allowPasswordLogin: boolean; + allowGoogleLogin: boolean; + allowGithubLogin: boolean; + allowedSsoProviderIds: string[]; + }, +): boolean { + return ( + (mapping.allowPasswordLogin && !allow.allowPasswordLogin) || + (mapping.allowGoogleLogin && !allow.allowGoogleLogin) || + (mapping.allowGithubLogin && !allow.allowGithubLogin) || + mapping.allowedSsoProviderIds.some((id) => !allow.allowedSsoProviderIds.includes(id)) + ); +} + +/** Whether a specific namespace is reachable under the given {@link NamespaceAccess}. */ +export function isNamespaceAllowed(access: NamespaceAccess, namespaceId: string): boolean { + switch (access.kind) { + case 'all': { + return true; + } + case 'none': { + return false; + } + case 'restricted': { + return access.namespaceIds.has(namespaceId); + } + } +} + +/** Whether the given IdP alias is one of Keycloak's built-in social brokers. */ +export function isSocialLoginProvider(alias: string): alias is SocialLoginProvider { + return (SOCIAL_LOGIN_PROVIDERS as readonly string[]).includes(alias); +} diff --git a/controlplane/src/core/util/poll-with-backoff.ts b/controlplane/src/core/util/poll-with-backoff.ts new file mode 100644 index 0000000000..fb32c897da --- /dev/null +++ b/controlplane/src/core/util/poll-with-backoff.ts @@ -0,0 +1,77 @@ +export interface PollWithBackoffOptions { + /** Base delay between polls when the task is succeeding, in milliseconds. Used as the starting point for exponential growth on failure. */ + baseInterval: number; + /** Upper bound on the delay between polls, in milliseconds. The exponential growth is clamped to this value. */ + maxInterval: number; + /** External signal that stops the poller. When aborted, the loop exits and any in-flight task receives this signal too. */ + signal: AbortSignal; + /** Called after each successful poll. Runs synchronously inside the loop, so keep it fast and non-throwing. */ + onSuccess: () => void; + /** Called after each failed poll. `attempt` is the consecutive-failure count starting at 1; it resets to 0 after a success. */ + onFailure: (error: Error, attempt: number) => void; + /** Multiply each delay by a random factor in [0.5, 1.0] to desynchronize multiple pollers and avoid thundering-herd on recovery. */ + jitter?: boolean; + /** Run the first poll immediately instead of waiting `baseInterval` first. Useful for health probes that want an answer at startup. */ + leading?: boolean; +} + +export function computeDelay(base: number, max: number, attempt: number, jitter: boolean): number { + const delay = Math.min(max, base * 2 ** attempt); + return jitter ? delay * (0.5 + Math.random() * 0.5) : delay; +} + +export async function pollWithBackoff( + task: (signal: AbortSignal) => Promise, + options: PollWithBackoffOptions, +): Promise { + let attempt = 0; + let skipNextSleep = options.leading ?? false; + + while (!options.signal.aborted) { + if (!skipNextSleep) { + const delay = computeDelay(options.baseInterval, options.maxInterval, attempt, options.jitter ?? false); + const sleepResult = await sleep(delay, options.signal); + if (sleepResult === 'aborted') { + return; + } + } + skipNextSleep = false; + + try { + await task(options.signal); + if (options.signal.aborted) { + return; + } + attempt = 0; + options.onSuccess(); + } catch (caught) { + if (options.signal.aborted) { + return; + } + attempt++; + const error = caught instanceof Error ? caught : new Error(String(caught)); + options.onFailure(error, attempt); + } + } +} + +function sleep(ms: number, signal: AbortSignal): Promise<'aborted' | 'ok'> { + return new Promise((resolve) => { + if (signal.aborted) { + resolve('aborted'); + return; + } + + const timer = setTimeout(() => { + signal.removeEventListener('abort', onAbort); + resolve('ok'); + }, ms); + + function onAbort() { + clearTimeout(timer); + resolve('aborted'); + } + + signal.addEventListener('abort', onAbort, { once: true }); + }); +} diff --git a/controlplane/src/core/webhooks/OrganizationWebhookService.ts b/controlplane/src/core/webhooks/OrganizationWebhookService.ts index 2ae1bd0143..2348a8662c 100644 --- a/controlplane/src/core/webhooks/OrganizationWebhookService.ts +++ b/controlplane/src/core/webhooks/OrganizationWebhookService.ts @@ -8,6 +8,8 @@ import pino from 'pino'; import { v4 } from 'uuid'; import * as z from 'zod'; import { LintSeverity, VCSContext } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { HttpProxyAgent } from 'http-proxy-agent'; +import { HttpsProxyAgent } from 'https-proxy-agent'; import * as schema from '../../db/schema.js'; import { FederatedGraphRepository } from '../repositories/FederatedGraphRepository.js'; import { OrganizationRepository } from '../repositories/OrganizationRepository.js'; @@ -27,6 +29,7 @@ import { SubgraphCheckExtensionsRepository } from '../repositories/SubgraphCheck import { BlobStorage } from '../blobstorage/index.js'; import { audiences, nowInSeconds, signJwtHS256 } from '../crypto/jwt.js'; import { InspectorOperationResult } from '../services/SchemaUsageTrafficInspector.js'; +import { traced } from '../tracing.js'; import { makeWebhookRequest } from './utils.js'; const subgraphCheckExtensionSchema = z.object({ @@ -119,6 +122,7 @@ type Config = { type: 'webhook' | 'slack'; }; +@traced export class OrganizationWebhookService { private readonly logger: pino.Logger; private readonly defaultBillingPlanId?: string; @@ -129,11 +133,26 @@ export class OrganizationWebhookService { private organizationId: string, logger: pino.Logger, defaultBillingPlanId?: string, + proxyUrl?: string, ) { this.logger = logger.child({ organizationId }); this.defaultBillingPlanId = defaultBillingPlanId; + let httpAgent: HttpProxyAgent | undefined; + let httpsAgent: HttpsProxyAgent | undefined; + if (proxyUrl) { + try { + httpAgent = new HttpProxyAgent(proxyUrl, {}); + httpsAgent = new HttpsProxyAgent(proxyUrl, {}); + } catch (e) { + logger.error(e, 'Failed to create proxy agent'); + } + } + this.httpClient = axios.create({ + httpAgent, + httpsAgent, + proxy: false, timeout: 30_000, maxContentLength: 5 * 1024 * 1024, // ~5mb }); @@ -573,8 +592,7 @@ export class OrganizationWebhookService { await this.sendEvent(eventData, configs, actorId); } catch (e: any) { const logger = this.logger.child({ eventName: OrganizationEventName[eventData.eventName] }); - logger.child({ message: e.message }); - logger.error(`Could not send webhook event`); + logger.error(e, 'Could not send webhook event'); } } diff --git a/controlplane/src/core/webhooks/PlatformWebhookService.ts b/controlplane/src/core/webhooks/PlatformWebhookService.ts index fdd5750918..3d4d54e467 100644 --- a/controlplane/src/core/webhooks/PlatformWebhookService.ts +++ b/controlplane/src/core/webhooks/PlatformWebhookService.ts @@ -3,7 +3,9 @@ import { PlatformEventName } from '@wundergraph/cosmo-connect/dist/notifications import pino from 'pino'; import axios, { AxiosError, AxiosInstance } from 'axios'; import axiosRetry, { exponentialDelay } from 'axios-retry'; +import { HttpsProxyAgent } from 'https-proxy-agent'; import { webhookAxiosRetryCond } from '../util.js'; +import { traced } from '../tracing.js'; import { makeWebhookRequest } from './utils.js'; interface User { @@ -42,18 +44,30 @@ export interface IPlatformWebhookService { send(eventName: T, eventData: EventMap[T]): Promise; } +@traced export class PlatformWebhookService implements IPlatformWebhookService { private url: string; private key: string; private logger: pino.Logger; private httpClient: AxiosInstance; - constructor(webhookURL = '', webhookKey = '', logger: pino.Logger) { + constructor(webhookURL = '', webhookKey = '', logger: pino.Logger, proxyUrl?: string) { this.url = webhookURL; this.key = webhookKey; this.logger = logger; + let agent: HttpsProxyAgent | undefined; + if (proxyUrl) { + try { + agent = new HttpsProxyAgent(proxyUrl); + } catch (e) { + logger.error(e, 'Could not create proxy agent'); + } + } + this.httpClient = axios.create({ + httpAgent: agent, + httpsAgent: agent, timeout: 10_000, }); axiosRetry(this.httpClient, { @@ -95,6 +109,7 @@ export class PlatformWebhookService implements IPlatformWebhookService { } } +@traced export class MockPlatformWebhookService implements IPlatformWebhookService { public sentEvents: Array<{ eventName: keyof EventMap; eventPayload: PlainMessage }> = []; diff --git a/controlplane/src/core/webhooks/RedeliverWebhookService.ts b/controlplane/src/core/webhooks/RedeliverWebhookService.ts index 00c0b5e102..8497c379e8 100644 --- a/controlplane/src/core/webhooks/RedeliverWebhookService.ts +++ b/controlplane/src/core/webhooks/RedeliverWebhookService.ts @@ -5,7 +5,9 @@ import { FastifyBaseLogger } from 'fastify'; import { WebhookDeliveryInfo } from '../../db/models.js'; import * as schema from '../../db/schema.js'; import { webhookAxiosRetryCond } from '../util.js'; +import { traced } from '../tracing.js'; +@traced export class RedeliverWebhookService { private readonly logger: FastifyBaseLogger; private httpClient: AxiosInstance; diff --git a/controlplane/src/core/webhooks/utils.ts b/controlplane/src/core/webhooks/utils.ts index 46cf7b8f66..36af81ad97 100644 --- a/controlplane/src/core/webhooks/utils.ts +++ b/controlplane/src/core/webhooks/utils.ts @@ -1,6 +1,5 @@ import { createHmac } from 'node:crypto'; -import { AxiosError, AxiosInstance } from 'axios'; -import pino from 'pino'; +import { AxiosInstance } from 'axios'; export const makeWebhookRequest = ( axiosInstance: AxiosInstance, diff --git a/controlplane/src/core/workers/DeleteOrganizationWorker.ts b/controlplane/src/core/workers/DeleteOrganizationWorker.ts index 2846b1a0d0..99c6a6b995 100644 --- a/controlplane/src/core/workers/DeleteOrganizationWorker.ts +++ b/controlplane/src/core/workers/DeleteOrganizationWorker.ts @@ -89,8 +89,8 @@ class DeleteOrganizationWorker implements IWorker { await this.input.keycloakClient.authenticateClient(); - const provider = await oidcRepo.getOidcProvider({ organizationId: job.data.organizationId }); - if (provider) { + const providers = await oidcRepo.listOidcProvidersByOrganizationId({ organizationId: job.data.organizationId }); + for (const provider of providers) { await oidcProvider.deleteOidcProvider({ kcClient: this.input.keycloakClient, kcRealm: this.input.keycloakRealm, diff --git a/controlplane/src/db/models.ts b/controlplane/src/db/models.ts index f887e71400..889dd50dd7 100644 --- a/controlplane/src/db/models.ts +++ b/controlplane/src/db/models.ts @@ -60,7 +60,9 @@ export type AuditableType = | 'router_config' | 'operation_change_override' | 'operation_ignore_all_override' - | 'proposal'; + | 'proposal' + | 'namespace_sso_mapping' + | 'organization_login_methods'; export type AuditTargetType = | 'organization' @@ -128,6 +130,7 @@ export type AuditLogFullAction = | 'feature_flag.deleted' | 'feature_flag.disabled' | 'feature_flag.enabled' + | 'feature_flag.recomposed' | 'feature_subgraph.created' | 'feature_subgraph.deleted' | 'feature_subgraph.published' @@ -172,6 +175,8 @@ export type AuditLogFullAction = | 'proposal.enabled' | 'proposal.disabled' | 'namespace_proposal_config.updated' + | 'namespace_sso_mapping.updated' + | 'organization_login_methods.updated' | 'scim.organization_invitation_created' | 'scim.update_organization_member' | 'scim.activate_organization_member' diff --git a/controlplane/src/db/schema.ts b/controlplane/src/db/schema.ts index 80d68dd9cf..3b3949253a 100644 --- a/controlplane/src/db/schema.ts +++ b/controlplane/src/db/schema.ts @@ -1,6 +1,7 @@ import { relations, sql } from 'drizzle-orm'; import { boolean, + check, integer, bigint, pgEnum, @@ -1205,6 +1206,7 @@ export const sessions = pgTable( accessToken: text('access_token').notNull(), refreshToken: text('refresh_token').notNull(), idToken: text('id_token').notNull(), + idpAlias: text('idp_alias'), expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(), createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), updatedAt: timestamp('updated_at', { withTimezone: true }), @@ -1974,6 +1976,7 @@ export const oidcProviders = pgTable( name: text('name').notNull(), alias: text('alias').notNull().unique(), endpoint: text('endpoint').notNull(), + createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), }, (t) => { return { @@ -1982,6 +1985,74 @@ export const oidcProviders = pgTable( }, ); +export const namespaceLoginMethods = pgTable( + 'namespace_login_methods', // nlm + { + id: uuid('id').notNull().primaryKey().defaultRandom(), + namespaceId: uuid('namespace_id') + .notNull() + .references(() => namespaces.id, { onDelete: 'cascade' }), + ssoProviderId: uuid('sso_provider_id').references(() => oidcProviders.id, { onDelete: 'cascade' }), + isPasswordLogin: boolean('is_password_login').notNull().default(false), + isGoogleLogin: boolean('is_google_login').notNull().default(false), + isGithubLogin: boolean('is_github_login').notNull().default(false), + createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), + }, + (t) => { + return { + namespaceIdIndex: index('nlm_namespace_id_idx').on(t.namespaceId), + ssoProviderIdIndex: index('nlm_sso_provider_id_idx').on(t.ssoProviderId), + uniqueSsoPerNamespace: uniqueIndex('nlm_unique_sso') + .on(t.namespaceId, t.ssoProviderId) + .where(sql`${t.ssoProviderId} IS NOT NULL`), + // At most one built-in-methods row (password/google/github) per namespace. + uniqueBuiltinPerNamespace: uniqueIndex('nlm_unique_builtin') + .on(t.namespaceId) + .where(sql`${t.ssoProviderId} IS NULL`), + // A row is either an SSO-provider row (provider id, no built-in flags) or a + // built-in-methods row (no provider id, at least one flag) — never both, never neither. + builtinXorSsoCheck: check( + 'nlm_builtin_xor_sso_check', + sql`(${t.ssoProviderId} IS NOT NULL) <> (${t.isPasswordLogin} OR ${t.isGoogleLogin} OR ${t.isGithubLogin})`, + ), + }; + }, +); + +export const organizationLoginMethods = pgTable( + 'organization_login_methods', // olm + { + id: uuid('id').notNull().primaryKey().defaultRandom(), + organizationId: uuid('organization_id') + .notNull() + .references(() => organizations.id, { onDelete: 'cascade' }), + ssoProviderId: uuid('sso_provider_id').references(() => oidcProviders.id, { onDelete: 'cascade' }), + isPasswordLogin: boolean('is_password_login').notNull().default(false), + isGoogleLogin: boolean('is_google_login').notNull().default(false), + isGithubLogin: boolean('is_github_login').notNull().default(false), + createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), + }, + (t) => { + return { + organizationIdIndex: index('olm_organization_id_idx').on(t.organizationId), + ssoProviderIdIndex: index('olm_sso_provider_id_idx').on(t.ssoProviderId), + // At most one row per allowed SSO app per org. + uniqueSsoPerOrg: uniqueIndex('olm_unique_sso') + .on(t.organizationId, t.ssoProviderId) + .where(sql`${t.ssoProviderId} IS NOT NULL`), + // At most one built-in-methods row (password/google/github) per org. + uniqueBuiltinPerOrg: uniqueIndex('olm_unique_builtin') + .on(t.organizationId) + .where(sql`${t.ssoProviderId} IS NULL`), + // A row is either an SSO-provider row or a built-in-methods row, never both, never neither. + builtinXorSsoCheck: check( + 'olm_builtin_xor_sso_check', + sql`(${t.ssoProviderId} IS NOT NULL) <> (${t.isPasswordLogin} OR ${t.isGoogleLogin} OR ${t.isGithubLogin})`, + ), + }; + }, +); + export const auditLogs = pgTable( 'audit_logs', // auditlogs { @@ -2638,3 +2709,49 @@ export const namespaceSubgraphCheckExtensionConfig = pgTable( }; }, ); + +export const routerConfigHash = pgTable( + 'router_config_hash', + { + id: uuid('id').primaryKey().defaultRandom(), + federatedGraphId: uuid('federated_graph_id') + .notNull() + .references(() => federatedGraphs.id, { onDelete: 'cascade' }), + featureFlagId: uuid('feature_flag_id').references(() => featureFlags.id, { onDelete: 'cascade' }), + hash: text('hash').notNull(), + createdAt: timestamp('created_at').defaultNow(), + updatedAt: timestamp('updated_at'), + }, + (t) => { + return { + graphFlagIndex: unique('fed_graph_feature_flag_idx').on(t.federatedGraphId, t.featureFlagId).nullsNotDistinct(), + }; + }, +); + +export const onboarding = pgTable( + 'onboarding', + { + id: uuid('id').primaryKey().defaultRandom(), + createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), + finishedAt: timestamp('finished_at', { withTimezone: true }), + version: integer('version').notNull().default(1), + slack: boolean('slack').notNull().default(true), + email: boolean('email').notNull().default(true), + userId: uuid('user_id') + .notNull() + .references(() => users.id, { onDelete: 'cascade' }), + organizationId: uuid('organization_id') + .notNull() + .references(() => organizations.id, { onDelete: 'cascade' }), + }, + (t) => { + return { + uniqueUserOrgVersion: unique('onboarding_user_id_organization_id_version_unique').on( + t.userId, + t.organizationId, + t.version, + ), + }; + }, +); diff --git a/controlplane/src/index.ts b/controlplane/src/index.ts index 5ac8cb6728..33dc16c093 100644 --- a/controlplane/src/index.ts +++ b/controlplane/src/index.ts @@ -35,6 +35,7 @@ const { KC_ADMIN_USER, WEBHOOK_URL, WEBHOOK_SECRET, + WEBHOOK_PROXY_URL, GITHUB_APP_WEBHOOK_SECRET, GITHUB_APP_CLIENT_ID, GITHUB_APP_CLIENT_SECRET, @@ -49,6 +50,13 @@ const { S3_SECRET_ACCESS_KEY, S3_FORCE_PATH_STYLE, S3_USE_INDIVIDUAL_DELETES, + S3_FAILOVER_STORAGE_URL, + S3_FAILOVER_ENDPOINT, + S3_FAILOVER_REGION, + S3_FAILOVER_ACCESS_KEY_ID, + S3_FAILOVER_SECRET_ACCESS_KEY, + S3_FAILOVER_FORCE_PATH_STYLE, + S3_FAILOVER_USE_INDIVIDUAL_DELETES, SMTP_ENABLED, SMTP_HOST, SMTP_PORT, @@ -114,6 +122,7 @@ const options: BuildConfig = { webhook: { url: WEBHOOK_URL, key: WEBHOOK_SECRET, + proxyUrl: WEBHOOK_PROXY_URL, }, cdnBaseUrl: CDN_BASE_URL, admissionWebhook: { @@ -140,6 +149,17 @@ const options: BuildConfig = { forcePathStyle: S3_FORCE_PATH_STYLE, useIndividualDeletes: S3_USE_INDIVIDUAL_DELETES, }, + s3StorageFailover: S3_FAILOVER_STORAGE_URL + ? { + url: S3_FAILOVER_STORAGE_URL, + region: S3_FAILOVER_REGION, + endpoint: S3_FAILOVER_ENDPOINT, + username: S3_FAILOVER_ACCESS_KEY_ID, + password: S3_FAILOVER_SECRET_ACCESS_KEY, + forcePathStyle: S3_FAILOVER_FORCE_PATH_STYLE, + useIndividualDeletes: S3_FAILOVER_USE_INDIVIDUAL_DELETES, + } + : undefined, mailer: { smtpEnabled: SMTP_ENABLED, smtpHost: SMTP_HOST, diff --git a/controlplane/src/types/index.ts b/controlplane/src/types/index.ts index 3cf35cf690..e9b43a4b3a 100644 --- a/controlplane/src/types/index.ts +++ b/controlplane/src/types/index.ts @@ -1,9 +1,17 @@ -import { LintSeverity } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { + CompositionError, + CompositionWarning, + DeploymentError, + LintSeverity, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { JWTPayload } from 'jose'; +import { PlainMessage } from '@bufbuild/protobuf'; import { DBSubgraphType, GraphPruningRuleEnum, OrganizationRole, ProposalMatch, ProposalOrigin } from '../db/models.js'; import { RBACEvaluator } from '../core/services/RBACEvaluator.js'; +import { ComposeGraphsTaskResultItem } from '../core/composition/composeGraphs.types.js'; export const COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID = 'composition-ignore-external-keys'; +export const SPLIT_CONFIG_LOADING_FEATURE_ID = 'split-config-loading'; export type FeatureIds = | 'users' @@ -15,11 +23,13 @@ export type FeatureIds = | 'trace-sampling-rate' | 'requests' | 'feature-flags' + | 'persisted-operations' // Boolean features | 'ai' | 'cache-warmer' | 'composition-ignore-external-keys' // COMPOSITION_IGNORE_EXTERNAL_KEYS_FEATURE_ID | 'field-pruning-grace-period' + | 'login-method-restrictions' | 'oidc' | 'plugins' | 'proposals' @@ -28,7 +38,8 @@ export type FeatureIds = | 'security' | 'sso' | 'subgraph-check-extensions' - | 'support'; + | 'support' + | 'split-config-loading'; export type Features = { [key in FeatureIds]: Feature; @@ -482,6 +493,9 @@ export type UserInfoEndpointResponse = { family_name: string; email: string; groups: string[]; + // Set by the realm-level `identity_provider` protocol mapper when the user + // federated through a broker IdP. Absent for direct username/password logins. + identity_provider?: string; }; export type AuthContext = { @@ -493,11 +507,21 @@ export type AuthContext = { rbac: RBACEvaluator; userDisplayName: string; apiKeyName?: string; + loginMethod?: LoginMethod; }; +/** + * The outcome of evaluating the IdP namespace gate for a login method: + * - `all` — no gate applies; every namespace is reachable. + * - `none` — the login method is allowed in no namespace. + * - `restricted` — reachable only in `namespaceIds`. + */ +export type NamespaceAccess = { kind: 'all' } | { kind: 'none' } | { kind: 'restricted'; namespaceIds: Set }; + export interface GraphApiKeyJwtPayload extends JWTPayload { federated_graph_id: string; organization_id: string; + features?: string[]; } export interface PluginAccess { @@ -588,6 +612,7 @@ export interface UpdatedPersistedOperation { export interface GraphCompositionDTO { id: string; schemaVersionId: string; + targetId?: string; createdAt: string; createdBy?: string; compositionErrors?: string; @@ -804,3 +829,28 @@ export interface ProposalSubgraphDTO { isNew: boolean; labels: Label[]; } + +export interface ComposeAndDeployResult { + deploymentErrors: PlainMessage[]; + compositionErrors: PlainMessage[]; + compositionWarnings: PlainMessage[]; +} + +export interface OrganizationFeatures { + ignoreExternalKeys: boolean; + splitConfigLoading: boolean; +} + +export interface FederatedGraphAndCompositionResults { + federatedGraph: FederatedGraphDTO; + results: ComposeGraphsTaskResultItem[]; +} + +export const SOCIAL_LOGIN_PROVIDERS = ['google', 'github'] as const; +export type SocialLoginProvider = (typeof SOCIAL_LOGIN_PROVIDERS)[number]; + +export type LoginMethod = + | { type: 'sso'; ssoProviderId: string; alias: string } + | { type: 'social'; provider: SocialLoginProvider; alias: string } + | { type: 'password' } + | { type: 'api-key' }; diff --git a/controlplane/test/contracts.test.ts b/controlplane/test/contracts.test.ts index eba0312bab..ba89a24c00 100644 --- a/controlplane/test/contracts.test.ts +++ b/controlplane/test/contracts.test.ts @@ -734,10 +734,10 @@ describe('Contract tests', () => { const fedGraphName = genID('fedGraph'); const contractGraphName = genID('contract'); const label = genUniqueLabel('label'); - const prod = 'prod'; + const prodNamespace = genID('prod').toLowerCase(); await client.createNamespace({ - name: prod, + name: prodNamespace, }); const subgraphSchemaSDL = 'type Query { hello: String!, hi: String! @tag(name: "test") }'; @@ -750,7 +750,14 @@ describe('Contract tests', () => { [label], 'http://localhost:8082', ); - await createThenPublishSubgraph(client, subgraphName, prod, subgraphSchemaSDL, [label], 'http://localhost:8082'); + await createThenPublishSubgraph( + client, + subgraphName, + prodNamespace, + subgraphSchemaSDL, + [label], + 'http://localhost:8082', + ); await createFederatedGraph(client, fedGraphName, DEFAULT_NAMESPACE, [joinLabel(label)], 'http://localhost:8080'); @@ -763,18 +770,88 @@ describe('Contract tests', () => { readme: 'test', }); + await assertNumberOfCompositions(client, fedGraphName, 1); + await assertNumberOfCompositions(client, contractGraphName, 1); + const moveRes = await client.moveFederatedGraph({ name: fedGraphName, namespace: DEFAULT_NAMESPACE, - newNamespace: prod, + newNamespace: prodNamespace, }); expect(moveRes.response?.code).toEqual(EnumStatusCode.OK); const contractResAfterMove = await client.getFederatedGraphByName({ name: contractGraphName, - namespace: prod, + namespace: prodNamespace, }); expect(contractResAfterMove.response?.code).toEqual(EnumStatusCode.OK); + + await assertNumberOfCompositions(client, fedGraphName, 2, prodNamespace); + await assertNumberOfCompositions(client, contractGraphName, 2, prodNamespace); + }); + + test('that moving source federated graph moves contract graph with `split-config-loading` enabled', async (testContext) => { + const { client, server } = await SetupTest({ dbname, chClient, enabledFeatures: ['split-config-loading'] }); + testContext.onTestFinished(() => server.close()); + + const subgraphName = genID('subgraph'); + const fedGraphName = genID('fedGraph'); + const contractGraphName = genID('contract'); + const label = genUniqueLabel('label'); + const prodNamespace = genID('prod').toLowerCase(); + + await client.createNamespace({ + name: prodNamespace, + }); + + const subgraphSchemaSDL = 'type Query { hello: String!, hi: String! @tag(name: "test") }'; + + await createThenPublishSubgraph( + client, + subgraphName, + DEFAULT_NAMESPACE, + subgraphSchemaSDL, + [label], + 'http://localhost:8082', + ); + await createThenPublishSubgraph( + client, + subgraphName, + prodNamespace, + subgraphSchemaSDL, + [label], + 'http://localhost:8082', + ); + + await createFederatedGraph(client, fedGraphName, DEFAULT_NAMESPACE, [joinLabel(label)], 'http://localhost:8080'); + + await client.createContract({ + name: contractGraphName, + namespace: DEFAULT_NAMESPACE, + sourceGraphName: fedGraphName, + excludeTags: ['test'], + routingUrl: 'http://localhost:8081', + readme: 'test', + }); + + await assertNumberOfCompositions(client, fedGraphName, 1); + await assertNumberOfCompositions(client, contractGraphName, 1); + + const moveRes = await client.moveFederatedGraph({ + name: fedGraphName, + namespace: DEFAULT_NAMESPACE, + newNamespace: prodNamespace, + }); + expect(moveRes.response?.code).toEqual(EnumStatusCode.OK); + + const contractResAfterMove = await client.getFederatedGraphByName({ + name: contractGraphName, + namespace: prodNamespace, + }); + expect(contractResAfterMove.response?.code).toEqual(EnumStatusCode.OK); + + await assertNumberOfCompositions(client, fedGraphName, 2, prodNamespace); + await assertNumberOfCompositions(client, contractGraphName, 2, prodNamespace); }); test('that moving contract federated graph is not allowed', async (testContext) => { @@ -785,10 +862,10 @@ describe('Contract tests', () => { const fedGraphName = genID('fedGraph'); const contractGraphName = genID('contract'); const label = genUniqueLabel('label'); - const prod = 'prod'; + const prodNamespace = genID('prod').toLowerCase(); await client.createNamespace({ - name: prod, + name: prodNamespace, }); const subgraphSchemaSDL = 'type Query { hello: String!, hi: String! @tag(name: "test") }'; @@ -816,7 +893,7 @@ describe('Contract tests', () => { const moveRes = await client.moveFederatedGraph({ name: contractGraphName, namespace: DEFAULT_NAMESPACE, - newNamespace: prod, + newNamespace: prodNamespace, }); expect(moveRes.response?.code).toEqual(EnumStatusCode.ERR); }); @@ -860,10 +937,10 @@ describe('Contract tests', () => { const monographName = genID('monograph'); const contractGraphName = genID('contract'); - const prod = 'prod'; + const prodNamespace = genID('prod').toLowerCase(); await client.createNamespace({ - name: prod, + name: prodNamespace, }); const createResp = await client.createMonograph({ @@ -886,13 +963,13 @@ describe('Contract tests', () => { const moveRes = await client.moveMonograph({ name: monographName, namespace: DEFAULT_NAMESPACE, - newNamespace: prod, + newNamespace: prodNamespace, }); expect(moveRes.response?.code).toEqual(EnumStatusCode.OK); const getContractRes = await client.getFederatedGraphByName({ name: contractGraphName, - namespace: prod, + namespace: prodNamespace, }); expect(getContractRes.response?.code).toEqual(EnumStatusCode.OK); expect(getContractRes.subgraphs.length).toEqual(1); @@ -1235,9 +1312,10 @@ describe('Contract tests', () => { const fedGraphName = genID('fedGraph'); const contractGraphName = genID('contract'); const label = genUniqueLabel('label'); + const prodNamespace = genID('prod').toLowerCase(); await client.createNamespace({ - name: 'prod', + name: prodNamespace, }); const subgraph1SchemaSDL = 'type Query { hello: String!, hi: String! @tag(name: "test") }'; @@ -1287,7 +1365,7 @@ describe('Contract tests', () => { await client.moveSubgraph({ name: subgraph2Name, namespace: DEFAULT_NAMESPACE, - newNamespace: 'prod', + newNamespace: prodNamespace, }); const sdlResponse2 = await client.getFederatedGraphSDLByName({ diff --git a/controlplane/test/deactivate-org.test.ts b/controlplane/test/deactivate-org.test.ts index d6d2475676..3fcff6a129 100644 --- a/controlplane/test/deactivate-org.test.ts +++ b/controlplane/test/deactivate-org.test.ts @@ -49,7 +49,7 @@ describe('Deactivate Organization', (ctx) => { const createOIDCRes = await client.createOIDCProvider({ clientID: '123', - clientSecrect: '345', + clientSecret: '345', discoveryEndpoint: `http://localhost:8080/realms/${realm}/.well-known/openid-configuration`, mappers: [], }); diff --git a/controlplane/test/delete-organization.test.ts b/controlplane/test/delete-organization.test.ts index 9843c4a75b..47608fe895 100644 --- a/controlplane/test/delete-organization.test.ts +++ b/controlplane/test/delete-organization.test.ts @@ -155,7 +155,7 @@ describe('Delete Organization', (ctx) => { const createOIDCRes = await client.createOIDCProvider({ clientID: '123', - clientSecrect: '345', + clientSecret: '345', discoveryEndpoint: `http://localhost:8080/realms/${realm}/.well-known/openid-configuration`, mappers: [], }); diff --git a/controlplane/test/delete-user.test.ts b/controlplane/test/delete-user.test.ts index 81769741c5..f13cc5526d 100644 --- a/controlplane/test/delete-user.test.ts +++ b/controlplane/test/delete-user.test.ts @@ -340,7 +340,7 @@ describe.sequential('Delete user tests', (ctx) => { const createOIDCRes = await client.createOIDCProvider({ clientID: '123', - clientSecrect: '345', + clientSecret: '345', discoveryEndpoint: `http://localhost:8080/realms/${realm}/.well-known/openid-configuration`, mappers: [], }); diff --git a/controlplane/test/dual-blob-storage.test.ts b/controlplane/test/dual-blob-storage.test.ts new file mode 100644 index 0000000000..86809a11b7 --- /dev/null +++ b/controlplane/test/dual-blob-storage.test.ts @@ -0,0 +1,185 @@ +import { describe, expect, test, vi } from 'vitest'; +import { DualBlobStorage } from '../src/core/blobstorage/dual.js'; +import type { BlobObject, BlobStorage } from '../src/core/blobstorage/index.js'; + +function createMockBlobStorage(overrides?: Partial): BlobStorage { + return { + putObject: vi.fn().mockResolvedValue(undefined), + getObject: vi.fn().mockResolvedValue({ stream: new ReadableStream(), metadata: {} }), + removeDirectory: vi.fn().mockResolvedValue(5), + deleteObject: vi.fn().mockResolvedValue(undefined), + ...overrides, + }; +} + +describe('DualBlobStorage', () => { + describe('putObject', () => { + test('calls both primary and secondary', async () => { + const primary = createMockBlobStorage(); + const secondary = createMockBlobStorage(); + const dual = new DualBlobStorage(primary, secondary); + + const data = { key: 'test-key', body: Buffer.from('data'), contentType: 'text/plain' }; + await dual.putObject(data); + + expect(primary.putObject).toHaveBeenCalledWith(data); + expect(secondary.putObject).toHaveBeenCalledWith(data); + }); + + test('rejects when primary fails and rolls back secondary', async () => { + const primaryError = new Error('primary write failed'); + const primary = createMockBlobStorage({ + putObject: vi.fn().mockRejectedValue(primaryError), + }); + const secondary = createMockBlobStorage(); + const dual = new DualBlobStorage(primary, secondary); + + await expect( + dual.putObject({ key: 'k', body: Buffer.from('d'), contentType: 'text/plain' }), + ).rejects.toMatchObject({ + message: 'Failed to put object into storage', + errors: [primaryError], + }); + + expect(primary.deleteObject).not.toHaveBeenCalled(); + expect(secondary.deleteObject).toHaveBeenCalledWith({ key: 'k' }); + }); + + test('rejects when secondary fails and rolls back primary', async () => { + const secondaryError = new Error('secondary write failed'); + const primary = createMockBlobStorage(); + const secondary = createMockBlobStorage({ + putObject: vi.fn().mockRejectedValue(secondaryError), + }); + const dual = new DualBlobStorage(primary, secondary); + + await expect( + dual.putObject({ key: 'k', body: Buffer.from('d'), contentType: 'text/plain' }), + ).rejects.toMatchObject({ + message: 'Failed to put object into storage', + errors: [secondaryError], + }); + + expect(primary.deleteObject).toHaveBeenCalledWith({ key: 'k' }); + expect(secondary.deleteObject).not.toHaveBeenCalled(); + }); + test('includes rollback errors in aggregate when rollback also fails', async () => { + const secondaryError = new Error('secondary write failed'); + const rollbackError = new Error('primary rollback failed'); + const primary = createMockBlobStorage({ + deleteObject: vi.fn().mockRejectedValue(rollbackError), + }); + const secondary = createMockBlobStorage({ + putObject: vi.fn().mockRejectedValue(secondaryError), + }); + const dual = new DualBlobStorage(primary, secondary); + + await expect( + dual.putObject({ key: 'k', body: Buffer.from('d'), contentType: 'text/plain' }), + ).rejects.toMatchObject({ + message: 'Failed to put object into storage', + errors: [secondaryError, rollbackError], + }); + }); + }); + + describe('getObject', () => { + test('returns primary result when primary succeeds', async () => { + const primaryResult: BlobObject = { stream: new ReadableStream(), metadata: { source: 'primary' } }; + const primary = createMockBlobStorage({ + getObject: vi.fn().mockResolvedValue(primaryResult), + }); + const secondary = createMockBlobStorage({ + getObject: vi.fn().mockRejectedValue(new Error('secondary read failed')), + }); + const dual = new DualBlobStorage(primary, secondary); + + const result = await dual.getObject({ key: 'k' }); + + expect(result).toBe(primaryResult); + }); + + test('falls back to secondary when primary fails', async () => { + const secondaryResult: BlobObject = { stream: new ReadableStream(), metadata: { source: 'secondary' } }; + const primary = createMockBlobStorage({ + getObject: vi.fn().mockRejectedValue(new Error('primary read failed')), + }); + const secondary = createMockBlobStorage({ + getObject: vi.fn().mockResolvedValue(secondaryResult), + }); + const dual = new DualBlobStorage(primary, secondary); + + const result = await dual.getObject({ key: 'k' }); + + expect(result).toBe(secondaryResult); + }); + + test('throws aggregate error with both underlying errors when both fail', async () => { + const primaryError = new Error('primary read failed'); + const secondaryError = new Error('secondary read failed'); + const primary = createMockBlobStorage({ + getObject: vi.fn().mockRejectedValue(primaryError), + }); + const secondary = createMockBlobStorage({ + getObject: vi.fn().mockRejectedValue(secondaryError), + }); + const dual = new DualBlobStorage(primary, secondary); + + await expect(dual.getObject({ key: 'k' })).rejects.toMatchObject({ + message: 'Both primary and secondary storage failed to get object', + errors: [primaryError, secondaryError], + }); + }); + }); + + describe('deleteObject', () => { + test('calls both primary and secondary', async () => { + const primary = createMockBlobStorage(); + const secondary = createMockBlobStorage(); + const dual = new DualBlobStorage(primary, secondary); + + await dual.deleteObject({ key: 'k' }); + + expect(primary.deleteObject).toHaveBeenCalledWith({ key: 'k' }); + expect(secondary.deleteObject).toHaveBeenCalledWith({ key: 'k' }); + }); + + test('rejects when one fails', async () => { + const primary = createMockBlobStorage({ + deleteObject: vi.fn().mockRejectedValue(new Error('delete failed')), + }); + const secondary = createMockBlobStorage(); + const dual = new DualBlobStorage(primary, secondary); + + await expect(dual.deleteObject({ key: 'k' })).rejects.toThrow('delete failed'); + }); + }); + + describe('removeDirectory', () => { + test('returns primary count when both succeed', async () => { + const primary = createMockBlobStorage({ + removeDirectory: vi.fn().mockResolvedValue(10), + }); + const secondary = createMockBlobStorage({ + removeDirectory: vi.fn().mockResolvedValue(10), + }); + const dual = new DualBlobStorage(primary, secondary); + + const count = await dual.removeDirectory({ key: 'dir/' }); + + expect(count).toBe(10); + expect(primary.removeDirectory).toHaveBeenCalledWith({ key: 'dir/' }); + expect(secondary.removeDirectory).toHaveBeenCalledWith({ key: 'dir/' }); + }); + + test('rejects when one fails', async () => { + const primary = createMockBlobStorage(); + const secondary = createMockBlobStorage({ + removeDirectory: vi.fn().mockRejectedValue(new Error('remove failed')), + }); + const dual = new DualBlobStorage(primary, secondary); + + await expect(dual.removeDirectory({ key: 'dir/' })).rejects.toThrow('remove failed'); + }); + }); +}); diff --git a/controlplane/test/feature-flag/feature-flag-integration.test.ts b/controlplane/test/feature-flag/feature-flag-integration.test.ts index ac279e0ed2..0bf40cf105 100644 --- a/controlplane/test/feature-flag/feature-flag-integration.test.ts +++ b/controlplane/test/feature-flag/feature-flag-integration.test.ts @@ -2,6 +2,7 @@ import fs from 'node:fs'; import { join } from 'node:path'; import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'; import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { eq } from 'drizzle-orm'; import { afterAllSetup, beforeAllSetup, genID } from '../../src/core/test-util.js'; import { Label } from '../../src/types/index.js'; import { unsuccessfulBaseCompositionError } from '../../src/core/errors/errors.js'; @@ -14,6 +15,9 @@ import { createFederatedGraph, createNamespace, createThenPublishFeatureSubgraph, + DEFAULT_ROUTER_URL, + DEFAULT_SUBGRAPH_URL_ONE, + DEFAULT_SUBGRAPH_URL_THREE, DEFAULT_SUBGRAPH_URL_TWO, deleteFeatureFlag, featureFlagIntegrationTestSetUp, @@ -23,6 +27,7 @@ import { toggleFeatureFlag, } from '../test-util.js'; import { ClickHouseClient } from '../../src/core/clickhouse/index.js'; +import { graphCompositions } from '../../src/db/schema.js'; // Change to true to enable a longer timeout const isDebugMode = false; @@ -54,1117 +59,3976 @@ describe('Feature flag integration tests', () => { await afterAllSetup(dbname); }); - test( - 'that a feature flag that is enabled upon creation can be disabled and re-enabled (default namespace with labels)', - getDebugTestOptions(isDebugMode), - async (testContext) => { - const { client, server, blobStorage } = await SetupTest({ dbname, chClient }); - testContext.onTestFinished(() => server.close()); - - const labels = [{ key: 'team', value: 'A' }]; - const baseGraphName = genID('baseFederatedGraphName'); - const federatedGraphResponse = await featureFlagIntegrationTestSetUp( - client, - [ - { name: 'users', hasFeatureSubgraph: true }, - { name: 'products', hasFeatureSubgraph: true }, - ], - baseGraphName, - labels, - ); - expect(blobStorage.keys()).toHaveLength(1); - const key = blobStorage.keys()[0]; - expect(key).toContain(`${federatedGraphResponse.graph!.id}/routerconfigs/latest.json`); - await assertFeatureFlagExecutionConfig(blobStorage, key, false); - - // The base composition - await assertNumberOfCompositions(client, baseGraphName, 1); - - const featureFlagName = genID('flag'); - await createFeatureFlag(client, featureFlagName, labels, ['users-feature', 'products-feature'], 'default', true); - - // The base recomposition and the feature flag composition - await assertNumberOfCompositions(client, baseGraphName, 3); - - await assertFeatureFlagExecutionConfig(blobStorage, key, true); - - await toggleFeatureFlag(client, featureFlagName, false); - - // Another base recomposition to remove the feature flag - await assertNumberOfCompositions(client, baseGraphName, 4); - - await assertFeatureFlagExecutionConfig(blobStorage, key, false); - - await toggleFeatureFlag(client, featureFlagName, true); - - // Another base recomposition and the feature flag composition - await assertNumberOfCompositions(client, baseGraphName, 6); - - await assertFeatureFlagExecutionConfig(blobStorage, key, true); - }, - ); - - test( - 'that a feature flag that is enabled upon creation can be disabled and re-enabled (namespace without labels)', - getDebugTestOptions(isDebugMode), - async (testContext) => { - const { client, server, blobStorage } = await SetupTest({ dbname, chClient }); - testContext.onTestFinished(() => server.close()); - - const labels: Array