From 75bb3a904dffaa085950e943043a1e8604908293 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:32:13 +0100 Subject: [PATCH] `[SDK]` Refactor clients (#18433) # Intoduction Closes https://github.com/twentyhq/core-team-issues/issues/2289 In this PR all the clients becomes available under `twenty-sdk/clients`, this is a breaking change but generated was too vague and thats still the now or never best timing to do so ## CoreClient The core client is now shipped with a default stub empty class for both the schema and the client Allowing its import, will still raises typescript errors when consumed as generated but not generated ## MetadataClient The metadata client is workspace agnostic, it's now generated and commited in the repo. added a ci that prevents any schema desync due to twenty-server additions Same behavior than for the twenty-front generated graphql schema --- .github/workflows/ci-server.yaml | 25 +- packages/create-twenty-app/README.md | 4 +- .../src/utils/__tests__/test-template.spec.ts | 15 +- .../src/utils/test-template.ts | 73 +- .../twenty-apps/hello-world/.oxlintrc.json | 39 +- packages/twenty-apps/hello-world/LLMS.md | 1 + packages/twenty-apps/hello-world/package.json | 6 +- .../__tests__/app-install.integration-test.ts | 48 +- .../hello-world/src/__tests__/setup-test.ts | 24 +- .../hello-world/src/application-config.ts | 2 +- .../hello-world/src/fields/example-field.ts | 2 +- .../src/front-components/hello-world.tsx | 2 +- .../src/logic-functions/hello-world.ts | 2 +- .../src/logic-functions/post-install.ts | 2 +- .../src/logic-functions/pre-install.ts | 2 +- .../example-navigation-menu-item.ts | 11 +- .../hello-world/src/objects/example-object.ts | 4 +- .../hello-world/src/roles/default-role.ts | 2 +- .../hello-world/src/skills/example-skill.ts | 2 +- .../hello-world/src/views/example-view.ts | 20 +- .../twenty-apps/hello-world/vitest.config.ts | 2 +- packages/twenty-apps/hello-world/yarn.lock | 785 +- .../developers/extend/capabilities/apps.mdx | 17 +- packages/twenty-sdk/.gitignore | 2 +- packages/twenty-sdk/.oxlintrc.json | 2 +- packages/twenty-sdk/.prettierignore | 1 + packages/twenty-sdk/README.md | 9 +- packages/twenty-sdk/package.json | 29 +- packages/twenty-sdk/project.json | 10 + .../scripts/generate-metadata-client.ts | 43 + .../__e2e__/function-execute.e2e-spec.ts | 13 +- .../src/cli/__tests__/constants/setupTest.ts | 2 +- .../src/cli/commands/app-command.ts | 17 +- .../cli/commands/app/app-generate-client.ts | 33 - .../src/cli/constants/clients-dir.ts | 2 + .../src/cli/public-operations/app-build.ts | 48 +- .../public-operations/app-generate-client.ts | 100 - .../cli/public-operations/app-uninstall.ts | 3 +- .../cli/public-operations/function-execute.ts | 3 +- .../src/cli/public-operations/index.ts | 5 - .../build/common/build-application.ts | 6 +- .../utilities/build/common/esbuild-watcher.ts | 21 +- .../manifest-extract-config-from-file.ts | 6 +- .../build/manifest/manifest-watcher.ts | 9 +- .../clientServiceGeneratedClientAuth.test.ts | 5 +- .../cli/utilities/client/client-service.ts | 155 +- .../dev/orchestrator/dev-mode-orchestrator.ts | 4 - .../generate-api-client-orchestrator-step.ts | 2 +- .../steps/upload-files-orchestrator-step.ts | 16 +- .../src/clients/generated/core/index.ts | 2 + .../src/clients/generated/core/schema.ts | 2 + .../src/clients/generated/metadata/index.ts | 482 + .../generated/metadata/runtime/batcher.ts | 265 + .../metadata/runtime/createClient.ts | 68 + .../generated/metadata/runtime/error.ts | 29 + .../generated/metadata/runtime/fetcher.ts | 98 + .../runtime/generateGraphqlOperation.ts | 225 + .../generated/metadata/runtime/index.ts | 13 + .../generated/metadata/runtime/linkTypeMap.ts | 139 + .../metadata/runtime/typeSelection.ts | 98 + .../generated/metadata/runtime/types.ts | 69 + .../clients/generated/metadata/schema.graphql | 4198 ++++++ .../src/clients/generated/metadata/schema.ts | 8723 +++++++++++++ .../src/clients/generated/metadata/types.ts | 10643 ++++++++++++++++ packages/twenty-sdk/src/clients/index.ts | 4 + packages/twenty-sdk/vite.config.node.ts | 1 + packages/twenty-sdk/vitest.e2e.config.ts | 2 +- .../twenty-sdk/vitest.integration.config.ts | 2 +- 68 files changed, 25487 insertions(+), 1212 deletions(-) create mode 100644 packages/twenty-sdk/scripts/generate-metadata-client.ts delete mode 100644 packages/twenty-sdk/src/cli/commands/app/app-generate-client.ts create mode 100644 packages/twenty-sdk/src/cli/constants/clients-dir.ts delete mode 100644 packages/twenty-sdk/src/cli/public-operations/app-generate-client.ts create mode 100644 packages/twenty-sdk/src/clients/generated/core/index.ts create mode 100644 packages/twenty-sdk/src/clients/generated/core/schema.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/index.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/batcher.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/createClient.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/error.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/fetcher.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/generateGraphqlOperation.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/index.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/linkTypeMap.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/typeSelection.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/runtime/types.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/schema.graphql create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/schema.ts create mode 100644 packages/twenty-sdk/src/clients/generated/metadata/types.ts create mode 100644 packages/twenty-sdk/src/clients/index.ts diff --git a/.github/workflows/ci-server.yaml b/.github/workflows/ci-server.yaml index 1a1c3d2d5d..06011978ed 100644 --- a/.github/workflows/ci-server.yaml +++ b/.github/workflows/ci-server.yaml @@ -25,6 +25,7 @@ jobs: packages/twenty-server/** packages/twenty-front/src/generated/** packages/twenty-front/src/generated-metadata/** + packages/twenty-sdk/src/clients/generated/metadata/** packages/twenty-emails/** packages/twenty-shared/** @@ -158,8 +159,10 @@ jobs: exit 1 fi - - name: GraphQL / Check for Pending Generation + - name: Check for Pending Code Generation run: | + HAS_ERRORS=false + npx nx run twenty-front:graphql:generate npx nx run twenty-front:graphql:generate --configuration=metadata @@ -171,11 +174,25 @@ jobs: git diff -- packages/twenty-front/src/generated packages/twenty-front/src/generated-metadata echo "===================================================" echo "" - echo "Please run 'npx nx run twenty-front:graphql:generate' and 'npx nx run twenty-front:graphql:generate --configuration=metadata' and commit the changes." - echo "" - exit 1 + HAS_ERRORS=true fi + npx nx run twenty-sdk:generate-metadata-client + + if ! git diff --quiet -- packages/twenty-sdk/src/clients/generated/metadata; then + echo "::error::SDK metadata client changes detected. Please run 'npx nx run twenty-sdk:generate-metadata-client' and commit the changes." + echo "" + echo "The following SDK metadata client changes were detected:" + echo "===================================================" + git diff -- packages/twenty-sdk/src/clients/generated/metadata + echo "===================================================" + echo "" + HAS_ERRORS=true + fi + + if [ "$HAS_ERRORS" = true ]; then + exit 1 + fi server-test: needs: server-build timeout-minutes: 30 diff --git a/packages/create-twenty-app/README.md b/packages/create-twenty-app/README.md index b05f00b25d..24b5b2b6be 100644 --- a/packages/create-twenty-app/README.md +++ b/packages/create-twenty-app/README.md @@ -43,7 +43,7 @@ yarn twenty auth:login yarn twenty entity:add # Start dev mode: watches, builds, and syncs local changes to your workspace -# (also auto-generates typed API clients — CoreApiClient and MetadataApiClient — in node_modules/twenty-sdk/generated) +# (also auto-generates typed CoreApiClient — MetadataApiClient ships pre-built with the SDK — both available via `twenty-sdk/clients`) yarn twenty app:dev # Watch your application's function logs @@ -107,7 +107,7 @@ npx create-twenty-app@latest my-app -m - Use `yarn twenty auth:login` to authenticate with your Twenty workspace. - Explore the generated project and add your first entity with `yarn twenty entity:add` (logic functions, front components, objects, roles, views, navigation menu items, skills). - Use `yarn twenty app:dev` while you iterate — it watches, builds, and syncs changes to your workspace in real time. -- Two typed API clients are auto‑generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated`: `CoreApiClient` (for workspace data via `/graphql`) and `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`). +- `CoreApiClient` (for workspace data via `/graphql`) is auto-generated by `yarn twenty app:dev`. `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`) ships pre-built with the SDK. Both are available via `import { CoreApiClient, MetadataApiClient } from 'twenty-sdk/clients'`. ## Publish your application diff --git a/packages/create-twenty-app/src/utils/__tests__/test-template.spec.ts b/packages/create-twenty-app/src/utils/__tests__/test-template.spec.ts index e3bab1ce07..94e168cd2b 100644 --- a/packages/create-twenty-app/src/utils/__tests__/test-template.spec.ts +++ b/packages/create-twenty-app/src/utils/__tests__/test-template.spec.ts @@ -47,18 +47,17 @@ describe('scaffoldIntegrationTest', () => { const content = await fs.readFile(testPath, 'utf8'); expect(content).toContain( - "import { appGenerateClient, appUninstall } from 'twenty-sdk/cli'", + "import { appBuild, appUninstall } from 'twenty-sdk/cli'", ); expect(content).toContain( - "import { MetadataApiClient } from 'twenty-sdk/generated'", + "import { MetadataApiClient } from 'twenty-sdk/clients'", ); expect(content).toContain( "import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application-config'", ); - expect(content).toContain('TWENTY_TEST_API_KEY'); - expect(content).toContain('assertServerIsReachable'); - expect(content).toContain('appGenerateClient'); + expect(content).toContain('appBuild'); expect(content).toContain('appUninstall'); + expect(content).toContain('new MetadataApiClient()'); expect(content).toContain('findManyApplications'); expect(content).toContain('APPLICATION_UNIVERSAL_IDENTIFIER'); }); @@ -84,7 +83,8 @@ describe('scaffoldIntegrationTest', () => { expect(content).toContain('.twenty-sdk-test'); expect(content).toContain('config.json'); expect(content).toContain('process.env.TWENTY_API_URL'); - expect(content).toContain('process.env.TWENTY_TEST_API_KEY'); + expect(content).toContain('process.env.TWENTY_API_KEY'); + expect(content).toContain('assertServerIsReachable'); }); }); @@ -101,7 +101,8 @@ describe('scaffoldIntegrationTest', () => { const content = await fs.readFile(vitestConfigPath, 'utf8'); - expect(content).toContain('TWENTY_TEST_API_KEY'); + expect(content).toContain('TWENTY_API_KEY'); + expect(content).not.toContain('TWENTY_TEST_API_KEY'); expect(content).toContain('TWENTY_API_URL'); expect(content).toContain('setup-test.ts'); expect(content).toContain('tsconfig.spec.json'); diff --git a/packages/create-twenty-app/src/utils/test-template.ts b/packages/create-twenty-app/src/utils/test-template.ts index b85e945f7d..599b6f1ace 100644 --- a/packages/create-twenty-app/src/utils/test-template.ts +++ b/packages/create-twenty-app/src/utils/test-template.ts @@ -45,7 +45,7 @@ export default defineConfig({ setupFiles: ['src/__tests__/setup-test.ts'], env: { TWENTY_API_URL: 'http://localhost:3000', - TWENTY_TEST_API_KEY: + TWENTY_API_KEY: '${SEED_API_KEY}', }, }, @@ -93,16 +93,36 @@ import * as os from 'os'; import * as path from 'path'; import { beforeAll } from 'vitest'; +const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000'; const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test'); -beforeAll(() => { +const assertServerIsReachable = async () => { + let response: Response; + + try { + response = await fetch(\`\${TWENTY_API_URL}/healthz\`); + } catch { + throw new Error( + \`Twenty server is not reachable at \${TWENTY_API_URL}. \` + + 'Make sure the server is running before executing integration tests.', + ); + } + + if (!response.ok) { + throw new Error(\`Server at \${TWENTY_API_URL} returned \${response.status}\`); + } +}; + +beforeAll(async () => { + await assertServerIsReachable(); + fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true }); const configFile = { profiles: { default: { apiUrl: process.env.TWENTY_API_URL, - apiKey: process.env.TWENTY_TEST_API_KEY, + apiKey: process.env.TWENTY_API_KEY, }, }, }; @@ -128,44 +148,24 @@ const createIntegrationTest = async ({ fileName: string; }) => { const content = `import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application-config'; -import { appGenerateClient, appUninstall } from 'twenty-sdk/cli'; -import { MetadataApiClient } from 'twenty-sdk/generated'; +import { appBuild, appUninstall } from 'twenty-sdk/cli'; +import { MetadataApiClient } from 'twenty-sdk/clients'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; const APP_PATH = process.cwd(); -const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000'; - -const assertServerIsReachable = async () => { - let response: Response; - - try { - response = await fetch(\`\${TWENTY_API_URL}/healthz\`); - } catch { - throw new Error( - \`Twenty server is not reachable at \${TWENTY_API_URL}. \` + - 'Make sure the server is running before executing integration tests.', - ); - } - - if (!response.ok) { - throw new Error(\`Server at \${TWENTY_API_URL} returned \${response.status}\`); - } -}; describe('App installation', () => { let appInstalled = false; beforeAll(async () => { - await assertServerIsReachable(); - - const generateResult = await appGenerateClient({ + const buildResult = await appBuild({ appPath: APP_PATH, - onProgress: (message: string) => console.log(\`[generate-client] \${message}\`), + onProgress: (message: string) => console.log(\`[build] \${message}\`), }); - if (!generateResult.success) { + if (!buildResult.success) { throw new Error( - \`Client generation failed: \${generateResult.error?.message ?? 'Unknown error'}\`, + \`Build failed: \${buildResult.error?.message ?? 'Unknown error'}\`, ); } @@ -187,20 +187,7 @@ describe('App installation', () => { }); it('should find the installed app in the applications list', async () => { - const apiKey = process.env.TWENTY_TEST_API_KEY; - - if (!apiKey) { - throw new Error( - 'No API key found. Set TWENTY_TEST_API_KEY in your vitest config env.', - ); - } - - const metadataClient = new MetadataApiClient({ - url: \`\${TWENTY_API_URL}/metadata\`, - headers: { - Authorization: \`Bearer \${apiKey}\`, - }, - }); + const metadataClient = new MetadataApiClient(); const result = await metadataClient.query({ findManyApplications: { diff --git a/packages/twenty-apps/hello-world/.oxlintrc.json b/packages/twenty-apps/hello-world/.oxlintrc.json index 460199b1e6..87c62c5183 100644 --- a/packages/twenty-apps/hello-world/.oxlintrc.json +++ b/packages/twenty-apps/hello-world/.oxlintrc.json @@ -1,38 +1,19 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["typescript", "import", "unicorn"], + "plugins": ["typescript"], "categories": { "correctness": "off" }, - "ignorePatterns": ["node_modules"], + "ignorePatterns": ["node_modules", "dist"], "rules": { - "func-style": ["error", "declaration", { "allowArrowFunctions": true }], - "no-console": ["warn", { "allow": ["group", "groupCollapsed", "groupEnd"] }], - "no-control-regex": "off", - "no-debugger": "error", - "no-duplicate-imports": "error", - "no-undef": "off", "no-unused-vars": "off", - "no-redeclare": "off", - "import/no-duplicates": "error", - "typescript/no-redeclare": "error", - "typescript/ban-ts-comment": "error", - "typescript/consistent-type-imports": ["error", { - "prefer": "type-imports", - "fixStyle": "inline-type-imports" - }], - "typescript/explicit-function-return-type": "off", - "typescript/explicit-module-boundary-types": "off", - "typescript/no-empty-object-type": ["error", { - "allowInterfaces": "with-single-extends" - }], - "typescript/no-empty-function": "off", - "typescript/no-explicit-any": "off", - "typescript/no-unused-vars": ["warn", { - "vars": "all", - "varsIgnorePattern": "^_", - "args": "after-used", - "argsIgnorePattern": "^_" - }] + + "typescript/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_" + } + ], + "typescript/no-explicit-any": "off" } } diff --git a/packages/twenty-apps/hello-world/LLMS.md b/packages/twenty-apps/hello-world/LLMS.md index 38afd91745..e4c582d1f3 100644 --- a/packages/twenty-apps/hello-world/LLMS.md +++ b/packages/twenty-apps/hello-world/LLMS.md @@ -4,6 +4,7 @@ - Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/cli/__tests__/apps/rich-app ## UUID requirement + - All generated UUIDs must be valid UUID v4. ## Common Pitfalls diff --git a/packages/twenty-apps/hello-world/package.json b/packages/twenty-apps/hello-world/package.json index c561a75db8..8c9e233820 100644 --- a/packages/twenty-apps/hello-world/package.json +++ b/packages/twenty-apps/hello-world/package.json @@ -1,6 +1,6 @@ { - "name": "@twentyhq/hello-world", - "version": "0.2.2", + "name": "hello-world", + "version": "0.1.0", "license": "MIT", "engines": { "node": "^24.5.0", @@ -20,7 +20,7 @@ "@types/react": "^18.2.0", "oxlint": "^0.16.0", "react": "^18.2.0", - "twenty-sdk": "0.6.3", + "twenty-sdk": "0.6.4", "typescript": "^5.9.3", "vite-tsconfig-paths": "^4.2.1", "vitest": "^3.1.1" diff --git a/packages/twenty-apps/hello-world/src/__tests__/app-install.integration-test.ts b/packages/twenty-apps/hello-world/src/__tests__/app-install.integration-test.ts index 3c23c6295f..8f6945211c 100644 --- a/packages/twenty-apps/hello-world/src/__tests__/app-install.integration-test.ts +++ b/packages/twenty-apps/hello-world/src/__tests__/app-install.integration-test.ts @@ -1,43 +1,22 @@ import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application-config'; -import { appGenerateClient, appUninstall } from 'twenty-sdk/cli'; -import { MetadataApiClient } from 'twenty-sdk/generated'; +import { appBuild, appUninstall } from 'twenty-sdk/cli'; +import { MetadataApiClient } from 'twenty-sdk/clients'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; const APP_PATH = process.cwd(); -const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000'; - -const assertServerIsReachable = async () => { - let response: Response; - - try { - response = await fetch(`${TWENTY_API_URL}/healthz`); - } catch { - throw new Error( - `Twenty server is not reachable at ${TWENTY_API_URL}. ` + - 'Make sure the server is running before executing integration tests.', - ); - } - - if (!response.ok) { - throw new Error(`Server at ${TWENTY_API_URL} returned ${response.status}`); - } -}; describe('App installation', () => { let appInstalled = false; beforeAll(async () => { - await assertServerIsReachable(); - - const generateResult = await appGenerateClient({ + const buildResult = await appBuild({ appPath: APP_PATH, - onProgress: (message: string) => - console.log(`[generate-client] ${message}`), + onProgress: (message: string) => console.log(`[build] ${message}`), }); - if (!generateResult.success) { + if (!buildResult.success) { throw new Error( - `Client generation failed: ${generateResult.error?.message ?? 'Unknown error'}`, + `Build failed: ${buildResult.error?.message ?? 'Unknown error'}`, ); } @@ -59,20 +38,7 @@ describe('App installation', () => { }); it('should find the installed app in the applications list', async () => { - const apiKey = process.env.TWENTY_TEST_API_KEY; - - if (!apiKey) { - throw new Error( - 'No API key found. Set TWENTY_TEST_API_KEY in your vitest config env.', - ); - } - - const metadataClient = new MetadataApiClient({ - url: `${TWENTY_API_URL}/metadata`, - headers: { - Authorization: `Bearer ${apiKey}`, - }, - }); + const metadataClient = new MetadataApiClient(); const result = await metadataClient.query({ findManyApplications: { diff --git a/packages/twenty-apps/hello-world/src/__tests__/setup-test.ts b/packages/twenty-apps/hello-world/src/__tests__/setup-test.ts index 096007f37e..0b866c9bb0 100644 --- a/packages/twenty-apps/hello-world/src/__tests__/setup-test.ts +++ b/packages/twenty-apps/hello-world/src/__tests__/setup-test.ts @@ -3,16 +3,36 @@ import * as os from 'os'; import * as path from 'path'; import { beforeAll } from 'vitest'; +const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000'; const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test'); -beforeAll(() => { +const assertServerIsReachable = async () => { + let response: Response; + + try { + response = await fetch(`${TWENTY_API_URL}/healthz`); + } catch { + throw new Error( + `Twenty server is not reachable at ${TWENTY_API_URL}. ` + + 'Make sure the server is running before executing integration tests.', + ); + } + + if (!response.ok) { + throw new Error(`Server at ${TWENTY_API_URL} returned ${response.status}`); + } +}; + +beforeAll(async () => { + await assertServerIsReachable(); + fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true }); const configFile = { profiles: { default: { apiUrl: process.env.TWENTY_API_URL, - apiKey: process.env.TWENTY_TEST_API_KEY, + apiKey: process.env.TWENTY_API_KEY, }, }, }; diff --git a/packages/twenty-apps/hello-world/src/application-config.ts b/packages/twenty-apps/hello-world/src/application-config.ts index 5299d98dfa..7956f15e77 100644 --- a/packages/twenty-apps/hello-world/src/application-config.ts +++ b/packages/twenty-apps/hello-world/src/application-config.ts @@ -2,7 +2,7 @@ import { defineApplication } from 'twenty-sdk'; import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; export const APPLICATION_UNIVERSAL_IDENTIFIER = - '1badae7c-8a42-4dea-b4b8-3c56e77c2f9a'; + '6563e091-9f5b-4026-a3ea-7e3b3d09e218'; export default defineApplication({ universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/hello-world/src/fields/example-field.ts b/packages/twenty-apps/hello-world/src/fields/example-field.ts index 514a883012..4500aa2950 100644 --- a/packages/twenty-apps/hello-world/src/fields/example-field.ts +++ b/packages/twenty-apps/hello-world/src/fields/example-field.ts @@ -3,7 +3,7 @@ import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object' export default defineField({ objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, - universalIdentifier: '2c503a0d-36c9-49ec-b82f-4fafe0eb6f47', + universalIdentifier: '770d32c2-cf12-4ab2-b66d-73f92dc239b5', type: FieldType.NUMBER, name: 'priority', label: 'Priority', diff --git a/packages/twenty-apps/hello-world/src/front-components/hello-world.tsx b/packages/twenty-apps/hello-world/src/front-components/hello-world.tsx index 8c5a24143f..bde03498ae 100644 --- a/packages/twenty-apps/hello-world/src/front-components/hello-world.tsx +++ b/packages/twenty-apps/hello-world/src/front-components/hello-world.tsx @@ -10,7 +10,7 @@ export const HelloWorld = () => { }; export default defineFrontComponent({ - universalIdentifier: '26c17445-fbfb-4b34-99d6-f461e734ca97', + universalIdentifier: 'd371f098-5b2c-42f0-898d-94459f1ee337', name: 'hello-world-front-component', description: 'A sample front component', component: HelloWorld, diff --git a/packages/twenty-apps/hello-world/src/logic-functions/hello-world.ts b/packages/twenty-apps/hello-world/src/logic-functions/hello-world.ts index 10cacba13f..13add55a3c 100644 --- a/packages/twenty-apps/hello-world/src/logic-functions/hello-world.ts +++ b/packages/twenty-apps/hello-world/src/logic-functions/hello-world.ts @@ -5,7 +5,7 @@ const handler = async (): Promise<{ message: string }> => { }; export default defineLogicFunction({ - universalIdentifier: '4f0b7137-1399-4e50-ac00-3c3bb2555c38', + universalIdentifier: '2baa26eb-9aaf-4856-a4f4-30d6fd6480ee', name: 'hello-world-logic-function', description: 'A simple logic function', timeoutSeconds: 5, diff --git a/packages/twenty-apps/hello-world/src/logic-functions/post-install.ts b/packages/twenty-apps/hello-world/src/logic-functions/post-install.ts index b28118597f..a058c8fd5e 100644 --- a/packages/twenty-apps/hello-world/src/logic-functions/post-install.ts +++ b/packages/twenty-apps/hello-world/src/logic-functions/post-install.ts @@ -5,7 +5,7 @@ const handler = async (payload: InstallLogicFunctionPayload): Promise => { }; export default definePostInstallLogicFunction({ - universalIdentifier: 'c1410017-8536-42aa-a188-4bfc5a1c3dae', + universalIdentifier: '7a3f4684-51db-494d-833b-a747a3b90507', name: 'post-install', description: 'Runs after installation to set up the application.', timeoutSeconds: 300, diff --git a/packages/twenty-apps/hello-world/src/logic-functions/pre-install.ts b/packages/twenty-apps/hello-world/src/logic-functions/pre-install.ts index 8ec87eab7d..0a9890c308 100644 --- a/packages/twenty-apps/hello-world/src/logic-functions/pre-install.ts +++ b/packages/twenty-apps/hello-world/src/logic-functions/pre-install.ts @@ -5,7 +5,7 @@ const handler = async (payload: InstallLogicFunctionPayload): Promise => { }; export default definePreInstallLogicFunction({ - universalIdentifier: '68d005d4-1110-4fa0-8227-71e06d6b9f30', + universalIdentifier: '1272ffdb-8e2f-492c-ab37-66c2b97e9c23', name: 'pre-install', description: 'Runs before installation to prepare the application.', timeoutSeconds: 300, diff --git a/packages/twenty-apps/hello-world/src/navigation-menu-items/example-navigation-menu-item.ts b/packages/twenty-apps/hello-world/src/navigation-menu-items/example-navigation-menu-item.ts index e72a415e3e..084bdf4266 100644 --- a/packages/twenty-apps/hello-world/src/navigation-menu-items/example-navigation-menu-item.ts +++ b/packages/twenty-apps/hello-world/src/navigation-menu-items/example-navigation-menu-item.ts @@ -1,14 +1,11 @@ import { defineNavigationMenuItem } from 'twenty-sdk'; + import { EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER } from 'src/views/example-view'; export default defineNavigationMenuItem({ - universalIdentifier: '574a895f-1511-4b38-9d28-d6b8436738ff', + universalIdentifier: '10f90627-e9c2-44b7-9742-bed77e3d1b17', name: 'example-navigation-menu-item', icon: 'IconList', + color: 'blue', position: 0, - // Link to a view: - // viewUniversalIdentifier: '...', - // Or link to an object: - // targetObjectUniversalIdentifier: '...', - // Or link to an external URL: - // link: 'https://example.com', + viewUniversalIdentifier: EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER, }); diff --git a/packages/twenty-apps/hello-world/src/objects/example-object.ts b/packages/twenty-apps/hello-world/src/objects/example-object.ts index 3f97ff142c..33b358ab24 100644 --- a/packages/twenty-apps/hello-world/src/objects/example-object.ts +++ b/packages/twenty-apps/hello-world/src/objects/example-object.ts @@ -1,10 +1,10 @@ import { defineObject, FieldType } from 'twenty-sdk'; export const EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER = - 'b75cfe84-18ce-47da-812a-53e25ee094af'; + 'dfd43356-39b3-4b55-b4a7-279bec689928'; export const NAME_FIELD_UNIVERSAL_IDENTIFIER = - '6ab9c690-06ce-455e-a2c9-8067a9747f96'; + 'd2d7f6cd-33f6-456f-bf00-17adeca926ba'; export default defineObject({ universalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/hello-world/src/roles/default-role.ts b/packages/twenty-apps/hello-world/src/roles/default-role.ts index 7c71650abc..721b630d4c 100644 --- a/packages/twenty-apps/hello-world/src/roles/default-role.ts +++ b/packages/twenty-apps/hello-world/src/roles/default-role.ts @@ -1,7 +1,7 @@ import { defineRole } from 'twenty-sdk'; export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = - 'f14afc30-f2fa-4f70-9b12-903c5f852225'; + '9238bc7b-d38f-4a1c-9d19-31ab7bc67a2f'; export default defineRole({ universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/hello-world/src/skills/example-skill.ts b/packages/twenty-apps/hello-world/src/skills/example-skill.ts index bbdf2670e9..b8f942a466 100644 --- a/packages/twenty-apps/hello-world/src/skills/example-skill.ts +++ b/packages/twenty-apps/hello-world/src/skills/example-skill.ts @@ -1,7 +1,7 @@ import { defineSkill } from 'twenty-sdk'; export const EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER = - '4f00dd76-c07b-4d55-a43a-7f17e7f6440a'; + 'd0940029-9d3c-40be-903a-52d65393028f'; export default defineSkill({ universalIdentifier: EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/hello-world/src/views/example-view.ts b/packages/twenty-apps/hello-world/src/views/example-view.ts index ac9844aa3a..5326d89769 100644 --- a/packages/twenty-apps/hello-world/src/views/example-view.ts +++ b/packages/twenty-apps/hello-world/src/views/example-view.ts @@ -1,10 +1,22 @@ -import { defineView } from 'twenty-sdk'; -import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object'; +import { defineView, ViewKey } from 'twenty-sdk'; +import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, NAME_FIELD_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object'; + +export const EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER = 'e004df40-29f3-47ba-b39d-d3a5c444367a'; export default defineView({ - universalIdentifier: 'e574b32c-c058-492a-8a5c-780b844a8735', - name: 'example-view', + universalIdentifier: EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER, + name: 'All example items', objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, icon: 'IconList', + key: ViewKey.INDEX, position: 0, + fields: [ + { + universalIdentifier: '496c40c2-5766-419c-93bf-20fdad3f34bb', + fieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER, + position: 0, + isVisible: true, + size: 200, + }, + ], }); diff --git a/packages/twenty-apps/hello-world/vitest.config.ts b/packages/twenty-apps/hello-world/vitest.config.ts index 3d186591c4..b904487c9d 100644 --- a/packages/twenty-apps/hello-world/vitest.config.ts +++ b/packages/twenty-apps/hello-world/vitest.config.ts @@ -15,7 +15,7 @@ export default defineConfig({ setupFiles: ['src/__tests__/setup-test.ts'], env: { TWENTY_API_URL: 'http://localhost:3000', - TWENTY_TEST_API_KEY: + TWENTY_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik', }, }, diff --git a/packages/twenty-apps/hello-world/yarn.lock b/packages/twenty-apps/hello-world/yarn.lock index 8128169fb8..f7ae21d9ce 100644 --- a/packages/twenty-apps/hello-world/yarn.lock +++ b/packages/twenty-apps/hello-world/yarn.lock @@ -1077,20 +1077,6 @@ __metadata: languageName: node linkType: hard -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 resolution: "@isaacs/fs-minipass@npm:4.0.1" @@ -1240,23 +1226,16 @@ __metadata: linkType: hard "@pandacss/is-valid-prop@npm:^1.4.2": - version: 1.8.2 - resolution: "@pandacss/is-valid-prop@npm:1.8.2" - checksum: 10c0/95f36a01b75ae43813ed81c53e1d6963ea5a27b5433df6a807114e2c1273fdc87412db701c06435c7996f3bc758ab8789328dc039a5dba33465f3f1b888a4086 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + version: 1.9.0 + resolution: "@pandacss/is-valid-prop@npm:1.9.0" + checksum: 10c0/6ebaf51b0e403196c032d974ca88c2dbd4db272fde785327f0de30a70fd8a71d85426dc2fd4bd980fcdfe44c8ac4616b8b647fe806a44d8f8690af809a7467d7 languageName: node linkType: hard "@preact/signals-core@npm:^1.8.0": - version: 1.13.0 - resolution: "@preact/signals-core@npm:1.13.0" - checksum: 10c0/25f536b90f5dbd116e037a27b51f5ca69914a957b5fa3c1d8af2857d145257fdb106e86cb6e1d5d22bc6feb1215d4448bf208482d2349f832720548bc788ca08 + version: 1.14.0 + resolution: "@preact/signals-core@npm:1.14.0" + checksum: 10c0/b9d39899bd24fae59c8b1a70d940dedb8f952d2e530b3cdc52c79de2df1f096b347fce6a52ed6cfd6f98dfe710741abe9f509ee746789023ff1dbde90152016d languageName: node linkType: hard @@ -1528,21 +1507,6 @@ __metadata: languageName: node linkType: hard -"@twentyhq/hello-world@workspace:.": - version: 0.0.0-use.local - resolution: "@twentyhq/hello-world@workspace:." - dependencies: - "@types/node": "npm:^24.7.2" - "@types/react": "npm:^18.2.0" - oxlint: "npm:^0.16.0" - react: "npm:^18.2.0" - twenty-sdk: "npm:0.6.3" - typescript: "npm:^5.9.3" - vite-tsconfig-paths: "npm:^4.2.1" - vitest: "npm:^3.1.1" - languageName: unknown - linkType: soft - "@types/chai@npm:^5.2.2": version: 5.2.3 resolution: "@types/chai@npm:5.2.3" @@ -1556,7 +1520,7 @@ __metadata: "@types/deep-eql@npm:*": version: 4.0.2 resolution: "@types/deep-eql@npm:4.0.2" - checksum: 10c0/10c0-bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 + checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 languageName: node linkType: hard @@ -1577,29 +1541,29 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 25.3.3 - resolution: "@types/node@npm:25.3.3" + version: 25.3.5 + resolution: "@types/node@npm:25.3.5" dependencies: undici-types: "npm:~7.18.0" - checksum: 10c0/63e1d3816a9f4a706ab5d588d18cb98aa824b97748ff585537d327528e9438f58f69f45c7762e7cd3a1ab32c1619f551aabe8075d13172f9273cf10f6d83ab91 + checksum: 10c0/4cf0834a6f6933bf0aca6afead117ae3db3b8f02a5f7187a24f871db0fb9344e5e46573ba387bc53b7505e1e219c4c535cbe67221ced95bb5ad98573223b19d0 languageName: node linkType: hard "@types/node@npm:^22.5.5": - version: 22.19.13 - resolution: "@types/node@npm:22.19.13" + version: 22.19.15 + resolution: "@types/node@npm:22.19.15" dependencies: undici-types: "npm:~6.21.0" - checksum: 10c0/ad8a0b6a69dd8ef663701573eca94ef6d20ce093f54f05bed823c826374eb1ea8b06e6f2c5d7f6cfc203b82dfd60293296bf80ea987ddb77775840bc2ef9f803 + checksum: 10c0/f17eaf3d0d1da5e93ad9e287efb78201f8a5282973c004c5f70d91675c5c6b926a23acaa7b158a42b3d7e27e36b349d65a531710c91c308fca53dd7fa280ef98 languageName: node linkType: hard "@types/node@npm:^24.7.2": - version: 24.11.0 - resolution: "@types/node@npm:24.11.0" + version: 24.12.0 + resolution: "@types/node@npm:24.12.0" dependencies: undici-types: "npm:~7.16.0" - checksum: 10c0/4fb7390259e3b158d25dbecf52de8ce70fa18a4ed0949c9444bb6384517c361fa19781e6821ca8c18dc5f6af43eab72e9e159e07000e6b1286d082e8585d8c41 + checksum: 10c0/8b31c0af5b5474f13048a4e77c57f22cd4f8fe6e58c4b6fde9456b0c13f46a5bfaf5744ff88fd089581de9f0d6e99c584e022681de7acb26a58d258c654c4843 languageName: node linkType: hard @@ -1618,9 +1582,9 @@ __metadata: linkType: hard "@types/qs@npm:^6.9.0": - version: 6.14.0 - resolution: "@types/qs@npm:6.14.0" - checksum: 10c0/5b3036df6e507483869cdb3858201b2e0b64b4793dc4974f188caa5b5732f2333ab9db45c08157975054d3b070788b35088b4bc60257ae263885016ee2131310 + version: 6.15.0 + resolution: "@types/qs@npm:6.15.0" + checksum: 10c0/1b104cac50e655fc41d7fc1de2c2aba2908c4cf833a555b6808fb4c96752662b439238f2392a15d2590a7a6ca75dbd40e42d9378ac2be0d548ee484954363688 languageName: node linkType: hard @@ -2668,15 +2632,6 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 - languageName: node - linkType: hard - "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.4 resolution: "agent-base@npm:7.1.4" @@ -2762,7 +2717,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.2.1": version: 6.2.3 resolution: "ansi-styles@npm:6.2.3" checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 @@ -2776,36 +2731,6 @@ __metadata: languageName: node linkType: hard -"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": - version: 5.0.2 - resolution: "archiver-utils@npm:5.0.2" - dependencies: - glob: "npm:^10.0.0" - graceful-fs: "npm:^4.2.0" - is-stream: "npm:^2.0.1" - lazystream: "npm:^1.0.0" - lodash: "npm:^4.17.15" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^4.0.0" - checksum: 10c0/3782c5fa9922186aa1a8e41ed0c2867569faa5f15c8e5e6418ea4c1b730b476e21bd68270b3ea457daf459ae23aaea070b2b9f90cf90a59def8dc79b9e4ef538 - languageName: node - linkType: hard - -"archiver@npm:^7.0.1": - version: 7.0.1 - resolution: "archiver@npm:7.0.1" - dependencies: - archiver-utils: "npm:^5.0.2" - async: "npm:^3.2.4" - buffer-crc32: "npm:^1.0.0" - readable-stream: "npm:^4.0.0" - readdir-glob: "npm:^1.1.2" - tar-stream: "npm:^3.0.0" - zip-stream: "npm:^6.0.1" - checksum: 10c0/02afd87ca16f6184f752db8e26884e6eff911c476812a0e7f7b26c4beb09f06119807f388a8e26ed2558aa8ba9db28646ebd147a4f99e46813b8b43158e1438e - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -2841,13 +2766,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.4": - version: 3.2.6 - resolution: "async@npm:3.2.6" - checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -2873,18 +2791,6 @@ __metadata: languageName: node linkType: hard -"b4a@npm:^1.6.4": - version: 1.8.0 - resolution: "b4a@npm:1.8.0" - peerDependencies: - react-native-b4a: "*" - peerDependenciesMeta: - react-native-b4a: - optional: true - checksum: 10c0/27eab5c50ea1f1314f36256f160d2e6d6950f55f02ee4942732ecafd8bcc4b3a2ed209fab532b288770d41df2befa97a2745175c06471875b716eb87abf31519 - languageName: node - linkType: hard - "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -2917,86 +2823,6 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.5.4, bare-events@npm:^2.7.0": - version: 2.8.2 - resolution: "bare-events@npm:2.8.2" - peerDependencies: - bare-abort-controller: "*" - peerDependenciesMeta: - bare-abort-controller: - optional: true - checksum: 10c0/53fef240cf2cdcca62f78b6eead90ddb5a59b0929f414b13a63764c2b4f9de98ea8a578d033b04d64bb7b86dfbc402e937984e69950855cc3754c7b63da7db21 - languageName: node - linkType: hard - -"bare-fs@npm:^4.5.5": - version: 4.5.5 - resolution: "bare-fs@npm:4.5.5" - dependencies: - bare-events: "npm:^2.5.4" - bare-path: "npm:^3.0.0" - bare-stream: "npm:^2.6.4" - bare-url: "npm:^2.2.2" - fast-fifo: "npm:^1.3.2" - peerDependencies: - bare-buffer: "*" - peerDependenciesMeta: - bare-buffer: - optional: true - checksum: 10c0/1f8b31b73848639fff4ab46fb9d8c0477dc571813fd6790ec75edc192abc467310f1082ecb81170aeffca91b4d08f0e9a002d6f9fa6968a07d11ea22be1597ff - languageName: node - linkType: hard - -"bare-os@npm:^3.0.1": - version: 3.7.1 - resolution: "bare-os@npm:3.7.1" - checksum: 10c0/66f4eb063314b4187a5f6d89bc93b2aa1fa39598fa6898b85780199a799a26b1ee3cd66aa4b9f2ed41f4095ac75de048d22fbde57c9c6dd0bd9e4f0fa317a254 - languageName: node - linkType: hard - -"bare-path@npm:^3.0.0": - version: 3.0.0 - resolution: "bare-path@npm:3.0.0" - dependencies: - bare-os: "npm:^3.0.1" - checksum: 10c0/56a3ca82a9f808f4976cb1188640ac206546ce0ddff582afafc7bd2a6a5b31c3bd16422653aec656eeada2830cfbaa433c6cbf6d6b4d9eba033d5e06d60d9a68 - languageName: node - linkType: hard - -"bare-stream@npm:^2.6.4": - version: 2.8.0 - resolution: "bare-stream@npm:2.8.0" - dependencies: - streamx: "npm:^2.21.0" - teex: "npm:^1.0.1" - peerDependencies: - bare-buffer: "*" - bare-events: "*" - peerDependenciesMeta: - bare-buffer: - optional: true - bare-events: - optional: true - checksum: 10c0/91b722b26758c3a6940b681803811cb8fd0c50867cb393ef807a615ddb89024a6cd765b7dfe1425564ec5b5cec0f96bcf3536963c1ca59bf6f39dc8363ce92c7 - languageName: node - linkType: hard - -"bare-url@npm:^2.2.2": - version: 2.3.2 - resolution: "bare-url@npm:2.3.2" - dependencies: - bare-path: "npm:^3.0.0" - checksum: 10c0/4fd0046314390a54404519d9db20e130ab3a341ef638d040f9603ae3fa0a1d84f6970357d21c8fc64e6163d1f61fd212cb1cfa4cb537dfead99fb06e3c030b15 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.12 resolution: "brace-expansion@npm:1.1.12" @@ -3007,15 +2833,6 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^2.0.1, brace-expansion@npm:^2.0.2": - version: 2.0.2 - resolution: "brace-expansion@npm:2.0.2" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf - languageName: node - linkType: hard - "brace-expansion@npm:^5.0.2": version: 5.0.4 resolution: "brace-expansion@npm:5.0.4" @@ -3034,23 +2851,6 @@ __metadata: languageName: node linkType: hard -"buffer-crc32@npm:^1.0.0": - version: 1.0.0 - resolution: "buffer-crc32@npm:1.0.0" - checksum: 10c0/8b86e161cee4bb48d5fa622cbae4c18f25e4857e5203b89e23de59e627ab26beb82d9d7999f2b8de02580165f61f83f997beaf02980cdf06affd175b651921ab - languageName: node - linkType: hard - -"buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.2.1" - checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 - languageName: node - linkType: hard - "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -3312,19 +3112,6 @@ __metadata: languageName: node linkType: hard -"compress-commons@npm:^6.0.2": - version: 6.0.2 - resolution: "compress-commons@npm:6.0.2" - dependencies: - crc-32: "npm:^1.2.0" - crc32-stream: "npm:^6.0.0" - is-stream: "npm:^2.0.1" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^4.0.0" - checksum: 10c0/2347031b7c92c8ed5011b07b93ec53b298fa2cd1800897532ac4d4d1aeae06567883f481b6e35f13b65fc31b190c751df6635434d525562f0203fde76f1f0814 - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -3346,13 +3133,6 @@ __metadata: languageName: node linkType: hard -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 - languageName: node - linkType: hard - "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -3366,36 +3146,6 @@ __metadata: languageName: node linkType: hard -"crc-32@npm:^1.2.0": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" - bin: - crc32: bin/crc32.njs - checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 - languageName: node - linkType: hard - -"crc32-stream@npm:^6.0.0": - version: 6.0.0 - resolution: "crc32-stream@npm:6.0.0" - dependencies: - crc-32: "npm:^1.2.0" - readable-stream: "npm:^4.0.0" - checksum: 10c0/bf9c84571ede2d119c2b4f3a9ef5eeb9ff94b588493c0d3862259af86d3679dcce1c8569dd2b0a6eff2f35f5e2081cc1263b846d2538d4054da78cf34f262a3d - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.6": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 - languageName: node - linkType: hard - "csstype@npm:3.2.3, csstype@npm:^3.0.2, csstype@npm:^3.2.2, csstype@npm:^3.2.3": version: 3.2.3 resolution: "csstype@npm:3.2.3" @@ -3470,13 +3220,6 @@ __metadata: languageName: node linkType: hard -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - "elegant-spinner@npm:^1.0.1": version: 1.0.1 resolution: "elegant-spinner@npm:1.0.1" @@ -3498,13 +3241,6 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -3571,14 +3307,14 @@ __metadata: linkType: hard "es-toolkit@npm:^1.22.0": - version: 1.45.0 - resolution: "es-toolkit@npm:1.45.0" + version: 1.45.1 + resolution: "es-toolkit@npm:1.45.1" dependenciesMeta: "@trivago/prettier-plugin-sort-imports@4.3.0": unplugged: true prettier-plugin-sort-re-exports@0.0.1: unplugged: true - checksum: 10c0/f4a01fb2cc181a0df89e6b16df993345e90890c68d257b5883ddb1e91c32e8e5833093018ca3079540d5aba6b99683ee64de2f7ef89bf071234fa5b7e30f1bb8 + checksum: 10c0/b19180c778af8fe2fb450e8e05a5793166c91e0aa66b87d9fcfcc5618bd33e6ceec9c103e074458d32b2044972dc4fc63631b3b615834fde261917e9561f6f59 languageName: node linkType: hard @@ -3790,13 +3526,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b - languageName: node - linkType: hard - "eventemitter3@npm:^3.1.0": version: 3.1.2 resolution: "eventemitter3@npm:3.1.2" @@ -3804,22 +3533,6 @@ __metadata: languageName: node linkType: hard -"events-universal@npm:^1.0.0": - version: 1.0.1 - resolution: "events-universal@npm:1.0.1" - dependencies: - bare-events: "npm:^2.7.0" - checksum: 10c0/a1d9a5e9f95843650f8ec240dd1221454c110189a9813f32cdf7185759b43f1f964367ac7dca4ebc69150b59043f2d77c7e122b0d03abf7c25477ea5494785a5 - languageName: node - linkType: hard - -"events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 - languageName: node - linkType: hard - "expect-type@npm:^1.2.1": version: 1.3.0 resolution: "expect-type@npm:1.3.0" @@ -3845,14 +3558,7 @@ __metadata: languageName: node linkType: hard -"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": - version: 1.3.2 - resolution: "fast-fifo@npm:1.3.2" - checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": +"fast-glob@npm:^3.2.9": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -3941,16 +3647,6 @@ __metadata: languageName: node linkType: hard -"foreground-child@npm:^3.1.0": - version: 3.3.1 - resolution: "foreground-child@npm:3.3.1" - dependencies: - cross-spawn: "npm:^7.0.6" - signal-exit: "npm:^4.0.1" - checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 - languageName: node - linkType: hard - "form-data@npm:^4.0.5": version: 4.0.5 resolution: "form-data@npm:4.0.5" @@ -3975,17 +3671,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.2.0": - version: 11.3.4 - resolution: "fs-extra@npm:11.3.4" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/e08276f767a62496ae97d711aaa692c6a478177f24a85979b6a2881c9db9c68b8c2ad5da0bcf92c0b2a474cea6e935ec245656441527958fd8372cb647087df0 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -4089,22 +3774,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0": - version: 10.5.0 - resolution: "glob@npm:10.5.0" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 - languageName: node - linkType: hard - "glob@npm:^13.0.0": version: 13.0.6 resolution: "glob@npm:13.0.6" @@ -4182,9 +3851,9 @@ __metadata: linkType: hard "graphql@npm:^16.6.0, graphql@npm:^16.8.1": - version: 16.13.0 - resolution: "graphql@npm:16.13.0" - checksum: 10c0/c20e7909c6c8d405a30f8caeae5aaf604b9f949bdcdf80bdb3d3561123e6099181c39eae697cf4fcdc5dd301ab215363b8def0aa0ff51f03cc7e4b48a8c2c2b1 + version: 16.13.1 + resolution: "graphql@npm:16.13.1" + checksum: 10c0/0c7a9aea59504fbf3e0674f13ddb82935780f2a388e1db0ef41c3711c0ff8cb0a871c50d30d2d5288f32b946af3570d6f9ba8d13b03a330336f27121f9ac7a6b languageName: node linkType: hard @@ -4229,6 +3898,21 @@ __metadata: languageName: node linkType: hard +"hello-world@workspace:.": + version: 0.0.0-use.local + resolution: "hello-world@workspace:." + dependencies: + "@types/node": "npm:^24.7.2" + "@types/react": "npm:^18.2.0" + oxlint: "npm:^0.16.0" + react: "npm:^18.2.0" + twenty-sdk: "portal:../../twenty-sdk" + typescript: "npm:^5.9.3" + vite-tsconfig-paths: "npm:^4.2.1" + vitest: "npm:^3.1.1" + languageName: unknown + linkType: soft + "hoist-non-react-statics@npm:^3.3.1": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -4290,13 +3974,6 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb - languageName: node - linkType: hard - "ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" @@ -4345,7 +4022,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:~2.0.3": +"inherits@npm:2": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -4526,27 +4203,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^2.0.1": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - "isexe@npm:^4.0.0": version: 4.0.0 resolution: "isexe@npm:4.0.0" @@ -4571,19 +4227,6 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 - languageName: node - linkType: hard - "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -4641,15 +4284,6 @@ __metadata: languageName: node linkType: hard -"lazystream@npm:^1.0.0": - version: 1.0.1 - resolution: "lazystream@npm:1.0.1" - dependencies: - readable-stream: "npm:^2.0.5" - checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -4720,21 +4354,7 @@ __metadata: languageName: node linkType: hard -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 - languageName: node - linkType: hard - -"lodash.kebabcase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.kebabcase@npm:4.1.1" - checksum: 10c0/da5d8f41dbb5bc723d4bf9203d5096ca8da804d6aec3d2b56457156ba6c8d999ff448d347ebd97490da853cb36696ea4da09a431499f1ee8deb17b094ecf4e33 - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": +"lodash@npm:^4.17.20, lodash@npm:^4.17.21": version: 4.17.23 resolution: "lodash@npm:4.17.23" checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 @@ -4779,13 +4399,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.2.0": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb - languageName: node - linkType: hard - "lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": version: 11.2.6 resolution: "lru-cache@npm:11.2.6" @@ -4893,24 +4506,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.1.0": - version: 5.1.9 - resolution: "minimatch@npm:5.1.9" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/4202718683815a7288b13e470160a4f9560cf392adef4f453927505817e01ef6b3476ecde13cfcaed17e7326dd3b69ad44eb2daeb19a217c5500f9277893f1d6 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4": - version: 9.0.9 - resolution: "minimatch@npm:9.0.9" - dependencies: - brace-expansion: "npm:^2.0.2" - checksum: 10c0/0b6a58530dbb00361745aa6c8cffaba4c90f551afe7c734830bd95fd88ebf469dd7355a027824ea1d09e37181cfeb0a797fb17df60c15ac174303ac110eb7e86 - languageName: node - linkType: hard - "minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -4978,7 +4573,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": version: 7.1.3 resolution: "minipass@npm:7.1.3" checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb @@ -5098,13 +4693,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - "number-is-nan@npm:^1.0.0": version: 1.0.1 resolution: "number-is-nan@npm:1.0.1" @@ -5244,13 +4832,6 @@ __metadata: languageName: node linkType: hard -"package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -5293,13 +4874,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -5307,16 +4881,6 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.11.1": - version: 1.11.1 - resolution: "path-scurry@npm:1.11.1" - dependencies: - lru-cache: "npm:^10.2.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d - languageName: node - linkType: hard - "path-scurry@npm:^2.0.2": version: 2.0.2 resolution: "path-scurry@npm:2.0.2" @@ -5410,20 +4974,6 @@ __metadata: languageName: node linkType: hard -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 - languageName: node - linkType: hard - "proxy-compare@npm:3.0.1, proxy-compare@npm:^3.0.0": version: 3.0.1 resolution: "proxy-compare@npm:3.0.1" @@ -5503,43 +5053,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.5": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa - languageName: node - linkType: hard - -"readable-stream@npm:^4.0.0": - version: 4.7.0 - resolution: "readable-stream@npm:4.7.0" - dependencies: - abort-controller: "npm:^3.0.0" - buffer: "npm:^6.0.3" - events: "npm:^3.3.0" - process: "npm:^0.11.10" - string_decoder: "npm:^1.3.0" - checksum: 10c0/fd86d068da21cfdb10f7a4479f2e47d9c0a9b0c862fc0c840a7e5360201580a55ac399c764b12a4f6fa291f8cee74d9c4b7562e0d53b3c4b2769f2c98155d957 - languageName: node - linkType: hard - -"readdir-glob@npm:^1.1.2": - version: 1.1.3 - resolution: "readdir-glob@npm:1.1.3" - dependencies: - minimatch: "npm:^5.1.0" - checksum: 10c0/a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace - languageName: node - linkType: hard - "readdirp@npm:^4.0.1": version: 4.1.2 resolution: "readdirp@npm:4.1.2" @@ -5777,20 +5290,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -5823,22 +5322,6 @@ __metadata: languageName: node linkType: hard -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - "side-channel-list@npm:^1.0.0": version: 1.0.0 resolution: "side-channel-list@npm:1.0.0" @@ -5901,7 +5384,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": +"signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 @@ -6016,28 +5499,6 @@ __metadata: languageName: node linkType: hard -"streamx@npm:^2.12.5, streamx@npm:^2.15.0, streamx@npm:^2.21.0": - version: 2.23.0 - resolution: "streamx@npm:2.23.0" - dependencies: - events-universal: "npm:^1.0.0" - fast-fifo: "npm:^1.3.2" - text-decoder: "npm:^1.1.0" - checksum: 10c0/15708ce37818d588632fe1104e8febde573e33e8c0868bf583fce0703f3faf8d2a063c278e30df2270206811b69997f64eb78792099933a1fe757e786fbcbd44 - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - "string-width@npm:^1.0.1": version: 1.0.2 resolution: "string-width@npm:1.0.2" @@ -6059,14 +5520,14 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" +"string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard @@ -6081,33 +5542,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.3.0": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: "npm:~5.1.0" - checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - "strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": version: 3.0.1 resolution: "strip-ansi@npm:3.0.1" @@ -6126,7 +5560,16 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": +"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.1.0": version: 7.2.0 resolution: "strip-ansi@npm:7.2.0" dependencies: @@ -6196,46 +5639,16 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^3.0.0": - version: 3.1.8 - resolution: "tar-stream@npm:3.1.8" - dependencies: - b4a: "npm:^1.6.4" - bare-fs: "npm:^4.5.5" - fast-fifo: "npm:^1.2.0" - streamx: "npm:^2.15.0" - checksum: 10c0/c4bf369de2302fcf30218d091167a5372ee79b69a1b5bb493ddb7714193ca805719558966334bab1f2775c8142826865f24e25459ff1c5f0a096bc3a3d5c5ce2 - languageName: node - linkType: hard - "tar@npm:^7.5.4": - version: 7.5.9 - resolution: "tar@npm:7.5.9" + version: 7.5.11 + resolution: "tar@npm:7.5.11" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/e870beb1b2477135ca2abe86b2d18f7b35d0a4e3a37bbc523d3b8f7adca268dfab543f26528a431d569897f8c53a7cac745cdfbc4411c2f89aeeacc652b81b0a - languageName: node - linkType: hard - -"teex@npm:^1.0.1": - version: 1.0.1 - resolution: "teex@npm:1.0.1" - dependencies: - streamx: "npm:^2.12.5" - checksum: 10c0/8df9166c037ba694b49d32a49858e314c60e513d55ac5e084dbf1ddbb827c5fa43cc389a81e87684419c21283308e9d68bb068798189c767ec4c252f890b8a77 - languageName: node - linkType: hard - -"text-decoder@npm:^1.1.0": - version: 1.2.7 - resolution: "text-decoder@npm:1.2.7" - dependencies: - b4a: "npm:^1.6.4" - checksum: 10c0/929938ed154fbadb660a7f3d1aca30b7e53649a731af7583168fcfba0c158046325d35d945926e2a512bb62d1a49a7818151c987ea38b48853f01e1615722fc5 + checksum: 10c0/b6bb420550ef50ef23356018155e956cd83282c97b6128d8d5cfe5740c57582d806a244b2ef0bf686a74ce526babe8b8b9061527623e935e850008d86d838929 languageName: node linkType: hard @@ -6337,9 +5750,9 @@ __metadata: languageName: node linkType: hard -"twenty-sdk@npm:0.6.3": - version: 0.6.3 - resolution: "twenty-sdk@npm:0.6.3" +"twenty-sdk@portal:../../twenty-sdk::locator=hello-world%40workspace%3A.": + version: 0.0.0-use.local + resolution: "twenty-sdk@portal:../../twenty-sdk::locator=hello-world%40workspace%3A." dependencies: "@chakra-ui/react": "npm:^3.33.0" "@emotion/react": "npm:^11.14.0" @@ -6349,25 +5762,21 @@ __metadata: "@remote-dom/core": "npm:^1.10.1" "@remote-dom/react": "npm:^1.2.2" "@sniptt/guards": "npm:^0.2.0" - archiver: "npm:^7.0.1" axios: "npm:^1.13.5" chalk: "npm:^5.3.0" chokidar: "npm:^4.0.0" commander: "npm:^12.0.0" dotenv: "npm:^16.4.0" esbuild: "npm:^0.25.0" - fast-glob: "npm:^3.3.0" - fs-extra: "npm:^11.2.0" graphql: "npm:^16.8.1" graphql-sse: "npm:^2.5.4" ink: "npm:^5.1.1" inquirer: "npm:^10.0.0" jsonc-parser: "npm:^3.2.0" - lodash.camelcase: "npm:^4.3.0" - lodash.kebabcase: "npm:^4.1.1" preact: "npm:^10.28.3" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" + tinyglobby: "npm:^0.2.15" typescript: "npm:^5.9.2" uuid: "npm:^13.0.0" vite: "npm:^7.0.0" @@ -6375,9 +5784,8 @@ __metadata: zod: "npm:^4.1.11" bin: twenty: dist/cli.cjs - checksum: 10c0/44bc143d6125393effeb749aaa9795b22591d2add713485304df46cc0bbbe8c1155ff0f833f848658bb3ae2857276c4c830649a3fb9d3e56c8bca458107bcc88 languageName: node - linkType: hard + linkType: soft "type-fest@npm:^0.21.3": version: 0.21.3 @@ -6491,13 +5899,6 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - "utility-types@npm:^3.10.0": version: 3.11.0 resolution: "utility-types@npm:3.11.0" @@ -6687,17 +6088,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - "which@npm:^6.0.0": version: 6.0.1 resolution: "which@npm:6.0.1" @@ -6730,17 +6120,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - "wrap-ansi@npm:^3.0.1": version: 3.0.1 resolution: "wrap-ansi@npm:3.0.1" @@ -6762,17 +6141,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - "wrap-ansi@npm:^9.0.0": version: 9.0.2 resolution: "wrap-ansi@npm:9.0.2" @@ -6925,17 +6293,6 @@ __metadata: languageName: node linkType: hard -"zip-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "zip-stream@npm:6.0.1" - dependencies: - archiver-utils: "npm:^5.0.0" - compress-commons: "npm:^6.0.2" - readable-stream: "npm:^4.0.0" - checksum: 10c0/50f2fb30327fb9d09879abf7ae2493705313adf403e794b030151aaae00009162419d60d0519e807673ec04d442e140c8879ca14314df0a0192de3b233e8f28b - languageName: node - linkType: hard - "zod@npm:^4.1.11": version: 4.3.6 resolution: "zod@npm:4.3.6" diff --git a/packages/twenty-docs/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/developers/extend/capabilities/apps.mdx index ef2cb4535d..a5a02699b8 100644 --- a/packages/twenty-docs/developers/extend/capabilities/apps.mdx +++ b/packages/twenty-docs/developers/extend/capabilities/apps.mdx @@ -169,7 +169,7 @@ export default defineObject({ Later commands will add more files and folders: -- `yarn twenty app:dev` will auto-generate two typed API clients in `node_modules/twenty-sdk/generated`: `CoreApiClient` (for workspace data via `/graphql`) and `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`). +- `yarn twenty app:dev` will auto-generate two typed API clients in `node_modules/twenty-sdk/clients`: `CoreApiClient` (for workspace data via `/graphql`) and `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`). - `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more. ## Authentication @@ -431,7 +431,7 @@ Each function file uses `defineLogicFunction()` to export a configuration with a // src/app/createPostCard.logic-function.ts import { defineLogicFunction } from 'twenty-sdk'; import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk'; -import { CoreApiClient, type Person } from 'twenty-sdk/generated'; +import { CoreApiClient, type Person } from 'twenty-sdk/clients'; const handler = async (params: RoutePayload) => { const client = new CoreApiClient(); @@ -669,7 +669,7 @@ To mark a logic function as a tool, set `isTool: true` and provide a `toolInputS ```typescript // src/logic-functions/enrich-company.logic-function.ts import { defineLogicFunction } from 'twenty-sdk'; -import { CoreApiClient } from 'twenty-sdk/generated'; +import { CoreApiClient } from 'twenty-sdk/clients'; const handler = async (params: { companyName: string; domain?: string }) => { const client = new CoreApiClient(); @@ -830,13 +830,14 @@ You can create new agents in two ways: ### Generated typed clients -Two typed clients are auto-generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated` based on your workspace schema: +Two typed clients are auto-generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/clients` based on your workspace schema: - **`CoreApiClient`** — queries the `/graphql` endpoint for workspace data - **`MetadataApiClient`** — queries the `/metadata` endpoint for workspace configuration and file uploads ```typescript -import { CoreApiClient, MetadataApiClient } from 'twenty-sdk/generated'; +import { CoreApiClient } from 'twenty-sdk/clients'; +import { MetadataApiClient } from 'twenty-sdk/clients'; const client = new CoreApiClient(); const { me } = await client.query({ me: { id: true, displayName: true } }); @@ -845,7 +846,7 @@ const metadataClient = new MetadataApiClient(); const { currentWorkspace } = await metadataClient.query({ currentWorkspace: { id: true } }); ``` -Both clients are re-generated automatically by `yarn twenty app:dev` whenever your objects or fields change. +`CoreApiClient` is re-generated automatically by `yarn twenty app:dev` whenever your objects or fields change. `MetadataApiClient` ships pre-built with the SDK. #### Runtime credentials in logic functions @@ -861,10 +862,10 @@ Notes: #### Uploading files -The generated `MetadataApiClient` includes an `uploadFile` method for attaching files to file-type fields on your workspace objects. Because standard GraphQL clients do not support multipart file uploads natively, the client provides this dedicated method that implements the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec) under the hood. +The `MetadataApiClient` includes an `uploadFile` method for attaching files to file-type fields on your workspace objects. Because standard GraphQL clients do not support multipart file uploads natively, the client provides this dedicated method that implements the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec) under the hood. ```typescript -import { MetadataApiClient } from 'twenty-sdk/generated'; +import { MetadataApiClient } from 'twenty-sdk/clients'; import * as fs from 'fs'; const metadataClient = new MetadataApiClient(); diff --git a/packages/twenty-sdk/.gitignore b/packages/twenty-sdk/.gitignore index 2d8b0906ef..3c1c923d76 100644 --- a/packages/twenty-sdk/.gitignore +++ b/packages/twenty-sdk/.gitignore @@ -1,6 +1,6 @@ node_modules .twenty -generated +/generated storybook-static src/front-component-renderer/__stories__/example-sources-built src/front-component-renderer/__stories__/example-sources-built-preact diff --git a/packages/twenty-sdk/.oxlintrc.json b/packages/twenty-sdk/.oxlintrc.json index a1d10264b4..e21abc5dbe 100644 --- a/packages/twenty-sdk/.oxlintrc.json +++ b/packages/twenty-sdk/.oxlintrc.json @@ -4,7 +4,7 @@ "categories": { "correctness": "off" }, - "ignorePatterns": ["node_modules", "dist"], + "ignorePatterns": ["node_modules", "dist", "src/clients/generated"], "rules": { "func-style": ["error", "declaration", { "allowArrowFunctions": true }], "no-console": "off", diff --git a/packages/twenty-sdk/.prettierignore b/packages/twenty-sdk/.prettierignore index e3d13709bb..2b4b03aed8 100644 --- a/packages/twenty-sdk/.prettierignore +++ b/packages/twenty-sdk/.prettierignore @@ -1,3 +1,4 @@ dist storybook-static coverage +src/clients/generated diff --git a/packages/twenty-sdk/README.md b/packages/twenty-sdk/README.md index 6c4d06dbc3..25545ac321 100644 --- a/packages/twenty-sdk/README.md +++ b/packages/twenty-sdk/README.md @@ -14,7 +14,7 @@ A CLI and SDK to develop, build, and publish applications that extend [Twenty CRM](https://twenty.com). -- Two auto‑generated typed GraphQL clients: `CoreApiClient` (workspace data) and `MetadataApiClient` (workspace configuration & file uploads) +- Typed GraphQL clients: `CoreApiClient` (auto-generated per app for workspace data) and `MetadataApiClient` (pre-built with the SDK for workspace configuration & file uploads) - Built‑in CLI for auth, dev mode (watch & sync), uninstall, and function management - Works great with the scaffolder: [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) @@ -54,8 +54,7 @@ Commands: auth:switch Switch the default workspace auth:list List all configured workspaces app:dev Watch and sync local application changes - app:generate-client Build, sync to local server, and generate the typed API client - app:build Build the application (no server needed) + app:build Build, sync, and generate API client app:publish Build and publish to npm or a Twenty server app:typecheck Run TypeScript type checking on the application app:uninstall Uninstall application from Twenty @@ -133,9 +132,7 @@ Application development commands. - Behavior: Builds your application (functions and front components), computes the manifest, syncs everything to your workspace, then watches the directory for changes and re-syncs automatically. Displays an interactive UI showing build and sync status in real time. Press Ctrl+C to stop. -- `twenty app:generate-client [appPath]` — One-shot build, sync to local server, and generate the typed API client. Requires a running local server. - -- `twenty app:build [appPath]` — Build the application into `.twenty/output/`. No server needed. +- `twenty app:build [appPath]` — Build the application, sync to the server, generate the typed API client, then rebuild with the real client. - Options: - `--tarball`: Also pack the output into a `.tgz` tarball. diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json index 2e99372326..5980cd9729 100644 --- a/packages/twenty-sdk/package.json +++ b/packages/twenty-sdk/package.json @@ -9,7 +9,6 @@ }, "files": [ "dist", - "generated", "README.md", "package.json" ], @@ -45,20 +44,10 @@ "import": "./dist/front-component-renderer/index.mjs", "require": "./dist/front-component-renderer/index.cjs" }, - "./generated": { - "types": "./generated/index.ts", - "import": "./generated/index.ts", - "require": "./generated/index.ts" - }, - "./generated/core": { - "types": "./generated/core/index.ts", - "import": "./generated/core/index.ts", - "require": "./generated/core/index.ts" - }, - "./generated/metadata": { - "types": "./generated/metadata/index.ts", - "import": "./generated/metadata/index.ts", - "require": "./generated/metadata/index.ts" + "./clients": { + "types": "./dist/clients/index.d.ts", + "import": "./dist/clients.mjs", + "require": "./dist/clients.cjs" } }, "license": "AGPL-3.0", @@ -127,14 +116,8 @@ "front-component-renderer": [ "dist/front-component-renderer/index.d.ts" ], - "generated": [ - "generated/index.ts" - ], - "generated/core": [ - "generated/core/index.ts" - ], - "generated/metadata": [ - "generated/metadata/index.ts" + "clients": [ + "dist/clients/index.d.ts" ] } } diff --git a/packages/twenty-sdk/project.json b/packages/twenty-sdk/project.json index 2411587f19..cfabc36d38 100644 --- a/packages/twenty-sdk/project.json +++ b/packages/twenty-sdk/project.json @@ -95,6 +95,16 @@ "command": "npx vite build -c vite.config.sdk.ts" } }, + "generate-metadata-client": { + "executor": "nx:run-commands", + "cache": false, + "dependsOn": ["^build"], + "outputs": ["{projectRoot}/src/clients/generated/metadata"], + "options": { + "cwd": "packages/twenty-sdk", + "command": "tsx -r tsconfig-paths/register scripts/generate-metadata-client.ts" + } + }, "generate-remote-dom-elements": { "executor": "nx:run-commands", "cache": true, diff --git a/packages/twenty-sdk/scripts/generate-metadata-client.ts b/packages/twenty-sdk/scripts/generate-metadata-client.ts new file mode 100644 index 0000000000..0aa03c86aa --- /dev/null +++ b/packages/twenty-sdk/scripts/generate-metadata-client.ts @@ -0,0 +1,43 @@ +import { readFile } from 'node:fs/promises'; +import path from 'path'; + +import { CLIENTS_GENERATED_DIR } from '@/cli/constants/clients-dir'; +import { ClientService } from '@/cli/utilities/client/client-service'; + +const TEMPLATE_PATH = path.resolve( + __dirname, + '..', + 'src', + 'cli', + 'utilities', + 'client', + 'twenty-client-template.ts', +); + +const main = async () => { + const outputPath = path.resolve( + __dirname, + '..', + CLIENTS_GENERATED_DIR, + 'metadata', + ); + + const serverUrl = process.env.TWENTY_API_URL ?? 'http://localhost:3000'; + const token = process.env.TWENTY_API_KEY; + const clientWrapperTemplateSource = await readFile(TEMPLATE_PATH, 'utf-8'); + + const clientService = new ClientService({ + clientWrapperTemplateSource, + serverUrl, + token, + }); + + await clientService.generateMetadataClient({ outputPath }); + + console.log(`Metadata client generated at ${outputPath}`); +}; + +main().catch((error) => { + console.error('Failed to generate metadata client:', error); + process.exit(1); +}); diff --git a/packages/twenty-sdk/src/cli/__tests__/apps/function-execute-app/__e2e__/function-execute.e2e-spec.ts b/packages/twenty-sdk/src/cli/__tests__/apps/function-execute-app/__e2e__/function-execute.e2e-spec.ts index 5b5165229a..7b1d8e90ba 100644 --- a/packages/twenty-sdk/src/cli/__tests__/apps/function-execute-app/__e2e__/function-execute.e2e-spec.ts +++ b/packages/twenty-sdk/src/cli/__tests__/apps/function-execute-app/__e2e__/function-execute.e2e-spec.ts @@ -1,7 +1,7 @@ import { resolve } from 'path'; import { vi } from 'vitest'; -import { appGenerateClient } from '@/cli/public-operations/app-generate-client'; +import { appBuild } from '@/cli/public-operations/app-build'; import { appUninstall } from '@/cli/public-operations/app-uninstall'; import { functionExecute } from '@/cli/public-operations/function-execute'; import { ADD_NUMBERS_UNIVERSAL_IDENTIFIER } from '../src/logic-functions/add-numbers.function'; @@ -10,17 +10,16 @@ const APP_PATH = resolve(__dirname, '../'); describe('functionExecute E2E', () => { beforeAll(async () => { - const generateResult = await appGenerateClient({ appPath: APP_PATH }); + const buildResult = await appBuild({ appPath: APP_PATH }); - if (!generateResult.success) { + if (!buildResult.success) { throw new Error( - `appGenerateClient failed: ${generateResult.error.code} – ${generateResult.error.message}`, + `appBuild failed: ${buildResult.error.code} – ${buildResult.error.message}`, ); } - // Although appGenerateClient uploads files before syncing the manifest, the server - // may need a moment to make them readable by the execution engine. - // Retry a dummy execution until the handler file becomes available. + // The server may need a moment to make uploaded files readable + // by the execution engine. Retry until the handler becomes available. await vi.waitFor( async () => { const result = await functionExecute({ diff --git a/packages/twenty-sdk/src/cli/__tests__/constants/setupTest.ts b/packages/twenty-sdk/src/cli/__tests__/constants/setupTest.ts index 84700bd6ed..4bdfe69946 100644 --- a/packages/twenty-sdk/src/cli/__tests__/constants/setupTest.ts +++ b/packages/twenty-sdk/src/cli/__tests__/constants/setupTest.ts @@ -14,7 +14,7 @@ beforeAll(async () => { profiles: { default: { apiUrl: process.env.TWENTY_API_URL, - apiKey: process.env.TWENTY_TEST_API_KEY, + apiKey: process.env.TWENTY_API_KEY, }, }, }; diff --git a/packages/twenty-sdk/src/cli/commands/app-command.ts b/packages/twenty-sdk/src/cli/commands/app-command.ts index b6cffcaa2f..b67d48ea07 100644 --- a/packages/twenty-sdk/src/cli/commands/app-command.ts +++ b/packages/twenty-sdk/src/cli/commands/app-command.ts @@ -2,7 +2,6 @@ import { formatPath } from '@/cli/utilities/file/file-path'; import chalk from 'chalk'; import type { Command } from 'commander'; import { AppBuildCommand } from './app/app-build'; -import { AppGenerateClientCommand } from './app/app-generate-client'; import { AppDevCommand } from './app/app-dev'; import { AppPublishCommand } from './app/app-publish'; import { AppTypecheckCommand } from './app/app-typecheck'; @@ -64,7 +63,6 @@ export const registerCommands = (program: Command): void => { // App commands const buildCommand = new AppBuildCommand(); - const generateClientCommand = new AppGenerateClientCommand(); const devCommand = new AppDevCommand(); const publishCommand = new AppPublishCommand(); const typecheckCommand = new AppTypecheckCommand(); @@ -82,22 +80,9 @@ export const registerCommands = (program: Command): void => { }); }); - program - .command('app:generate-client [appPath]') - .description( - 'Build, sync to local server, and generate the typed API client', - ) - .action(async (appPath) => { - await generateClientCommand.execute({ - appPath: formatPath(appPath), - }); - }); - program .command('app:build [appPath]') - .description( - 'Build the application into .twenty/output/ (no server needed)', - ) + .description('Build, sync, and generate API client into .twenty/output/') .option('--tarball', 'Also pack into a .tgz tarball') .action(async (appPath, options) => { await buildCommand.execute({ diff --git a/packages/twenty-sdk/src/cli/commands/app/app-generate-client.ts b/packages/twenty-sdk/src/cli/commands/app/app-generate-client.ts deleted file mode 100644 index f403daef47..0000000000 --- a/packages/twenty-sdk/src/cli/commands/app/app-generate-client.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { appGenerateClient } from '@/cli/public-operations/app-generate-client'; -import { CURRENT_EXECUTION_DIRECTORY } from '@/cli/utilities/config/current-execution-directory'; -import chalk from 'chalk'; - -export type AppGenerateClientCommandOptions = { - appPath?: string; -}; - -export class AppGenerateClientCommand { - async execute(options: AppGenerateClientCommandOptions): Promise { - const appPath = options.appPath ?? CURRENT_EXECUTION_DIRECTORY; - - console.log(chalk.blue('Generating API client...')); - console.log(chalk.gray(`App path: ${appPath}`)); - console.log(''); - - const result = await appGenerateClient({ - appPath, - onProgress: (message) => console.log(chalk.gray(message)), - }); - - if (!result.success) { - console.error(chalk.red(result.error.message)); - process.exit(1); - } - - console.log( - chalk.green( - `✓ Client generated (${result.data.fileCount} file${result.data.fileCount === 1 ? '' : 's'})`, - ), - ); - } -} diff --git a/packages/twenty-sdk/src/cli/constants/clients-dir.ts b/packages/twenty-sdk/src/cli/constants/clients-dir.ts new file mode 100644 index 0000000000..d4d6498217 --- /dev/null +++ b/packages/twenty-sdk/src/cli/constants/clients-dir.ts @@ -0,0 +1,2 @@ +export const CLIENTS_SOURCE_DIR = 'src/clients'; +export const CLIENTS_GENERATED_DIR = `${CLIENTS_SOURCE_DIR}/generated`; diff --git a/packages/twenty-sdk/src/cli/public-operations/app-build.ts b/packages/twenty-sdk/src/cli/public-operations/app-build.ts index 365062883c..de37aba84e 100644 --- a/packages/twenty-sdk/src/cli/public-operations/app-build.ts +++ b/packages/twenty-sdk/src/cli/public-operations/app-build.ts @@ -2,10 +2,9 @@ import { execSync } from 'child_process'; import path from 'path'; import { buildApplication } from '@/cli/utilities/build/common/build-application'; +import { synchronizeBuiltApplication } from '@/cli/utilities/build/common/synchronize-built-application'; import { runTypecheck } from '@/cli/utilities/build/common/typecheck-plugin'; import { buildAndValidateManifest } from '@/cli/utilities/build/manifest/build-and-validate-manifest'; -import { manifestUpdateChecksums } from '@/cli/utilities/build/manifest/manifest-update-checksums'; -import { writeManifestToOutput } from '@/cli/utilities/build/manifest/manifest-writer'; import { ClientService } from '@/cli/utilities/client/client-service'; import { runSafe } from '@/cli/utilities/run-safe'; import { APP_ERROR_CODES, type CommandResult } from './types'; @@ -47,26 +46,31 @@ const innerAppBuild = async ( onProgress?.(`⚠ ${warning}`); } - const clientService = new ClientService(); - - await clientService.ensureGeneratedClientStub({ appPath }); - onProgress?.('Building application files...'); - const buildResult = await buildApplication({ + const firstBuildResult = await buildApplication({ appPath, manifest, filePaths, }); - onProgress?.('Updating manifest checksums...'); + onProgress?.('Syncing application schema...'); - const updatedManifest = manifestUpdateChecksums({ + const firstSyncResult = await synchronizeBuiltApplication({ + appPath, manifest, - builtFileInfos: buildResult.builtFileInfos, + builtFileInfos: firstBuildResult.builtFileInfos, }); - await writeManifestToOutput(appPath, updatedManifest); + if (!firstSyncResult.success) { + return firstSyncResult; + } + + onProgress?.('Generating API client...'); + + const clientService = new ClientService(); + + await clientService.generateCoreClient({ appPath }); onProgress?.('Running typecheck...'); @@ -87,11 +91,31 @@ const innerAppBuild = async ( }; } + onProgress?.('Rebuilding with generated client...'); + + const finalBuildResult = await buildApplication({ + appPath, + manifest, + filePaths, + }); + + onProgress?.('Syncing built files...'); + + const finalSyncResult = await synchronizeBuiltApplication({ + appPath, + manifest, + builtFileInfos: finalBuildResult.builtFileInfos, + }); + + if (!finalSyncResult.success) { + return finalSyncResult; + } + const outputDir = path.join(appPath, '.twenty', 'output'); const result: AppBuildResult = { outputDir, - fileCount: buildResult.builtFileInfos.size, + fileCount: finalBuildResult.builtFileInfos.size, }; if (options.tarball) { diff --git a/packages/twenty-sdk/src/cli/public-operations/app-generate-client.ts b/packages/twenty-sdk/src/cli/public-operations/app-generate-client.ts deleted file mode 100644 index dcba18f10d..0000000000 --- a/packages/twenty-sdk/src/cli/public-operations/app-generate-client.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { buildApplication } from '@/cli/utilities/build/common/build-application'; -import { synchronizeBuiltApplication } from '@/cli/utilities/build/common/synchronize-built-application'; -import { runTypecheck } from '@/cli/utilities/build/common/typecheck-plugin'; -import { buildAndValidateManifest } from '@/cli/utilities/build/manifest/build-and-validate-manifest'; -import { ClientService } from '@/cli/utilities/client/client-service'; -import { runSafe } from '@/cli/utilities/run-safe'; -import { APP_ERROR_CODES, type CommandResult } from './types'; - -export type AppGenerateClientOptions = { - appPath: string; - onProgress?: (message: string) => void; -}; - -export type AppGenerateClientResult = { - fileCount: number; -}; - -const innerAppGenerateClient = async ( - options: AppGenerateClientOptions, -): Promise> => { - const { appPath, onProgress } = options; - - onProgress?.('Building manifest...'); - - const manifestResult = await buildAndValidateManifest(appPath); - - if (!manifestResult.success) { - return { - success: false, - error: { - code: APP_ERROR_CODES.MANIFEST_BUILD_FAILED, - message: manifestResult.errors.join('\n'), - }, - }; - } - - const { manifest, filePaths } = manifestResult; - - for (const warning of manifestResult.warnings) { - onProgress?.(`⚠ ${warning}`); - } - const clientService = new ClientService(); - - await clientService.ensureGeneratedClientStub({ appPath }); - - onProgress?.('Building application files...'); - - const buildResult = await buildApplication({ - appPath, - manifest, - filePaths, - }); - - onProgress?.('Syncing application schema...'); - - const syncResult = await synchronizeBuiltApplication({ - appPath, - manifest, - builtFileInfos: buildResult.builtFileInfos, - }); - - if (!syncResult.success) { - return syncResult; - } - - onProgress?.('Generating API client...'); - - await clientService.generate({ appPath }); - - onProgress?.('Running typecheck...'); - - const typecheckErrors = await runTypecheck(appPath); - - if (typecheckErrors.length > 0) { - const errorMessages = typecheckErrors.map( - (error) => - `${error.file}(${error.line},${error.column + 1}): ${error.text}`, - ); - - return { - success: false, - error: { - code: APP_ERROR_CODES.TYPECHECK_FAILED, - message: `Typecheck failed:\n${errorMessages.join('\n')}`, - }, - }; - } - - return { - success: true, - data: { - fileCount: buildResult.builtFileInfos.size, - }, - }; -}; - -export const appGenerateClient = ( - options: AppGenerateClientOptions, -): Promise> => - runSafe(() => innerAppGenerateClient(options), APP_ERROR_CODES.SYNC_FAILED); diff --git a/packages/twenty-sdk/src/cli/public-operations/app-uninstall.ts b/packages/twenty-sdk/src/cli/public-operations/app-uninstall.ts index d9e4f6a4a7..ada5476c58 100644 --- a/packages/twenty-sdk/src/cli/public-operations/app-uninstall.ts +++ b/packages/twenty-sdk/src/cli/public-operations/app-uninstall.ts @@ -24,8 +24,7 @@ const innerAppUninstall = async ( success: false, error: { code: APP_ERROR_CODES.MANIFEST_NOT_FOUND, - message: - 'Manifest not found. Run `app:build`, `app:generate-client`, or `app:dev` first.', + message: 'Manifest not found. Run `app:build` or `app:dev` first.', }, }; } diff --git a/packages/twenty-sdk/src/cli/public-operations/function-execute.ts b/packages/twenty-sdk/src/cli/public-operations/function-execute.ts index a88cda212a..c2efed9386 100644 --- a/packages/twenty-sdk/src/cli/public-operations/function-execute.ts +++ b/packages/twenty-sdk/src/cli/public-operations/function-execute.ts @@ -61,8 +61,7 @@ const innerFunctionExecute = async ( success: false, error: { code: APP_ERROR_CODES.MANIFEST_NOT_FOUND, - message: - 'Manifest not found. Run `app:build`, `app:generate-client`, or `app:dev` first.', + message: 'Manifest not found. Run `app:build` or `app:dev` first.', }, }; } diff --git a/packages/twenty-sdk/src/cli/public-operations/index.ts b/packages/twenty-sdk/src/cli/public-operations/index.ts index 7bc6c55ae4..b793cad974 100644 --- a/packages/twenty-sdk/src/cli/public-operations/index.ts +++ b/packages/twenty-sdk/src/cli/public-operations/index.ts @@ -7,11 +7,6 @@ export type { AuthLogoutOptions } from './auth-logout'; // App export { appBuild } from './app-build'; export type { AppBuildOptions, AppBuildResult } from './app-build'; -export { appGenerateClient } from './app-generate-client'; -export type { - AppGenerateClientOptions, - AppGenerateClientResult, -} from './app-generate-client'; export { appPublish } from './app-publish'; export type { AppPublishOptions, AppPublishResult } from './app-publish'; export { appUninstall } from './app-uninstall'; diff --git a/packages/twenty-sdk/src/cli/utilities/build/common/build-application.ts b/packages/twenty-sdk/src/cli/utilities/build/common/build-application.ts index 79bb02d4e0..86a67225c4 100644 --- a/packages/twenty-sdk/src/cli/utilities/build/common/build-application.ts +++ b/packages/twenty-sdk/src/cli/utilities/build/common/build-application.ts @@ -11,7 +11,7 @@ import { FileFolder } from 'twenty-shared/types'; import { esbuildOneShotBuild } from '@/cli/utilities/build/common/esbuild-one-shot-build'; import { LOGIC_FUNCTION_EXTERNAL_MODULES, - createSdkGeneratedResolverPlugin, + createSdkClientsResolverPlugin, } from '@/cli/utilities/build/common/esbuild-watcher'; import { FRONT_COMPONENT_EXTERNAL_MODULES } from '@/cli/utilities/build/common/front-component-build/constants/front-component-external-modules'; import { getFrontComponentBuildPlugins } from '@/cli/utilities/build/common/front-component-build/utils/get-front-component-build-plugins'; @@ -80,7 +80,7 @@ export const buildApplication = async ( metafile: true, logLevel: 'silent', banner: NODE_ESM_CJS_BANNER, - plugins: [createSdkGeneratedResolverPlugin(options.appPath)], + plugins: [createSdkClientsResolverPlugin(options.appPath)], }, onFileBuilt: collectFileBuilt, }); @@ -102,7 +102,7 @@ export const buildApplication = async ( metafile: true, logLevel: 'silent', plugins: [ - createSdkGeneratedResolverPlugin(options.appPath), + createSdkClientsResolverPlugin(options.appPath), ...getFrontComponentBuildPlugins(), ], }, diff --git a/packages/twenty-sdk/src/cli/utilities/build/common/esbuild-watcher.ts b/packages/twenty-sdk/src/cli/utilities/build/common/esbuild-watcher.ts index 622bfeceec..fc75c17eeb 100644 --- a/packages/twenty-sdk/src/cli/utilities/build/common/esbuild-watcher.ts +++ b/packages/twenty-sdk/src/cli/utilities/build/common/esbuild-watcher.ts @@ -1,3 +1,4 @@ +import { CLIENTS_SOURCE_DIR } from '@/cli/constants/clients-dir'; import { cleanupRemovedFiles } from '@/cli/utilities/build/common/cleanup-removed-files'; import { processEsbuildResult } from '@/cli/utilities/build/common/esbuild-result-processor'; import { FRONT_COMPONENT_EXTERNAL_MODULES } from '@/cli/utilities/build/common/front-component-build/constants/front-component-external-modules'; @@ -11,11 +12,7 @@ import { import { createTypecheckPlugin } from '@/cli/utilities/build/common/typecheck-plugin'; import * as esbuild from 'esbuild'; import path from 'path'; -import { - GENERATED_DIR, - NODE_ESM_CJS_BANNER, - OUTPUT_DIR, -} from 'twenty-shared/application'; +import { NODE_ESM_CJS_BANNER, OUTPUT_DIR } from 'twenty-shared/application'; import { FileFolder } from 'twenty-shared/types'; export const LOGIC_FUNCTION_EXTERNAL_MODULES: string[] = [ @@ -189,19 +186,19 @@ export class EsbuildWatcher implements RestartableWatcher { } } -// Resolves twenty-sdk/generated to the actual file path so esbuild +// Resolves twenty-sdk/clients to the source barrel so esbuild // bundles it instead of treating it as external (via twenty-sdk/*) -export const createSdkGeneratedResolverPlugin = ( +export const createSdkClientsResolverPlugin = ( appPath: string, ): esbuild.Plugin => ({ - name: 'sdk-generated-resolver', + name: 'sdk-clients-resolver', setup: (build) => { - build.onResolve({ filter: /^twenty-sdk\/generated/ }, () => ({ + build.onResolve({ filter: /^twenty-sdk\/clients/ }, () => ({ path: path.join( appPath, 'node_modules', 'twenty-sdk', - GENERATED_DIR, + CLIENTS_SOURCE_DIR, 'index.ts', ), })); @@ -223,7 +220,7 @@ export const createLogicFunctionsWatcher = ( platform: 'node', extraPlugins: [ createTypecheckPlugin(options.appPath, options.shouldSkipTypecheck), - createSdkGeneratedResolverPlugin(options.appPath), + createSdkClientsResolverPlugin(options.appPath), ], banner: NODE_ESM_CJS_BANNER, }, @@ -240,7 +237,7 @@ export const createFrontComponentsWatcher = ( jsx: 'automatic', extraPlugins: [ createTypecheckPlugin(options.appPath, options.shouldSkipTypecheck), - createSdkGeneratedResolverPlugin(options.appPath), + createSdkClientsResolverPlugin(options.appPath), ...getFrontComponentBuildPlugins(), ], }, diff --git a/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-extract-config-from-file.ts b/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-extract-config-from-file.ts index d32973a2ac..4c0b51470a 100644 --- a/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-extract-config-from-file.ts +++ b/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-extract-config-from-file.ts @@ -1,14 +1,14 @@ import { conditionalAvailabilityTransformPlugin } from '@/cli/utilities/build/common/conditional-availability/conditional-availability-transform-plugin'; -import { type ValidationResult } from '@/sdk'; import { pathExists, remove } from '@/cli/utilities/file/fs-utils'; +import { type ValidationResult } from '@/sdk'; import * as esbuild from 'esbuild'; -import { mkdtemp, writeFile } from 'node:fs/promises'; import { createRequire } from 'module'; +import { mkdtemp, writeFile } from 'node:fs/promises'; import os from 'os'; import path from 'path'; import { isDefined, isPlainObject } from 'twenty-shared/utils'; -const MANIFEST_MOCK_MODULES = ['twenty-sdk/ui', 'twenty-sdk/generated']; +const MANIFEST_MOCK_MODULES = ['twenty-sdk/ui', 'twenty-sdk/clients']; const manifestMockPlugin: esbuild.Plugin = { name: 'manifest-mock', diff --git a/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-watcher.ts b/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-watcher.ts index 0f76ff986c..4b44285662 100644 --- a/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-watcher.ts +++ b/packages/twenty-sdk/src/cli/utilities/build/manifest/manifest-watcher.ts @@ -1,19 +1,14 @@ import path, { relative } from 'path'; import chokidar, { type FSWatcher } from 'chokidar'; import { type EventName } from 'chokidar/handler.js'; -import { ASSETS_DIR, GENERATED_DIR } from 'twenty-shared/application'; +import { ASSETS_DIR } from 'twenty-shared/application'; export type ManifestWatcherOptions = { appPath: string; handleChangeDetected: (filePath: string) => void; }; -const IGNORED_DIRECTORY_NAMES = new Set([ - 'node_modules', - GENERATED_DIR, - 'dist', - '.twenty', -]); +const IGNORED_DIRECTORY_NAMES = new Set(['node_modules', 'dist', '.twenty']); export class ManifestWatcher { private appPath: string; diff --git a/packages/twenty-sdk/src/cli/utilities/client/__tests__/clientServiceGeneratedClientAuth.test.ts b/packages/twenty-sdk/src/cli/utilities/client/__tests__/clientServiceGeneratedClientAuth.test.ts index de5bf3f091..9bf73875e0 100644 --- a/packages/twenty-sdk/src/cli/utilities/client/__tests__/clientServiceGeneratedClientAuth.test.ts +++ b/packages/twenty-sdk/src/cli/utilities/client/__tests__/clientServiceGeneratedClientAuth.test.ts @@ -13,11 +13,14 @@ import { vi, } from 'vitest'; +vi.mock('@/cli/constants/clients-dir', () => ({ + CLIENTS_GENERATED_DIR: 'src/clients/generated', +})); + vi.mock('twenty-shared/application', () => ({ DEFAULT_APP_ACCESS_TOKEN_NAME: 'TWENTY_APP_ACCESS_TOKEN', DEFAULT_API_KEY_NAME: 'TWENTY_API_KEY', DEFAULT_API_URL_NAME: 'TWENTY_API_URL', - GENERATED_DIR: 'generated', })); import { ClientService } from '@/cli/utilities/client/client-service'; diff --git a/packages/twenty-sdk/src/cli/utilities/client/client-service.ts b/packages/twenty-sdk/src/cli/utilities/client/client-service.ts index f46599a349..24840aa410 100644 --- a/packages/twenty-sdk/src/cli/utilities/client/client-service.ts +++ b/packages/twenty-sdk/src/cli/utilities/client/client-service.ts @@ -1,17 +1,17 @@ -import { appendFile, writeFile } from 'node:fs/promises'; +import { appendFile } from 'node:fs/promises'; import { join } from 'path'; +import { CLIENTS_GENERATED_DIR } from '@/cli/constants/clients-dir'; import { ApiService } from '@/cli/utilities/api/api-service'; +import twentyClientTemplateSource from '@/cli/utilities/client/twenty-client-template.ts?raw'; import { emptyDir, ensureDir, move, - pathExists, remove, } from '@/cli/utilities/file/fs-utils'; -import twentyClientTemplateSource from '@/cli/utilities/client/twenty-client-template.ts?raw'; import { generate } from '@genql/cli'; -import { DEFAULT_API_URL_NAME, GENERATED_DIR } from 'twenty-shared/application'; +import { DEFAULT_API_URL_NAME } from 'twenty-shared/application'; type ClientWrapperOptions = { apiClientName: string; @@ -30,8 +30,11 @@ const STRIPPED_TYPES_END = '// __STRIPPED_DURING_INJECTION_END__'; const UPLOAD_FILE_START = '// __UPLOAD_FILE_START__'; const UPLOAD_FILE_END = '// __UPLOAD_FILE_END__'; -const buildClientWrapperSource = (options: ClientWrapperOptions): string => { - let source = twentyClientTemplateSource; +const buildClientWrapperSource = ( + templateSource: string, + options: ClientWrapperOptions, +): string => { + let source = templateSource; source = source.replace( new RegExp( @@ -70,25 +73,39 @@ const escapeRegExp = (value: string): string => export class ClientService { private apiService: ApiService; + private clientWrapperTemplateSource: string; - constructor() { - this.apiService = new ApiService({ disableInterceptors: true }); + constructor(options?: { + clientWrapperTemplateSource?: string; + serverUrl?: string; + token?: string; + }) { + this.clientWrapperTemplateSource = + options?.clientWrapperTemplateSource ?? twentyClientTemplateSource; + this.apiService = new ApiService({ + disableInterceptors: true, + serverUrl: options?.serverUrl, + token: options?.token, + }); } - async generate({ + async generateCoreClient({ appPath, authToken, }: { appPath: string; authToken?: string; }): Promise { - const outputPath = this.resolveGeneratedPath(appPath); - const tempPath = `${outputPath}.tmp`; + const generatedDir = join( + appPath, + 'node_modules', + 'twenty-sdk', + CLIENTS_GENERATED_DIR, + ); + const coreOutputPath = join(generatedDir, 'core'); + const tempPath = `${coreOutputPath}.tmp`; - const [coreSchemaResponse, metadataSchemaResponse] = await Promise.all([ - this.apiService.getSchema({ authToken }), - this.apiService.getMetadataSchema({ authToken }), - ]); + const coreSchemaResponse = await this.apiService.getSchema({ authToken }); if (!coreSchemaResponse.success) { throw new Error( @@ -96,93 +113,65 @@ export class ClientService { ); } + await ensureDir(tempPath); + await emptyDir(tempPath); + + await generate({ + schema: coreSchemaResponse.data, + output: tempPath, + scalarTypes: COMMON_SCALAR_TYPES, + }); + + await this.injectClientWrapper(tempPath, { + apiClientName: 'CoreApiClient', + defaultUrl: `\`\${process.env.${DEFAULT_API_URL_NAME}}/graphql\``, + includeUploadFile: true, + }); + + await remove(coreOutputPath); + await move(tempPath, coreOutputPath); + } + + async generateMetadataClient({ + outputPath, + }: { + outputPath: string; + }): Promise { + const metadataSchemaResponse = await this.apiService.getMetadataSchema(); + if (!metadataSchemaResponse.success) { throw new Error( `Failed to introspect metadata schema: ${JSON.stringify(metadataSchemaResponse.error)}`, ); } - await ensureDir(tempPath); - await emptyDir(tempPath); + await ensureDir(outputPath); + await emptyDir(outputPath); - await Promise.all([ - generate({ - schema: coreSchemaResponse.data, - output: join(tempPath, 'core'), - scalarTypes: COMMON_SCALAR_TYPES, - }), - generate({ - schema: metadataSchemaResponse.data, - output: join(tempPath, 'metadata'), - scalarTypes: { - ...COMMON_SCALAR_TYPES, - Upload: 'File', - }, - }), - ]); - - await this.injectClientWrapper(join(tempPath, 'core'), { - apiClientName: 'CoreApiClient', - defaultUrl: `\`\${process.env.${DEFAULT_API_URL_NAME}}/graphql\``, - includeUploadFile: true, + await generate({ + schema: metadataSchemaResponse.data, + output: outputPath, + scalarTypes: { + ...COMMON_SCALAR_TYPES, + Upload: 'File', + }, }); - await this.injectClientWrapper(join(tempPath, 'metadata'), { + await this.injectClientWrapper(outputPath, { apiClientName: 'MetadataApiClient', defaultUrl: `\`\${process.env.${DEFAULT_API_URL_NAME}}/metadata\``, includeUploadFile: true, }); - - await this.writeBarrelIndex(tempPath); - - await remove(outputPath); - await move(tempPath, outputPath); - } - - async ensureGeneratedClientStub({ - appPath, - }: { - appPath: string; - }): Promise { - const outputPath = this.resolveGeneratedPath(appPath); - - if (await pathExists(join(outputPath, 'index.ts'))) { - return; - } - - await ensureDir(join(outputPath, 'core')); - await ensureDir(join(outputPath, 'metadata')); - - await writeFile( - join(outputPath, 'core', 'index.ts'), - 'export class CoreApiClient {}\n', - ); - await writeFile( - join(outputPath, 'metadata', 'index.ts'), - 'export class MetadataApiClient {}\n', - ); - await this.writeBarrelIndex(outputPath); - } - - private resolveGeneratedPath(appPath: string): string { - return join(appPath, 'node_modules', 'twenty-sdk', GENERATED_DIR); - } - - private async writeBarrelIndex(outputDir: string): Promise { - const barrelContent = `export { CoreApiClient } from './core/index'; -export { MetadataApiClient } from './metadata/index'; -export * as CoreSchema from './core/schema'; -export * as MetadataSchema from './metadata/schema'; -`; - - await writeFile(join(outputDir, 'index.ts'), barrelContent); } private async injectClientWrapper( output: string, options: ClientWrapperOptions, ): Promise { - const clientContent = buildClientWrapperSource(options); + const clientContent = buildClientWrapperSource( + this.clientWrapperTemplateSource, + options, + ); await appendFile(join(output, 'index.ts'), clientContent); } diff --git a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/dev-mode-orchestrator.ts b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/dev-mode-orchestrator.ts index e43fee3af3..2d169a911c 100644 --- a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/dev-mode-orchestrator.ts +++ b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/dev-mode-orchestrator.ts @@ -90,10 +90,6 @@ export class DevModeOrchestrator { await ensureDir(outputDir); await emptyDir(outputDir); - await this.clientService.ensureGeneratedClientStub({ - appPath: this.state.appPath, - }); - await this.startWatchersStep.start(); this.serverCheckInterval = setInterval(() => { diff --git a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/generate-api-client-orchestrator-step.ts b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/generate-api-client-orchestrator-step.ts index 238ec2efca..d73fa30da1 100644 --- a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/generate-api-client-orchestrator-step.ts +++ b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/generate-api-client-orchestrator-step.ts @@ -34,7 +34,7 @@ export class GenerateApiClientOrchestratorStep { try { const config = await this.configService.getConfig(); - await this.clientService.generate({ + await this.clientService.generateCoreClient({ appPath: input.appPath, authToken: config.applicationAccessToken, }); diff --git a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/upload-files-orchestrator-step.ts b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/upload-files-orchestrator-step.ts index f4ef092311..1062f031df 100644 --- a/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/upload-files-orchestrator-step.ts +++ b/packages/twenty-sdk/src/cli/utilities/dev/orchestrator/steps/upload-files-orchestrator-step.ts @@ -7,19 +7,11 @@ import { copy, ensureDir, pathExists } from '@/cli/utilities/file/fs-utils'; import crypto from 'crypto'; import { readFile } from 'node:fs/promises'; import { join } from 'path'; -import { - OUTPUT_DIR, - GENERATED_DIR, - API_CLIENT_DIR, -} from 'twenty-shared/application'; +import { CLIENTS_GENERATED_DIR } from '@/cli/constants/clients-dir'; +import { OUTPUT_DIR, API_CLIENT_DIR } from 'twenty-shared/application'; import { FileFolder } from 'twenty-shared/types'; -const API_CLIENT_FILES = [ - 'core/types.ts', - 'core/schema.ts', - 'metadata/types.ts', - 'metadata/schema.ts', -]; +const API_CLIENT_FILES = ['core/types.ts', 'core/schema.ts']; export type UploadFilesOrchestratorStepOutput = { fileUploader: FileUploader | null; @@ -124,7 +116,7 @@ export class UploadFilesOrchestratorStep { appPath, 'node_modules', 'twenty-sdk', - GENERATED_DIR, + CLIENTS_GENERATED_DIR, ); if (!(await pathExists(generatedDir))) { diff --git a/packages/twenty-sdk/src/clients/generated/core/index.ts b/packages/twenty-sdk/src/clients/generated/core/index.ts new file mode 100644 index 0000000000..c88e9ecb66 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/core/index.ts @@ -0,0 +1,2 @@ +// Stub — overwritten by `twenty app:build` or `twenty app:dev` +export class CoreApiClient {} diff --git a/packages/twenty-sdk/src/clients/generated/core/schema.ts b/packages/twenty-sdk/src/clients/generated/core/schema.ts new file mode 100644 index 0000000000..0192ef8cd3 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/core/schema.ts @@ -0,0 +1,2 @@ +// Stub — overwritten by `twenty app:build` or `twenty app:dev` +export type CoreSchema = {}; diff --git a/packages/twenty-sdk/src/clients/generated/metadata/index.ts b/packages/twenty-sdk/src/clients/generated/metadata/index.ts new file mode 100644 index 0000000000..52c63ce690 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/index.ts @@ -0,0 +1,482 @@ +// @ts-nocheck +import type { + QueryGenqlSelection, + Query, + MutationGenqlSelection, + Mutation, + SubscriptionGenqlSelection, + Subscription, +} from './schema' +import { + linkTypeMap, + createClient as createClientOriginal, + generateGraphqlOperation, + type FieldsSelection, + type GraphqlOperation, + type ClientOptions, + GenqlError, +} from './runtime' +export type { FieldsSelection } from './runtime' +export { GenqlError } + +import types from './types' +export * from './schema' +const typeMap = linkTypeMap(types as any) + +export interface Client { + query( + request: R & { __name?: string }, + ): Promise> + + mutation( + request: R & { __name?: string }, + ): Promise> +} + +export const createClient = function (options?: ClientOptions): Client { + return createClientOriginal({ + url: undefined, + + ...options, + queryRoot: typeMap.Query!, + mutationRoot: typeMap.Mutation!, + subscriptionRoot: typeMap.Subscription!, + }) as any +} + +export const everything = { + __scalar: true, +} + +export type QueryResult = FieldsSelection< + Query, + fields +> +export const generateQueryOp: ( + fields: QueryGenqlSelection & { __name?: string }, +) => GraphqlOperation = function (fields) { + return generateGraphqlOperation('query', typeMap.Query!, fields as any) +} + +export type MutationResult = + FieldsSelection +export const generateMutationOp: ( + fields: MutationGenqlSelection & { __name?: string }, +) => GraphqlOperation = function (fields) { + return generateGraphqlOperation('mutation', typeMap.Mutation!, fields as any) +} + +export type SubscriptionResult = + FieldsSelection +export const generateSubscriptionOp: ( + fields: SubscriptionGenqlSelection & { __name?: string }, +) => GraphqlOperation = function (fields) { + return generateGraphqlOperation( + 'subscription', + typeMap.Subscription!, + fields as any, + ) +} + +// MetadataApiClient (auto-injected by twenty-sdk) +// Ambient type stubs for the genql-generated code this template gets +// injected into. They enable full typecheck/lint on this file. + +const APP_ACCESS_TOKEN_ENV_KEY = 'TWENTY_APP_ACCESS_TOKEN'; +const API_KEY_ENV_KEY = 'TWENTY_API_KEY'; + +type MetadataApiClientOptions = ClientOptions; + +type ProcessEnvironment = Record; + +type GraphqlErrorPayloadEntry = { + message?: string; + extensions?: { code?: string }; +}; + +type GraphqlResponsePayload = { + data?: Record; + errors?: GraphqlErrorPayloadEntry[]; +}; + +type GraphqlResponse = { + status: number; + statusText: string; + payload: GraphqlResponsePayload | null; + rawBody: string; +}; + +const getProcessEnvironment = (): ProcessEnvironment => { + const processObject = ( + globalThis as { process?: { env?: ProcessEnvironment } } + ).process; + + return processObject?.env ?? {}; +}; + +const getTokenFromAuthorizationHeader = ( + authorizationHeader: string | undefined, +): string | null => { + if (typeof authorizationHeader !== 'string') { + return null; + } + + const trimmedAuthorizationHeader = authorizationHeader.trim(); + + if (trimmedAuthorizationHeader.length === 0) { + return null; + } + + if (trimmedAuthorizationHeader === 'Bearer') { + return null; + } + + if (trimmedAuthorizationHeader.startsWith('Bearer ')) { + return trimmedAuthorizationHeader.slice('Bearer '.length).trim(); + } + + return trimmedAuthorizationHeader; +}; + +const getTokenFromHeaders = ( + headers: HeadersInit | undefined, +): string | null => { + if (!headers) { + return null; + } + + if (headers instanceof Headers) { + return getTokenFromAuthorizationHeader( + headers.get('Authorization') ?? undefined, + ); + } + + if (Array.isArray(headers)) { + const matchedAuthorizationHeader = headers.find( + ([headerName]) => headerName.toLowerCase() === 'authorization', + ); + + return getTokenFromAuthorizationHeader(matchedAuthorizationHeader?.[1]); + } + + const headersRecord = headers as Record; + + return getTokenFromAuthorizationHeader( + headersRecord.Authorization ?? headersRecord.authorization, + ); +}; + +const hasAuthenticationErrorInGraphqlPayload = ( + payload: GraphqlResponsePayload | null, +): boolean => { + if (!payload?.errors) { + return false; + } + + return payload.errors.some((graphqlError) => { + return ( + graphqlError.extensions?.code === 'UNAUTHENTICATED' || + graphqlError.message?.toLowerCase() === 'unauthorized' + ); + }); +}; + +const defaultOptions: MetadataApiClientOptions = { + url: `${process.env.TWENTY_API_URL}/metadata`, + headers: { + 'Content-Type': 'application/json', + }, +}; + +export class MetadataApiClient { + private client: Client; + private url: string; + private requestOptions: RequestInit; + private headers: HeadersInit | (() => HeadersInit | Promise); + private fetchImplementation: typeof globalThis.fetch | null; + private authorizationToken: string | null; + private refreshAccessTokenPromise: Promise | null = null; + + constructor(options?: MetadataApiClientOptions) { + const merged: MetadataApiClientOptions = { + ...defaultOptions, + ...options, + }; + + const { + url, + headers, + fetch: customFetchImplementation, + fetcher: _fetcher, + batch: _batch, + ...requestOptions + } = merged; + + this.url = url ?? ''; + this.requestOptions = requestOptions; + this.headers = headers ?? {}; + this.fetchImplementation = + customFetchImplementation ?? globalThis.fetch ?? null; + + const processEnvironment = getProcessEnvironment(); + const tokenFromHeaders = getTokenFromHeaders( + typeof headers === 'function' ? undefined : headers, + ); + + // Priority: explicit header > app access token > api key (legacy). + this.authorizationToken = + tokenFromHeaders ?? + processEnvironment[APP_ACCESS_TOKEN_ENV_KEY] ?? + processEnvironment[API_KEY_ENV_KEY] ?? + null; + + this.client = createClient({ + ...merged, + headers: undefined, + fetcher: async (operation) => + this.executeGraphqlRequestWithOptionalRefresh({ + operation, + }), + }); + } + + query(request: R & { __name?: string }) { + return this.client.query(request); + } + + mutation(request: R & { __name?: string }) { + return this.client.mutation(request); + } + async uploadFile( + fileBuffer: Buffer, + filename: string, + contentType: string = 'application/octet-stream', + fieldMetadataUniversalIdentifier: string, + ): Promise<{ + id: string; + path: string; + size: number; + createdAt: string; + url: string; + }> { + const form = new FormData(); + + form.append( + 'operations', + JSON.stringify({ + query: `mutation UploadFilesFieldFileByUniversalIdentifier($file: Upload!, $fieldMetadataUniversalIdentifier: String!) { + uploadFilesFieldFileByUniversalIdentifier(file: $file, fieldMetadataUniversalIdentifier: $fieldMetadataUniversalIdentifier) { id path size createdAt url } + }`, + variables: { + file: null, + fieldMetadataUniversalIdentifier, + }, + }), + ); + form.append('map', JSON.stringify({ '0': ['variables.file'] })); + form.append( + '0', + new Blob([fileBuffer as BlobPart], { type: contentType }), + filename, + ); + + const result = await this.executeGraphqlRequestWithOptionalRefresh({ + operation: form, + headers: {}, + requestInit: { + method: 'POST', + }, + }); + + if (result.errors) { + throw new GenqlError(result.errors, result.data); + } + + const data = result.data as Record; + + return data.uploadFilesFieldFileByUniversalIdentifier as { + id: string; + path: string; + size: number; + createdAt: string; + url: string; + }; + } + + private async executeGraphqlRequestWithOptionalRefresh({ + operation, + headers, + requestInit, + }: { + operation: GraphqlOperation | GraphqlOperation[] | FormData; + headers?: HeadersInit; + requestInit?: RequestInit; + }) { + const firstResponse = await this.executeGraphqlRequest({ + operation, + headers, + requestInit, + token: this.authorizationToken, + }); + + if (this.shouldRefreshToken(firstResponse)) { + const refreshedAccessToken = await this.requestRefreshedAccessToken(); + + if (refreshedAccessToken) { + const retryResponse = await this.executeGraphqlRequest({ + operation, + headers, + requestInit, + token: refreshedAccessToken, + }); + + return this.assertResponseIsSuccessful(retryResponse); + } + } + + return this.assertResponseIsSuccessful(firstResponse); + } + + private async executeGraphqlRequest({ + operation, + headers, + requestInit, + token, + }: { + operation: GraphqlOperation | GraphqlOperation[] | FormData; + headers?: HeadersInit; + requestInit?: RequestInit; + token: string | null; + }): Promise { + if (!this.fetchImplementation) { + throw new Error( + 'Global `fetch` function is not available, ' + + 'pass a fetch implementation to the Twenty client', + ); + } + + const resolvedHeaders = await this.resolveHeaders(); + const requestHeaders = new Headers(resolvedHeaders); + + if (headers) { + new Headers(headers).forEach((value, key) => + requestHeaders.set(key, value), + ); + } + + if (operation instanceof FormData) { + requestHeaders.delete('Content-Type'); + } else { + requestHeaders.set('Content-Type', 'application/json'); + } + + if (token) { + requestHeaders.set('Authorization', `Bearer ${token}`); + } else { + requestHeaders.delete('Authorization'); + } + + const response = await this.fetchImplementation.call(globalThis, this.url, { + ...this.requestOptions, + ...requestInit, + method: requestInit?.method ?? 'POST', + headers: requestHeaders, + body: + operation instanceof FormData ? operation : JSON.stringify(operation), + }); + + const rawBody = await response.text(); + let payload: GraphqlResponsePayload | null = null; + + if (rawBody.trim().length > 0) { + try { + payload = JSON.parse(rawBody) as GraphqlResponsePayload; + } catch { + payload = null; + } + } + + return { + status: response.status, + statusText: response.statusText, + payload, + rawBody, + }; + } + + private async resolveHeaders(): Promise { + if (typeof this.headers === 'function') { + return (await this.headers()) ?? {}; + } + + return this.headers ?? {}; + } + + private shouldRefreshToken(response: GraphqlResponse): boolean { + if (response.status === 401) { + return true; + } + + return hasAuthenticationErrorInGraphqlPayload(response.payload); + } + + private assertResponseIsSuccessful(response: GraphqlResponse) { + if (response.status < 200 || response.status >= 300) { + throw new Error(`${response.statusText}: ${response.rawBody}`); + } + + if (response.payload === null) { + throw new Error('Invalid JSON response'); + } + + return response.payload; + } + + private async requestRefreshedAccessToken(): Promise { + const refreshAccessTokenFunction = ( + globalThis as { + frontComponentHostCommunicationApi?: { + requestAccessTokenRefresh?: () => Promise; + }; + } + ).frontComponentHostCommunicationApi?.requestAccessTokenRefresh; + + if (typeof refreshAccessTokenFunction !== 'function') { + return null; + } + + if (!this.refreshAccessTokenPromise) { + this.refreshAccessTokenPromise = refreshAccessTokenFunction() + .then((refreshedAccessToken) => { + if ( + typeof refreshedAccessToken !== 'string' || + refreshedAccessToken.length === 0 + ) { + return null; + } + + this.setAuthorizationToken(refreshedAccessToken); + + return refreshedAccessToken; + }) + .catch((refreshError: unknown) => { + console.error('Twenty client: token refresh failed', refreshError); + + return null; + }) + .finally(() => { + this.refreshAccessTokenPromise = null; + }); + } + + return this.refreshAccessTokenPromise; + } + + private setAuthorizationToken(token: string) { + this.authorizationToken = token; + + const processEnvironment = getProcessEnvironment(); + + processEnvironment[APP_ACCESS_TOKEN_ENV_KEY] = token; + } +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/batcher.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/batcher.ts new file mode 100644 index 0000000000..53b775f4d7 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/batcher.ts @@ -0,0 +1,265 @@ +// @ts-nocheck +import type { GraphqlOperation } from './generateGraphqlOperation' +import { GenqlError } from './error' + +type Variables = Record + +type QueryError = Error & { + message: string + + locations?: Array<{ + line: number + column: number + }> + path?: any + rid: string + details?: Record +} +type Result = { + data: Record + errors: Array +} +type Fetcher = ( + batchedQuery: GraphqlOperation | Array, +) => Promise> +type Options = { + batchInterval?: number + shouldBatch?: boolean + maxBatchSize?: number +} +type Queue = Array<{ + request: GraphqlOperation + resolve: (...args: Array) => any + reject: (...args: Array) => any +}> + +/** + * takes a list of requests (queue) and batches them into a single server request. + * It will then resolve each individual requests promise with the appropriate data. + * @private + * @param {QueryBatcher} client - the client to use + * @param {Queue} queue - the list of requests to batch + */ +function dispatchQueueBatch(client: QueryBatcher, queue: Queue): void { + let batchedQuery: any = queue.map((item) => item.request) + + if (batchedQuery.length === 1) { + batchedQuery = batchedQuery[0] + } + + client.fetcher(batchedQuery).then((responses: any) => { + if (queue.length === 1 && !Array.isArray(responses)) { + if (responses.errors && responses.errors.length) { + queue[0].reject( + new GenqlError(responses.errors, responses.data), + ) + return + } + + queue[0].resolve(responses) + return + } else if (responses.length !== queue.length) { + throw new Error('response length did not match query length') + } + + for (let i = 0; i < queue.length; i++) { + if (responses[i].errors && responses[i].errors.length) { + queue[i].reject( + new GenqlError(responses[i].errors, responses[i].data), + ) + } else { + queue[i].resolve(responses[i]) + } + } + }) +} + +/** + * creates a list of requests to batch according to max batch size. + * @private + * @param {QueryBatcher} client - the client to create list of requests from from + * @param {Options} options - the options for the batch + */ +function dispatchQueue(client: QueryBatcher, options: Options): void { + const queue = client._queue + const maxBatchSize = options.maxBatchSize || 0 + client._queue = [] + + if (maxBatchSize > 0 && maxBatchSize < queue.length) { + for (let i = 0; i < queue.length / maxBatchSize; i++) { + dispatchQueueBatch( + client, + queue.slice(i * maxBatchSize, (i + 1) * maxBatchSize), + ) + } + } else { + dispatchQueueBatch(client, queue) + } +} +/** + * Create a batcher client. + * @param {Fetcher} fetcher - A function that can handle the network requests to graphql endpoint + * @param {Options} options - the options to be used by client + * @param {boolean} options.shouldBatch - should the client batch requests. (default true) + * @param {integer} options.batchInterval - duration (in MS) of each batch window. (default 6) + * @param {integer} options.maxBatchSize - max number of requests in a batch. (default 0) + * @param {boolean} options.defaultHeaders - default headers to include with every request + * + * @example + * const fetcher = batchedQuery => fetch('path/to/graphql', { + * method: 'post', + * headers: { + * Accept: 'application/json', + * 'Content-Type': 'application/json', + * }, + * body: JSON.stringify(batchedQuery), + * credentials: 'include', + * }) + * .then(response => response.json()) + * + * const client = new QueryBatcher(fetcher, { maxBatchSize: 10 }) + */ + +export class QueryBatcher { + fetcher: Fetcher + _options: Options + _queue: Queue + + constructor( + fetcher: Fetcher, + { + batchInterval = 6, + shouldBatch = true, + maxBatchSize = 0, + }: Options = {}, + ) { + this.fetcher = fetcher + this._options = { + batchInterval, + shouldBatch, + maxBatchSize, + } + this._queue = [] + } + + /** + * Fetch will send a graphql request and return the parsed json. + * @param {string} query - the graphql query. + * @param {Variables} variables - any variables you wish to inject as key/value pairs. + * @param {[string]} operationName - the graphql operationName. + * @param {Options} overrides - the client options overrides. + * + * @return {promise} resolves to parsed json of server response + * + * @example + * client.fetch(` + * query getHuman($id: ID!) { + * human(id: $id) { + * name + * height + * } + * } + * `, { id: "1001" }, 'getHuman') + * .then(human => { + * // do something with human + * console.log(human); + * }); + */ + fetch( + query: string, + variables?: Variables, + operationName?: string, + overrides: Options = {}, + ): Promise { + const request: GraphqlOperation = { + query, + } + const options = Object.assign({}, this._options, overrides) + + if (variables) { + request.variables = variables + } + + if (operationName) { + request.operationName = operationName + } + + const promise = new Promise((resolve, reject) => { + this._queue.push({ + request, + resolve, + reject, + }) + + if (this._queue.length === 1) { + if (options.shouldBatch) { + setTimeout( + () => dispatchQueue(this, options), + options.batchInterval, + ) + } else { + dispatchQueue(this, options) + } + } + }) + return promise + } + + /** + * Fetch will send a graphql request and return the parsed json. + * @param {string} query - the graphql query. + * @param {Variables} variables - any variables you wish to inject as key/value pairs. + * @param {[string]} operationName - the graphql operationName. + * @param {Options} overrides - the client options overrides. + * + * @return {Promise>} resolves to parsed json of server response + * + * @example + * client.forceFetch(` + * query getHuman($id: ID!) { + * human(id: $id) { + * name + * height + * } + * } + * `, { id: "1001" }, 'getHuman') + * .then(human => { + * // do something with human + * console.log(human); + * }); + */ + forceFetch( + query: string, + variables?: Variables, + operationName?: string, + overrides: Options = {}, + ): Promise { + const request: GraphqlOperation = { + query, + } + const options = Object.assign({}, this._options, overrides, { + shouldBatch: false, + }) + + if (variables) { + request.variables = variables + } + + if (operationName) { + request.operationName = operationName + } + + const promise = new Promise((resolve, reject) => { + const client = new QueryBatcher(this.fetcher, this._options) + client._queue = [ + { + request, + resolve, + reject, + }, + ] + dispatchQueue(client, options) + }) + return promise + } +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/createClient.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/createClient.ts new file mode 100644 index 0000000000..755617ed7a --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/createClient.ts @@ -0,0 +1,68 @@ +// @ts-nocheck + +import { type BatchOptions, createFetcher } from './fetcher' +import type { ExecutionResult, LinkedType } from './types' +import { + generateGraphqlOperation, + type GraphqlOperation, +} from './generateGraphqlOperation' + +export type Headers = + | HeadersInit + | (() => HeadersInit) + | (() => Promise) + +export type BaseFetcher = ( + operation: GraphqlOperation | GraphqlOperation[], +) => Promise + +export type ClientOptions = Omit & { + url?: string + batch?: BatchOptions | boolean + fetcher?: BaseFetcher + fetch?: Function + headers?: Headers +} + +export const createClient = ({ + queryRoot, + mutationRoot, + subscriptionRoot, + ...options +}: ClientOptions & { + queryRoot?: LinkedType + mutationRoot?: LinkedType + subscriptionRoot?: LinkedType +}) => { + const fetcher = createFetcher(options) + const client: { + query?: Function + mutation?: Function + } = {} + + if (queryRoot) { + client.query = (request: any) => { + if (!queryRoot) throw new Error('queryRoot argument is missing') + + const resultPromise = fetcher( + generateGraphqlOperation('query', queryRoot, request), + ) + + return resultPromise + } + } + if (mutationRoot) { + client.mutation = (request: any) => { + if (!mutationRoot) + throw new Error('mutationRoot argument is missing') + + const resultPromise = fetcher( + generateGraphqlOperation('mutation', mutationRoot, request), + ) + + return resultPromise + } + } + + return client as any +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/error.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/error.ts new file mode 100644 index 0000000000..d9039ebe0c --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/error.ts @@ -0,0 +1,29 @@ +// @ts-nocheck +export class GenqlError extends Error { + errors: Array = [] + /** + * Partial data returned by the server + */ + data?: any + constructor(errors: any[], data: any) { + let message = Array.isArray(errors) + ? errors.map((x) => x?.message || '').join('\n') + : '' + if (!message) { + message = 'GraphQL error' + } + super(message) + this.errors = errors + this.data = data + } +} + +interface GraphqlError { + message: string + locations?: Array<{ + line: number + column: number + }> + path?: string[] + extensions?: Record +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/fetcher.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/fetcher.ts new file mode 100644 index 0000000000..78c98ffbdc --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/fetcher.ts @@ -0,0 +1,98 @@ +// @ts-nocheck +import { QueryBatcher } from './batcher' + +import type { ClientOptions } from './createClient' +import type { GraphqlOperation } from './generateGraphqlOperation' +import { GenqlError } from './error' + +export interface Fetcher { + (gql: GraphqlOperation): Promise +} + +export type BatchOptions = { + batchInterval?: number // ms + maxBatchSize?: number +} + +const DEFAULT_BATCH_OPTIONS = { + maxBatchSize: 10, + batchInterval: 40, +} + +export const createFetcher = ({ + url, + headers = {}, + fetcher, + fetch: _fetch, + batch = false, + ...rest +}: ClientOptions): Fetcher => { + if (!url && !fetcher) { + throw new Error('url or fetcher is required') + } + if (!fetcher) { + fetcher = async (body) => { + let headersObject = + typeof headers == 'function' ? await headers() : headers + headersObject = headersObject || {} + if (typeof fetch === 'undefined' && !_fetch) { + throw new Error( + 'Global `fetch` function is not available, pass a fetch polyfill to Genql `createClient`', + ) + } + let fetchImpl = _fetch || fetch + const res = await fetchImpl(url!, { + headers: { + 'Content-Type': 'application/json', + ...headersObject, + }, + method: 'POST', + body: JSON.stringify(body), + ...rest, + }) + if (!res.ok) { + throw new Error(`${res.statusText}: ${await res.text()}`) + } + const json = await res.json() + return json + } + } + + if (!batch) { + return async (body) => { + const json = await fetcher!(body) + if (Array.isArray(json)) { + return json.map((json) => { + if (json?.errors?.length) { + throw new GenqlError(json.errors || [], json.data) + } + return json.data + }) + } else { + if (json?.errors?.length) { + throw new GenqlError(json.errors || [], json.data) + } + return json.data + } + } + } + + const batcher = new QueryBatcher( + async (batchedQuery) => { + // console.log(batchedQuery) // [{ query: 'query{user{age}}', variables: {} }, ...] + const json = await fetcher!(batchedQuery) + return json as any + }, + batch === true ? DEFAULT_BATCH_OPTIONS : batch, + ) + + return async ({ query, variables }) => { + const json = await batcher.fetch(query, variables) + if (json?.data) { + return json.data + } + throw new Error( + 'Genql batch fetcher returned unexpected result ' + JSON.stringify(json), + ) + } +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/generateGraphqlOperation.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/generateGraphqlOperation.ts new file mode 100644 index 0000000000..c618019ec8 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/generateGraphqlOperation.ts @@ -0,0 +1,225 @@ +// @ts-nocheck +import type { LinkedField, LinkedType } from './types' + +export interface Args { + [arg: string]: any | undefined +} + +export interface Fields { + [field: string]: Request +} + +export type Request = boolean | number | Fields + +export interface Variables { + [name: string]: { + value: any + typing: [LinkedType, string] + } +} + +export interface Context { + root: LinkedType + varCounter: number + variables: Variables + fragmentCounter: number + fragments: string[] +} + +export interface GraphqlOperation { + query: string + variables?: { [name: string]: any } + operationName?: string +} + +const parseRequest = ( + request: Request | undefined, + ctx: Context, + path: string[], +): string => { + if (typeof request === 'object' && '__args' in request) { + const args: any = request.__args + let fields: Request | undefined = { ...request } + delete fields.__args + const argNames = Object.keys(args) + + if (argNames.length === 0) { + return parseRequest(fields, ctx, path) + } + + const field = getFieldFromPath(ctx.root, path) + + const argStrings = argNames.map((argName) => { + ctx.varCounter++ + const varName = `v${ctx.varCounter}` + + const typing = field.args && field.args[argName] // typeMap used here, .args + + if (!typing) { + throw new Error( + `no typing defined for argument \`${argName}\` in path \`${path.join( + '.', + )}\``, + ) + } + + ctx.variables[varName] = { + value: args[argName], + typing, + } + + return `${argName}:$${varName}` + }) + return `(${argStrings})${parseRequest(fields, ctx, path)}` + } else if (typeof request === 'object' && Object.keys(request).length > 0) { + const fields = request + const fieldNames = Object.keys(fields).filter((k) => Boolean(fields[k])) + + if (fieldNames.length === 0) { + throw new Error( + `field selection should not be empty: ${path.join('.')}`, + ) + } + + const type = + path.length > 0 ? getFieldFromPath(ctx.root, path).type : ctx.root + const scalarFields = type.scalar + + let scalarFieldsFragment: string | undefined + + if (fieldNames.includes('__scalar')) { + const falsyFieldNames = new Set( + Object.keys(fields).filter((k) => !Boolean(fields[k])), + ) + if (scalarFields?.length) { + ctx.fragmentCounter++ + scalarFieldsFragment = `f${ctx.fragmentCounter}` + + ctx.fragments.push( + `fragment ${scalarFieldsFragment} on ${ + type.name + }{${scalarFields + .filter((f) => !falsyFieldNames.has(f)) + .join(',')}}`, + ) + } + } + + const fieldsSelection = fieldNames + .filter((f) => !['__scalar', '__name'].includes(f)) + .map((f) => { + const parsed = parseRequest(fields[f], ctx, [...path, f]) + + if (f.startsWith('on_')) { + ctx.fragmentCounter++ + const implementationFragment = `f${ctx.fragmentCounter}` + + const typeMatch = f.match(/^on_(.+)/) + + if (!typeMatch || !typeMatch[1]) + throw new Error('match failed') + + ctx.fragments.push( + `fragment ${implementationFragment} on ${typeMatch[1]}${parsed}`, + ) + + return `...${implementationFragment}` + } else { + return `${f}${parsed}` + } + }) + .concat(scalarFieldsFragment ? [`...${scalarFieldsFragment}`] : []) + .join(',') + + return `{${fieldsSelection}}` + } else { + return '' + } +} + +export const generateGraphqlOperation = ( + operation: 'query' | 'mutation' | 'subscription', + root: LinkedType, + fields?: Fields, +): GraphqlOperation => { + const ctx: Context = { + root: root, + varCounter: 0, + variables: {}, + fragmentCounter: 0, + fragments: [], + } + const result = parseRequest(fields, ctx, []) + + const varNames = Object.keys(ctx.variables) + + const varsString = + varNames.length > 0 + ? `(${varNames.map((v) => { + const variableType = ctx.variables[v].typing[1] + return `$${v}:${variableType}` + })})` + : '' + + const operationName = fields?.__name || '' + + return { + query: [ + `${operation} ${operationName}${varsString}${result}`, + ...ctx.fragments, + ].join(','), + variables: Object.keys(ctx.variables).reduce<{ [name: string]: any }>( + (r, v) => { + r[v] = ctx.variables[v].value + return r + }, + {}, + ), + ...(operationName ? { operationName: operationName.toString() } : {}), + } +} + +export const getFieldFromPath = ( + root: LinkedType | undefined, + path: string[], +) => { + let current: LinkedField | undefined + + if (!root) throw new Error('root type is not provided') + + if (path.length === 0) throw new Error(`path is empty`) + + path.forEach((f) => { + const type = current ? current.type : root + + if (!type.fields) + throw new Error(`type \`${type.name}\` does not have fields`) + + const possibleTypes = Object.keys(type.fields) + .filter((i) => i.startsWith('on_')) + .reduce( + (types, fieldName) => { + const field = type.fields && type.fields[fieldName] + if (field) types.push(field.type) + return types + }, + [type], + ) + + let field: LinkedField | null = null + + possibleTypes.forEach((type) => { + const found = type.fields && type.fields[f] + if (found) field = found + }) + + if (!field) + throw new Error( + `type \`${type.name}\` does not have a field \`${f}\``, + ) + + current = field + }) + + return current as LinkedField +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/index.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/index.ts new file mode 100644 index 0000000000..130ed4bf79 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/index.ts @@ -0,0 +1,13 @@ +// @ts-nocheck +export { createClient } from './createClient' +export type { ClientOptions } from './createClient' +export type { FieldsSelection } from './typeSelection' +export { generateGraphqlOperation } from './generateGraphqlOperation' +export type { GraphqlOperation } from './generateGraphqlOperation' +export { linkTypeMap } from './linkTypeMap' +// export { Observable } from 'zen-observable-ts' +export { createFetcher } from './fetcher' +export { GenqlError } from './error' +export const everything = { + __scalar: true, +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/linkTypeMap.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/linkTypeMap.ts new file mode 100644 index 0000000000..117da16bb7 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/linkTypeMap.ts @@ -0,0 +1,139 @@ +// @ts-nocheck +import type { + CompressedType, + CompressedTypeMap, + LinkedArgMap, + LinkedField, + LinkedType, + LinkedTypeMap, +} from './types' + +export interface PartialLinkedFieldMap { + [field: string]: { + type: string + args?: LinkedArgMap + } +} + +export const linkTypeMap = ( + typeMap: CompressedTypeMap, +): LinkedTypeMap => { + const indexToName: Record = Object.assign( + {}, + ...Object.keys(typeMap.types).map((k, i) => ({ [i]: k })), + ) + + let intermediaryTypeMap = Object.assign( + {}, + ...Object.keys(typeMap.types || {}).map( + (k): Record => { + const type: CompressedType = typeMap.types[k]! + const fields = type || {} + return { + [k]: { + name: k, + // type scalar properties + scalar: Object.keys(fields).filter((f) => { + const [type] = fields[f] || [] + return type && typeMap.scalars.includes(type) + }), + // fields with corresponding `type` and `args` + fields: Object.assign( + {}, + ...Object.keys(fields).map( + (f): PartialLinkedFieldMap => { + const [typeIndex, args] = fields[f] || [] + if (typeIndex == null) { + return {} + } + return { + [f]: { + // replace index with type name + type: indexToName[typeIndex], + args: Object.assign( + {}, + ...Object.keys(args || {}).map( + (k) => { + // if argTypeString == argTypeName, argTypeString is missing, need to readd it + if (!args || !args[k]) { + return + } + const [ + argTypeName, + argTypeString, + ] = args[k] as any + return { + [k]: [ + indexToName[ + argTypeName + ], + argTypeString || + indexToName[ + argTypeName + ], + ], + } + }, + ), + ), + }, + } + }, + ), + ), + }, + } + }, + ), + ) + const res = resolveConcreteTypes(intermediaryTypeMap) + return res +} + +// replace typename with concrete type +export const resolveConcreteTypes = (linkedTypeMap: LinkedTypeMap) => { + Object.keys(linkedTypeMap).forEach((typeNameFromKey) => { + const type: LinkedType = linkedTypeMap[typeNameFromKey]! + // type.name = typeNameFromKey + if (!type.fields) { + return + } + + const fields = type.fields + + Object.keys(fields).forEach((f) => { + const field: LinkedField = fields[f]! + + if (field.args) { + const args = field.args + Object.keys(args).forEach((key) => { + const arg = args[key] + + if (arg) { + const [typeName] = arg + + if (typeof typeName === 'string') { + if (!linkedTypeMap[typeName]) { + linkedTypeMap[typeName] = { name: typeName } + } + + arg[0] = linkedTypeMap[typeName]! + } + } + }) + } + + const typeName = field.type as LinkedType | string + + if (typeof typeName === 'string') { + if (!linkedTypeMap[typeName]) { + linkedTypeMap[typeName] = { name: typeName } + } + + field.type = linkedTypeMap[typeName]! + } + }) + }) + + return linkedTypeMap +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/typeSelection.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/typeSelection.ts new file mode 100644 index 0000000000..ddca88d78b --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/typeSelection.ts @@ -0,0 +1,98 @@ +// @ts-nocheck +////////////////////////////////////////////////// + +// SOME THINGS TO KNOW BEFORE DIVING IN +/* +0. DST is the request type, SRC is the response type + +1. FieldsSelection uses an object because currently is impossible to make recursive types + +2. FieldsSelection is a recursive type that makes a type based on request type and fields + +3. HandleObject handles object types + +4. Handle__scalar adds all scalar properties excluding non scalar props +*/ + +export type FieldsSelection | undefined, DST> = { + scalar: SRC + union: Handle__isUnion + object: HandleObject + array: SRC extends Nil + ? never + : SRC extends (infer T)[] + ? Array> + : never + __scalar: Handle__scalar + never: never +}[DST extends Nil + ? 'never' + : SRC extends Nil + ? 'never' + : DST extends false | 0 + ? 'never' + : SRC extends Scalar + ? 'scalar' + : SRC extends any[] + ? 'array' + : SRC extends { __isUnion?: any } + ? 'union' + : DST extends { __scalar?: any } + ? '__scalar' + : DST extends {} + ? 'object' + : 'never'] + +type HandleObject, DST> = SRC extends Nil + ? never + : Pick< + { + // using keyof SRC to maintain ?: relations of SRC type + [Key in keyof SRC]: Key extends keyof DST + ? FieldsSelection< + NonNullable, + NonNullable + > + : SRC[Key] + }, + Exclude + // { + // // remove falsy values + // [Key in keyof DST]: DST[Key] extends false | 0 ? never : Key + // }[keyof DST] + > + +type Handle__scalar, DST> = SRC extends Nil + ? never + : Pick< + // continue processing fields that are in DST, directly pass SRC type if not in DST + { + [Key in keyof SRC]: Key extends keyof DST + ? FieldsSelection + : SRC[Key] + }, + // remove fields that are not scalars or are not in DST + { + [Key in keyof SRC]: SRC[Key] extends Nil + ? never + : Key extends FieldsToRemove + ? never + : SRC[Key] extends Scalar + ? Key + : Key extends keyof DST + ? Key + : never + }[keyof SRC] + > + +type Handle__isUnion, DST> = SRC extends Nil + ? never + : Omit // just return the union type + +type Scalar = string | number | Date | boolean | null | undefined + +type Anify = { [P in keyof T]?: any } + +type FieldsToRemove = '__isUnion' | '__scalar' | '__name' | '__args' + +type Nil = undefined | null diff --git a/packages/twenty-sdk/src/clients/generated/metadata/runtime/types.ts b/packages/twenty-sdk/src/clients/generated/metadata/runtime/types.ts new file mode 100644 index 0000000000..3f0bc30b9e --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/runtime/types.ts @@ -0,0 +1,69 @@ +// @ts-nocheck + +export interface ExecutionResult { + errors?: Array + data?: TData | null +} + +export interface ArgMap { + [arg: string]: [keyType, string] | [keyType] | undefined +} + +export type CompressedField = [ + type: keyType, + args?: ArgMap, +] + +export interface CompressedFieldMap { + [field: string]: CompressedField | undefined +} + +export type CompressedType = CompressedFieldMap + +export interface CompressedTypeMap { + scalars: Array + types: { + [type: string]: CompressedType | undefined + } +} + +// normal types +export type Field = { + type: keyType + args?: ArgMap +} + +export interface FieldMap { + [field: string]: Field | undefined +} + +export type Type = FieldMap + +export interface TypeMap { + scalars: Array + types: { + [type: string]: Type | undefined + } +} + +export interface LinkedArgMap { + [arg: string]: [LinkedType, string] | undefined +} +export interface LinkedField { + type: LinkedType + args?: LinkedArgMap +} + +export interface LinkedFieldMap { + [field: string]: LinkedField | undefined +} + +export interface LinkedType { + name: string + fields?: LinkedFieldMap + scalar?: string[] +} + +export interface LinkedTypeMap { + [type: string]: LinkedType | undefined +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/schema.graphql b/packages/twenty-sdk/src/clients/generated/metadata/schema.graphql new file mode 100644 index 0000000000..91edbc0eff --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/schema.graphql @@ -0,0 +1,4198 @@ +interface BillingProductDTO { + name: String! + description: String! + images: [String!] + metadata: BillingProductMetadata! +} + +type ApiKey { + id: UUID! + name: String! + expiresAt: DateTime! + revokedAt: DateTime + createdAt: DateTime! + updatedAt: DateTime! + role: Role! +} + +"""A UUID scalar type""" +scalar UUID + +""" +A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. +""" +scalar DateTime + +type ApplicationRegistrationVariable { + id: UUID! + key: String! + description: String! + isSecret: Boolean! + isRequired: Boolean! + isFilled: Boolean! + createdAt: DateTime! + updatedAt: DateTime! +} + +type ApplicationRegistration { + id: UUID! + universalIdentifier: String! + name: String! + description: String + logoUrl: String + author: String + oAuthClientId: String! + oAuthRedirectUris: [String!]! + oAuthScopes: [String!]! + ownerWorkspaceId: UUID + sourceType: ApplicationRegistrationSourceType! + sourcePackage: String + latestAvailableVersion: String + websiteUrl: String + termsUrl: String + isListed: Boolean! + isFeatured: Boolean! + createdAt: DateTime! + updatedAt: DateTime! +} + +enum ApplicationRegistrationSourceType { + NPM + TARBALL + LOCAL +} + +type TwoFactorAuthenticationMethodSummary { + twoFactorAuthenticationMethodId: UUID! + status: String! + strategy: String! +} + +type RowLevelPermissionPredicateGroup { + id: String! + parentRowLevelPermissionPredicateGroupId: String + logicalOperator: RowLevelPermissionPredicateGroupLogicalOperator! + positionInRowLevelPermissionPredicateGroup: Float + roleId: String! + objectMetadataId: String! +} + +enum RowLevelPermissionPredicateGroupLogicalOperator { + AND + OR +} + +type RowLevelPermissionPredicate { + id: String! + fieldMetadataId: String! + objectMetadataId: String! + operand: RowLevelPermissionPredicateOperand! + subFieldName: String + workspaceMemberFieldMetadataId: String + workspaceMemberSubFieldName: String + rowLevelPermissionPredicateGroupId: String + positionInRowLevelPermissionPredicateGroup: Float + roleId: String! + value: JSON +} + +enum RowLevelPermissionPredicateOperand { + IS + IS_NOT_NULL + IS_NOT + LESS_THAN_OR_EQUAL + GREATER_THAN_OR_EQUAL + IS_BEFORE + IS_AFTER + CONTAINS + DOES_NOT_CONTAIN + IS_EMPTY + IS_NOT_EMPTY + IS_RELATIVE + IS_IN_PAST + IS_IN_FUTURE + IS_TODAY + VECTOR_SEARCH +} + +""" +The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). +""" +scalar JSON + +type ObjectPermission { + objectMetadataId: UUID! + canReadObjectRecords: Boolean + canUpdateObjectRecords: Boolean + canSoftDeleteObjectRecords: Boolean + canDestroyObjectRecords: Boolean + restrictedFields: JSON + rowLevelPermissionPredicates: [RowLevelPermissionPredicate!] + rowLevelPermissionPredicateGroups: [RowLevelPermissionPredicateGroup!] +} + +type UserWorkspace { + id: UUID! + user: User! + userId: UUID! + locale: String! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + permissionFlags: [PermissionFlagType!] + objectPermissions: [ObjectPermission!] + objectsPermissions: [ObjectPermission!] + twoFactorAuthenticationMethodSummary: [TwoFactorAuthenticationMethodSummary!] +} + +enum PermissionFlagType { + API_KEYS_AND_WEBHOOKS + WORKSPACE + WORKSPACE_MEMBERS + ROLES + DATA_MODEL + SECURITY + WORKFLOWS + IMPERSONATE + SSO_BYPASS + APPLICATIONS + MARKETPLACE_APPS + LAYOUTS + BILLING + AI_SETTINGS + AI + VIEWS + UPLOAD_FILE + DOWNLOAD_FILE + SEND_EMAIL_TOOL + HTTP_REQUEST_TOOL + CODE_INTERPRETER_TOOL + IMPORT_CSV + EXPORT_CSV + CONNECTED_ACCOUNTS + PROFILE_INFORMATION +} + +type FullName { + firstName: String! + lastName: String! +} + +type WorkspaceMember { + id: UUID! + name: FullName! + userEmail: String! + colorScheme: String! + avatarUrl: String + locale: String + calendarStartDay: Int + timeZone: String + dateFormat: WorkspaceMemberDateFormatEnum + timeFormat: WorkspaceMemberTimeFormatEnum + roles: [Role!] + userWorkspaceId: UUID + numberFormat: WorkspaceMemberNumberFormatEnum +} + +"""Date format as Month first, Day first, Year first or system as default""" +enum WorkspaceMemberDateFormatEnum { + SYSTEM + MONTH_FIRST + DAY_FIRST + YEAR_FIRST +} + +"""Time time as Military, Standard or system as default""" +enum WorkspaceMemberTimeFormatEnum { + SYSTEM + HOUR_12 + HOUR_24 +} + +"""Number format for displaying numbers""" +enum WorkspaceMemberNumberFormatEnum { + SYSTEM + COMMAS_AND_DOT + SPACES_AND_COMMA + DOTS_AND_COMMA + APOSTROPHE_AND_DOT +} + +type Agent { + id: UUID! + name: String! + label: String! + icon: String + description: String + prompt: String! + modelId: String! + responseFormat: JSON + roleId: UUID + isCustom: Boolean! + applicationId: UUID + createdAt: DateTime! + updatedAt: DateTime! + modelConfiguration: JSON + evaluationInputs: [String!]! +} + +type FieldPermission { + id: UUID! + objectMetadataId: UUID! + fieldMetadataId: UUID! + roleId: UUID! + canReadFieldValue: Boolean + canUpdateFieldValue: Boolean +} + +type PermissionFlag { + id: UUID! + roleId: UUID! + flag: PermissionFlagType! +} + +type ApiKeyForRole { + id: UUID! + name: String! + expiresAt: DateTime! + revokedAt: DateTime +} + +type Role { + id: UUID! + universalIdentifier: UUID + label: String! + description: String + icon: String + isEditable: Boolean! + canBeAssignedToUsers: Boolean! + canBeAssignedToAgents: Boolean! + canBeAssignedToApiKeys: Boolean! + workspaceMembers: [WorkspaceMember!]! + agents: [Agent!]! + apiKeys: [ApiKeyForRole!]! + canUpdateAllSettings: Boolean! + canAccessAllTools: Boolean! + canReadAllObjectRecords: Boolean! + canUpdateAllObjectRecords: Boolean! + canSoftDeleteAllObjectRecords: Boolean! + canDestroyAllObjectRecords: Boolean! + permissionFlags: [PermissionFlag!] + objectPermissions: [ObjectPermission!] + fieldPermissions: [FieldPermission!] + rowLevelPermissionPredicates: [RowLevelPermissionPredicate!] + rowLevelPermissionPredicateGroups: [RowLevelPermissionPredicateGroup!] +} + +type ApplicationRegistrationSummary { + id: UUID! + latestAvailableVersion: String + sourceType: ApplicationRegistrationSourceType! +} + +type ApplicationVariable { + id: UUID! + key: String! + value: String! + description: String! + isSecret: Boolean! +} + +type LogicFunction { + id: UUID! + name: String! + description: String + runtime: String! + timeoutSeconds: Float! + sourceHandlerPath: String! + handlerName: String! + toolInputSchema: JSON + isTool: Boolean! + cronTriggerSettings: JSON + databaseEventTriggerSettings: JSON + httpRouteTriggerSettings: JSON + applicationId: UUID + universalIdentifier: UUID + createdAt: DateTime! + updatedAt: DateTime! +} + +type StandardOverrides { + label: String + description: String + icon: String + translations: JSON +} + +type Field { + id: UUID! + universalIdentifier: UUID! + type: FieldMetadataType! + name: String! + label: String! + description: String + icon: String + standardOverrides: StandardOverrides + isCustom: Boolean + isActive: Boolean + isSystem: Boolean + isUIReadOnly: Boolean + isNullable: Boolean + isUnique: Boolean + defaultValue: JSON + options: JSON + settings: JSON + isLabelSyncedWithName: Boolean + morphId: UUID + createdAt: DateTime! + updatedAt: DateTime! + applicationId: UUID! + relation: Relation + morphRelations: [Relation!] + object: Object +} + +"""Type of the field""" +enum FieldMetadataType { + ACTOR + ADDRESS + ARRAY + BOOLEAN + CURRENCY + DATE + DATE_TIME + EMAILS + FILES + FULL_NAME + LINKS + MORPH_RELATION + MULTI_SELECT + NUMBER + NUMERIC + PHONES + POSITION + RATING + RAW_JSON + RELATION + RICH_TEXT + RICH_TEXT_V2 + SELECT + TEXT + TS_VECTOR + UUID +} + +type IndexField { + id: UUID! + fieldMetadataId: UUID! + order: Float! + createdAt: DateTime! + updatedAt: DateTime! +} + +type Index { + id: UUID! + name: String! + isCustom: Boolean + isUnique: Boolean! + indexWhereClause: String + indexType: IndexType! + createdAt: DateTime! + updatedAt: DateTime! + indexFieldMetadataList: [IndexField!]! + objectMetadata( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: ObjectFilter! = {} + ): IndexObjectMetadataConnection! + indexFieldMetadatas( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: IndexFieldFilter! = {} + ): IndexIndexFieldMetadatasConnection! +} + +"""Type of the index""" +enum IndexType { + BTREE + GIN +} + +input CursorPaging { + """Paginate before opaque cursor""" + before: ConnectionCursor + + """Paginate after opaque cursor""" + after: ConnectionCursor + + """Paginate first""" + first: Int + + """Paginate last""" + last: Int +} + +"""Cursor for paging through collections""" +scalar ConnectionCursor + +input ObjectFilter { + and: [ObjectFilter!] + or: [ObjectFilter!] + id: UUIDFilterComparison + universalIdentifier: UUIDFilterComparison + isCustom: BooleanFieldComparison + isRemote: BooleanFieldComparison + isActive: BooleanFieldComparison + isSystem: BooleanFieldComparison + isUIReadOnly: BooleanFieldComparison + isSearchable: BooleanFieldComparison +} + +input UUIDFilterComparison { + is: Boolean + isNot: Boolean + eq: UUID + neq: UUID + gt: UUID + gte: UUID + lt: UUID + lte: UUID + like: UUID + notLike: UUID + iLike: UUID + notILike: UUID + in: [UUID!] + notIn: [UUID!] +} + +input BooleanFieldComparison { + is: Boolean + isNot: Boolean +} + +input IndexFieldFilter { + and: [IndexFieldFilter!] + or: [IndexFieldFilter!] + id: UUIDFilterComparison + fieldMetadataId: UUIDFilterComparison +} + +type ObjectStandardOverrides { + labelSingular: String + labelPlural: String + description: String + icon: String + translations: JSON +} + +type Object { + id: UUID! + universalIdentifier: UUID! + nameSingular: String! + namePlural: String! + labelSingular: String! + labelPlural: String! + description: String + icon: String + standardOverrides: ObjectStandardOverrides + shortcut: String + isCustom: Boolean! + isRemote: Boolean! + isActive: Boolean! + isSystem: Boolean! + isUIReadOnly: Boolean! + isSearchable: Boolean! + applicationId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + labelIdentifierFieldMetadataId: UUID + imageIdentifierFieldMetadataId: UUID + isLabelSyncedWithName: Boolean! + duplicateCriteria: [[String!]!] + fieldsList: [Field!]! + indexMetadataList: [Index!]! + fields( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: FieldFilter! = {} + ): ObjectFieldsConnection! + indexMetadatas( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: IndexFilter! = {} + ): ObjectIndexMetadatasConnection! +} + +input FieldFilter { + and: [FieldFilter!] + or: [FieldFilter!] + id: UUIDFilterComparison + universalIdentifier: UUIDFilterComparison + isCustom: BooleanFieldComparison + isActive: BooleanFieldComparison + isSystem: BooleanFieldComparison + isUIReadOnly: BooleanFieldComparison +} + +input IndexFilter { + and: [IndexFilter!] + or: [IndexFilter!] + id: UUIDFilterComparison + isCustom: BooleanFieldComparison +} + +type Application { + id: UUID! + name: String! + description: String + version: String + universalIdentifier: String! + packageJsonChecksum: String + packageJsonFileId: UUID + yarnLockChecksum: String + yarnLockFileId: UUID + availablePackages: JSON! + applicationRegistrationId: UUID + canBeUninstalled: Boolean! + defaultRoleId: String + settingsCustomTabFrontComponentId: UUID + defaultLogicFunctionRole: Role + agents: [Agent!]! + logicFunctions: [LogicFunction!]! + objects: [Object!]! + applicationVariables: [ApplicationVariable!]! + applicationRegistration: ApplicationRegistrationSummary +} + +type CoreViewField { + id: UUID! + fieldMetadataId: UUID! + isVisible: Boolean! + size: Float! + position: Float! + aggregateOperation: AggregateOperations + viewId: UUID! + viewFieldGroupId: UUID + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum AggregateOperations { + MIN + MAX + AVG + SUM + COUNT + COUNT_UNIQUE_VALUES + COUNT_EMPTY + COUNT_NOT_EMPTY + COUNT_TRUE + COUNT_FALSE + PERCENTAGE_EMPTY + PERCENTAGE_NOT_EMPTY +} + +type CoreViewFilterGroup { + id: UUID! + parentViewFilterGroupId: UUID + logicalOperator: ViewFilterGroupLogicalOperator! + positionInViewFilterGroup: Float + viewId: UUID! + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum ViewFilterGroupLogicalOperator { + AND + OR + NOT +} + +type CoreViewFilter { + id: UUID! + fieldMetadataId: UUID! + operand: ViewFilterOperand! + value: JSON! + viewFilterGroupId: UUID + positionInViewFilterGroup: Float + subFieldName: String + viewId: UUID! + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum ViewFilterOperand { + IS + IS_NOT_NULL + IS_NOT + LESS_THAN_OR_EQUAL + GREATER_THAN_OR_EQUAL + IS_BEFORE + IS_AFTER + CONTAINS + DOES_NOT_CONTAIN + IS_EMPTY + IS_NOT_EMPTY + IS_RELATIVE + IS_IN_PAST + IS_IN_FUTURE + IS_TODAY + VECTOR_SEARCH +} + +type CoreViewGroup { + id: UUID! + isVisible: Boolean! + fieldValue: String! + position: Float! + viewId: UUID! + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +type CoreViewSort { + id: UUID! + fieldMetadataId: UUID! + direction: ViewSortDirection! + viewId: UUID! + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum ViewSortDirection { + ASC + DESC +} + +type CoreViewFieldGroup { + id: UUID! + name: String! + position: Float! + isVisible: Boolean! + viewId: UUID! + workspaceId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + viewFields: [CoreViewField!]! +} + +type CoreView { + id: UUID! + name: String! + objectMetadataId: UUID! + type: ViewType! + key: ViewKey + icon: String! + position: Float! + isCompact: Boolean! + isCustom: Boolean! + openRecordIn: ViewOpenRecordIn! + kanbanAggregateOperation: AggregateOperations + kanbanAggregateOperationFieldMetadataId: UUID + mainGroupByFieldMetadataId: UUID + shouldHideEmptyGroups: Boolean! + calendarFieldMetadataId: UUID + workspaceId: UUID! + anyFieldFilterValue: String + calendarLayout: ViewCalendarLayout + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + viewFields: [CoreViewField!]! + viewFilters: [CoreViewFilter!]! + viewFilterGroups: [CoreViewFilterGroup!]! + viewSorts: [CoreViewSort!]! + viewGroups: [CoreViewGroup!]! + viewFieldGroups: [CoreViewFieldGroup!]! + visibility: ViewVisibility! + createdByUserWorkspaceId: UUID +} + +enum ViewType { + TABLE + KANBAN + CALENDAR + FIELDS_WIDGET +} + +enum ViewKey { + INDEX +} + +enum ViewOpenRecordIn { + SIDE_PANEL + RECORD_PAGE +} + +enum ViewCalendarLayout { + DAY + WEEK + MONTH +} + +enum ViewVisibility { + WORKSPACE + UNLISTED +} + +type Workspace { + id: UUID! + displayName: String + logo: String + logoFileId: UUID + inviteHash: String + deletedAt: DateTime + createdAt: DateTime! + updatedAt: DateTime! + allowImpersonation: Boolean! + isPublicInviteLinkEnabled: Boolean! + trashRetentionDays: Float! + eventLogRetentionDays: Float! + workspaceMembersCount: Float + activationStatus: WorkspaceActivationStatus! + views: [CoreView!] + viewFields: [CoreViewField!] + viewFilters: [CoreViewFilter!] + viewFilterGroups: [CoreViewFilterGroup!] + viewGroups: [CoreViewGroup!] + viewSorts: [CoreViewSort!] + metadataVersion: Float! + databaseUrl: String! + databaseSchema: String! + subdomain: String! + customDomain: String + isGoogleAuthEnabled: Boolean! + isGoogleAuthBypassEnabled: Boolean! + isTwoFactorAuthenticationEnforced: Boolean! + isPasswordAuthEnabled: Boolean! + isPasswordAuthBypassEnabled: Boolean! + isMicrosoftAuthEnabled: Boolean! + isMicrosoftAuthBypassEnabled: Boolean! + isCustomDomainEnabled: Boolean! + editableProfileFields: [String!] + defaultRole: Role + version: String + fastModel: String! + smartModel: String! + aiAdditionalInstructions: String + autoEnableNewAiModels: Boolean! + disabledAiModelIds: [String!] + enabledAiModelIds: [String!] + useRecommendedModels: Boolean! + routerModel: String! + workspaceCustomApplication: Application + featureFlags: [FeatureFlag!] + billingSubscriptions: [BillingSubscription!]! + currentBillingSubscription: BillingSubscription + billingEntitlements: [BillingEntitlement!]! + hasValidEnterpriseKey: Boolean! + workspaceUrls: WorkspaceUrls! + workspaceCustomApplicationId: String! +} + +enum WorkspaceActivationStatus { + ONGOING_CREATION + PENDING_CREATION + ACTIVE + INACTIVE + SUSPENDED +} + +type AppToken { + id: UUID! + type: String! + expiresAt: DateTime! + createdAt: DateTime! + updatedAt: DateTime! +} + +type User { + id: UUID! + firstName: String! + lastName: String! + email: String! + defaultAvatarUrl: String + isEmailVerified: Boolean! + disabled: Boolean + canImpersonate: Boolean! + canAccessFullAdminPanel: Boolean! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + locale: String! + workspaceMember: WorkspaceMember + userWorkspaces: [UserWorkspace!]! + onboardingStatus: OnboardingStatus + currentWorkspace: Workspace + currentUserWorkspace: UserWorkspace + userVars: JSONObject + workspaceMembers: [WorkspaceMember!] + deletedWorkspaceMembers: [DeletedWorkspaceMember!] + hasPassword: Boolean! + supportUserHash: String + workspaces: [UserWorkspace!]! + availableWorkspaces: AvailableWorkspaces! +} + +"""Onboarding status""" +enum OnboardingStatus { + PLAN_REQUIRED + WORKSPACE_ACTIVATION + PROFILE_CREATION + SYNC_EMAIL + INVITE_TEAM + BOOK_ONBOARDING + COMPLETED +} + +""" +The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). +""" +scalar JSONObject + +type RatioAggregateConfig { + fieldMetadataId: UUID! + optionValue: String! +} + +type NewFieldDefaultConfiguration { + isVisible: Boolean! + viewFieldGroupId: String +} + +type RichTextV2Body { + blocknote: String + markdown: String +} + +type GridPosition { + row: Float! + column: Float! + rowSpan: Float! + columnSpan: Float! +} + +type PageLayoutWidget { + id: UUID! + pageLayoutTabId: UUID! + title: String! + type: WidgetType! + objectMetadataId: UUID + gridPosition: GridPosition! + position: PageLayoutWidgetPosition + configuration: WidgetConfiguration! + conditionalDisplay: JSON + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum WidgetType { + VIEW + IFRAME + FIELD + FIELDS + GRAPH + STANDALONE_RICH_TEXT + TIMELINE + TASKS + NOTES + FILES + EMAILS + CALENDAR + FIELD_RICH_TEXT + WORKFLOW + WORKFLOW_VERSION + WORKFLOW_RUN + FRONT_COMPONENT +} + +union PageLayoutWidgetPosition = PageLayoutWidgetGridPosition | PageLayoutWidgetVerticalListPosition | PageLayoutWidgetCanvasPosition + +type PageLayoutWidgetGridPosition { + layoutMode: PageLayoutTabLayoutMode! + row: Int! + column: Int! + rowSpan: Int! + columnSpan: Int! +} + +enum PageLayoutTabLayoutMode { + GRID + VERTICAL_LIST + CANVAS +} + +type PageLayoutWidgetVerticalListPosition { + layoutMode: PageLayoutTabLayoutMode! + index: Int! +} + +type PageLayoutWidgetCanvasPosition { + layoutMode: PageLayoutTabLayoutMode! +} + +union WidgetConfiguration = AggregateChartConfiguration | StandaloneRichTextConfiguration | PieChartConfiguration | LineChartConfiguration | IframeConfiguration | GaugeChartConfiguration | BarChartConfiguration | CalendarConfiguration | FrontComponentConfiguration | EmailsConfiguration | FieldConfiguration | FieldRichTextConfiguration | FieldsConfiguration | FilesConfiguration | NotesConfiguration | TasksConfiguration | TimelineConfiguration | ViewConfiguration | WorkflowConfiguration | WorkflowRunConfiguration | WorkflowVersionConfiguration + +type AggregateChartConfiguration { + configurationType: WidgetConfigurationType! + aggregateFieldMetadataId: UUID! + aggregateOperation: AggregateOperations! + label: String + displayDataLabel: Boolean + format: String + description: String + filter: JSON + timezone: String + firstDayOfTheWeek: Int + prefix: String + suffix: String + ratioAggregateConfig: RatioAggregateConfig +} + +enum WidgetConfigurationType { + AGGREGATE_CHART + GAUGE_CHART + PIE_CHART + BAR_CHART + LINE_CHART + IFRAME + STANDALONE_RICH_TEXT + VIEW + FIELD + FIELDS + TIMELINE + TASKS + NOTES + FILES + EMAILS + CALENDAR + FIELD_RICH_TEXT + WORKFLOW + WORKFLOW_VERSION + WORKFLOW_RUN + FRONT_COMPONENT +} + +type StandaloneRichTextConfiguration { + configurationType: WidgetConfigurationType! + body: RichTextV2Body! +} + +type PieChartConfiguration { + configurationType: WidgetConfigurationType! + aggregateFieldMetadataId: UUID! + aggregateOperation: AggregateOperations! + groupByFieldMetadataId: UUID! + groupBySubFieldName: String + dateGranularity: ObjectRecordGroupByDateGranularity + orderBy: GraphOrderBy + manualSortOrder: [String!] + displayDataLabel: Boolean + showCenterMetric: Boolean + displayLegend: Boolean + hideEmptyCategory: Boolean + splitMultiValueFields: Boolean + description: String + color: String + filter: JSON + timezone: String + firstDayOfTheWeek: Int +} + +""" +Date granularity options (e.g. DAY, MONTH, QUARTER, YEAR, WEEK, DAY_OF_THE_WEEK, MONTH_OF_THE_YEAR, QUARTER_OF_THE_YEAR) +""" +enum ObjectRecordGroupByDateGranularity { + DAY + MONTH + QUARTER + YEAR + WEEK + DAY_OF_THE_WEEK + MONTH_OF_THE_YEAR + QUARTER_OF_THE_YEAR + NONE +} + +"""Order by options for graph widgets""" +enum GraphOrderBy { + FIELD_ASC + FIELD_DESC + FIELD_POSITION_ASC + FIELD_POSITION_DESC + VALUE_ASC + VALUE_DESC + MANUAL +} + +type LineChartConfiguration { + configurationType: WidgetConfigurationType! + aggregateFieldMetadataId: UUID! + aggregateOperation: AggregateOperations! + primaryAxisGroupByFieldMetadataId: UUID! + primaryAxisGroupBySubFieldName: String + primaryAxisDateGranularity: ObjectRecordGroupByDateGranularity + primaryAxisOrderBy: GraphOrderBy + primaryAxisManualSortOrder: [String!] + secondaryAxisGroupByFieldMetadataId: UUID + secondaryAxisGroupBySubFieldName: String + secondaryAxisGroupByDateGranularity: ObjectRecordGroupByDateGranularity + secondaryAxisOrderBy: GraphOrderBy + secondaryAxisManualSortOrder: [String!] + omitNullValues: Boolean + splitMultiValueFields: Boolean + axisNameDisplay: AxisNameDisplay + displayDataLabel: Boolean + displayLegend: Boolean + rangeMin: Float + rangeMax: Float + description: String + color: String + filter: JSON + isStacked: Boolean + isCumulative: Boolean + timezone: String + firstDayOfTheWeek: Int +} + +"""Which axes should display labels""" +enum AxisNameDisplay { + NONE + X + Y + BOTH +} + +type IframeConfiguration { + configurationType: WidgetConfigurationType! + url: String +} + +type GaugeChartConfiguration { + configurationType: WidgetConfigurationType! + aggregateFieldMetadataId: UUID! + aggregateOperation: AggregateOperations! + displayDataLabel: Boolean + color: String + description: String + filter: JSON + timezone: String + firstDayOfTheWeek: Int +} + +type BarChartConfiguration { + configurationType: WidgetConfigurationType! + aggregateFieldMetadataId: UUID! + aggregateOperation: AggregateOperations! + primaryAxisGroupByFieldMetadataId: UUID! + primaryAxisGroupBySubFieldName: String + primaryAxisDateGranularity: ObjectRecordGroupByDateGranularity + primaryAxisOrderBy: GraphOrderBy + primaryAxisManualSortOrder: [String!] + secondaryAxisGroupByFieldMetadataId: UUID + secondaryAxisGroupBySubFieldName: String + secondaryAxisGroupByDateGranularity: ObjectRecordGroupByDateGranularity + secondaryAxisOrderBy: GraphOrderBy + secondaryAxisManualSortOrder: [String!] + omitNullValues: Boolean + splitMultiValueFields: Boolean + axisNameDisplay: AxisNameDisplay + displayDataLabel: Boolean + displayLegend: Boolean + rangeMin: Float + rangeMax: Float + description: String + color: String + filter: JSON + groupMode: BarChartGroupMode + layout: BarChartLayout! + isCumulative: Boolean + timezone: String + firstDayOfTheWeek: Int +} + +"""Display mode for bar charts with secondary grouping""" +enum BarChartGroupMode { + STACKED + GROUPED +} + +"""Layout orientation for bar charts""" +enum BarChartLayout { + VERTICAL + HORIZONTAL +} + +type CalendarConfiguration { + configurationType: WidgetConfigurationType! +} + +type FrontComponentConfiguration { + configurationType: WidgetConfigurationType! + frontComponentId: UUID! +} + +type EmailsConfiguration { + configurationType: WidgetConfigurationType! +} + +type FieldConfiguration { + configurationType: WidgetConfigurationType! +} + +type FieldRichTextConfiguration { + configurationType: WidgetConfigurationType! +} + +type FieldsConfiguration { + configurationType: WidgetConfigurationType! + viewId: String + newFieldDefaultConfiguration: NewFieldDefaultConfiguration +} + +type FilesConfiguration { + configurationType: WidgetConfigurationType! +} + +type NotesConfiguration { + configurationType: WidgetConfigurationType! +} + +type TasksConfiguration { + configurationType: WidgetConfigurationType! +} + +type TimelineConfiguration { + configurationType: WidgetConfigurationType! +} + +type ViewConfiguration { + configurationType: WidgetConfigurationType! +} + +type WorkflowConfiguration { + configurationType: WidgetConfigurationType! +} + +type WorkflowRunConfiguration { + configurationType: WidgetConfigurationType! +} + +type WorkflowVersionConfiguration { + configurationType: WidgetConfigurationType! +} + +type PageLayoutTab { + id: UUID! + applicationId: UUID! + title: String! + position: Float! + pageLayoutId: UUID! + widgets: [PageLayoutWidget!] + icon: String + layoutMode: PageLayoutTabLayoutMode + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +type PageLayout { + id: UUID! + name: String! + type: PageLayoutType! + objectMetadataId: UUID + tabs: [PageLayoutTab!] + defaultTabToFocusOnMobileAndSidePanelId: UUID + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +enum PageLayoutType { + RECORD_INDEX + RECORD_PAGE + DASHBOARD +} + +type ObjectRecordEventProperties { + updatedFields: [String!] + before: JSON + after: JSON + diff: JSON +} + +type MetadataEvent { + type: MetadataEventAction! + metadataName: String! + recordId: String! + properties: ObjectRecordEventProperties! +} + +"""Metadata Event Action""" +enum MetadataEventAction { + CREATED + UPDATED + DELETED +} + +type ObjectRecordEvent { + action: DatabaseEventAction! + objectNameSingular: String! + recordId: String! + userId: String + workspaceMemberId: String + properties: ObjectRecordEventProperties! +} + +"""Database Event Action""" +enum DatabaseEventAction { + CREATED + UPDATED + DELETED + DESTROYED + RESTORED + UPSERTED +} + +type ObjectRecordEventWithQueryIds { + queryIds: [String!]! + objectRecordEvent: ObjectRecordEvent! +} + +type MetadataEventWithQueryIds { + queryIds: [String!]! + metadataEvent: MetadataEvent! +} + +type EventSubscription { + eventStreamId: String! + objectRecordEventsWithQueryIds: [ObjectRecordEventWithQueryIds!]! + metadataEventsWithQueryIds: [MetadataEventWithQueryIds!]! +} + +type OnDbEvent { + action: DatabaseEventAction! + objectNameSingular: String! + eventDate: DateTime! + record: JSON! + updatedFields: [String!] +} + +type Analytics { + """Boolean that confirms query was dispatched""" + success: Boolean! +} + +type BillingSubscriptionSchedulePhaseItem { + price: String! + quantity: Float +} + +type BillingSubscriptionSchedulePhase { + start_date: Float! + end_date: Float! + items: [BillingSubscriptionSchedulePhaseItem!]! +} + +type BillingProductMetadata { + planKey: BillingPlanKey! + priceUsageBased: BillingUsageType! + productKey: BillingProductKey! +} + +"""The different billing plans available""" +enum BillingPlanKey { + PRO + ENTERPRISE +} + +enum BillingUsageType { + METERED + LICENSED +} + +"""The different billing products available""" +enum BillingProductKey { + BASE_PRODUCT + WORKFLOW_NODE_EXECUTION +} + +type BillingPriceLicensed { + recurringInterval: SubscriptionInterval! + unitAmount: Float! + stripePriceId: String! + priceUsageType: BillingUsageType! +} + +enum SubscriptionInterval { + Month + Year +} + +type BillingPriceTier { + upTo: Float + flatAmount: Float + unitAmount: Float +} + +type BillingPriceMetered { + tiers: [BillingPriceTier!]! + recurringInterval: SubscriptionInterval! + stripePriceId: String! + priceUsageType: BillingUsageType! +} + +type BillingProduct { + name: String! + description: String! + images: [String!] + metadata: BillingProductMetadata! +} + +type BillingLicensedProduct implements BillingProductDTO { + name: String! + description: String! + images: [String!] + metadata: BillingProductMetadata! + prices: [BillingPriceLicensed!] +} + +type BillingMeteredProduct implements BillingProductDTO { + name: String! + description: String! + images: [String!] + metadata: BillingProductMetadata! + prices: [BillingPriceMetered!] +} + +type BillingSubscriptionItem { + id: UUID! + hasReachedCurrentPeriodCap: Boolean! + quantity: Float + stripePriceId: String! + billingProduct: BillingProductDTO! +} + +type BillingSubscription { + id: UUID! + status: SubscriptionStatus! + interval: SubscriptionInterval + billingSubscriptionItems: [BillingSubscriptionItem!] + currentPeriodEnd: DateTime + metadata: JSON! + phases: [BillingSubscriptionSchedulePhase!]! +} + +enum SubscriptionStatus { + Active + Canceled + Incomplete + IncompleteExpired + PastDue + Paused + Trialing + Unpaid +} + +type BillingEndTrialPeriod { + """Updated subscription status""" + status: SubscriptionStatus + + """Boolean that confirms if a payment method was found""" + hasPaymentMethod: Boolean! + + """ + Billing portal URL for payment method update (returned when no payment method exists) + """ + billingPortalUrl: String +} + +type BillingMeteredProductUsage { + productKey: BillingProductKey! + periodStart: DateTime! + periodEnd: DateTime! + usedCredits: Float! + grantedCredits: Float! + rolloverCredits: Float! + totalGrantedCredits: Float! + unitPriceCents: Float! +} + +type BillingPlan { + planKey: BillingPlanKey! + licensedProducts: [BillingLicensedProduct!]! + meteredProducts: [BillingMeteredProduct!]! +} + +type BillingSession { + url: String +} + +type BillingUpdate { + """Current billing subscription""" + currentBillingSubscription: BillingSubscription! + + """All billing subscriptions""" + billingSubscriptions: [BillingSubscription!]! +} + +type OnboardingStepSuccess { + """Boolean that confirms query was dispatched""" + success: Boolean! +} + +type ApprovedAccessDomain { + id: UUID! + domain: String! + isValidated: Boolean! + createdAt: DateTime! +} + +type FileWithSignedUrl { + id: UUID! + path: String! + size: Float! + createdAt: DateTime! + url: String! +} + +type WorkspaceInvitation { + id: UUID! + email: String! + roleId: UUID + expiresAt: DateTime! +} + +type SendInvitations { + """Boolean that confirms query was dispatched""" + success: Boolean! + errors: [String!]! + result: [WorkspaceInvitation!]! +} + +type ResendEmailVerificationToken { + success: Boolean! +} + +type WorkspaceUrls { + customUrl: String + subdomainUrl: String! +} + +type SSOConnection { + type: IdentityProviderType! + id: UUID! + issuer: String! + name: String! + status: SSOIdentityProviderStatus! +} + +enum IdentityProviderType { + OIDC + SAML +} + +enum SSOIdentityProviderStatus { + Active + Inactive + Error +} + +type AvailableWorkspace { + id: UUID! + displayName: String + loginToken: String + personalInviteToken: String + inviteHash: String + workspaceUrls: WorkspaceUrls! + logo: String + sso: [SSOConnection!]! +} + +type AvailableWorkspaces { + availableWorkspacesForSignIn: [AvailableWorkspace!]! + availableWorkspacesForSignUp: [AvailableWorkspace!]! +} + +type DeletedWorkspaceMember { + id: UUID! + name: FullName! + userEmail: String! + avatarUrl: String + userWorkspaceId: UUID +} + +type BillingEntitlement { + key: BillingEntitlementKey! + value: Boolean! +} + +enum BillingEntitlementKey { + SSO + CUSTOM_DOMAIN + RLS + AUDIT_LOGS +} + +type DomainRecord { + validationType: String! + type: String! + status: String! + key: String! + value: String! +} + +type DomainValidRecords { + id: UUID! + domain: String! + records: [DomainRecord!]! +} + +type FeatureFlag { + key: FeatureFlagKey! + value: Boolean! +} + +enum FeatureFlagKey { + IS_UNIQUE_INDEXES_ENABLED + IS_JSON_FILTER_ENABLED + IS_AI_ENABLED + IS_APPLICATION_ENABLED + IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED + IS_MARKETPLACE_ENABLED + IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED + IS_PUBLIC_DOMAIN_ENABLED + IS_EMAILING_DOMAIN_ENABLED + IS_DASHBOARD_V2_ENABLED + IS_ATTACHMENT_MIGRATED + IS_NOTE_TARGET_MIGRATED + IS_TASK_TARGET_MIGRATED + IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED + IS_JUNCTION_RELATIONS_ENABLED + IS_COMMAND_MENU_ITEM_ENABLED + IS_NAVIGATION_MENU_ITEM_ENABLED + IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED + IS_NAVIGATION_MENU_ITEM_EDITING_ENABLED + IS_DRAFT_EMAIL_ENABLED +} + +type SSOIdentityProvider { + id: UUID! + name: String! + type: IdentityProviderType! + status: SSOIdentityProviderStatus! + issuer: String! +} + +type AuthProviders { + sso: [SSOIdentityProvider!]! + google: Boolean! + magicLink: Boolean! + password: Boolean! + microsoft: Boolean! +} + +type AuthBypassProviders { + google: Boolean! + password: Boolean! + microsoft: Boolean! +} + +type PublicWorkspaceData { + id: UUID! + authProviders: AuthProviders! + authBypassProviders: AuthBypassProviders + logo: String + displayName: String + workspaceUrls: WorkspaceUrls! +} + +type IndexEdge { + """The node containing the Index""" + node: Index! + + """Cursor for this node.""" + cursor: ConnectionCursor! +} + +type PageInfo { + """true if paging forward and there are more records.""" + hasNextPage: Boolean + + """true if paging backwards and there are more records.""" + hasPreviousPage: Boolean + + """The cursor of the first returned record.""" + startCursor: ConnectionCursor + + """The cursor of the last returned record.""" + endCursor: ConnectionCursor +} + +type IndexConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [IndexEdge!]! +} + +type IndexFieldEdge { + """The node containing the IndexField""" + node: IndexField! + + """Cursor for this node.""" + cursor: ConnectionCursor! +} + +type IndexIndexFieldMetadatasConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [IndexFieldEdge!]! +} + +type ObjectEdge { + """The node containing the Object""" + node: Object! + + """Cursor for this node.""" + cursor: ConnectionCursor! +} + +type IndexObjectMetadataConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [ObjectEdge!]! +} + +type ObjectRecordCount { + objectNamePlural: String! + totalCount: Int! +} + +type ObjectConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [ObjectEdge!]! +} + +type ObjectIndexMetadatasConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [IndexEdge!]! +} + +type FieldEdge { + """The node containing the Field""" + node: Field! + + """Cursor for this node.""" + cursor: ConnectionCursor! +} + +type ObjectFieldsConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [FieldEdge!]! +} + +type UpsertRowLevelPermissionPredicatesResult { + predicates: [RowLevelPermissionPredicate!]! + predicateGroups: [RowLevelPermissionPredicateGroup!]! +} + +type Relation { + type: RelationType! + sourceObjectMetadata: Object! + targetObjectMetadata: Object! + sourceFieldMetadata: Field! + targetFieldMetadata: Field! +} + +"""Relation type""" +enum RelationType { + ONE_TO_MANY + MANY_TO_ONE +} + +type FieldConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [FieldEdge!]! +} + +type VersionDistributionEntry { + version: String! + count: Int! +} + +type ApplicationRegistrationStats { + activeInstalls: Int! + mostInstalledVersion: String + versionDistribution: [VersionDistributionEntry!]! +} + +type CreateApplicationRegistration { + applicationRegistration: ApplicationRegistration! + clientSecret: String! +} + +type PublicApplicationRegistration { + id: UUID! + name: String! + logoUrl: String + websiteUrl: String + oAuthScopes: [String!]! +} + +type RotateClientSecret { + clientSecret: String! +} + +type DeleteSso { + identityProviderId: UUID! +} + +type EditSso { + id: UUID! + type: IdentityProviderType! + issuer: String! + name: String! + status: SSOIdentityProviderStatus! +} + +type WorkspaceNameAndId { + displayName: String + id: UUID! +} + +type FindAvailableSSOIDP { + type: IdentityProviderType! + id: UUID! + issuer: String! + name: String! + status: SSOIdentityProviderStatus! + workspace: WorkspaceNameAndId! +} + +type SetupSso { + id: UUID! + type: IdentityProviderType! + issuer: String! + name: String! + status: SSOIdentityProviderStatus! +} + +type DeleteTwoFactorAuthenticationMethod { + """Boolean that confirms query was dispatched""" + success: Boolean! +} + +type InitiateTwoFactorAuthenticationProvisioning { + uri: String! +} + +type VerifyTwoFactorAuthenticationMethod { + success: Boolean! +} + +type AuthorizeApp { + redirectUrl: String! +} + +type AuthToken { + token: String! + expiresAt: DateTime! +} + +type AuthTokenPair { + accessOrWorkspaceAgnosticToken: AuthToken! + refreshToken: AuthToken! +} + +type AvailableWorkspacesAndAccessTokens { + tokens: AuthTokenPair! + availableWorkspaces: AvailableWorkspaces! +} + +type EmailPasswordResetLink { + """Boolean that confirms query was dispatched""" + success: Boolean! +} + +type GetAuthorizationUrlForSSO { + authorizationURL: String! + type: String! + id: UUID! +} + +type InvalidatePassword { + """Boolean that confirms query was dispatched""" + success: Boolean! +} + +type WorkspaceUrlsAndId { + workspaceUrls: WorkspaceUrls! + id: UUID! +} + +type SignUp { + loginToken: AuthToken! + workspace: WorkspaceUrlsAndId! +} + +type TransientToken { + transientToken: AuthToken! +} + +type ValidatePasswordResetToken { + id: UUID! + email: String! + hasPassword: Boolean! +} + +type VerifyEmailAndGetLoginToken { + loginToken: AuthToken! + workspaceUrls: WorkspaceUrls! +} + +type ApiKeyToken { + token: String! +} + +type AuthTokens { + tokens: AuthTokenPair! +} + +type LoginToken { + loginToken: AuthToken! +} + +type CheckUserExist { + exists: Boolean! + availableWorkspacesCount: Float! + isEmailVerified: Boolean! +} + +type WorkspaceInviteHashValid { + isValid: Boolean! +} + +type RecordIdentifier { + id: UUID! + labelIdentifier: String! + imageIdentifier: String +} + +type NavigationMenuItem { + id: UUID! + userWorkspaceId: UUID + targetRecordId: UUID + targetObjectMetadataId: UUID + viewId: UUID + name: String + link: String + icon: String + color: String + folderId: UUID + position: Float! + applicationId: UUID + createdAt: DateTime! + updatedAt: DateTime! + targetRecordIdentifier: RecordIdentifier +} + +type LogicFunctionExecutionResult { + """Execution result in JSON format""" + data: JSON + + """Execution Logs""" + logs: String! + + """Execution duration in milliseconds""" + duration: Float! + + """Execution status""" + status: LogicFunctionExecutionStatus! + + """Execution error in JSON format""" + error: JSON +} + +"""Status of the logic function execution""" +enum LogicFunctionExecutionStatus { + IDLE + SUCCESS + ERROR +} + +type LogicFunctionLogs { + """Execution Logs""" + logs: String! +} + +type ToolIndexEntry { + name: String! + description: String! + category: String! + objectName: String + inputSchema: JSON +} + +type AgentMessagePart { + id: UUID! + messageId: UUID! + orderIndex: Int! + type: String! + textContent: String + reasoningContent: String + toolName: String + toolCallId: String + toolInput: JSON + toolOutput: JSON + state: String + errorMessage: String + errorDetails: JSON + sourceUrlSourceId: String + sourceUrlUrl: String + sourceUrlTitle: String + sourceDocumentSourceId: String + sourceDocumentMediaType: String + sourceDocumentTitle: String + sourceDocumentFilename: String + fileMediaType: String + fileFilename: String + fileId: UUID + fileUrl: String + providerMetadata: JSON + createdAt: DateTime! +} + +type Skill { + id: UUID! + name: String! + label: String! + icon: String + description: String + content: String! + isCustom: Boolean! + isActive: Boolean! + applicationId: UUID + createdAt: DateTime! + updatedAt: DateTime! +} + +type ApplicationTokenPair { + applicationAccessToken: AuthToken! + applicationRefreshToken: AuthToken! +} + +type FrontComponent { + id: UUID! + name: String! + description: String + sourceComponentPath: String! + builtComponentPath: String! + componentName: String! + builtComponentChecksum: String! + universalIdentifier: UUID + applicationId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + isHeadless: Boolean! + applicationTokenPair: ApplicationTokenPair +} + +type CommandMenuItem { + id: UUID! + workflowVersionId: UUID + frontComponentId: UUID + frontComponent: FrontComponent + label: String! + icon: String + shortLabel: String + position: Float! + isPinned: Boolean! + availabilityType: CommandMenuItemAvailabilityType! + conditionalAvailabilityExpression: String + availabilityObjectMetadataId: UUID + applicationId: UUID + createdAt: DateTime! + updatedAt: DateTime! +} + +enum CommandMenuItemAvailabilityType { + GLOBAL + RECORD_SELECTION +} + +type AgentChatThread { + id: UUID! + title: String + totalInputTokens: Int! + totalOutputTokens: Int! + contextWindowTokens: Int + conversationSize: Int! + totalInputCredits: Float! + totalOutputCredits: Float! + createdAt: DateTime! + updatedAt: DateTime! +} + +type AgentMessage { + id: UUID! + threadId: UUID! + turnId: UUID! + agentId: UUID + role: String! + parts: [AgentMessagePart!]! + createdAt: DateTime! +} + +type AISystemPromptSection { + title: String! + content: String! + estimatedTokenCount: Int! +} + +type AISystemPromptPreview { + sections: [AISystemPromptSection!]! + estimatedTokenCount: Int! +} + +type AgentChatThreadEdge { + """The node containing the AgentChatThread""" + node: AgentChatThread! + + """Cursor for this node.""" + cursor: ConnectionCursor! +} + +type AgentChatThreadConnection { + """Paging information""" + pageInfo: PageInfo! + + """Array of edges.""" + edges: [AgentChatThreadEdge!]! +} + +type AgentTurnEvaluation { + id: UUID! + turnId: UUID! + score: Int! + comment: String + createdAt: DateTime! +} + +type AgentTurn { + id: UUID! + threadId: UUID! + agentId: UUID + evaluations: [AgentTurnEvaluation!]! + messages: [AgentMessage!]! + createdAt: DateTime! +} + +type Webhook { + id: UUID! + targetUrl: String! + operations: [String!]! + description: String + secret: String! + applicationId: UUID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} + +type BillingTrialPeriod { + duration: Float! + isCreditCardRequired: Boolean! +} + +type NativeModelCapabilities { + webSearch: Boolean + twitterSearch: Boolean +} + +type ClientAIModelConfig { + modelId: String! + label: String! + modelFamily: ModelFamily + inferenceProvider: InferenceProvider! + inputCostPerMillionTokensInCredits: Float! + outputCostPerMillionTokensInCredits: Float! + nativeCapabilities: NativeModelCapabilities + deprecated: Boolean + isRecommended: Boolean +} + +enum ModelFamily { + OPENAI + ANTHROPIC + GOOGLE + MISTRAL + XAI +} + +enum InferenceProvider { + NONE + OPENAI + ANTHROPIC + BEDROCK + GOOGLE + MISTRAL + OPENAI_COMPATIBLE + XAI + GROQ +} + +type AdminAIModelConfig { + modelId: String! + label: String! + modelFamily: ModelFamily + inferenceProvider: InferenceProvider! + isAvailable: Boolean! + isAdminEnabled: Boolean! + deprecated: Boolean + isRecommended: Boolean +} + +type AdminAIModels { + autoEnableNewModels: Boolean! + models: [AdminAIModelConfig!]! +} + +type Billing { + isBillingEnabled: Boolean! + billingUrl: String + trialPeriods: [BillingTrialPeriod!]! +} + +type Support { + supportDriver: SupportDriver! + supportFrontChatId: String +} + +enum SupportDriver { + NONE + FRONT +} + +type Sentry { + environment: String + release: String + dsn: String +} + +type Captcha { + provider: CaptchaDriverType + siteKey: String +} + +enum CaptchaDriverType { + GOOGLE_RECAPTCHA + TURNSTILE +} + +type ApiConfig { + mutationMaximumAffectedRecords: Float! +} + +type PublicFeatureFlagMetadata { + label: String! + description: String! + imagePath: String +} + +type PublicFeatureFlag { + key: FeatureFlagKey! + metadata: PublicFeatureFlagMetadata! +} + +type ClientConfig { + appVersion: String + authProviders: AuthProviders! + billing: Billing! + aiModels: [ClientAIModelConfig!]! + signInPrefilled: Boolean! + isMultiWorkspaceEnabled: Boolean! + isEmailVerificationRequired: Boolean! + defaultSubdomain: String + frontDomain: String! + analyticsEnabled: Boolean! + support: Support! + isAttachmentPreviewEnabled: Boolean! + sentry: Sentry! + captcha: Captcha! + chromeExtensionId: String + api: ApiConfig! + canManageFeatureFlags: Boolean! + publicFeatureFlags: [PublicFeatureFlag!]! + isMicrosoftMessagingEnabled: Boolean! + isMicrosoftCalendarEnabled: Boolean! + isGoogleMessagingEnabled: Boolean! + isGoogleCalendarEnabled: Boolean! + isConfigVariablesInDbEnabled: Boolean! + isImapSmtpCaldavEnabled: Boolean! + allowRequestsToTwentyIcons: Boolean! + calendarBookingPageId: String + isCloudflareIntegrationEnabled: Boolean! + isClickHouseConfigured: Boolean! +} + +type ConfigVariable { + name: String! + description: String! + value: JSON + isSensitive: Boolean! + source: ConfigSource! + isEnvOnly: Boolean! + type: ConfigVariableType! + options: JSON +} + +enum ConfigSource { + ENVIRONMENT + DATABASE + DEFAULT +} + +enum ConfigVariableType { + BOOLEAN + NUMBER + ARRAY + STRING + ENUM +} + +type ConfigVariablesGroupData { + variables: [ConfigVariable!]! + name: ConfigVariablesGroup! + description: String! + isHiddenOnLoad: Boolean! +} + +enum ConfigVariablesGroup { + SERVER_CONFIG + RATE_LIMITING + STORAGE_CONFIG + GOOGLE_AUTH + MICROSOFT_AUTH + EMAIL_SETTINGS + LOGGING + METERING + EXCEPTION_HANDLER + OTHER + BILLING_CONFIG + CAPTCHA_CONFIG + CLOUDFLARE_CONFIG + LLM + LOGIC_FUNCTION_CONFIG + CODE_INTERPRETER_CONFIG + SSL + SUPPORT_CHAT_CONFIG + ANALYTICS_CONFIG + TOKENS_DURATION + TWO_FACTOR_AUTHENTICATION + AWS_SES_SETTINGS +} + +type ConfigVariables { + groups: [ConfigVariablesGroupData!]! +} + +type JobOperationResult { + jobId: String! + success: Boolean! + error: String +} + +type DeleteJobsResponse { + deletedCount: Int! + results: [JobOperationResult!]! +} + +type QueueJob { + id: String! + name: String! + data: JSON + state: JobState! + timestamp: Float + failedReason: String + processedOn: Float + finishedOn: Float + attemptsMade: Float! + returnValue: JSON + logs: [String!] + stackTrace: [String!] +} + +"""Job state in the queue""" +enum JobState { + COMPLETED + FAILED + ACTIVE + WAITING + DELAYED + PRIORITIZED + WAITING_CHILDREN +} + +type QueueRetentionConfig { + completedMaxAge: Float! + completedMaxCount: Float! + failedMaxAge: Float! + failedMaxCount: Float! +} + +type QueueJobsResponse { + jobs: [QueueJob!]! + count: Float! + totalCount: Float! + hasMore: Boolean! + retentionConfig: QueueRetentionConfig! +} + +type RetryJobsResponse { + retriedCount: Int! + results: [JobOperationResult!]! +} + +type SystemHealthService { + id: HealthIndicatorId! + label: String! + status: AdminPanelHealthServiceStatus! +} + +enum HealthIndicatorId { + database + redis + worker + connectedAccount + app +} + +enum AdminPanelHealthServiceStatus { + OPERATIONAL + OUTAGE +} + +type SystemHealth { + services: [SystemHealthService!]! +} + +type UserInfo { + id: UUID! + email: String! + firstName: String + lastName: String +} + +type WorkspaceInfo { + id: UUID! + name: String! + allowImpersonation: Boolean! + logo: String + totalUsers: Float! + workspaceUrls: WorkspaceUrls! + users: [UserInfo!]! + featureFlags: [FeatureFlag!]! +} + +type UserLookup { + user: UserInfo! + workspaces: [WorkspaceInfo!]! +} + +type VersionInfo { + currentVersion: String + latestVersion: String! +} + +type AdminPanelWorkerQueueHealth { + id: String! + queueName: String! + status: AdminPanelHealthServiceStatus! +} + +type AdminPanelHealthServiceData { + id: HealthIndicatorId! + label: String! + description: String! + status: AdminPanelHealthServiceStatus! + errorMessage: String + details: String + queues: [AdminPanelWorkerQueueHealth!] +} + +type QueueMetricsDataPoint { + x: Float! + y: Float! +} + +type QueueMetricsSeries { + id: String! + data: [QueueMetricsDataPoint!]! +} + +type WorkerQueueMetrics { + failed: Float! + completed: Float! + waiting: Float! + active: Float! + delayed: Float! + failureRate: Float! + failedData: [Float!] + completedData: [Float!] +} + +type QueueMetricsData { + queueName: String! + workers: Float! + timeRange: QueueMetricsTimeRange! + details: WorkerQueueMetrics + data: [QueueMetricsSeries!]! +} + +enum QueueMetricsTimeRange { + SevenDays + OneDay + TwelveHours + FourHours + OneHour +} + +type Impersonate { + loginToken: AuthToken! + workspace: WorkspaceUrlsAndId! +} + +type DevelopmentApplication { + id: String! + universalIdentifier: String! +} + +type WorkspaceMigration { + applicationUniversalIdentifier: String! + actions: JSON! +} + +type File { + id: UUID! + path: String! + size: Float! + createdAt: DateTime! +} + +type MarketplaceAppField { + name: String! + type: String! + label: String! + description: String + icon: String + objectUniversalIdentifier: String + universalIdentifier: String +} + +type MarketplaceAppObject { + universalIdentifier: String! + nameSingular: String! + namePlural: String! + labelSingular: String! + labelPlural: String! + description: String + icon: String + fields: [MarketplaceAppField!]! +} + +type MarketplaceAppLogicFunction { + name: String! + description: String + timeoutSeconds: Int +} + +type MarketplaceAppFrontComponent { + name: String! + description: String +} + +type MarketplaceAppRoleObjectPermission { + objectUniversalIdentifier: String! + canReadObjectRecords: Boolean + canUpdateObjectRecords: Boolean + canSoftDeleteObjectRecords: Boolean + canDestroyObjectRecords: Boolean +} + +type MarketplaceAppRoleFieldPermission { + objectUniversalIdentifier: String! + fieldUniversalIdentifier: String! + canReadFieldValue: Boolean + canUpdateFieldValue: Boolean +} + +type MarketplaceAppDefaultRole { + id: String! + label: String! + description: String + canReadAllObjectRecords: Boolean! + canUpdateAllObjectRecords: Boolean! + canSoftDeleteAllObjectRecords: Boolean! + canDestroyAllObjectRecords: Boolean! + canUpdateAllSettings: Boolean! + canAccessAllTools: Boolean! + objectPermissions: [MarketplaceAppRoleObjectPermission!]! + fieldPermissions: [MarketplaceAppRoleFieldPermission!]! + permissionFlags: [String!]! +} + +type MarketplaceApp { + id: String! + name: String! + description: String! + icon: String! + version: String! + author: String! + category: String! + logo: String + screenshots: [String!]! + aboutDescription: String! + providers: [String!]! + websiteUrl: String + termsUrl: String + objects: [MarketplaceAppObject!]! + fields: [MarketplaceAppField!]! + logicFunctions: [MarketplaceAppLogicFunction!]! + frontComponents: [MarketplaceAppFrontComponent!]! + defaultRole: MarketplaceAppDefaultRole + sourcePackage: String + isFeatured: Boolean! +} + +type PublicDomain { + id: UUID! + domain: String! + isValidated: Boolean! + createdAt: DateTime! +} + +type VerificationRecord { + type: String! + key: String! + value: String! + priority: Float +} + +type EmailingDomain { + id: UUID! + createdAt: DateTime! + updatedAt: DateTime! + domain: String! + driver: EmailingDomainDriver! + status: EmailingDomainStatus! + verificationRecords: [VerificationRecord!] + verifiedAt: DateTime +} + +enum EmailingDomainDriver { + AWS_SES +} + +enum EmailingDomainStatus { + PENDING + VERIFIED + FAILED + TEMPORARY_FAILURE +} + +type AutocompleteResult { + text: String! + placeId: String! +} + +type Location { + lat: Float + lng: Float +} + +type PlaceDetailsResult { + state: String + postcode: String + city: String + country: String + location: Location +} + +type ConnectionParametersOutput { + host: String! + port: Float! + username: String + password: String! + secure: Boolean +} + +type ImapSmtpCaldavConnectionParameters { + IMAP: ConnectionParametersOutput + SMTP: ConnectionParametersOutput + CALDAV: ConnectionParametersOutput +} + +type ConnectedImapSmtpCaldavAccount { + id: UUID! + handle: String! + provider: String! + accountOwnerId: UUID! + connectionParameters: ImapSmtpCaldavConnectionParameters +} + +type ImapSmtpCaldavConnectionSuccess { + success: Boolean! + connectedAccountId: String! +} + +type PostgresCredentials { + id: UUID! + user: String! + password: String! + workspaceId: UUID! +} + +type ChannelSyncSuccess { + success: Boolean! +} + +type BarChartSeries { + key: String! + label: String! +} + +type BarChartData { + data: [JSON!]! + indexBy: String! + keys: [String!]! + series: [BarChartSeries!]! + xAxisLabel: String! + yAxisLabel: String! + showLegend: Boolean! + showDataLabels: Boolean! + layout: BarChartLayout! + groupMode: BarChartGroupMode! + hasTooManyGroups: Boolean! + formattedToRawLookup: JSON! +} + +type LineChartDataPoint { + x: String! + y: Float! +} + +type LineChartSeries { + id: String! + label: String! + data: [LineChartDataPoint!]! +} + +type LineChartData { + series: [LineChartSeries!]! + xAxisLabel: String! + yAxisLabel: String! + showLegend: Boolean! + showDataLabels: Boolean! + hasTooManyGroups: Boolean! + formattedToRawLookup: JSON! +} + +type PieChartDataItem { + id: String! + value: Float! +} + +type PieChartData { + data: [PieChartDataItem!]! + showLegend: Boolean! + showDataLabels: Boolean! + showCenterMetric: Boolean! + hasTooManyGroups: Boolean! + formattedToRawLookup: JSON! +} + +type DuplicatedDashboard { + id: UUID! + title: String + pageLayoutId: UUID + position: Float! + createdAt: String! + updatedAt: String! +} + +type EventLogRecord { + event: String! + timestamp: DateTime! + userId: String + properties: JSON + recordId: String + objectMetadataId: String + isCustom: Boolean +} + +type EventLogPageInfo { + endCursor: String + hasNextPage: Boolean! +} + +type EventLogQueryResult { + records: [EventLogRecord!]! + totalCount: Int! + pageInfo: EventLogPageInfo! +} + +type Query { + getPageLayoutWidgets(pageLayoutTabId: String!): [PageLayoutWidget!]! + getPageLayoutWidget(id: String!): PageLayoutWidget! + getPageLayoutTabs(pageLayoutId: String!): [PageLayoutTab!]! + getPageLayoutTab(id: String!): PageLayoutTab! + getPageLayouts(objectMetadataId: String, pageLayoutType: PageLayoutType): [PageLayout!]! + getPageLayout(id: String!): PageLayout + findOneLogicFunction(input: LogicFunctionIdInput!): LogicFunction! + findManyLogicFunctions: [LogicFunction!]! + getAvailablePackages(input: LogicFunctionIdInput!): JSON! + getLogicFunctionSourceCode(input: LogicFunctionIdInput!): String + objectRecordCounts: [ObjectRecordCount!]! + object( + """The id of the record to find.""" + id: UUID! + ): Object! + objects( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: ObjectFilter! = {} + ): ObjectConnection! + getCoreViewFields(viewId: String!): [CoreViewField!]! + getCoreViewField(id: String!): CoreViewField + getCoreViews(objectMetadataId: String, viewTypes: [ViewType!]): [CoreView!]! + getCoreView(id: String!): CoreView + getCoreViewSorts(viewId: String): [CoreViewSort!]! + getCoreViewSort(id: String!): CoreViewSort + getCoreViewGroups(viewId: String): [CoreViewGroup!]! + getCoreViewGroup(id: String!): CoreViewGroup + getCoreViewFilterGroups(viewId: String): [CoreViewFilterGroup!]! + getCoreViewFilterGroup(id: String!): CoreViewFilterGroup + getCoreViewFilters(viewId: String): [CoreViewFilter!]! + getCoreViewFilter(id: String!): CoreViewFilter + getCoreViewFieldGroups(viewId: String!): [CoreViewFieldGroup!]! + getCoreViewFieldGroup(id: String!): CoreViewFieldGroup + index( + """The id of the record to find.""" + id: UUID! + ): Index! + indexMetadatas( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: IndexFilter! = {} + ): IndexConnection! + commandMenuItems: [CommandMenuItem!]! + commandMenuItem(id: UUID!): CommandMenuItem + frontComponents: [FrontComponent!]! + frontComponent(id: UUID!): FrontComponent + findManyAgents: [Agent!]! + findOneAgent(input: AgentIdInput!): Agent! + billingPortalSession(returnUrlPath: String): BillingSession! + listPlans: [BillingPlan!]! + getMeteredProductsUsage: [BillingMeteredProductUsage!]! + navigationMenuItems: [NavigationMenuItem!]! + navigationMenuItem(id: UUID!): NavigationMenuItem + apiKeys: [ApiKey!]! + apiKey(input: GetApiKeyInput!): ApiKey + getRoles: [Role!]! + findWorkspaceInvitations: [WorkspaceInvitation!]! + getApprovedAccessDomains: [ApprovedAccessDomain!]! + getToolIndex: [ToolIndexEntry!]! + getToolInputSchema(toolName: String!): JSON + field( + """The id of the record to find.""" + id: UUID! + ): Field! + fields( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: FieldFilter! = {} + ): FieldConnection! + currentUser: User! + currentWorkspace: Workspace! + getPublicWorkspaceDataByDomain(origin: String): PublicWorkspaceData! + checkUserExists(email: String!, captchaToken: String): CheckUserExist! + checkWorkspaceInviteHashIsValid(inviteHash: String!): WorkspaceInviteHashValid! + findWorkspaceFromInviteHash(inviteHash: String!): Workspace! + validatePasswordResetToken(passwordResetToken: String!): ValidatePasswordResetToken! + findApplicationRegistrationByClientId(clientId: String!): PublicApplicationRegistration + findApplicationRegistrationByUniversalIdentifier(universalIdentifier: String!): ApplicationRegistration + findManyApplicationRegistrations: [ApplicationRegistration!]! + findOneApplicationRegistration(id: String!): ApplicationRegistration! + findApplicationRegistrationStats(id: String!): ApplicationRegistrationStats! + findApplicationRegistrationVariables(applicationRegistrationId: String!): [ApplicationRegistrationVariable!]! + applicationRegistrationTarballUrl(id: String!): String + getSSOIdentityProviders: [FindAvailableSSOIDP!]! + webhooks: [Webhook!]! + webhook(id: UUID!): Webhook + chatThread(id: UUID!): AgentChatThread! + chatMessages(threadId: UUID!): [AgentMessage!]! + getAISystemPromptPreview: AISystemPromptPreview! + skills: [Skill!]! + skill(id: UUID!): Skill + chatThreads( + """Limit or page results.""" + paging: CursorPaging! = {first: 10} + + """Specify to filter the records returned.""" + filter: AgentChatThreadFilter! = {} + + """Specify to sort results.""" + sorting: [AgentChatThreadSort!]! = [{field: updatedAt, direction: DESC}] + ): AgentChatThreadConnection! + agentTurns(agentId: UUID!): [AgentTurn!]! + eventLogs(input: EventLogQueryInput!): EventLogQueryResult! + pieChartData(input: PieChartDataInput!): PieChartData! + lineChartData(input: LineChartDataInput!): LineChartData! + barChartData(input: BarChartDataInput!): BarChartData! + getConnectedImapSmtpCaldavAccount(id: UUID!): ConnectedImapSmtpCaldavAccount! + getAutoCompleteAddress(address: String!, token: String!, country: String, isFieldCity: Boolean): [AutocompleteResult!]! + getAddressDetails(placeId: String!, token: String!): PlaceDetailsResult! + getConfigVariablesGrouped: ConfigVariables! + getSystemHealthStatus: SystemHealth! + getIndicatorHealthStatus(indicatorId: HealthIndicatorId!): AdminPanelHealthServiceData! + getQueueMetrics(queueName: String!, timeRange: QueueMetricsTimeRange = OneHour): QueueMetricsData! + versionInfo: VersionInfo! + getAdminAiModels: AdminAIModels! + getDatabaseConfigVariable(key: String!): ConfigVariable! + getQueueJobs(queueName: String!, state: JobState!, limit: Int = 50, offset: Int = 0): QueueJobsResponse! + findAllApplicationRegistrations: [ApplicationRegistration!]! + getPostgresCredentials: PostgresCredentials + findManyPublicDomains: [PublicDomain!]! + getEmailingDomains: [EmailingDomain!]! + findManyMarketplaceApps: [MarketplaceApp!]! + findOneMarketplaceApp(universalIdentifier: String!): MarketplaceApp! + findManyApplications: [Application!]! + findOneApplication(id: UUID, universalIdentifier: UUID): Application! +} + +input LogicFunctionIdInput { + """The id of the function.""" + id: ID! +} + +input AgentIdInput { + """The id of the agent.""" + id: UUID! +} + +input GetApiKeyInput { + id: UUID! +} + +input AgentChatThreadFilter { + and: [AgentChatThreadFilter!] + or: [AgentChatThreadFilter!] + id: UUIDFilterComparison + updatedAt: DateFieldComparison +} + +input DateFieldComparison { + is: Boolean + isNot: Boolean + eq: DateTime + neq: DateTime + gt: DateTime + gte: DateTime + lt: DateTime + lte: DateTime + in: [DateTime!] + notIn: [DateTime!] + between: DateFieldComparisonBetween + notBetween: DateFieldComparisonBetween +} + +input DateFieldComparisonBetween { + lower: DateTime! + upper: DateTime! +} + +input AgentChatThreadSort { + field: AgentChatThreadSortFields! + direction: SortDirection! + nulls: SortNulls +} + +enum AgentChatThreadSortFields { + id + updatedAt +} + +"""Sort Directions""" +enum SortDirection { + ASC + DESC +} + +"""Sort Nulls Options""" +enum SortNulls { + NULLS_FIRST + NULLS_LAST +} + +input EventLogQueryInput { + table: EventLogTable! + filters: EventLogFiltersInput + first: Int = 100 + after: String +} + +enum EventLogTable { + WORKSPACE_EVENT + PAGEVIEW + OBJECT_EVENT +} + +input EventLogFiltersInput { + eventType: String + userWorkspaceId: String + dateRange: EventLogDateRangeInput + recordId: String + objectMetadataId: String +} + +input EventLogDateRangeInput { + start: DateTime + end: DateTime +} + +input PieChartDataInput { + objectMetadataId: UUID! + configuration: JSON! +} + +input LineChartDataInput { + objectMetadataId: UUID! + configuration: JSON! +} + +input BarChartDataInput { + objectMetadataId: UUID! + configuration: JSON! +} + +type Mutation { + addQueryToEventStream(input: AddQuerySubscriptionInput!): Boolean! + removeQueryFromEventStream(input: RemoveQueryFromEventStreamInput!): Boolean! + createObjectEvent(event: String!, recordId: UUID!, objectMetadataId: UUID!, properties: JSON): Analytics! + trackAnalytics(type: AnalyticsType!, name: String, event: String, properties: JSON): Analytics! + createPageLayoutWidget(input: CreatePageLayoutWidgetInput!): PageLayoutWidget! + updatePageLayoutWidget(id: String!, input: UpdatePageLayoutWidgetInput!): PageLayoutWidget! + destroyPageLayoutWidget(id: String!): Boolean! + createPageLayoutTab(input: CreatePageLayoutTabInput!): PageLayoutTab! + updatePageLayoutTab(id: String!, input: UpdatePageLayoutTabInput!): PageLayoutTab! + destroyPageLayoutTab(id: String!): Boolean! + createPageLayout(input: CreatePageLayoutInput!): PageLayout! + updatePageLayout(id: String!, input: UpdatePageLayoutInput!): PageLayout! + destroyPageLayout(id: String!): Boolean! + updatePageLayoutWithTabsAndWidgets(id: String!, input: UpdatePageLayoutWithTabsInput!): PageLayout! + deleteOneLogicFunction(input: LogicFunctionIdInput!): LogicFunction! + createOneLogicFunction(input: CreateLogicFunctionFromSourceInput!): LogicFunction! + executeOneLogicFunction(input: ExecuteOneLogicFunctionInput!): LogicFunctionExecutionResult! + updateOneLogicFunction(input: UpdateLogicFunctionFromSourceInput!): Boolean! + createOneObject(input: CreateOneObjectInput!): Object! + deleteOneObject(input: DeleteOneObjectInput!): Object! + updateOneObject(input: UpdateOneObjectInput!): Object! + updateCoreViewField(input: UpdateViewFieldInput!): CoreViewField! + createCoreViewField(input: CreateViewFieldInput!): CoreViewField! + createManyCoreViewFields(inputs: [CreateViewFieldInput!]!): [CoreViewField!]! + deleteCoreViewField(input: DeleteViewFieldInput!): CoreViewField! + destroyCoreViewField(input: DestroyViewFieldInput!): CoreViewField! + createCoreView(input: CreateViewInput!): CoreView! + updateCoreView(id: String!, input: UpdateViewInput!): CoreView! + deleteCoreView(id: String!): Boolean! + destroyCoreView(id: String!): Boolean! + createCoreViewSort(input: CreateViewSortInput!): CoreViewSort! + updateCoreViewSort(input: UpdateViewSortInput!): CoreViewSort! + deleteCoreViewSort(input: DeleteViewSortInput!): Boolean! + destroyCoreViewSort(input: DestroyViewSortInput!): Boolean! + createCoreViewGroup(input: CreateViewGroupInput!): CoreViewGroup! + createManyCoreViewGroups(inputs: [CreateViewGroupInput!]!): [CoreViewGroup!]! + updateCoreViewGroup(input: UpdateViewGroupInput!): CoreViewGroup! + deleteCoreViewGroup(input: DeleteViewGroupInput!): CoreViewGroup! + destroyCoreViewGroup(input: DestroyViewGroupInput!): CoreViewGroup! + createCoreViewFilterGroup(input: CreateViewFilterGroupInput!): CoreViewFilterGroup! + updateCoreViewFilterGroup(id: String!, input: UpdateViewFilterGroupInput!): CoreViewFilterGroup! + deleteCoreViewFilterGroup(id: String!): Boolean! + destroyCoreViewFilterGroup(id: String!): Boolean! + createCoreViewFilter(input: CreateViewFilterInput!): CoreViewFilter! + updateCoreViewFilter(input: UpdateViewFilterInput!): CoreViewFilter! + deleteCoreViewFilter(input: DeleteViewFilterInput!): CoreViewFilter! + destroyCoreViewFilter(input: DestroyViewFilterInput!): CoreViewFilter! + updateCoreViewFieldGroup(input: UpdateViewFieldGroupInput!): CoreViewFieldGroup! + createCoreViewFieldGroup(input: CreateViewFieldGroupInput!): CoreViewFieldGroup! + createManyCoreViewFieldGroups(inputs: [CreateViewFieldGroupInput!]!): [CoreViewFieldGroup!]! + deleteCoreViewFieldGroup(input: DeleteViewFieldGroupInput!): CoreViewFieldGroup! + destroyCoreViewFieldGroup(input: DestroyViewFieldGroupInput!): CoreViewFieldGroup! + upsertFieldsWidget(input: UpsertFieldsWidgetInput!): CoreView! + createCommandMenuItem(input: CreateCommandMenuItemInput!): CommandMenuItem! + updateCommandMenuItem(input: UpdateCommandMenuItemInput!): CommandMenuItem! + deleteCommandMenuItem(id: UUID!): CommandMenuItem! + createFrontComponent(input: CreateFrontComponentInput!): FrontComponent! + updateFrontComponent(input: UpdateFrontComponentInput!): FrontComponent! + deleteFrontComponent(id: UUID!): FrontComponent! + createOneAgent(input: CreateAgentInput!): Agent! + updateOneAgent(input: UpdateAgentInput!): Agent! + deleteOneAgent(input: AgentIdInput!): Agent! + uploadAIChatFile(file: Upload!): FileWithSignedUrl! + uploadWorkflowFile(file: Upload!): FileWithSignedUrl! + uploadWorkspaceLogo(file: Upload!): FileWithSignedUrl! + uploadWorkspaceMemberProfilePicture(file: Upload!): FileWithSignedUrl! + uploadFilesFieldFile(file: Upload!, fieldMetadataId: String!): FileWithSignedUrl! + uploadFilesFieldFileByUniversalIdentifier(file: Upload!, fieldMetadataUniversalIdentifier: String!): FileWithSignedUrl! + checkoutSession(recurringInterval: SubscriptionInterval!, plan: BillingPlanKey! = PRO, requirePaymentMethod: Boolean! = true, successUrlPath: String): BillingSession! + switchSubscriptionInterval: BillingUpdate! + switchBillingPlan: BillingUpdate! + cancelSwitchBillingPlan: BillingUpdate! + cancelSwitchBillingInterval: BillingUpdate! + setMeteredSubscriptionPrice(priceId: String!): BillingUpdate! + endSubscriptionTrialPeriod: BillingEndTrialPeriod! + cancelSwitchMeteredPrice: BillingUpdate! + createNavigationMenuItem(input: CreateNavigationMenuItemInput!): NavigationMenuItem! + updateNavigationMenuItem(input: UpdateOneNavigationMenuItemInput!): NavigationMenuItem! + deleteNavigationMenuItem(id: UUID!): NavigationMenuItem! + createApiKey(input: CreateApiKeyInput!): ApiKey! + updateApiKey(input: UpdateApiKeyInput!): ApiKey + revokeApiKey(input: RevokeApiKeyInput!): ApiKey + assignRoleToApiKey(apiKeyId: UUID!, roleId: UUID!): Boolean! + updateWorkspaceMemberRole(workspaceMemberId: UUID!, roleId: UUID!): WorkspaceMember! + createOneRole(createRoleInput: CreateRoleInput!): Role! + updateOneRole(updateRoleInput: UpdateRoleInput!): Role! + deleteOneRole(roleId: UUID!): String! + upsertObjectPermissions(upsertObjectPermissionsInput: UpsertObjectPermissionsInput!): [ObjectPermission!]! + upsertPermissionFlags(upsertPermissionFlagsInput: UpsertPermissionFlagsInput!): [PermissionFlag!]! + upsertFieldPermissions(upsertFieldPermissionsInput: UpsertFieldPermissionsInput!): [FieldPermission!]! + upsertRowLevelPermissionPredicates(input: UpsertRowLevelPermissionPredicatesInput!): UpsertRowLevelPermissionPredicatesResult! + assignRoleToAgent(agentId: UUID!, roleId: UUID!): Boolean! + removeRoleFromAgent(agentId: UUID!): Boolean! + skipSyncEmailOnboardingStep: OnboardingStepSuccess! + skipBookOnboardingStep: OnboardingStepSuccess! + deleteWorkspaceInvitation(appTokenId: String!): String! + resendWorkspaceInvitation(appTokenId: String!): SendInvitations! + sendInvitations(emails: [String!]!, roleId: UUID): SendInvitations! + createApprovedAccessDomain(input: CreateApprovedAccessDomainInput!): ApprovedAccessDomain! + deleteApprovedAccessDomain(input: DeleteApprovedAccessDomainInput!): Boolean! + validateApprovedAccessDomain(input: ValidateApprovedAccessDomainInput!): ApprovedAccessDomain! + createOneField(input: CreateOneFieldMetadataInput!): Field! + updateOneField(input: UpdateOneFieldMetadataInput!): Field! + deleteOneField(input: DeleteOneFieldInput!): Field! + deleteUser: User! + deleteUserFromWorkspace(workspaceMemberIdToDelete: String!): UserWorkspace! + updateUserEmail(newEmail: String!, verifyEmailRedirectPath: String): Boolean! + resendEmailVerificationToken(email: String!, origin: String!): ResendEmailVerificationToken! + activateWorkspace(data: ActivateWorkspaceInput!): Workspace! + updateWorkspace(data: UpdateWorkspaceInput!): Workspace! + deleteCurrentWorkspace: Workspace! + checkCustomDomainValidRecords: DomainValidRecords + getAuthorizationUrlForSSO(input: GetAuthorizationUrlForSSOInput!): GetAuthorizationUrlForSSO! + getLoginTokenFromCredentials(email: String!, password: String!, captchaToken: String, locale: String, verifyEmailRedirectPath: String, origin: String!): LoginToken! + signIn(email: String!, password: String!, captchaToken: String, locale: String, verifyEmailRedirectPath: String): AvailableWorkspacesAndAccessTokens! + verifyEmailAndGetLoginToken(emailVerificationToken: String!, email: String!, captchaToken: String, origin: String!): VerifyEmailAndGetLoginToken! + verifyEmailAndGetWorkspaceAgnosticToken(emailVerificationToken: String!, email: String!, captchaToken: String): AvailableWorkspacesAndAccessTokens! + getAuthTokensFromOTP(otp: String!, loginToken: String!, captchaToken: String, origin: String!): AuthTokens! + signUp(email: String!, password: String!, captchaToken: String, locale: String, verifyEmailRedirectPath: String): AvailableWorkspacesAndAccessTokens! + signUpInWorkspace(email: String!, password: String!, workspaceId: UUID, workspaceInviteHash: String, workspacePersonalInviteToken: String, captchaToken: String, locale: String, verifyEmailRedirectPath: String): SignUp! + signUpInNewWorkspace: SignUp! + generateTransientToken: TransientToken! + getAuthTokensFromLoginToken(loginToken: String!, origin: String!): AuthTokens! + authorizeApp(clientId: String!, codeChallenge: String, redirectUrl: String!, state: String, scope: String): AuthorizeApp! + renewToken(appToken: String!): AuthTokens! + generateApiKeyToken(apiKeyId: UUID!, expiresAt: String!): ApiKeyToken! + emailPasswordResetLink(email: String!, workspaceId: UUID): EmailPasswordResetLink! + updatePasswordViaResetToken(passwordResetToken: String!, newPassword: String!): InvalidatePassword! + createApplicationRegistration(input: CreateApplicationRegistrationInput!): CreateApplicationRegistration! + updateApplicationRegistration(input: UpdateApplicationRegistrationInput!): ApplicationRegistration! + deleteApplicationRegistration(id: String!): Boolean! + rotateApplicationRegistrationClientSecret(id: String!): RotateClientSecret! + createApplicationRegistrationVariable(input: CreateApplicationRegistrationVariableInput!): ApplicationRegistrationVariable! + updateApplicationRegistrationVariable(input: UpdateApplicationRegistrationVariableInput!): ApplicationRegistrationVariable! + deleteApplicationRegistrationVariable(id: String!): Boolean! + uploadAppTarball(file: Upload!, universalIdentifier: String): ApplicationRegistration! + transferApplicationRegistrationOwnership(applicationRegistrationId: String!, targetWorkspaceSubdomain: String!): ApplicationRegistration! + initiateOTPProvisioning(loginToken: String!, origin: String!): InitiateTwoFactorAuthenticationProvisioning! + initiateOTPProvisioningForAuthenticatedUser: InitiateTwoFactorAuthenticationProvisioning! + deleteTwoFactorAuthenticationMethod(twoFactorAuthenticationMethodId: UUID!): DeleteTwoFactorAuthenticationMethod! + verifyTwoFactorAuthenticationMethodForAuthenticatedUser(otp: String!): VerifyTwoFactorAuthenticationMethod! + createOIDCIdentityProvider(input: SetupOIDCSsoInput!): SetupSso! + createSAMLIdentityProvider(input: SetupSAMLSsoInput!): SetupSso! + deleteSSOIdentityProvider(input: DeleteSsoInput!): DeleteSso! + editSSOIdentityProvider(input: EditSsoInput!): EditSso! + createWebhook(input: CreateWebhookInput!): Webhook! + updateWebhook(input: UpdateWebhookInput!): Webhook! + deleteWebhook(id: UUID!): Webhook! + createChatThread: AgentChatThread! + createSkill(input: CreateSkillInput!): Skill! + updateSkill(input: UpdateSkillInput!): Skill! + deleteSkill(id: UUID!): Skill! + activateSkill(id: UUID!): Skill! + deactivateSkill(id: UUID!): Skill! + evaluateAgentTurn(turnId: UUID!): AgentTurnEvaluation! + runEvaluationInput(agentId: UUID!, input: String!): AgentTurn! + duplicateDashboard(id: UUID!): DuplicatedDashboard! + impersonate(userId: UUID!, workspaceId: UUID!): Impersonate! + startChannelSync(connectedAccountId: UUID!): ChannelSyncSuccess! + saveImapSmtpCaldavAccount(accountOwnerId: UUID!, handle: String!, connectionParameters: EmailAccountConnectionParameters!, id: UUID): ImapSmtpCaldavConnectionSuccess! + updateLabPublicFeatureFlag(input: UpdateLabPublicFeatureFlagInput!): FeatureFlag! + userLookupAdminPanel(userIdentifier: String!): UserLookup! + updateWorkspaceFeatureFlag(workspaceId: UUID!, featureFlag: String!, value: Boolean!): Boolean! + setAdminAiModelEnabled(modelId: String!, enabled: Boolean!): Boolean! + createDatabaseConfigVariable(key: String!, value: JSON!): Boolean! + updateDatabaseConfigVariable(key: String!, value: JSON!): Boolean! + deleteDatabaseConfigVariable(key: String!): Boolean! + retryJobs(queueName: String!, jobIds: [String!]!): RetryJobsResponse! + deleteJobs(queueName: String!, jobIds: [String!]!): DeleteJobsResponse! + enablePostgresProxy: PostgresCredentials! + disablePostgresProxy: PostgresCredentials! + createPublicDomain(domain: String!): PublicDomain! + deletePublicDomain(domain: String!): Boolean! + checkPublicDomainValidRecords(domain: String!): DomainValidRecords + createEmailingDomain(domain: String!, driver: EmailingDomainDriver!): EmailingDomain! + deleteEmailingDomain(id: String!): Boolean! + verifyEmailingDomain(id: String!): EmailingDomain! + createOneAppToken(input: CreateOneAppTokenInput!): AppToken! + installMarketplaceApp(universalIdentifier: String!, version: String): Boolean! + installApplication(appRegistrationId: String!, version: String): Boolean! + runWorkspaceMigration(workspaceMigration: WorkspaceMigrationInput!): Boolean! + uninstallApplication(universalIdentifier: String!): Boolean! + updateOneApplicationVariable(key: String!, value: String!, applicationId: UUID!): Boolean! + createDevelopmentApplication(universalIdentifier: String!, name: String!): DevelopmentApplication! + generateApplicationToken(applicationId: UUID!): ApplicationTokenPair! + syncApplication(manifest: JSON!): WorkspaceMigration! + uploadApplicationFile(file: Upload!, applicationUniversalIdentifier: String!, fileFolder: FileFolder!, filePath: String!): File! + upgradeApplication(appRegistrationId: String!, targetVersion: String!): Boolean! + renewApplicationToken(applicationRefreshToken: String!): ApplicationTokenPair! +} + +input AddQuerySubscriptionInput { + eventStreamId: String! + queryId: String! + operationSignature: JSON! +} + +input RemoveQueryFromEventStreamInput { + eventStreamId: String! + queryId: String! +} + +enum AnalyticsType { + PAGEVIEW + TRACK +} + +input CreatePageLayoutWidgetInput { + pageLayoutTabId: UUID! + title: String! + type: WidgetType! + objectMetadataId: UUID + gridPosition: GridPositionInput! + position: JSON + configuration: JSON! +} + +input GridPositionInput { + row: Float! + column: Float! + rowSpan: Float! + columnSpan: Float! +} + +input UpdatePageLayoutWidgetInput { + title: String + type: WidgetType + objectMetadataId: UUID + gridPosition: GridPositionInput + position: JSON + configuration: JSON +} + +input CreatePageLayoutTabInput { + title: String! + position: Float + pageLayoutId: UUID! +} + +input UpdatePageLayoutTabInput { + title: String + position: Float +} + +input CreatePageLayoutInput { + name: String! + type: PageLayoutType = RECORD_PAGE + objectMetadataId: UUID +} + +input UpdatePageLayoutInput { + name: String + type: PageLayoutType + objectMetadataId: UUID +} + +input UpdatePageLayoutWithTabsInput { + name: String! + type: PageLayoutType! + objectMetadataId: UUID + tabs: [UpdatePageLayoutTabWithWidgetsInput!]! +} + +input UpdatePageLayoutTabWithWidgetsInput { + id: UUID! + title: String! + position: Float! + widgets: [UpdatePageLayoutWidgetWithIdInput!]! +} + +input UpdatePageLayoutWidgetWithIdInput { + id: UUID! + pageLayoutTabId: UUID! + title: String! + type: WidgetType! + objectMetadataId: UUID + gridPosition: GridPositionInput! + position: JSON + configuration: JSON +} + +input CreateLogicFunctionFromSourceInput { + id: UUID + universalIdentifier: UUID + name: String! + description: String + timeoutSeconds: Float + toolInputSchema: JSON + isTool: Boolean + source: JSON + cronTriggerSettings: JSON + databaseEventTriggerSettings: JSON + httpRouteTriggerSettings: JSON +} + +input ExecuteOneLogicFunctionInput { + """Id of the logic function to execute""" + id: UUID! + + """Payload in JSON format""" + payload: JSON! +} + +input UpdateLogicFunctionFromSourceInput { + """Id of the logic function to update""" + id: UUID! + + """The logic function updates""" + update: UpdateLogicFunctionFromSourceInputUpdates! +} + +input UpdateLogicFunctionFromSourceInputUpdates { + name: String + description: String + timeoutSeconds: Float + sourceHandlerCode: String + toolInputSchema: JSON + handlerName: String + sourceHandlerPath: String + isTool: Boolean + cronTriggerSettings: JSON + databaseEventTriggerSettings: JSON + httpRouteTriggerSettings: JSON +} + +input CreateOneObjectInput { + """The object to create""" + object: CreateObjectInput! +} + +input CreateObjectInput { + nameSingular: String! + namePlural: String! + labelSingular: String! + labelPlural: String! + description: String + icon: String + shortcut: String + skipNameField: Boolean + isRemote: Boolean + primaryKeyColumnType: String + primaryKeyFieldMetadataSettings: JSON + isLabelSyncedWithName: Boolean +} + +input DeleteOneObjectInput { + """The id of the record to delete.""" + id: UUID! +} + +input UpdateOneObjectInput { + update: UpdateObjectPayload! + + """The id of the object to update""" + id: UUID! +} + +input UpdateObjectPayload { + labelSingular: String + labelPlural: String + nameSingular: String + namePlural: String + description: String + icon: String + shortcut: String + isActive: Boolean + labelIdentifierFieldMetadataId: UUID + imageIdentifierFieldMetadataId: UUID + isLabelSyncedWithName: Boolean +} + +input UpdateViewFieldInput { + """The id of the view field to update""" + id: UUID! + + """The view field to update""" + update: UpdateViewFieldInputUpdates! +} + +input UpdateViewFieldInputUpdates { + isVisible: Boolean + size: Float + position: Float + aggregateOperation: AggregateOperations + viewFieldGroupId: UUID +} + +input CreateViewFieldInput { + id: UUID + fieldMetadataId: UUID! + viewId: UUID! + isVisible: Boolean = true + size: Float = 0 + position: Float = 0 + aggregateOperation: AggregateOperations + viewFieldGroupId: UUID +} + +input DeleteViewFieldInput { + """The id of the view field to delete.""" + id: UUID! +} + +input DestroyViewFieldInput { + """The id of the view field to destroy.""" + id: UUID! +} + +input CreateViewInput { + id: UUID + name: String! + objectMetadataId: UUID! + type: ViewType = TABLE + key: ViewKey + icon: String! + position: Float = 0 + isCompact: Boolean = false + shouldHideEmptyGroups: Boolean = false + openRecordIn: ViewOpenRecordIn = SIDE_PANEL + kanbanAggregateOperation: AggregateOperations + kanbanAggregateOperationFieldMetadataId: UUID + anyFieldFilterValue: String + calendarLayout: ViewCalendarLayout + calendarFieldMetadataId: UUID + mainGroupByFieldMetadataId: UUID + visibility: ViewVisibility +} + +input UpdateViewInput { + id: UUID + name: String + type: ViewType + icon: String + position: Float + isCompact: Boolean + openRecordIn: ViewOpenRecordIn + kanbanAggregateOperation: AggregateOperations + kanbanAggregateOperationFieldMetadataId: UUID + anyFieldFilterValue: String + calendarLayout: ViewCalendarLayout + calendarFieldMetadataId: UUID + visibility: ViewVisibility + mainGroupByFieldMetadataId: UUID + shouldHideEmptyGroups: Boolean +} + +input CreateViewSortInput { + id: UUID + fieldMetadataId: UUID! + direction: ViewSortDirection = ASC + viewId: UUID! +} + +input UpdateViewSortInput { + """The id of the view sort to update""" + id: UUID! + + """The view sort to update""" + update: UpdateViewSortInputUpdates! +} + +input UpdateViewSortInputUpdates { + direction: ViewSortDirection +} + +input DeleteViewSortInput { + """The id of the view sort to delete.""" + id: UUID! +} + +input DestroyViewSortInput { + """The id of the view sort to destroy.""" + id: UUID! +} + +input CreateViewGroupInput { + id: UUID + isVisible: Boolean = true + fieldValue: String! + position: Float = 0 + viewId: UUID! +} + +input UpdateViewGroupInput { + """The id of the view group to update""" + id: UUID! + + """The view group to update""" + update: UpdateViewGroupInputUpdates! +} + +input UpdateViewGroupInputUpdates { + fieldMetadataId: UUID + isVisible: Boolean + fieldValue: String + position: Float +} + +input DeleteViewGroupInput { + """The id of the view group to delete.""" + id: UUID! +} + +input DestroyViewGroupInput { + """The id of the view group to destroy.""" + id: UUID! +} + +input CreateViewFilterGroupInput { + id: UUID + parentViewFilterGroupId: UUID + logicalOperator: ViewFilterGroupLogicalOperator = AND + positionInViewFilterGroup: Float + viewId: UUID! +} + +input UpdateViewFilterGroupInput { + id: UUID + parentViewFilterGroupId: UUID + logicalOperator: ViewFilterGroupLogicalOperator = AND + positionInViewFilterGroup: Float + viewId: UUID +} + +input CreateViewFilterInput { + id: UUID + fieldMetadataId: UUID! + operand: ViewFilterOperand = CONTAINS + value: JSON! + viewFilterGroupId: UUID + positionInViewFilterGroup: Float + subFieldName: String + viewId: UUID! +} + +input UpdateViewFilterInput { + """The id of the view filter to update""" + id: UUID! + + """The view filter to update""" + update: UpdateViewFilterInputUpdates! +} + +input UpdateViewFilterInputUpdates { + fieldMetadataId: UUID + operand: ViewFilterOperand + value: JSON + viewFilterGroupId: UUID + positionInViewFilterGroup: Float + subFieldName: String +} + +input DeleteViewFilterInput { + """The id of the view filter to delete.""" + id: UUID! +} + +input DestroyViewFilterInput { + """The id of the view filter to destroy.""" + id: UUID! +} + +input UpdateViewFieldGroupInput { + """The id of the view field group to update""" + id: UUID! + + """The view field group to update""" + update: UpdateViewFieldGroupInputUpdates! +} + +input UpdateViewFieldGroupInputUpdates { + name: String + position: Float + isVisible: Boolean + deletedAt: String +} + +input CreateViewFieldGroupInput { + id: UUID + name: String! + viewId: UUID! + position: Float = 0 + isVisible: Boolean = true +} + +input DeleteViewFieldGroupInput { + """The id of the view field group to delete.""" + id: UUID! +} + +input DestroyViewFieldGroupInput { + """The id of the view field group to destroy.""" + id: UUID! +} + +input UpsertFieldsWidgetInput { + """The id of the fields widget whose groups and fields to upsert""" + widgetId: UUID! + + """ + The groups (with nested fields) to upsert. Mutually exclusive with "fields". + """ + groups: [UpsertFieldsWidgetGroupInput!] + + """ + The ungrouped fields to upsert. When provided, all existing groups are deleted and fields are detached from groups. Mutually exclusive with "groups". + """ + fields: [UpsertFieldsWidgetFieldInput!] +} + +input UpsertFieldsWidgetGroupInput { + id: UUID! + name: String! + position: Float! + isVisible: Boolean! + fields: [UpsertFieldsWidgetFieldInput!]! +} + +input UpsertFieldsWidgetFieldInput { + """The id of the view field""" + viewFieldId: UUID! + isVisible: Boolean! + position: Float! +} + +input CreateCommandMenuItemInput { + workflowVersionId: UUID + frontComponentId: UUID + label: String! + icon: String + shortLabel: String + position: Float + isPinned: Boolean + availabilityType: CommandMenuItemAvailabilityType + conditionalAvailabilityExpression: String + availabilityObjectMetadataId: UUID +} + +input UpdateCommandMenuItemInput { + id: UUID! + label: String + icon: String + shortLabel: String + position: Float + isPinned: Boolean + availabilityType: CommandMenuItemAvailabilityType + availabilityObjectMetadataId: UUID +} + +input CreateFrontComponentInput { + id: UUID + name: String! + description: String + sourceComponentPath: String! + builtComponentPath: String! + componentName: String! + builtComponentChecksum: String! +} + +input UpdateFrontComponentInput { + """The id of the front component to update""" + id: UUID! + + """The front component fields to update""" + update: UpdateFrontComponentInputUpdates! +} + +input UpdateFrontComponentInputUpdates { + name: String + description: String +} + +input CreateAgentInput { + name: String + label: String! + icon: String + description: String + prompt: String! + modelId: String! + roleId: UUID + responseFormat: JSON + modelConfiguration: JSON + evaluationInputs: [String!] +} + +input UpdateAgentInput { + id: UUID! + name: String + label: String + icon: String + description: String + prompt: String + modelId: String + roleId: UUID + responseFormat: JSON + modelConfiguration: JSON + evaluationInputs: [String!] +} + +"""The `Upload` scalar type represents a file upload.""" +scalar Upload + +input CreateNavigationMenuItemInput { + userWorkspaceId: UUID + targetRecordId: UUID + targetObjectMetadataId: UUID + viewId: UUID + name: String + link: String + icon: String + color: String + folderId: UUID + position: Float +} + +input UpdateOneNavigationMenuItemInput { + """The id of the record to update""" + id: UUID! + + """The record to update""" + update: UpdateNavigationMenuItemInput! +} + +input UpdateNavigationMenuItemInput { + folderId: UUID + position: Float + name: String + link: String + icon: String + color: String +} + +input CreateApiKeyInput { + name: String! + expiresAt: String! + revokedAt: String + roleId: UUID! +} + +input UpdateApiKeyInput { + id: UUID! + name: String + expiresAt: String + revokedAt: String +} + +input RevokeApiKeyInput { + id: UUID! +} + +input CreateRoleInput { + id: String + label: String! + description: String + icon: String + canUpdateAllSettings: Boolean + canAccessAllTools: Boolean + canReadAllObjectRecords: Boolean + canUpdateAllObjectRecords: Boolean + canSoftDeleteAllObjectRecords: Boolean + canDestroyAllObjectRecords: Boolean + canBeAssignedToUsers: Boolean + canBeAssignedToAgents: Boolean + canBeAssignedToApiKeys: Boolean +} + +input UpdateRoleInput { + update: UpdateRolePayload! + + """The id of the role to update""" + id: UUID! +} + +input UpdateRolePayload { + label: String + description: String + icon: String + canUpdateAllSettings: Boolean + canAccessAllTools: Boolean + canReadAllObjectRecords: Boolean + canUpdateAllObjectRecords: Boolean + canSoftDeleteAllObjectRecords: Boolean + canDestroyAllObjectRecords: Boolean + canBeAssignedToUsers: Boolean + canBeAssignedToAgents: Boolean + canBeAssignedToApiKeys: Boolean +} + +input UpsertObjectPermissionsInput { + roleId: UUID! + objectPermissions: [ObjectPermissionInput!]! +} + +input ObjectPermissionInput { + objectMetadataId: UUID! + canReadObjectRecords: Boolean + canUpdateObjectRecords: Boolean + canSoftDeleteObjectRecords: Boolean + canDestroyObjectRecords: Boolean +} + +input UpsertPermissionFlagsInput { + roleId: UUID! + permissionFlagKeys: [PermissionFlagType!]! +} + +input UpsertFieldPermissionsInput { + roleId: UUID! + fieldPermissions: [FieldPermissionInput!]! +} + +input FieldPermissionInput { + objectMetadataId: UUID! + fieldMetadataId: UUID! + canReadFieldValue: Boolean + canUpdateFieldValue: Boolean +} + +input UpsertRowLevelPermissionPredicatesInput { + roleId: UUID! + objectMetadataId: UUID! + predicates: [RowLevelPermissionPredicateInput!]! + predicateGroups: [RowLevelPermissionPredicateGroupInput!]! +} + +input RowLevelPermissionPredicateInput { + id: UUID + fieldMetadataId: UUID! + operand: RowLevelPermissionPredicateOperand! + value: JSON + subFieldName: String + workspaceMemberFieldMetadataId: String + workspaceMemberSubFieldName: String + rowLevelPermissionPredicateGroupId: UUID + positionInRowLevelPermissionPredicateGroup: Float +} + +input RowLevelPermissionPredicateGroupInput { + id: UUID + objectMetadataId: UUID! + parentRowLevelPermissionPredicateGroupId: UUID + logicalOperator: RowLevelPermissionPredicateGroupLogicalOperator! + positionInRowLevelPermissionPredicateGroup: Float +} + +input CreateApprovedAccessDomainInput { + domain: String! + email: String! +} + +input DeleteApprovedAccessDomainInput { + id: UUID! +} + +input ValidateApprovedAccessDomainInput { + validationToken: String! + approvedAccessDomainId: UUID! +} + +input CreateOneFieldMetadataInput { + """The record to create""" + field: CreateFieldInput! +} + +input CreateFieldInput { + type: FieldMetadataType! + name: String! + label: String! + description: String + icon: String + isCustom: Boolean + isActive: Boolean + isSystem: Boolean + isUIReadOnly: Boolean + isNullable: Boolean + isUnique: Boolean + defaultValue: JSON + options: JSON + settings: JSON + isLabelSyncedWithName: Boolean + objectMetadataId: UUID! + isRemoteCreation: Boolean + relationCreationPayload: JSON + morphRelationsCreationPayload: [JSON!] +} + +input UpdateOneFieldMetadataInput { + """The id of the record to update""" + id: UUID! + + """The record to update""" + update: UpdateFieldInput! +} + +input UpdateFieldInput { + universalIdentifier: UUID + name: String + label: String + description: String + icon: String + isActive: Boolean + isSystem: Boolean + isUIReadOnly: Boolean + isNullable: Boolean + isUnique: Boolean + defaultValue: JSON + options: JSON + settings: JSON + isLabelSyncedWithName: Boolean + morphRelationsUpdatePayload: [JSON!] +} + +input DeleteOneFieldInput { + """The id of the field to delete.""" + id: UUID! +} + +input ActivateWorkspaceInput { + displayName: String +} + +input UpdateWorkspaceInput { + subdomain: String + customDomain: String + displayName: String + logo: String + inviteHash: String + isPublicInviteLinkEnabled: Boolean + allowImpersonation: Boolean + isGoogleAuthEnabled: Boolean + isMicrosoftAuthEnabled: Boolean + isPasswordAuthEnabled: Boolean + isGoogleAuthBypassEnabled: Boolean + isMicrosoftAuthBypassEnabled: Boolean + isPasswordAuthBypassEnabled: Boolean + defaultRoleId: UUID + isTwoFactorAuthenticationEnforced: Boolean + trashRetentionDays: Float + eventLogRetentionDays: Float + fastModel: String + smartModel: String + aiAdditionalInstructions: String + editableProfileFields: [String!] + autoEnableNewAiModels: Boolean + disabledAiModelIds: [String!] + enabledAiModelIds: [String!] + useRecommendedModels: Boolean +} + +input GetAuthorizationUrlForSSOInput { + identityProviderId: UUID! + workspaceInviteHash: String +} + +input CreateApplicationRegistrationInput { + name: String! + description: String + logoUrl: String + author: String + universalIdentifier: String + oAuthRedirectUris: [String!] + oAuthScopes: [String!] + websiteUrl: String + termsUrl: String +} + +input UpdateApplicationRegistrationInput { + id: String! + update: UpdateApplicationRegistrationPayload! +} + +input UpdateApplicationRegistrationPayload { + name: String + description: String + logoUrl: String + author: String + oAuthRedirectUris: [String!] + oAuthScopes: [String!] + websiteUrl: String + termsUrl: String + isListed: Boolean +} + +input CreateApplicationRegistrationVariableInput { + applicationRegistrationId: String! + key: String! + value: String! + description: String + isSecret: Boolean +} + +input UpdateApplicationRegistrationVariableInput { + id: String! + update: UpdateApplicationRegistrationVariablePayload! +} + +input UpdateApplicationRegistrationVariablePayload { + value: String + description: String +} + +input SetupOIDCSsoInput { + name: String! + issuer: String! + clientID: String! + clientSecret: String! +} + +input SetupSAMLSsoInput { + name: String! + issuer: String! + id: UUID! + ssoURL: String! + certificate: String! + fingerprint: String +} + +input DeleteSsoInput { + identityProviderId: UUID! +} + +input EditSsoInput { + id: UUID! + status: SSOIdentityProviderStatus! +} + +input CreateWebhookInput { + id: UUID + targetUrl: String! + operations: [String!]! + description: String + secret: String +} + +input UpdateWebhookInput { + """The id of the webhook to update""" + id: UUID! + + """The webhook fields to update""" + update: UpdateWebhookInputUpdates! +} + +input UpdateWebhookInputUpdates { + targetUrl: String + operations: [String!] + description: String + secret: String +} + +input CreateSkillInput { + id: UUID + name: String! + label: String! + icon: String + description: String + content: String! +} + +input UpdateSkillInput { + id: UUID! + name: String + label: String + icon: String + description: String + content: String + isActive: Boolean +} + +input EmailAccountConnectionParameters { + IMAP: ConnectionParameters + SMTP: ConnectionParameters + CALDAV: ConnectionParameters +} + +input ConnectionParameters { + host: String! + port: Float! + username: String + password: String! + secure: Boolean +} + +input UpdateLabPublicFeatureFlagInput { + publicFeatureFlag: String! + value: Boolean! +} + +input CreateOneAppTokenInput { + """The record to create""" + appToken: CreateAppTokenInput! +} + +input CreateAppTokenInput { + expiresAt: DateTime! +} + +input WorkspaceMigrationInput { + actions: [WorkspaceMigrationDeleteActionInput!]! +} + +input WorkspaceMigrationDeleteActionInput { + type: WorkspaceMigrationActionType! + metadataName: AllMetadataName! + universalIdentifier: String! +} + +enum WorkspaceMigrationActionType { + delete + create + update +} + +enum AllMetadataName { + fieldMetadata + objectMetadata + view + viewField + viewFieldGroup + viewGroup + viewSort + rowLevelPermissionPredicate + rowLevelPermissionPredicateGroup + viewFilterGroup + index + logicFunction + viewFilter + role + roleTarget + agent + skill + pageLayout + pageLayoutWidget + pageLayoutTab + commandMenuItem + navigationMenuItem + frontComponent + webhook +} + +enum FileFolder { + ProfilePicture + WorkspaceLogo + Attachment + PersonPicture + CorePicture + File + AgentChat + BuiltLogicFunction + BuiltFrontComponent + PublicAsset + Source + FilesField + Dependencies + Workflow + AppTarball +} + +type Subscription { + onDbEvent(input: OnDbEventInput!): OnDbEvent! + onEventSubscription(eventStreamId: String!): EventSubscription + logicFunctionLogs(input: LogicFunctionLogsInput!): LogicFunctionLogs! +} + +input OnDbEventInput { + action: DatabaseEventAction + objectNameSingular: String + recordId: UUID +} + +input LogicFunctionLogsInput { + applicationId: UUID + applicationUniversalIdentifier: UUID + name: String + id: UUID + universalIdentifier: UUID +} \ No newline at end of file diff --git a/packages/twenty-sdk/src/clients/generated/metadata/schema.ts b/packages/twenty-sdk/src/clients/generated/metadata/schema.ts new file mode 100644 index 0000000000..f8befc071f --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/schema.ts @@ -0,0 +1,8723 @@ +// @ts-nocheck +export type Scalars = { + String: string, + UUID: string, + DateTime: string, + Boolean: boolean, + Float: number, + JSON: Record, + Int: number, + ConnectionCursor: any, + JSONObject: any, + ID: string, + Upload: File, +} + +export type BillingProductDTO = (BillingLicensedProduct | BillingMeteredProduct) & { __isUnion?: true } + +export interface ApiKey { + id: Scalars['UUID'] + name: Scalars['String'] + expiresAt: Scalars['DateTime'] + revokedAt?: Scalars['DateTime'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + role: Role + __typename: 'ApiKey' +} + +export interface ApplicationRegistrationVariable { + id: Scalars['UUID'] + key: Scalars['String'] + description: Scalars['String'] + isSecret: Scalars['Boolean'] + isRequired: Scalars['Boolean'] + isFilled: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'ApplicationRegistrationVariable' +} + +export interface ApplicationRegistration { + id: Scalars['UUID'] + universalIdentifier: Scalars['String'] + name: Scalars['String'] + description?: Scalars['String'] + logoUrl?: Scalars['String'] + author?: Scalars['String'] + oAuthClientId: Scalars['String'] + oAuthRedirectUris: Scalars['String'][] + oAuthScopes: Scalars['String'][] + ownerWorkspaceId?: Scalars['UUID'] + sourceType: ApplicationRegistrationSourceType + sourcePackage?: Scalars['String'] + latestAvailableVersion?: Scalars['String'] + websiteUrl?: Scalars['String'] + termsUrl?: Scalars['String'] + isListed: Scalars['Boolean'] + isFeatured: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'ApplicationRegistration' +} + +export type ApplicationRegistrationSourceType = 'NPM' | 'TARBALL' | 'LOCAL' + +export interface TwoFactorAuthenticationMethodSummary { + twoFactorAuthenticationMethodId: Scalars['UUID'] + status: Scalars['String'] + strategy: Scalars['String'] + __typename: 'TwoFactorAuthenticationMethodSummary' +} + +export interface RowLevelPermissionPredicateGroup { + id: Scalars['String'] + parentRowLevelPermissionPredicateGroupId?: Scalars['String'] + logicalOperator: RowLevelPermissionPredicateGroupLogicalOperator + positionInRowLevelPermissionPredicateGroup?: Scalars['Float'] + roleId: Scalars['String'] + objectMetadataId: Scalars['String'] + __typename: 'RowLevelPermissionPredicateGroup' +} + +export type RowLevelPermissionPredicateGroupLogicalOperator = 'AND' | 'OR' + +export interface RowLevelPermissionPredicate { + id: Scalars['String'] + fieldMetadataId: Scalars['String'] + objectMetadataId: Scalars['String'] + operand: RowLevelPermissionPredicateOperand + subFieldName?: Scalars['String'] + workspaceMemberFieldMetadataId?: Scalars['String'] + workspaceMemberSubFieldName?: Scalars['String'] + rowLevelPermissionPredicateGroupId?: Scalars['String'] + positionInRowLevelPermissionPredicateGroup?: Scalars['Float'] + roleId: Scalars['String'] + value?: Scalars['JSON'] + __typename: 'RowLevelPermissionPredicate' +} + +export type RowLevelPermissionPredicateOperand = 'IS' | 'IS_NOT_NULL' | 'IS_NOT' | 'LESS_THAN_OR_EQUAL' | 'GREATER_THAN_OR_EQUAL' | 'IS_BEFORE' | 'IS_AFTER' | 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'IS_EMPTY' | 'IS_NOT_EMPTY' | 'IS_RELATIVE' | 'IS_IN_PAST' | 'IS_IN_FUTURE' | 'IS_TODAY' | 'VECTOR_SEARCH' + +export interface ObjectPermission { + objectMetadataId: Scalars['UUID'] + canReadObjectRecords?: Scalars['Boolean'] + canUpdateObjectRecords?: Scalars['Boolean'] + canSoftDeleteObjectRecords?: Scalars['Boolean'] + canDestroyObjectRecords?: Scalars['Boolean'] + restrictedFields?: Scalars['JSON'] + rowLevelPermissionPredicates?: RowLevelPermissionPredicate[] + rowLevelPermissionPredicateGroups?: RowLevelPermissionPredicateGroup[] + __typename: 'ObjectPermission' +} + +export interface UserWorkspace { + id: Scalars['UUID'] + user: User + userId: Scalars['UUID'] + locale: Scalars['String'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + permissionFlags?: PermissionFlagType[] + objectPermissions?: ObjectPermission[] + objectsPermissions?: ObjectPermission[] + twoFactorAuthenticationMethodSummary?: TwoFactorAuthenticationMethodSummary[] + __typename: 'UserWorkspace' +} + +export type PermissionFlagType = 'API_KEYS_AND_WEBHOOKS' | 'WORKSPACE' | 'WORKSPACE_MEMBERS' | 'ROLES' | 'DATA_MODEL' | 'SECURITY' | 'WORKFLOWS' | 'IMPERSONATE' | 'SSO_BYPASS' | 'APPLICATIONS' | 'MARKETPLACE_APPS' | 'LAYOUTS' | 'BILLING' | 'AI_SETTINGS' | 'AI' | 'VIEWS' | 'UPLOAD_FILE' | 'DOWNLOAD_FILE' | 'SEND_EMAIL_TOOL' | 'HTTP_REQUEST_TOOL' | 'CODE_INTERPRETER_TOOL' | 'IMPORT_CSV' | 'EXPORT_CSV' | 'CONNECTED_ACCOUNTS' | 'PROFILE_INFORMATION' + +export interface FullName { + firstName: Scalars['String'] + lastName: Scalars['String'] + __typename: 'FullName' +} + +export interface WorkspaceMember { + id: Scalars['UUID'] + name: FullName + userEmail: Scalars['String'] + colorScheme: Scalars['String'] + avatarUrl?: Scalars['String'] + locale?: Scalars['String'] + calendarStartDay?: Scalars['Int'] + timeZone?: Scalars['String'] + dateFormat?: WorkspaceMemberDateFormatEnum + timeFormat?: WorkspaceMemberTimeFormatEnum + roles?: Role[] + userWorkspaceId?: Scalars['UUID'] + numberFormat?: WorkspaceMemberNumberFormatEnum + __typename: 'WorkspaceMember' +} + + +/** Date format as Month first, Day first, Year first or system as default */ +export type WorkspaceMemberDateFormatEnum = 'SYSTEM' | 'MONTH_FIRST' | 'DAY_FIRST' | 'YEAR_FIRST' + + +/** Time time as Military, Standard or system as default */ +export type WorkspaceMemberTimeFormatEnum = 'SYSTEM' | 'HOUR_12' | 'HOUR_24' + + +/** Number format for displaying numbers */ +export type WorkspaceMemberNumberFormatEnum = 'SYSTEM' | 'COMMAS_AND_DOT' | 'SPACES_AND_COMMA' | 'DOTS_AND_COMMA' | 'APOSTROPHE_AND_DOT' + +export interface Agent { + id: Scalars['UUID'] + name: Scalars['String'] + label: Scalars['String'] + icon?: Scalars['String'] + description?: Scalars['String'] + prompt: Scalars['String'] + modelId: Scalars['String'] + responseFormat?: Scalars['JSON'] + roleId?: Scalars['UUID'] + isCustom: Scalars['Boolean'] + applicationId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + modelConfiguration?: Scalars['JSON'] + evaluationInputs: Scalars['String'][] + __typename: 'Agent' +} + +export interface FieldPermission { + id: Scalars['UUID'] + objectMetadataId: Scalars['UUID'] + fieldMetadataId: Scalars['UUID'] + roleId: Scalars['UUID'] + canReadFieldValue?: Scalars['Boolean'] + canUpdateFieldValue?: Scalars['Boolean'] + __typename: 'FieldPermission' +} + +export interface PermissionFlag { + id: Scalars['UUID'] + roleId: Scalars['UUID'] + flag: PermissionFlagType + __typename: 'PermissionFlag' +} + +export interface ApiKeyForRole { + id: Scalars['UUID'] + name: Scalars['String'] + expiresAt: Scalars['DateTime'] + revokedAt?: Scalars['DateTime'] + __typename: 'ApiKeyForRole' +} + +export interface Role { + id: Scalars['UUID'] + universalIdentifier?: Scalars['UUID'] + label: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + isEditable: Scalars['Boolean'] + canBeAssignedToUsers: Scalars['Boolean'] + canBeAssignedToAgents: Scalars['Boolean'] + canBeAssignedToApiKeys: Scalars['Boolean'] + workspaceMembers: WorkspaceMember[] + agents: Agent[] + apiKeys: ApiKeyForRole[] + canUpdateAllSettings: Scalars['Boolean'] + canAccessAllTools: Scalars['Boolean'] + canReadAllObjectRecords: Scalars['Boolean'] + canUpdateAllObjectRecords: Scalars['Boolean'] + canSoftDeleteAllObjectRecords: Scalars['Boolean'] + canDestroyAllObjectRecords: Scalars['Boolean'] + permissionFlags?: PermissionFlag[] + objectPermissions?: ObjectPermission[] + fieldPermissions?: FieldPermission[] + rowLevelPermissionPredicates?: RowLevelPermissionPredicate[] + rowLevelPermissionPredicateGroups?: RowLevelPermissionPredicateGroup[] + __typename: 'Role' +} + +export interface ApplicationRegistrationSummary { + id: Scalars['UUID'] + latestAvailableVersion?: Scalars['String'] + sourceType: ApplicationRegistrationSourceType + __typename: 'ApplicationRegistrationSummary' +} + +export interface ApplicationVariable { + id: Scalars['UUID'] + key: Scalars['String'] + value: Scalars['String'] + description: Scalars['String'] + isSecret: Scalars['Boolean'] + __typename: 'ApplicationVariable' +} + +export interface LogicFunction { + id: Scalars['UUID'] + name: Scalars['String'] + description?: Scalars['String'] + runtime: Scalars['String'] + timeoutSeconds: Scalars['Float'] + sourceHandlerPath: Scalars['String'] + handlerName: Scalars['String'] + toolInputSchema?: Scalars['JSON'] + isTool: Scalars['Boolean'] + cronTriggerSettings?: Scalars['JSON'] + databaseEventTriggerSettings?: Scalars['JSON'] + httpRouteTriggerSettings?: Scalars['JSON'] + applicationId?: Scalars['UUID'] + universalIdentifier?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'LogicFunction' +} + +export interface StandardOverrides { + label?: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + translations?: Scalars['JSON'] + __typename: 'StandardOverrides' +} + +export interface Field { + id: Scalars['UUID'] + universalIdentifier: Scalars['UUID'] + type: FieldMetadataType + name: Scalars['String'] + label: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + standardOverrides?: StandardOverrides + isCustom?: Scalars['Boolean'] + isActive?: Scalars['Boolean'] + isSystem?: Scalars['Boolean'] + isUIReadOnly?: Scalars['Boolean'] + isNullable?: Scalars['Boolean'] + isUnique?: Scalars['Boolean'] + defaultValue?: Scalars['JSON'] + options?: Scalars['JSON'] + settings?: Scalars['JSON'] + isLabelSyncedWithName?: Scalars['Boolean'] + morphId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + applicationId: Scalars['UUID'] + relation?: Relation + morphRelations?: Relation[] + object?: Object + __typename: 'Field' +} + + +/** Type of the field */ +export type FieldMetadataType = 'ACTOR' | 'ADDRESS' | 'ARRAY' | 'BOOLEAN' | 'CURRENCY' | 'DATE' | 'DATE_TIME' | 'EMAILS' | 'FILES' | 'FULL_NAME' | 'LINKS' | 'MORPH_RELATION' | 'MULTI_SELECT' | 'NUMBER' | 'NUMERIC' | 'PHONES' | 'POSITION' | 'RATING' | 'RAW_JSON' | 'RELATION' | 'RICH_TEXT' | 'RICH_TEXT_V2' | 'SELECT' | 'TEXT' | 'TS_VECTOR' | 'UUID' + +export interface IndexField { + id: Scalars['UUID'] + fieldMetadataId: Scalars['UUID'] + order: Scalars['Float'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'IndexField' +} + +export interface Index { + id: Scalars['UUID'] + name: Scalars['String'] + isCustom?: Scalars['Boolean'] + isUnique: Scalars['Boolean'] + indexWhereClause?: Scalars['String'] + indexType: IndexType + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + indexFieldMetadataList: IndexField[] + objectMetadata: IndexObjectMetadataConnection + indexFieldMetadatas: IndexIndexFieldMetadatasConnection + __typename: 'Index' +} + + +/** Type of the index */ +export type IndexType = 'BTREE' | 'GIN' + +export interface ObjectStandardOverrides { + labelSingular?: Scalars['String'] + labelPlural?: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + translations?: Scalars['JSON'] + __typename: 'ObjectStandardOverrides' +} + +export interface Object { + id: Scalars['UUID'] + universalIdentifier: Scalars['UUID'] + nameSingular: Scalars['String'] + namePlural: Scalars['String'] + labelSingular: Scalars['String'] + labelPlural: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + standardOverrides?: ObjectStandardOverrides + shortcut?: Scalars['String'] + isCustom: Scalars['Boolean'] + isRemote: Scalars['Boolean'] + isActive: Scalars['Boolean'] + isSystem: Scalars['Boolean'] + isUIReadOnly: Scalars['Boolean'] + isSearchable: Scalars['Boolean'] + applicationId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + labelIdentifierFieldMetadataId?: Scalars['UUID'] + imageIdentifierFieldMetadataId?: Scalars['UUID'] + isLabelSyncedWithName: Scalars['Boolean'] + duplicateCriteria?: Scalars['String'][][] + fieldsList: Field[] + indexMetadataList: Index[] + fields: ObjectFieldsConnection + indexMetadatas: ObjectIndexMetadatasConnection + __typename: 'Object' +} + +export interface Application { + id: Scalars['UUID'] + name: Scalars['String'] + description?: Scalars['String'] + version?: Scalars['String'] + universalIdentifier: Scalars['String'] + packageJsonChecksum?: Scalars['String'] + packageJsonFileId?: Scalars['UUID'] + yarnLockChecksum?: Scalars['String'] + yarnLockFileId?: Scalars['UUID'] + availablePackages: Scalars['JSON'] + applicationRegistrationId?: Scalars['UUID'] + canBeUninstalled: Scalars['Boolean'] + defaultRoleId?: Scalars['String'] + settingsCustomTabFrontComponentId?: Scalars['UUID'] + defaultLogicFunctionRole?: Role + agents: Agent[] + logicFunctions: LogicFunction[] + objects: Object[] + applicationVariables: ApplicationVariable[] + applicationRegistration?: ApplicationRegistrationSummary + __typename: 'Application' +} + +export interface CoreViewField { + id: Scalars['UUID'] + fieldMetadataId: Scalars['UUID'] + isVisible: Scalars['Boolean'] + size: Scalars['Float'] + position: Scalars['Float'] + aggregateOperation?: AggregateOperations + viewId: Scalars['UUID'] + viewFieldGroupId?: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'CoreViewField' +} + +export type AggregateOperations = 'MIN' | 'MAX' | 'AVG' | 'SUM' | 'COUNT' | 'COUNT_UNIQUE_VALUES' | 'COUNT_EMPTY' | 'COUNT_NOT_EMPTY' | 'COUNT_TRUE' | 'COUNT_FALSE' | 'PERCENTAGE_EMPTY' | 'PERCENTAGE_NOT_EMPTY' + +export interface CoreViewFilterGroup { + id: Scalars['UUID'] + parentViewFilterGroupId?: Scalars['UUID'] + logicalOperator: ViewFilterGroupLogicalOperator + positionInViewFilterGroup?: Scalars['Float'] + viewId: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'CoreViewFilterGroup' +} + +export type ViewFilterGroupLogicalOperator = 'AND' | 'OR' | 'NOT' + +export interface CoreViewFilter { + id: Scalars['UUID'] + fieldMetadataId: Scalars['UUID'] + operand: ViewFilterOperand + value: Scalars['JSON'] + viewFilterGroupId?: Scalars['UUID'] + positionInViewFilterGroup?: Scalars['Float'] + subFieldName?: Scalars['String'] + viewId: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'CoreViewFilter' +} + +export type ViewFilterOperand = 'IS' | 'IS_NOT_NULL' | 'IS_NOT' | 'LESS_THAN_OR_EQUAL' | 'GREATER_THAN_OR_EQUAL' | 'IS_BEFORE' | 'IS_AFTER' | 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'IS_EMPTY' | 'IS_NOT_EMPTY' | 'IS_RELATIVE' | 'IS_IN_PAST' | 'IS_IN_FUTURE' | 'IS_TODAY' | 'VECTOR_SEARCH' + +export interface CoreViewGroup { + id: Scalars['UUID'] + isVisible: Scalars['Boolean'] + fieldValue: Scalars['String'] + position: Scalars['Float'] + viewId: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'CoreViewGroup' +} + +export interface CoreViewSort { + id: Scalars['UUID'] + fieldMetadataId: Scalars['UUID'] + direction: ViewSortDirection + viewId: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'CoreViewSort' +} + +export type ViewSortDirection = 'ASC' | 'DESC' + +export interface CoreViewFieldGroup { + id: Scalars['UUID'] + name: Scalars['String'] + position: Scalars['Float'] + isVisible: Scalars['Boolean'] + viewId: Scalars['UUID'] + workspaceId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + viewFields: CoreViewField[] + __typename: 'CoreViewFieldGroup' +} + +export interface CoreView { + id: Scalars['UUID'] + name: Scalars['String'] + objectMetadataId: Scalars['UUID'] + type: ViewType + key?: ViewKey + icon: Scalars['String'] + position: Scalars['Float'] + isCompact: Scalars['Boolean'] + isCustom: Scalars['Boolean'] + openRecordIn: ViewOpenRecordIn + kanbanAggregateOperation?: AggregateOperations + kanbanAggregateOperationFieldMetadataId?: Scalars['UUID'] + mainGroupByFieldMetadataId?: Scalars['UUID'] + shouldHideEmptyGroups: Scalars['Boolean'] + calendarFieldMetadataId?: Scalars['UUID'] + workspaceId: Scalars['UUID'] + anyFieldFilterValue?: Scalars['String'] + calendarLayout?: ViewCalendarLayout + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + viewFields: CoreViewField[] + viewFilters: CoreViewFilter[] + viewFilterGroups: CoreViewFilterGroup[] + viewSorts: CoreViewSort[] + viewGroups: CoreViewGroup[] + viewFieldGroups: CoreViewFieldGroup[] + visibility: ViewVisibility + createdByUserWorkspaceId?: Scalars['UUID'] + __typename: 'CoreView' +} + +export type ViewType = 'TABLE' | 'KANBAN' | 'CALENDAR' | 'FIELDS_WIDGET' + +export type ViewKey = 'INDEX' + +export type ViewOpenRecordIn = 'SIDE_PANEL' | 'RECORD_PAGE' + +export type ViewCalendarLayout = 'DAY' | 'WEEK' | 'MONTH' + +export type ViewVisibility = 'WORKSPACE' | 'UNLISTED' + +export interface Workspace { + id: Scalars['UUID'] + displayName?: Scalars['String'] + logo?: Scalars['String'] + logoFileId?: Scalars['UUID'] + inviteHash?: Scalars['String'] + deletedAt?: Scalars['DateTime'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + allowImpersonation: Scalars['Boolean'] + isPublicInviteLinkEnabled: Scalars['Boolean'] + trashRetentionDays: Scalars['Float'] + eventLogRetentionDays: Scalars['Float'] + workspaceMembersCount?: Scalars['Float'] + activationStatus: WorkspaceActivationStatus + views?: CoreView[] + viewFields?: CoreViewField[] + viewFilters?: CoreViewFilter[] + viewFilterGroups?: CoreViewFilterGroup[] + viewGroups?: CoreViewGroup[] + viewSorts?: CoreViewSort[] + metadataVersion: Scalars['Float'] + databaseUrl: Scalars['String'] + databaseSchema: Scalars['String'] + subdomain: Scalars['String'] + customDomain?: Scalars['String'] + isGoogleAuthEnabled: Scalars['Boolean'] + isGoogleAuthBypassEnabled: Scalars['Boolean'] + isTwoFactorAuthenticationEnforced: Scalars['Boolean'] + isPasswordAuthEnabled: Scalars['Boolean'] + isPasswordAuthBypassEnabled: Scalars['Boolean'] + isMicrosoftAuthEnabled: Scalars['Boolean'] + isMicrosoftAuthBypassEnabled: Scalars['Boolean'] + isCustomDomainEnabled: Scalars['Boolean'] + editableProfileFields?: Scalars['String'][] + defaultRole?: Role + version?: Scalars['String'] + fastModel: Scalars['String'] + smartModel: Scalars['String'] + aiAdditionalInstructions?: Scalars['String'] + autoEnableNewAiModels: Scalars['Boolean'] + disabledAiModelIds?: Scalars['String'][] + enabledAiModelIds?: Scalars['String'][] + useRecommendedModels: Scalars['Boolean'] + routerModel: Scalars['String'] + workspaceCustomApplication?: Application + featureFlags?: FeatureFlag[] + billingSubscriptions: BillingSubscription[] + currentBillingSubscription?: BillingSubscription + billingEntitlements: BillingEntitlement[] + hasValidEnterpriseKey: Scalars['Boolean'] + workspaceUrls: WorkspaceUrls + workspaceCustomApplicationId: Scalars['String'] + __typename: 'Workspace' +} + +export type WorkspaceActivationStatus = 'ONGOING_CREATION' | 'PENDING_CREATION' | 'ACTIVE' | 'INACTIVE' | 'SUSPENDED' + +export interface AppToken { + id: Scalars['UUID'] + type: Scalars['String'] + expiresAt: Scalars['DateTime'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'AppToken' +} + +export interface User { + id: Scalars['UUID'] + firstName: Scalars['String'] + lastName: Scalars['String'] + email: Scalars['String'] + defaultAvatarUrl?: Scalars['String'] + isEmailVerified: Scalars['Boolean'] + disabled?: Scalars['Boolean'] + canImpersonate: Scalars['Boolean'] + canAccessFullAdminPanel: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + locale: Scalars['String'] + workspaceMember?: WorkspaceMember + userWorkspaces: UserWorkspace[] + onboardingStatus?: OnboardingStatus + currentWorkspace?: Workspace + currentUserWorkspace?: UserWorkspace + userVars?: Scalars['JSONObject'] + workspaceMembers?: WorkspaceMember[] + deletedWorkspaceMembers?: DeletedWorkspaceMember[] + hasPassword: Scalars['Boolean'] + supportUserHash?: Scalars['String'] + workspaces: UserWorkspace[] + availableWorkspaces: AvailableWorkspaces + __typename: 'User' +} + + +/** Onboarding status */ +export type OnboardingStatus = 'PLAN_REQUIRED' | 'WORKSPACE_ACTIVATION' | 'PROFILE_CREATION' | 'SYNC_EMAIL' | 'INVITE_TEAM' | 'BOOK_ONBOARDING' | 'COMPLETED' + +export interface RatioAggregateConfig { + fieldMetadataId: Scalars['UUID'] + optionValue: Scalars['String'] + __typename: 'RatioAggregateConfig' +} + +export interface NewFieldDefaultConfiguration { + isVisible: Scalars['Boolean'] + viewFieldGroupId?: Scalars['String'] + __typename: 'NewFieldDefaultConfiguration' +} + +export interface RichTextV2Body { + blocknote?: Scalars['String'] + markdown?: Scalars['String'] + __typename: 'RichTextV2Body' +} + +export interface GridPosition { + row: Scalars['Float'] + column: Scalars['Float'] + rowSpan: Scalars['Float'] + columnSpan: Scalars['Float'] + __typename: 'GridPosition' +} + +export interface PageLayoutWidget { + id: Scalars['UUID'] + pageLayoutTabId: Scalars['UUID'] + title: Scalars['String'] + type: WidgetType + objectMetadataId?: Scalars['UUID'] + gridPosition: GridPosition + position?: PageLayoutWidgetPosition + configuration: WidgetConfiguration + conditionalDisplay?: Scalars['JSON'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'PageLayoutWidget' +} + +export type WidgetType = 'VIEW' | 'IFRAME' | 'FIELD' | 'FIELDS' | 'GRAPH' | 'STANDALONE_RICH_TEXT' | 'TIMELINE' | 'TASKS' | 'NOTES' | 'FILES' | 'EMAILS' | 'CALENDAR' | 'FIELD_RICH_TEXT' | 'WORKFLOW' | 'WORKFLOW_VERSION' | 'WORKFLOW_RUN' | 'FRONT_COMPONENT' + +export type PageLayoutWidgetPosition = (PageLayoutWidgetGridPosition | PageLayoutWidgetVerticalListPosition | PageLayoutWidgetCanvasPosition) & { __isUnion?: true } + +export interface PageLayoutWidgetGridPosition { + layoutMode: PageLayoutTabLayoutMode + row: Scalars['Int'] + column: Scalars['Int'] + rowSpan: Scalars['Int'] + columnSpan: Scalars['Int'] + __typename: 'PageLayoutWidgetGridPosition' +} + +export type PageLayoutTabLayoutMode = 'GRID' | 'VERTICAL_LIST' | 'CANVAS' + +export interface PageLayoutWidgetVerticalListPosition { + layoutMode: PageLayoutTabLayoutMode + index: Scalars['Int'] + __typename: 'PageLayoutWidgetVerticalListPosition' +} + +export interface PageLayoutWidgetCanvasPosition { + layoutMode: PageLayoutTabLayoutMode + __typename: 'PageLayoutWidgetCanvasPosition' +} + +export type WidgetConfiguration = (AggregateChartConfiguration | StandaloneRichTextConfiguration | PieChartConfiguration | LineChartConfiguration | IframeConfiguration | GaugeChartConfiguration | BarChartConfiguration | CalendarConfiguration | FrontComponentConfiguration | EmailsConfiguration | FieldConfiguration | FieldRichTextConfiguration | FieldsConfiguration | FilesConfiguration | NotesConfiguration | TasksConfiguration | TimelineConfiguration | ViewConfiguration | WorkflowConfiguration | WorkflowRunConfiguration | WorkflowVersionConfiguration) & { __isUnion?: true } + +export interface AggregateChartConfiguration { + configurationType: WidgetConfigurationType + aggregateFieldMetadataId: Scalars['UUID'] + aggregateOperation: AggregateOperations + label?: Scalars['String'] + displayDataLabel?: Scalars['Boolean'] + format?: Scalars['String'] + description?: Scalars['String'] + filter?: Scalars['JSON'] + timezone?: Scalars['String'] + firstDayOfTheWeek?: Scalars['Int'] + prefix?: Scalars['String'] + suffix?: Scalars['String'] + ratioAggregateConfig?: RatioAggregateConfig + __typename: 'AggregateChartConfiguration' +} + +export type WidgetConfigurationType = 'AGGREGATE_CHART' | 'GAUGE_CHART' | 'PIE_CHART' | 'BAR_CHART' | 'LINE_CHART' | 'IFRAME' | 'STANDALONE_RICH_TEXT' | 'VIEW' | 'FIELD' | 'FIELDS' | 'TIMELINE' | 'TASKS' | 'NOTES' | 'FILES' | 'EMAILS' | 'CALENDAR' | 'FIELD_RICH_TEXT' | 'WORKFLOW' | 'WORKFLOW_VERSION' | 'WORKFLOW_RUN' | 'FRONT_COMPONENT' + +export interface StandaloneRichTextConfiguration { + configurationType: WidgetConfigurationType + body: RichTextV2Body + __typename: 'StandaloneRichTextConfiguration' +} + +export interface PieChartConfiguration { + configurationType: WidgetConfigurationType + aggregateFieldMetadataId: Scalars['UUID'] + aggregateOperation: AggregateOperations + groupByFieldMetadataId: Scalars['UUID'] + groupBySubFieldName?: Scalars['String'] + dateGranularity?: ObjectRecordGroupByDateGranularity + orderBy?: GraphOrderBy + manualSortOrder?: Scalars['String'][] + displayDataLabel?: Scalars['Boolean'] + showCenterMetric?: Scalars['Boolean'] + displayLegend?: Scalars['Boolean'] + hideEmptyCategory?: Scalars['Boolean'] + splitMultiValueFields?: Scalars['Boolean'] + description?: Scalars['String'] + color?: Scalars['String'] + filter?: Scalars['JSON'] + timezone?: Scalars['String'] + firstDayOfTheWeek?: Scalars['Int'] + __typename: 'PieChartConfiguration' +} + + +/** Date granularity options (e.g. DAY, MONTH, QUARTER, YEAR, WEEK, DAY_OF_THE_WEEK, MONTH_OF_THE_YEAR, QUARTER_OF_THE_YEAR) */ +export type ObjectRecordGroupByDateGranularity = 'DAY' | 'MONTH' | 'QUARTER' | 'YEAR' | 'WEEK' | 'DAY_OF_THE_WEEK' | 'MONTH_OF_THE_YEAR' | 'QUARTER_OF_THE_YEAR' | 'NONE' + + +/** Order by options for graph widgets */ +export type GraphOrderBy = 'FIELD_ASC' | 'FIELD_DESC' | 'FIELD_POSITION_ASC' | 'FIELD_POSITION_DESC' | 'VALUE_ASC' | 'VALUE_DESC' | 'MANUAL' + +export interface LineChartConfiguration { + configurationType: WidgetConfigurationType + aggregateFieldMetadataId: Scalars['UUID'] + aggregateOperation: AggregateOperations + primaryAxisGroupByFieldMetadataId: Scalars['UUID'] + primaryAxisGroupBySubFieldName?: Scalars['String'] + primaryAxisDateGranularity?: ObjectRecordGroupByDateGranularity + primaryAxisOrderBy?: GraphOrderBy + primaryAxisManualSortOrder?: Scalars['String'][] + secondaryAxisGroupByFieldMetadataId?: Scalars['UUID'] + secondaryAxisGroupBySubFieldName?: Scalars['String'] + secondaryAxisGroupByDateGranularity?: ObjectRecordGroupByDateGranularity + secondaryAxisOrderBy?: GraphOrderBy + secondaryAxisManualSortOrder?: Scalars['String'][] + omitNullValues?: Scalars['Boolean'] + splitMultiValueFields?: Scalars['Boolean'] + axisNameDisplay?: AxisNameDisplay + displayDataLabel?: Scalars['Boolean'] + displayLegend?: Scalars['Boolean'] + rangeMin?: Scalars['Float'] + rangeMax?: Scalars['Float'] + description?: Scalars['String'] + color?: Scalars['String'] + filter?: Scalars['JSON'] + isStacked?: Scalars['Boolean'] + isCumulative?: Scalars['Boolean'] + timezone?: Scalars['String'] + firstDayOfTheWeek?: Scalars['Int'] + __typename: 'LineChartConfiguration' +} + + +/** Which axes should display labels */ +export type AxisNameDisplay = 'NONE' | 'X' | 'Y' | 'BOTH' + +export interface IframeConfiguration { + configurationType: WidgetConfigurationType + url?: Scalars['String'] + __typename: 'IframeConfiguration' +} + +export interface GaugeChartConfiguration { + configurationType: WidgetConfigurationType + aggregateFieldMetadataId: Scalars['UUID'] + aggregateOperation: AggregateOperations + displayDataLabel?: Scalars['Boolean'] + color?: Scalars['String'] + description?: Scalars['String'] + filter?: Scalars['JSON'] + timezone?: Scalars['String'] + firstDayOfTheWeek?: Scalars['Int'] + __typename: 'GaugeChartConfiguration' +} + +export interface BarChartConfiguration { + configurationType: WidgetConfigurationType + aggregateFieldMetadataId: Scalars['UUID'] + aggregateOperation: AggregateOperations + primaryAxisGroupByFieldMetadataId: Scalars['UUID'] + primaryAxisGroupBySubFieldName?: Scalars['String'] + primaryAxisDateGranularity?: ObjectRecordGroupByDateGranularity + primaryAxisOrderBy?: GraphOrderBy + primaryAxisManualSortOrder?: Scalars['String'][] + secondaryAxisGroupByFieldMetadataId?: Scalars['UUID'] + secondaryAxisGroupBySubFieldName?: Scalars['String'] + secondaryAxisGroupByDateGranularity?: ObjectRecordGroupByDateGranularity + secondaryAxisOrderBy?: GraphOrderBy + secondaryAxisManualSortOrder?: Scalars['String'][] + omitNullValues?: Scalars['Boolean'] + splitMultiValueFields?: Scalars['Boolean'] + axisNameDisplay?: AxisNameDisplay + displayDataLabel?: Scalars['Boolean'] + displayLegend?: Scalars['Boolean'] + rangeMin?: Scalars['Float'] + rangeMax?: Scalars['Float'] + description?: Scalars['String'] + color?: Scalars['String'] + filter?: Scalars['JSON'] + groupMode?: BarChartGroupMode + layout: BarChartLayout + isCumulative?: Scalars['Boolean'] + timezone?: Scalars['String'] + firstDayOfTheWeek?: Scalars['Int'] + __typename: 'BarChartConfiguration' +} + + +/** Display mode for bar charts with secondary grouping */ +export type BarChartGroupMode = 'STACKED' | 'GROUPED' + + +/** Layout orientation for bar charts */ +export type BarChartLayout = 'VERTICAL' | 'HORIZONTAL' + +export interface CalendarConfiguration { + configurationType: WidgetConfigurationType + __typename: 'CalendarConfiguration' +} + +export interface FrontComponentConfiguration { + configurationType: WidgetConfigurationType + frontComponentId: Scalars['UUID'] + __typename: 'FrontComponentConfiguration' +} + +export interface EmailsConfiguration { + configurationType: WidgetConfigurationType + __typename: 'EmailsConfiguration' +} + +export interface FieldConfiguration { + configurationType: WidgetConfigurationType + __typename: 'FieldConfiguration' +} + +export interface FieldRichTextConfiguration { + configurationType: WidgetConfigurationType + __typename: 'FieldRichTextConfiguration' +} + +export interface FieldsConfiguration { + configurationType: WidgetConfigurationType + viewId?: Scalars['String'] + newFieldDefaultConfiguration?: NewFieldDefaultConfiguration + __typename: 'FieldsConfiguration' +} + +export interface FilesConfiguration { + configurationType: WidgetConfigurationType + __typename: 'FilesConfiguration' +} + +export interface NotesConfiguration { + configurationType: WidgetConfigurationType + __typename: 'NotesConfiguration' +} + +export interface TasksConfiguration { + configurationType: WidgetConfigurationType + __typename: 'TasksConfiguration' +} + +export interface TimelineConfiguration { + configurationType: WidgetConfigurationType + __typename: 'TimelineConfiguration' +} + +export interface ViewConfiguration { + configurationType: WidgetConfigurationType + __typename: 'ViewConfiguration' +} + +export interface WorkflowConfiguration { + configurationType: WidgetConfigurationType + __typename: 'WorkflowConfiguration' +} + +export interface WorkflowRunConfiguration { + configurationType: WidgetConfigurationType + __typename: 'WorkflowRunConfiguration' +} + +export interface WorkflowVersionConfiguration { + configurationType: WidgetConfigurationType + __typename: 'WorkflowVersionConfiguration' +} + +export interface PageLayoutTab { + id: Scalars['UUID'] + applicationId: Scalars['UUID'] + title: Scalars['String'] + position: Scalars['Float'] + pageLayoutId: Scalars['UUID'] + widgets?: PageLayoutWidget[] + icon?: Scalars['String'] + layoutMode?: PageLayoutTabLayoutMode + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'PageLayoutTab' +} + +export interface PageLayout { + id: Scalars['UUID'] + name: Scalars['String'] + type: PageLayoutType + objectMetadataId?: Scalars['UUID'] + tabs?: PageLayoutTab[] + defaultTabToFocusOnMobileAndSidePanelId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'PageLayout' +} + +export type PageLayoutType = 'RECORD_INDEX' | 'RECORD_PAGE' | 'DASHBOARD' + +export interface ObjectRecordEventProperties { + updatedFields?: Scalars['String'][] + before?: Scalars['JSON'] + after?: Scalars['JSON'] + diff?: Scalars['JSON'] + __typename: 'ObjectRecordEventProperties' +} + +export interface MetadataEvent { + type: MetadataEventAction + metadataName: Scalars['String'] + recordId: Scalars['String'] + properties: ObjectRecordEventProperties + __typename: 'MetadataEvent' +} + + +/** Metadata Event Action */ +export type MetadataEventAction = 'CREATED' | 'UPDATED' | 'DELETED' + +export interface ObjectRecordEvent { + action: DatabaseEventAction + objectNameSingular: Scalars['String'] + recordId: Scalars['String'] + userId?: Scalars['String'] + workspaceMemberId?: Scalars['String'] + properties: ObjectRecordEventProperties + __typename: 'ObjectRecordEvent' +} + + +/** Database Event Action */ +export type DatabaseEventAction = 'CREATED' | 'UPDATED' | 'DELETED' | 'DESTROYED' | 'RESTORED' | 'UPSERTED' + +export interface ObjectRecordEventWithQueryIds { + queryIds: Scalars['String'][] + objectRecordEvent: ObjectRecordEvent + __typename: 'ObjectRecordEventWithQueryIds' +} + +export interface MetadataEventWithQueryIds { + queryIds: Scalars['String'][] + metadataEvent: MetadataEvent + __typename: 'MetadataEventWithQueryIds' +} + +export interface EventSubscription { + eventStreamId: Scalars['String'] + objectRecordEventsWithQueryIds: ObjectRecordEventWithQueryIds[] + metadataEventsWithQueryIds: MetadataEventWithQueryIds[] + __typename: 'EventSubscription' +} + +export interface OnDbEvent { + action: DatabaseEventAction + objectNameSingular: Scalars['String'] + eventDate: Scalars['DateTime'] + record: Scalars['JSON'] + updatedFields?: Scalars['String'][] + __typename: 'OnDbEvent' +} + +export interface Analytics { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + __typename: 'Analytics' +} + +export interface BillingSubscriptionSchedulePhaseItem { + price: Scalars['String'] + quantity?: Scalars['Float'] + __typename: 'BillingSubscriptionSchedulePhaseItem' +} + +export interface BillingSubscriptionSchedulePhase { + start_date: Scalars['Float'] + end_date: Scalars['Float'] + items: BillingSubscriptionSchedulePhaseItem[] + __typename: 'BillingSubscriptionSchedulePhase' +} + +export interface BillingProductMetadata { + planKey: BillingPlanKey + priceUsageBased: BillingUsageType + productKey: BillingProductKey + __typename: 'BillingProductMetadata' +} + + +/** The different billing plans available */ +export type BillingPlanKey = 'PRO' | 'ENTERPRISE' + +export type BillingUsageType = 'METERED' | 'LICENSED' + + +/** The different billing products available */ +export type BillingProductKey = 'BASE_PRODUCT' | 'WORKFLOW_NODE_EXECUTION' + +export interface BillingPriceLicensed { + recurringInterval: SubscriptionInterval + unitAmount: Scalars['Float'] + stripePriceId: Scalars['String'] + priceUsageType: BillingUsageType + __typename: 'BillingPriceLicensed' +} + +export type SubscriptionInterval = 'Month' | 'Year' + +export interface BillingPriceTier { + upTo?: Scalars['Float'] + flatAmount?: Scalars['Float'] + unitAmount?: Scalars['Float'] + __typename: 'BillingPriceTier' +} + +export interface BillingPriceMetered { + tiers: BillingPriceTier[] + recurringInterval: SubscriptionInterval + stripePriceId: Scalars['String'] + priceUsageType: BillingUsageType + __typename: 'BillingPriceMetered' +} + +export interface BillingProduct { + name: Scalars['String'] + description: Scalars['String'] + images?: Scalars['String'][] + metadata: BillingProductMetadata + __typename: 'BillingProduct' +} + +export interface BillingLicensedProduct { + name: Scalars['String'] + description: Scalars['String'] + images?: Scalars['String'][] + metadata: BillingProductMetadata + prices?: BillingPriceLicensed[] + __typename: 'BillingLicensedProduct' +} + +export interface BillingMeteredProduct { + name: Scalars['String'] + description: Scalars['String'] + images?: Scalars['String'][] + metadata: BillingProductMetadata + prices?: BillingPriceMetered[] + __typename: 'BillingMeteredProduct' +} + +export interface BillingSubscriptionItem { + id: Scalars['UUID'] + hasReachedCurrentPeriodCap: Scalars['Boolean'] + quantity?: Scalars['Float'] + stripePriceId: Scalars['String'] + billingProduct: BillingProductDTO + __typename: 'BillingSubscriptionItem' +} + +export interface BillingSubscription { + id: Scalars['UUID'] + status: SubscriptionStatus + interval?: SubscriptionInterval + billingSubscriptionItems?: BillingSubscriptionItem[] + currentPeriodEnd?: Scalars['DateTime'] + metadata: Scalars['JSON'] + phases: BillingSubscriptionSchedulePhase[] + __typename: 'BillingSubscription' +} + +export type SubscriptionStatus = 'Active' | 'Canceled' | 'Incomplete' | 'IncompleteExpired' | 'PastDue' | 'Paused' | 'Trialing' | 'Unpaid' + +export interface BillingEndTrialPeriod { + /** Updated subscription status */ + status?: SubscriptionStatus + /** Boolean that confirms if a payment method was found */ + hasPaymentMethod: Scalars['Boolean'] + /** Billing portal URL for payment method update (returned when no payment method exists) */ + billingPortalUrl?: Scalars['String'] + __typename: 'BillingEndTrialPeriod' +} + +export interface BillingMeteredProductUsage { + productKey: BillingProductKey + periodStart: Scalars['DateTime'] + periodEnd: Scalars['DateTime'] + usedCredits: Scalars['Float'] + grantedCredits: Scalars['Float'] + rolloverCredits: Scalars['Float'] + totalGrantedCredits: Scalars['Float'] + unitPriceCents: Scalars['Float'] + __typename: 'BillingMeteredProductUsage' +} + +export interface BillingPlan { + planKey: BillingPlanKey + licensedProducts: BillingLicensedProduct[] + meteredProducts: BillingMeteredProduct[] + __typename: 'BillingPlan' +} + +export interface BillingSession { + url?: Scalars['String'] + __typename: 'BillingSession' +} + +export interface BillingUpdate { + /** Current billing subscription */ + currentBillingSubscription: BillingSubscription + /** All billing subscriptions */ + billingSubscriptions: BillingSubscription[] + __typename: 'BillingUpdate' +} + +export interface OnboardingStepSuccess { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + __typename: 'OnboardingStepSuccess' +} + +export interface ApprovedAccessDomain { + id: Scalars['UUID'] + domain: Scalars['String'] + isValidated: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + __typename: 'ApprovedAccessDomain' +} + +export interface FileWithSignedUrl { + id: Scalars['UUID'] + path: Scalars['String'] + size: Scalars['Float'] + createdAt: Scalars['DateTime'] + url: Scalars['String'] + __typename: 'FileWithSignedUrl' +} + +export interface WorkspaceInvitation { + id: Scalars['UUID'] + email: Scalars['String'] + roleId?: Scalars['UUID'] + expiresAt: Scalars['DateTime'] + __typename: 'WorkspaceInvitation' +} + +export interface SendInvitations { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + errors: Scalars['String'][] + result: WorkspaceInvitation[] + __typename: 'SendInvitations' +} + +export interface ResendEmailVerificationToken { + success: Scalars['Boolean'] + __typename: 'ResendEmailVerificationToken' +} + +export interface WorkspaceUrls { + customUrl?: Scalars['String'] + subdomainUrl: Scalars['String'] + __typename: 'WorkspaceUrls' +} + +export interface SSOConnection { + type: IdentityProviderType + id: Scalars['UUID'] + issuer: Scalars['String'] + name: Scalars['String'] + status: SSOIdentityProviderStatus + __typename: 'SSOConnection' +} + +export type IdentityProviderType = 'OIDC' | 'SAML' + +export type SSOIdentityProviderStatus = 'Active' | 'Inactive' | 'Error' + +export interface AvailableWorkspace { + id: Scalars['UUID'] + displayName?: Scalars['String'] + loginToken?: Scalars['String'] + personalInviteToken?: Scalars['String'] + inviteHash?: Scalars['String'] + workspaceUrls: WorkspaceUrls + logo?: Scalars['String'] + sso: SSOConnection[] + __typename: 'AvailableWorkspace' +} + +export interface AvailableWorkspaces { + availableWorkspacesForSignIn: AvailableWorkspace[] + availableWorkspacesForSignUp: AvailableWorkspace[] + __typename: 'AvailableWorkspaces' +} + +export interface DeletedWorkspaceMember { + id: Scalars['UUID'] + name: FullName + userEmail: Scalars['String'] + avatarUrl?: Scalars['String'] + userWorkspaceId?: Scalars['UUID'] + __typename: 'DeletedWorkspaceMember' +} + +export interface BillingEntitlement { + key: BillingEntitlementKey + value: Scalars['Boolean'] + __typename: 'BillingEntitlement' +} + +export type BillingEntitlementKey = 'SSO' | 'CUSTOM_DOMAIN' | 'RLS' | 'AUDIT_LOGS' + +export interface DomainRecord { + validationType: Scalars['String'] + type: Scalars['String'] + status: Scalars['String'] + key: Scalars['String'] + value: Scalars['String'] + __typename: 'DomainRecord' +} + +export interface DomainValidRecords { + id: Scalars['UUID'] + domain: Scalars['String'] + records: DomainRecord[] + __typename: 'DomainValidRecords' +} + +export interface FeatureFlag { + key: FeatureFlagKey + value: Scalars['Boolean'] + __typename: 'FeatureFlag' +} + +export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_APPLICATION_ENABLED' | 'IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED' | 'IS_MARKETPLACE_ENABLED' | 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' | 'IS_PUBLIC_DOMAIN_ENABLED' | 'IS_EMAILING_DOMAIN_ENABLED' | 'IS_DASHBOARD_V2_ENABLED' | 'IS_ATTACHMENT_MIGRATED' | 'IS_NOTE_TARGET_MIGRATED' | 'IS_TASK_TARGET_MIGRATED' | 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED' | 'IS_JUNCTION_RELATIONS_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_NAVIGATION_MENU_ITEM_ENABLED' | 'IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED' | 'IS_NAVIGATION_MENU_ITEM_EDITING_ENABLED' | 'IS_DRAFT_EMAIL_ENABLED' + +export interface SSOIdentityProvider { + id: Scalars['UUID'] + name: Scalars['String'] + type: IdentityProviderType + status: SSOIdentityProviderStatus + issuer: Scalars['String'] + __typename: 'SSOIdentityProvider' +} + +export interface AuthProviders { + sso: SSOIdentityProvider[] + google: Scalars['Boolean'] + magicLink: Scalars['Boolean'] + password: Scalars['Boolean'] + microsoft: Scalars['Boolean'] + __typename: 'AuthProviders' +} + +export interface AuthBypassProviders { + google: Scalars['Boolean'] + password: Scalars['Boolean'] + microsoft: Scalars['Boolean'] + __typename: 'AuthBypassProviders' +} + +export interface PublicWorkspaceData { + id: Scalars['UUID'] + authProviders: AuthProviders + authBypassProviders?: AuthBypassProviders + logo?: Scalars['String'] + displayName?: Scalars['String'] + workspaceUrls: WorkspaceUrls + __typename: 'PublicWorkspaceData' +} + +export interface IndexEdge { + /** The node containing the Index */ + node: Index + /** Cursor for this node. */ + cursor: Scalars['ConnectionCursor'] + __typename: 'IndexEdge' +} + +export interface PageInfo { + /** true if paging forward and there are more records. */ + hasNextPage?: Scalars['Boolean'] + /** true if paging backwards and there are more records. */ + hasPreviousPage?: Scalars['Boolean'] + /** The cursor of the first returned record. */ + startCursor?: Scalars['ConnectionCursor'] + /** The cursor of the last returned record. */ + endCursor?: Scalars['ConnectionCursor'] + __typename: 'PageInfo' +} + +export interface IndexConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: IndexEdge[] + __typename: 'IndexConnection' +} + +export interface IndexFieldEdge { + /** The node containing the IndexField */ + node: IndexField + /** Cursor for this node. */ + cursor: Scalars['ConnectionCursor'] + __typename: 'IndexFieldEdge' +} + +export interface IndexIndexFieldMetadatasConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: IndexFieldEdge[] + __typename: 'IndexIndexFieldMetadatasConnection' +} + +export interface ObjectEdge { + /** The node containing the Object */ + node: Object + /** Cursor for this node. */ + cursor: Scalars['ConnectionCursor'] + __typename: 'ObjectEdge' +} + +export interface IndexObjectMetadataConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: ObjectEdge[] + __typename: 'IndexObjectMetadataConnection' +} + +export interface ObjectRecordCount { + objectNamePlural: Scalars['String'] + totalCount: Scalars['Int'] + __typename: 'ObjectRecordCount' +} + +export interface ObjectConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: ObjectEdge[] + __typename: 'ObjectConnection' +} + +export interface ObjectIndexMetadatasConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: IndexEdge[] + __typename: 'ObjectIndexMetadatasConnection' +} + +export interface FieldEdge { + /** The node containing the Field */ + node: Field + /** Cursor for this node. */ + cursor: Scalars['ConnectionCursor'] + __typename: 'FieldEdge' +} + +export interface ObjectFieldsConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: FieldEdge[] + __typename: 'ObjectFieldsConnection' +} + +export interface UpsertRowLevelPermissionPredicatesResult { + predicates: RowLevelPermissionPredicate[] + predicateGroups: RowLevelPermissionPredicateGroup[] + __typename: 'UpsertRowLevelPermissionPredicatesResult' +} + +export interface Relation { + type: RelationType + sourceObjectMetadata: Object + targetObjectMetadata: Object + sourceFieldMetadata: Field + targetFieldMetadata: Field + __typename: 'Relation' +} + + +/** Relation type */ +export type RelationType = 'ONE_TO_MANY' | 'MANY_TO_ONE' + +export interface FieldConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: FieldEdge[] + __typename: 'FieldConnection' +} + +export interface VersionDistributionEntry { + version: Scalars['String'] + count: Scalars['Int'] + __typename: 'VersionDistributionEntry' +} + +export interface ApplicationRegistrationStats { + activeInstalls: Scalars['Int'] + mostInstalledVersion?: Scalars['String'] + versionDistribution: VersionDistributionEntry[] + __typename: 'ApplicationRegistrationStats' +} + +export interface CreateApplicationRegistration { + applicationRegistration: ApplicationRegistration + clientSecret: Scalars['String'] + __typename: 'CreateApplicationRegistration' +} + +export interface PublicApplicationRegistration { + id: Scalars['UUID'] + name: Scalars['String'] + logoUrl?: Scalars['String'] + websiteUrl?: Scalars['String'] + oAuthScopes: Scalars['String'][] + __typename: 'PublicApplicationRegistration' +} + +export interface RotateClientSecret { + clientSecret: Scalars['String'] + __typename: 'RotateClientSecret' +} + +export interface DeleteSso { + identityProviderId: Scalars['UUID'] + __typename: 'DeleteSso' +} + +export interface EditSso { + id: Scalars['UUID'] + type: IdentityProviderType + issuer: Scalars['String'] + name: Scalars['String'] + status: SSOIdentityProviderStatus + __typename: 'EditSso' +} + +export interface WorkspaceNameAndId { + displayName?: Scalars['String'] + id: Scalars['UUID'] + __typename: 'WorkspaceNameAndId' +} + +export interface FindAvailableSSOIDP { + type: IdentityProviderType + id: Scalars['UUID'] + issuer: Scalars['String'] + name: Scalars['String'] + status: SSOIdentityProviderStatus + workspace: WorkspaceNameAndId + __typename: 'FindAvailableSSOIDP' +} + +export interface SetupSso { + id: Scalars['UUID'] + type: IdentityProviderType + issuer: Scalars['String'] + name: Scalars['String'] + status: SSOIdentityProviderStatus + __typename: 'SetupSso' +} + +export interface DeleteTwoFactorAuthenticationMethod { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + __typename: 'DeleteTwoFactorAuthenticationMethod' +} + +export interface InitiateTwoFactorAuthenticationProvisioning { + uri: Scalars['String'] + __typename: 'InitiateTwoFactorAuthenticationProvisioning' +} + +export interface VerifyTwoFactorAuthenticationMethod { + success: Scalars['Boolean'] + __typename: 'VerifyTwoFactorAuthenticationMethod' +} + +export interface AuthorizeApp { + redirectUrl: Scalars['String'] + __typename: 'AuthorizeApp' +} + +export interface AuthToken { + token: Scalars['String'] + expiresAt: Scalars['DateTime'] + __typename: 'AuthToken' +} + +export interface AuthTokenPair { + accessOrWorkspaceAgnosticToken: AuthToken + refreshToken: AuthToken + __typename: 'AuthTokenPair' +} + +export interface AvailableWorkspacesAndAccessTokens { + tokens: AuthTokenPair + availableWorkspaces: AvailableWorkspaces + __typename: 'AvailableWorkspacesAndAccessTokens' +} + +export interface EmailPasswordResetLink { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + __typename: 'EmailPasswordResetLink' +} + +export interface GetAuthorizationUrlForSSO { + authorizationURL: Scalars['String'] + type: Scalars['String'] + id: Scalars['UUID'] + __typename: 'GetAuthorizationUrlForSSO' +} + +export interface InvalidatePassword { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean'] + __typename: 'InvalidatePassword' +} + +export interface WorkspaceUrlsAndId { + workspaceUrls: WorkspaceUrls + id: Scalars['UUID'] + __typename: 'WorkspaceUrlsAndId' +} + +export interface SignUp { + loginToken: AuthToken + workspace: WorkspaceUrlsAndId + __typename: 'SignUp' +} + +export interface TransientToken { + transientToken: AuthToken + __typename: 'TransientToken' +} + +export interface ValidatePasswordResetToken { + id: Scalars['UUID'] + email: Scalars['String'] + hasPassword: Scalars['Boolean'] + __typename: 'ValidatePasswordResetToken' +} + +export interface VerifyEmailAndGetLoginToken { + loginToken: AuthToken + workspaceUrls: WorkspaceUrls + __typename: 'VerifyEmailAndGetLoginToken' +} + +export interface ApiKeyToken { + token: Scalars['String'] + __typename: 'ApiKeyToken' +} + +export interface AuthTokens { + tokens: AuthTokenPair + __typename: 'AuthTokens' +} + +export interface LoginToken { + loginToken: AuthToken + __typename: 'LoginToken' +} + +export interface CheckUserExist { + exists: Scalars['Boolean'] + availableWorkspacesCount: Scalars['Float'] + isEmailVerified: Scalars['Boolean'] + __typename: 'CheckUserExist' +} + +export interface WorkspaceInviteHashValid { + isValid: Scalars['Boolean'] + __typename: 'WorkspaceInviteHashValid' +} + +export interface RecordIdentifier { + id: Scalars['UUID'] + labelIdentifier: Scalars['String'] + imageIdentifier?: Scalars['String'] + __typename: 'RecordIdentifier' +} + +export interface NavigationMenuItem { + id: Scalars['UUID'] + userWorkspaceId?: Scalars['UUID'] + targetRecordId?: Scalars['UUID'] + targetObjectMetadataId?: Scalars['UUID'] + viewId?: Scalars['UUID'] + name?: Scalars['String'] + link?: Scalars['String'] + icon?: Scalars['String'] + color?: Scalars['String'] + folderId?: Scalars['UUID'] + position: Scalars['Float'] + applicationId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + targetRecordIdentifier?: RecordIdentifier + __typename: 'NavigationMenuItem' +} + +export interface LogicFunctionExecutionResult { + /** Execution result in JSON format */ + data?: Scalars['JSON'] + /** Execution Logs */ + logs: Scalars['String'] + /** Execution duration in milliseconds */ + duration: Scalars['Float'] + /** Execution status */ + status: LogicFunctionExecutionStatus + /** Execution error in JSON format */ + error?: Scalars['JSON'] + __typename: 'LogicFunctionExecutionResult' +} + + +/** Status of the logic function execution */ +export type LogicFunctionExecutionStatus = 'IDLE' | 'SUCCESS' | 'ERROR' + +export interface LogicFunctionLogs { + /** Execution Logs */ + logs: Scalars['String'] + __typename: 'LogicFunctionLogs' +} + +export interface ToolIndexEntry { + name: Scalars['String'] + description: Scalars['String'] + category: Scalars['String'] + objectName?: Scalars['String'] + inputSchema?: Scalars['JSON'] + __typename: 'ToolIndexEntry' +} + +export interface AgentMessagePart { + id: Scalars['UUID'] + messageId: Scalars['UUID'] + orderIndex: Scalars['Int'] + type: Scalars['String'] + textContent?: Scalars['String'] + reasoningContent?: Scalars['String'] + toolName?: Scalars['String'] + toolCallId?: Scalars['String'] + toolInput?: Scalars['JSON'] + toolOutput?: Scalars['JSON'] + state?: Scalars['String'] + errorMessage?: Scalars['String'] + errorDetails?: Scalars['JSON'] + sourceUrlSourceId?: Scalars['String'] + sourceUrlUrl?: Scalars['String'] + sourceUrlTitle?: Scalars['String'] + sourceDocumentSourceId?: Scalars['String'] + sourceDocumentMediaType?: Scalars['String'] + sourceDocumentTitle?: Scalars['String'] + sourceDocumentFilename?: Scalars['String'] + fileMediaType?: Scalars['String'] + fileFilename?: Scalars['String'] + fileId?: Scalars['UUID'] + fileUrl?: Scalars['String'] + providerMetadata?: Scalars['JSON'] + createdAt: Scalars['DateTime'] + __typename: 'AgentMessagePart' +} + +export interface Skill { + id: Scalars['UUID'] + name: Scalars['String'] + label: Scalars['String'] + icon?: Scalars['String'] + description?: Scalars['String'] + content: Scalars['String'] + isCustom: Scalars['Boolean'] + isActive: Scalars['Boolean'] + applicationId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'Skill' +} + +export interface ApplicationTokenPair { + applicationAccessToken: AuthToken + applicationRefreshToken: AuthToken + __typename: 'ApplicationTokenPair' +} + +export interface FrontComponent { + id: Scalars['UUID'] + name: Scalars['String'] + description?: Scalars['String'] + sourceComponentPath: Scalars['String'] + builtComponentPath: Scalars['String'] + componentName: Scalars['String'] + builtComponentChecksum: Scalars['String'] + universalIdentifier?: Scalars['UUID'] + applicationId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + isHeadless: Scalars['Boolean'] + applicationTokenPair?: ApplicationTokenPair + __typename: 'FrontComponent' +} + +export interface CommandMenuItem { + id: Scalars['UUID'] + workflowVersionId?: Scalars['UUID'] + frontComponentId?: Scalars['UUID'] + frontComponent?: FrontComponent + label: Scalars['String'] + icon?: Scalars['String'] + shortLabel?: Scalars['String'] + position: Scalars['Float'] + isPinned: Scalars['Boolean'] + availabilityType: CommandMenuItemAvailabilityType + conditionalAvailabilityExpression?: Scalars['String'] + availabilityObjectMetadataId?: Scalars['UUID'] + applicationId?: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'CommandMenuItem' +} + +export type CommandMenuItemAvailabilityType = 'GLOBAL' | 'RECORD_SELECTION' + +export interface AgentChatThread { + id: Scalars['UUID'] + title?: Scalars['String'] + totalInputTokens: Scalars['Int'] + totalOutputTokens: Scalars['Int'] + contextWindowTokens?: Scalars['Int'] + conversationSize: Scalars['Int'] + totalInputCredits: Scalars['Float'] + totalOutputCredits: Scalars['Float'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'AgentChatThread' +} + +export interface AgentMessage { + id: Scalars['UUID'] + threadId: Scalars['UUID'] + turnId: Scalars['UUID'] + agentId?: Scalars['UUID'] + role: Scalars['String'] + parts: AgentMessagePart[] + createdAt: Scalars['DateTime'] + __typename: 'AgentMessage' +} + +export interface AISystemPromptSection { + title: Scalars['String'] + content: Scalars['String'] + estimatedTokenCount: Scalars['Int'] + __typename: 'AISystemPromptSection' +} + +export interface AISystemPromptPreview { + sections: AISystemPromptSection[] + estimatedTokenCount: Scalars['Int'] + __typename: 'AISystemPromptPreview' +} + +export interface AgentChatThreadEdge { + /** The node containing the AgentChatThread */ + node: AgentChatThread + /** Cursor for this node. */ + cursor: Scalars['ConnectionCursor'] + __typename: 'AgentChatThreadEdge' +} + +export interface AgentChatThreadConnection { + /** Paging information */ + pageInfo: PageInfo + /** Array of edges. */ + edges: AgentChatThreadEdge[] + __typename: 'AgentChatThreadConnection' +} + +export interface AgentTurnEvaluation { + id: Scalars['UUID'] + turnId: Scalars['UUID'] + score: Scalars['Int'] + comment?: Scalars['String'] + createdAt: Scalars['DateTime'] + __typename: 'AgentTurnEvaluation' +} + +export interface AgentTurn { + id: Scalars['UUID'] + threadId: Scalars['UUID'] + agentId?: Scalars['UUID'] + evaluations: AgentTurnEvaluation[] + messages: AgentMessage[] + createdAt: Scalars['DateTime'] + __typename: 'AgentTurn' +} + +export interface Webhook { + id: Scalars['UUID'] + targetUrl: Scalars['String'] + operations: Scalars['String'][] + description?: Scalars['String'] + secret: Scalars['String'] + applicationId: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + deletedAt?: Scalars['DateTime'] + __typename: 'Webhook' +} + +export interface BillingTrialPeriod { + duration: Scalars['Float'] + isCreditCardRequired: Scalars['Boolean'] + __typename: 'BillingTrialPeriod' +} + +export interface NativeModelCapabilities { + webSearch?: Scalars['Boolean'] + twitterSearch?: Scalars['Boolean'] + __typename: 'NativeModelCapabilities' +} + +export interface ClientAIModelConfig { + modelId: Scalars['String'] + label: Scalars['String'] + modelFamily?: ModelFamily + inferenceProvider: InferenceProvider + inputCostPerMillionTokensInCredits: Scalars['Float'] + outputCostPerMillionTokensInCredits: Scalars['Float'] + nativeCapabilities?: NativeModelCapabilities + deprecated?: Scalars['Boolean'] + isRecommended?: Scalars['Boolean'] + __typename: 'ClientAIModelConfig' +} + +export type ModelFamily = 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'MISTRAL' | 'XAI' + +export type InferenceProvider = 'NONE' | 'OPENAI' | 'ANTHROPIC' | 'BEDROCK' | 'GOOGLE' | 'MISTRAL' | 'OPENAI_COMPATIBLE' | 'XAI' | 'GROQ' + +export interface AdminAIModelConfig { + modelId: Scalars['String'] + label: Scalars['String'] + modelFamily?: ModelFamily + inferenceProvider: InferenceProvider + isAvailable: Scalars['Boolean'] + isAdminEnabled: Scalars['Boolean'] + deprecated?: Scalars['Boolean'] + isRecommended?: Scalars['Boolean'] + __typename: 'AdminAIModelConfig' +} + +export interface AdminAIModels { + autoEnableNewModels: Scalars['Boolean'] + models: AdminAIModelConfig[] + __typename: 'AdminAIModels' +} + +export interface Billing { + isBillingEnabled: Scalars['Boolean'] + billingUrl?: Scalars['String'] + trialPeriods: BillingTrialPeriod[] + __typename: 'Billing' +} + +export interface Support { + supportDriver: SupportDriver + supportFrontChatId?: Scalars['String'] + __typename: 'Support' +} + +export type SupportDriver = 'NONE' | 'FRONT' + +export interface Sentry { + environment?: Scalars['String'] + release?: Scalars['String'] + dsn?: Scalars['String'] + __typename: 'Sentry' +} + +export interface Captcha { + provider?: CaptchaDriverType + siteKey?: Scalars['String'] + __typename: 'Captcha' +} + +export type CaptchaDriverType = 'GOOGLE_RECAPTCHA' | 'TURNSTILE' + +export interface ApiConfig { + mutationMaximumAffectedRecords: Scalars['Float'] + __typename: 'ApiConfig' +} + +export interface PublicFeatureFlagMetadata { + label: Scalars['String'] + description: Scalars['String'] + imagePath?: Scalars['String'] + __typename: 'PublicFeatureFlagMetadata' +} + +export interface PublicFeatureFlag { + key: FeatureFlagKey + metadata: PublicFeatureFlagMetadata + __typename: 'PublicFeatureFlag' +} + +export interface ClientConfig { + appVersion?: Scalars['String'] + authProviders: AuthProviders + billing: Billing + aiModels: ClientAIModelConfig[] + signInPrefilled: Scalars['Boolean'] + isMultiWorkspaceEnabled: Scalars['Boolean'] + isEmailVerificationRequired: Scalars['Boolean'] + defaultSubdomain?: Scalars['String'] + frontDomain: Scalars['String'] + analyticsEnabled: Scalars['Boolean'] + support: Support + isAttachmentPreviewEnabled: Scalars['Boolean'] + sentry: Sentry + captcha: Captcha + chromeExtensionId?: Scalars['String'] + api: ApiConfig + canManageFeatureFlags: Scalars['Boolean'] + publicFeatureFlags: PublicFeatureFlag[] + isMicrosoftMessagingEnabled: Scalars['Boolean'] + isMicrosoftCalendarEnabled: Scalars['Boolean'] + isGoogleMessagingEnabled: Scalars['Boolean'] + isGoogleCalendarEnabled: Scalars['Boolean'] + isConfigVariablesInDbEnabled: Scalars['Boolean'] + isImapSmtpCaldavEnabled: Scalars['Boolean'] + allowRequestsToTwentyIcons: Scalars['Boolean'] + calendarBookingPageId?: Scalars['String'] + isCloudflareIntegrationEnabled: Scalars['Boolean'] + isClickHouseConfigured: Scalars['Boolean'] + __typename: 'ClientConfig' +} + +export interface ConfigVariable { + name: Scalars['String'] + description: Scalars['String'] + value?: Scalars['JSON'] + isSensitive: Scalars['Boolean'] + source: ConfigSource + isEnvOnly: Scalars['Boolean'] + type: ConfigVariableType + options?: Scalars['JSON'] + __typename: 'ConfigVariable' +} + +export type ConfigSource = 'ENVIRONMENT' | 'DATABASE' | 'DEFAULT' + +export type ConfigVariableType = 'BOOLEAN' | 'NUMBER' | 'ARRAY' | 'STRING' | 'ENUM' + +export interface ConfigVariablesGroupData { + variables: ConfigVariable[] + name: ConfigVariablesGroup + description: Scalars['String'] + isHiddenOnLoad: Scalars['Boolean'] + __typename: 'ConfigVariablesGroupData' +} + +export type ConfigVariablesGroup = 'SERVER_CONFIG' | 'RATE_LIMITING' | 'STORAGE_CONFIG' | 'GOOGLE_AUTH' | 'MICROSOFT_AUTH' | 'EMAIL_SETTINGS' | 'LOGGING' | 'METERING' | 'EXCEPTION_HANDLER' | 'OTHER' | 'BILLING_CONFIG' | 'CAPTCHA_CONFIG' | 'CLOUDFLARE_CONFIG' | 'LLM' | 'LOGIC_FUNCTION_CONFIG' | 'CODE_INTERPRETER_CONFIG' | 'SSL' | 'SUPPORT_CHAT_CONFIG' | 'ANALYTICS_CONFIG' | 'TOKENS_DURATION' | 'TWO_FACTOR_AUTHENTICATION' | 'AWS_SES_SETTINGS' + +export interface ConfigVariables { + groups: ConfigVariablesGroupData[] + __typename: 'ConfigVariables' +} + +export interface JobOperationResult { + jobId: Scalars['String'] + success: Scalars['Boolean'] + error?: Scalars['String'] + __typename: 'JobOperationResult' +} + +export interface DeleteJobsResponse { + deletedCount: Scalars['Int'] + results: JobOperationResult[] + __typename: 'DeleteJobsResponse' +} + +export interface QueueJob { + id: Scalars['String'] + name: Scalars['String'] + data?: Scalars['JSON'] + state: JobState + timestamp?: Scalars['Float'] + failedReason?: Scalars['String'] + processedOn?: Scalars['Float'] + finishedOn?: Scalars['Float'] + attemptsMade: Scalars['Float'] + returnValue?: Scalars['JSON'] + logs?: Scalars['String'][] + stackTrace?: Scalars['String'][] + __typename: 'QueueJob' +} + + +/** Job state in the queue */ +export type JobState = 'COMPLETED' | 'FAILED' | 'ACTIVE' | 'WAITING' | 'DELAYED' | 'PRIORITIZED' | 'WAITING_CHILDREN' + +export interface QueueRetentionConfig { + completedMaxAge: Scalars['Float'] + completedMaxCount: Scalars['Float'] + failedMaxAge: Scalars['Float'] + failedMaxCount: Scalars['Float'] + __typename: 'QueueRetentionConfig' +} + +export interface QueueJobsResponse { + jobs: QueueJob[] + count: Scalars['Float'] + totalCount: Scalars['Float'] + hasMore: Scalars['Boolean'] + retentionConfig: QueueRetentionConfig + __typename: 'QueueJobsResponse' +} + +export interface RetryJobsResponse { + retriedCount: Scalars['Int'] + results: JobOperationResult[] + __typename: 'RetryJobsResponse' +} + +export interface SystemHealthService { + id: HealthIndicatorId + label: Scalars['String'] + status: AdminPanelHealthServiceStatus + __typename: 'SystemHealthService' +} + +export type HealthIndicatorId = 'database' | 'redis' | 'worker' | 'connectedAccount' | 'app' + +export type AdminPanelHealthServiceStatus = 'OPERATIONAL' | 'OUTAGE' + +export interface SystemHealth { + services: SystemHealthService[] + __typename: 'SystemHealth' +} + +export interface UserInfo { + id: Scalars['UUID'] + email: Scalars['String'] + firstName?: Scalars['String'] + lastName?: Scalars['String'] + __typename: 'UserInfo' +} + +export interface WorkspaceInfo { + id: Scalars['UUID'] + name: Scalars['String'] + allowImpersonation: Scalars['Boolean'] + logo?: Scalars['String'] + totalUsers: Scalars['Float'] + workspaceUrls: WorkspaceUrls + users: UserInfo[] + featureFlags: FeatureFlag[] + __typename: 'WorkspaceInfo' +} + +export interface UserLookup { + user: UserInfo + workspaces: WorkspaceInfo[] + __typename: 'UserLookup' +} + +export interface VersionInfo { + currentVersion?: Scalars['String'] + latestVersion: Scalars['String'] + __typename: 'VersionInfo' +} + +export interface AdminPanelWorkerQueueHealth { + id: Scalars['String'] + queueName: Scalars['String'] + status: AdminPanelHealthServiceStatus + __typename: 'AdminPanelWorkerQueueHealth' +} + +export interface AdminPanelHealthServiceData { + id: HealthIndicatorId + label: Scalars['String'] + description: Scalars['String'] + status: AdminPanelHealthServiceStatus + errorMessage?: Scalars['String'] + details?: Scalars['String'] + queues?: AdminPanelWorkerQueueHealth[] + __typename: 'AdminPanelHealthServiceData' +} + +export interface QueueMetricsDataPoint { + x: Scalars['Float'] + y: Scalars['Float'] + __typename: 'QueueMetricsDataPoint' +} + +export interface QueueMetricsSeries { + id: Scalars['String'] + data: QueueMetricsDataPoint[] + __typename: 'QueueMetricsSeries' +} + +export interface WorkerQueueMetrics { + failed: Scalars['Float'] + completed: Scalars['Float'] + waiting: Scalars['Float'] + active: Scalars['Float'] + delayed: Scalars['Float'] + failureRate: Scalars['Float'] + failedData?: Scalars['Float'][] + completedData?: Scalars['Float'][] + __typename: 'WorkerQueueMetrics' +} + +export interface QueueMetricsData { + queueName: Scalars['String'] + workers: Scalars['Float'] + timeRange: QueueMetricsTimeRange + details?: WorkerQueueMetrics + data: QueueMetricsSeries[] + __typename: 'QueueMetricsData' +} + +export type QueueMetricsTimeRange = 'SevenDays' | 'OneDay' | 'TwelveHours' | 'FourHours' | 'OneHour' + +export interface Impersonate { + loginToken: AuthToken + workspace: WorkspaceUrlsAndId + __typename: 'Impersonate' +} + +export interface DevelopmentApplication { + id: Scalars['String'] + universalIdentifier: Scalars['String'] + __typename: 'DevelopmentApplication' +} + +export interface WorkspaceMigration { + applicationUniversalIdentifier: Scalars['String'] + actions: Scalars['JSON'] + __typename: 'WorkspaceMigration' +} + +export interface File { + id: Scalars['UUID'] + path: Scalars['String'] + size: Scalars['Float'] + createdAt: Scalars['DateTime'] + __typename: 'File' +} + +export interface MarketplaceAppField { + name: Scalars['String'] + type: Scalars['String'] + label: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + objectUniversalIdentifier?: Scalars['String'] + universalIdentifier?: Scalars['String'] + __typename: 'MarketplaceAppField' +} + +export interface MarketplaceAppObject { + universalIdentifier: Scalars['String'] + nameSingular: Scalars['String'] + namePlural: Scalars['String'] + labelSingular: Scalars['String'] + labelPlural: Scalars['String'] + description?: Scalars['String'] + icon?: Scalars['String'] + fields: MarketplaceAppField[] + __typename: 'MarketplaceAppObject' +} + +export interface MarketplaceAppLogicFunction { + name: Scalars['String'] + description?: Scalars['String'] + timeoutSeconds?: Scalars['Int'] + __typename: 'MarketplaceAppLogicFunction' +} + +export interface MarketplaceAppFrontComponent { + name: Scalars['String'] + description?: Scalars['String'] + __typename: 'MarketplaceAppFrontComponent' +} + +export interface MarketplaceAppRoleObjectPermission { + objectUniversalIdentifier: Scalars['String'] + canReadObjectRecords?: Scalars['Boolean'] + canUpdateObjectRecords?: Scalars['Boolean'] + canSoftDeleteObjectRecords?: Scalars['Boolean'] + canDestroyObjectRecords?: Scalars['Boolean'] + __typename: 'MarketplaceAppRoleObjectPermission' +} + +export interface MarketplaceAppRoleFieldPermission { + objectUniversalIdentifier: Scalars['String'] + fieldUniversalIdentifier: Scalars['String'] + canReadFieldValue?: Scalars['Boolean'] + canUpdateFieldValue?: Scalars['Boolean'] + __typename: 'MarketplaceAppRoleFieldPermission' +} + +export interface MarketplaceAppDefaultRole { + id: Scalars['String'] + label: Scalars['String'] + description?: Scalars['String'] + canReadAllObjectRecords: Scalars['Boolean'] + canUpdateAllObjectRecords: Scalars['Boolean'] + canSoftDeleteAllObjectRecords: Scalars['Boolean'] + canDestroyAllObjectRecords: Scalars['Boolean'] + canUpdateAllSettings: Scalars['Boolean'] + canAccessAllTools: Scalars['Boolean'] + objectPermissions: MarketplaceAppRoleObjectPermission[] + fieldPermissions: MarketplaceAppRoleFieldPermission[] + permissionFlags: Scalars['String'][] + __typename: 'MarketplaceAppDefaultRole' +} + +export interface MarketplaceApp { + id: Scalars['String'] + name: Scalars['String'] + description: Scalars['String'] + icon: Scalars['String'] + version: Scalars['String'] + author: Scalars['String'] + category: Scalars['String'] + logo?: Scalars['String'] + screenshots: Scalars['String'][] + aboutDescription: Scalars['String'] + providers: Scalars['String'][] + websiteUrl?: Scalars['String'] + termsUrl?: Scalars['String'] + objects: MarketplaceAppObject[] + fields: MarketplaceAppField[] + logicFunctions: MarketplaceAppLogicFunction[] + frontComponents: MarketplaceAppFrontComponent[] + defaultRole?: MarketplaceAppDefaultRole + sourcePackage?: Scalars['String'] + isFeatured: Scalars['Boolean'] + __typename: 'MarketplaceApp' +} + +export interface PublicDomain { + id: Scalars['UUID'] + domain: Scalars['String'] + isValidated: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + __typename: 'PublicDomain' +} + +export interface VerificationRecord { + type: Scalars['String'] + key: Scalars['String'] + value: Scalars['String'] + priority?: Scalars['Float'] + __typename: 'VerificationRecord' +} + +export interface EmailingDomain { + id: Scalars['UUID'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + domain: Scalars['String'] + driver: EmailingDomainDriver + status: EmailingDomainStatus + verificationRecords?: VerificationRecord[] + verifiedAt?: Scalars['DateTime'] + __typename: 'EmailingDomain' +} + +export type EmailingDomainDriver = 'AWS_SES' + +export type EmailingDomainStatus = 'PENDING' | 'VERIFIED' | 'FAILED' | 'TEMPORARY_FAILURE' + +export interface AutocompleteResult { + text: Scalars['String'] + placeId: Scalars['String'] + __typename: 'AutocompleteResult' +} + +export interface Location { + lat?: Scalars['Float'] + lng?: Scalars['Float'] + __typename: 'Location' +} + +export interface PlaceDetailsResult { + state?: Scalars['String'] + postcode?: Scalars['String'] + city?: Scalars['String'] + country?: Scalars['String'] + location?: Location + __typename: 'PlaceDetailsResult' +} + +export interface ConnectionParametersOutput { + host: Scalars['String'] + port: Scalars['Float'] + username?: Scalars['String'] + password: Scalars['String'] + secure?: Scalars['Boolean'] + __typename: 'ConnectionParametersOutput' +} + +export interface ImapSmtpCaldavConnectionParameters { + IMAP?: ConnectionParametersOutput + SMTP?: ConnectionParametersOutput + CALDAV?: ConnectionParametersOutput + __typename: 'ImapSmtpCaldavConnectionParameters' +} + +export interface ConnectedImapSmtpCaldavAccount { + id: Scalars['UUID'] + handle: Scalars['String'] + provider: Scalars['String'] + accountOwnerId: Scalars['UUID'] + connectionParameters?: ImapSmtpCaldavConnectionParameters + __typename: 'ConnectedImapSmtpCaldavAccount' +} + +export interface ImapSmtpCaldavConnectionSuccess { + success: Scalars['Boolean'] + connectedAccountId: Scalars['String'] + __typename: 'ImapSmtpCaldavConnectionSuccess' +} + +export interface PostgresCredentials { + id: Scalars['UUID'] + user: Scalars['String'] + password: Scalars['String'] + workspaceId: Scalars['UUID'] + __typename: 'PostgresCredentials' +} + +export interface ChannelSyncSuccess { + success: Scalars['Boolean'] + __typename: 'ChannelSyncSuccess' +} + +export interface BarChartSeries { + key: Scalars['String'] + label: Scalars['String'] + __typename: 'BarChartSeries' +} + +export interface BarChartData { + data: Scalars['JSON'][] + indexBy: Scalars['String'] + keys: Scalars['String'][] + series: BarChartSeries[] + xAxisLabel: Scalars['String'] + yAxisLabel: Scalars['String'] + showLegend: Scalars['Boolean'] + showDataLabels: Scalars['Boolean'] + layout: BarChartLayout + groupMode: BarChartGroupMode + hasTooManyGroups: Scalars['Boolean'] + formattedToRawLookup: Scalars['JSON'] + __typename: 'BarChartData' +} + +export interface LineChartDataPoint { + x: Scalars['String'] + y: Scalars['Float'] + __typename: 'LineChartDataPoint' +} + +export interface LineChartSeries { + id: Scalars['String'] + label: Scalars['String'] + data: LineChartDataPoint[] + __typename: 'LineChartSeries' +} + +export interface LineChartData { + series: LineChartSeries[] + xAxisLabel: Scalars['String'] + yAxisLabel: Scalars['String'] + showLegend: Scalars['Boolean'] + showDataLabels: Scalars['Boolean'] + hasTooManyGroups: Scalars['Boolean'] + formattedToRawLookup: Scalars['JSON'] + __typename: 'LineChartData' +} + +export interface PieChartDataItem { + id: Scalars['String'] + value: Scalars['Float'] + __typename: 'PieChartDataItem' +} + +export interface PieChartData { + data: PieChartDataItem[] + showLegend: Scalars['Boolean'] + showDataLabels: Scalars['Boolean'] + showCenterMetric: Scalars['Boolean'] + hasTooManyGroups: Scalars['Boolean'] + formattedToRawLookup: Scalars['JSON'] + __typename: 'PieChartData' +} + +export interface DuplicatedDashboard { + id: Scalars['UUID'] + title?: Scalars['String'] + pageLayoutId?: Scalars['UUID'] + position: Scalars['Float'] + createdAt: Scalars['String'] + updatedAt: Scalars['String'] + __typename: 'DuplicatedDashboard' +} + +export interface EventLogRecord { + event: Scalars['String'] + timestamp: Scalars['DateTime'] + userId?: Scalars['String'] + properties?: Scalars['JSON'] + recordId?: Scalars['String'] + objectMetadataId?: Scalars['String'] + isCustom?: Scalars['Boolean'] + __typename: 'EventLogRecord' +} + +export interface EventLogPageInfo { + endCursor?: Scalars['String'] + hasNextPage: Scalars['Boolean'] + __typename: 'EventLogPageInfo' +} + +export interface EventLogQueryResult { + records: EventLogRecord[] + totalCount: Scalars['Int'] + pageInfo: EventLogPageInfo + __typename: 'EventLogQueryResult' +} + +export interface Query { + getPageLayoutWidgets: PageLayoutWidget[] + getPageLayoutWidget: PageLayoutWidget + getPageLayoutTabs: PageLayoutTab[] + getPageLayoutTab: PageLayoutTab + getPageLayouts: PageLayout[] + getPageLayout?: PageLayout + findOneLogicFunction: LogicFunction + findManyLogicFunctions: LogicFunction[] + getAvailablePackages: Scalars['JSON'] + getLogicFunctionSourceCode?: Scalars['String'] + objectRecordCounts: ObjectRecordCount[] + object: Object + objects: ObjectConnection + getCoreViewFields: CoreViewField[] + getCoreViewField?: CoreViewField + getCoreViews: CoreView[] + getCoreView?: CoreView + getCoreViewSorts: CoreViewSort[] + getCoreViewSort?: CoreViewSort + getCoreViewGroups: CoreViewGroup[] + getCoreViewGroup?: CoreViewGroup + getCoreViewFilterGroups: CoreViewFilterGroup[] + getCoreViewFilterGroup?: CoreViewFilterGroup + getCoreViewFilters: CoreViewFilter[] + getCoreViewFilter?: CoreViewFilter + getCoreViewFieldGroups: CoreViewFieldGroup[] + getCoreViewFieldGroup?: CoreViewFieldGroup + index: Index + indexMetadatas: IndexConnection + commandMenuItems: CommandMenuItem[] + commandMenuItem?: CommandMenuItem + frontComponents: FrontComponent[] + frontComponent?: FrontComponent + findManyAgents: Agent[] + findOneAgent: Agent + billingPortalSession: BillingSession + listPlans: BillingPlan[] + getMeteredProductsUsage: BillingMeteredProductUsage[] + navigationMenuItems: NavigationMenuItem[] + navigationMenuItem?: NavigationMenuItem + apiKeys: ApiKey[] + apiKey?: ApiKey + getRoles: Role[] + findWorkspaceInvitations: WorkspaceInvitation[] + getApprovedAccessDomains: ApprovedAccessDomain[] + getToolIndex: ToolIndexEntry[] + getToolInputSchema?: Scalars['JSON'] + field: Field + fields: FieldConnection + currentUser: User + currentWorkspace: Workspace + getPublicWorkspaceDataByDomain: PublicWorkspaceData + checkUserExists: CheckUserExist + checkWorkspaceInviteHashIsValid: WorkspaceInviteHashValid + findWorkspaceFromInviteHash: Workspace + validatePasswordResetToken: ValidatePasswordResetToken + findApplicationRegistrationByClientId?: PublicApplicationRegistration + findApplicationRegistrationByUniversalIdentifier?: ApplicationRegistration + findManyApplicationRegistrations: ApplicationRegistration[] + findOneApplicationRegistration: ApplicationRegistration + findApplicationRegistrationStats: ApplicationRegistrationStats + findApplicationRegistrationVariables: ApplicationRegistrationVariable[] + applicationRegistrationTarballUrl?: Scalars['String'] + getSSOIdentityProviders: FindAvailableSSOIDP[] + webhooks: Webhook[] + webhook?: Webhook + chatThread: AgentChatThread + chatMessages: AgentMessage[] + getAISystemPromptPreview: AISystemPromptPreview + skills: Skill[] + skill?: Skill + chatThreads: AgentChatThreadConnection + agentTurns: AgentTurn[] + eventLogs: EventLogQueryResult + pieChartData: PieChartData + lineChartData: LineChartData + barChartData: BarChartData + getConnectedImapSmtpCaldavAccount: ConnectedImapSmtpCaldavAccount + getAutoCompleteAddress: AutocompleteResult[] + getAddressDetails: PlaceDetailsResult + getConfigVariablesGrouped: ConfigVariables + getSystemHealthStatus: SystemHealth + getIndicatorHealthStatus: AdminPanelHealthServiceData + getQueueMetrics: QueueMetricsData + versionInfo: VersionInfo + getAdminAiModels: AdminAIModels + getDatabaseConfigVariable: ConfigVariable + getQueueJobs: QueueJobsResponse + findAllApplicationRegistrations: ApplicationRegistration[] + getPostgresCredentials?: PostgresCredentials + findManyPublicDomains: PublicDomain[] + getEmailingDomains: EmailingDomain[] + findManyMarketplaceApps: MarketplaceApp[] + findOneMarketplaceApp: MarketplaceApp + findManyApplications: Application[] + findOneApplication: Application + __typename: 'Query' +} + +export type AgentChatThreadSortFields = 'id' | 'updatedAt' + + +/** Sort Directions */ +export type SortDirection = 'ASC' | 'DESC' + + +/** Sort Nulls Options */ +export type SortNulls = 'NULLS_FIRST' | 'NULLS_LAST' + +export type EventLogTable = 'WORKSPACE_EVENT' | 'PAGEVIEW' | 'OBJECT_EVENT' + +export interface Mutation { + addQueryToEventStream: Scalars['Boolean'] + removeQueryFromEventStream: Scalars['Boolean'] + createObjectEvent: Analytics + trackAnalytics: Analytics + createPageLayoutWidget: PageLayoutWidget + updatePageLayoutWidget: PageLayoutWidget + destroyPageLayoutWidget: Scalars['Boolean'] + createPageLayoutTab: PageLayoutTab + updatePageLayoutTab: PageLayoutTab + destroyPageLayoutTab: Scalars['Boolean'] + createPageLayout: PageLayout + updatePageLayout: PageLayout + destroyPageLayout: Scalars['Boolean'] + updatePageLayoutWithTabsAndWidgets: PageLayout + deleteOneLogicFunction: LogicFunction + createOneLogicFunction: LogicFunction + executeOneLogicFunction: LogicFunctionExecutionResult + updateOneLogicFunction: Scalars['Boolean'] + createOneObject: Object + deleteOneObject: Object + updateOneObject: Object + updateCoreViewField: CoreViewField + createCoreViewField: CoreViewField + createManyCoreViewFields: CoreViewField[] + deleteCoreViewField: CoreViewField + destroyCoreViewField: CoreViewField + createCoreView: CoreView + updateCoreView: CoreView + deleteCoreView: Scalars['Boolean'] + destroyCoreView: Scalars['Boolean'] + createCoreViewSort: CoreViewSort + updateCoreViewSort: CoreViewSort + deleteCoreViewSort: Scalars['Boolean'] + destroyCoreViewSort: Scalars['Boolean'] + createCoreViewGroup: CoreViewGroup + createManyCoreViewGroups: CoreViewGroup[] + updateCoreViewGroup: CoreViewGroup + deleteCoreViewGroup: CoreViewGroup + destroyCoreViewGroup: CoreViewGroup + createCoreViewFilterGroup: CoreViewFilterGroup + updateCoreViewFilterGroup: CoreViewFilterGroup + deleteCoreViewFilterGroup: Scalars['Boolean'] + destroyCoreViewFilterGroup: Scalars['Boolean'] + createCoreViewFilter: CoreViewFilter + updateCoreViewFilter: CoreViewFilter + deleteCoreViewFilter: CoreViewFilter + destroyCoreViewFilter: CoreViewFilter + updateCoreViewFieldGroup: CoreViewFieldGroup + createCoreViewFieldGroup: CoreViewFieldGroup + createManyCoreViewFieldGroups: CoreViewFieldGroup[] + deleteCoreViewFieldGroup: CoreViewFieldGroup + destroyCoreViewFieldGroup: CoreViewFieldGroup + upsertFieldsWidget: CoreView + createCommandMenuItem: CommandMenuItem + updateCommandMenuItem: CommandMenuItem + deleteCommandMenuItem: CommandMenuItem + createFrontComponent: FrontComponent + updateFrontComponent: FrontComponent + deleteFrontComponent: FrontComponent + createOneAgent: Agent + updateOneAgent: Agent + deleteOneAgent: Agent + uploadAIChatFile: FileWithSignedUrl + uploadWorkflowFile: FileWithSignedUrl + uploadWorkspaceLogo: FileWithSignedUrl + uploadWorkspaceMemberProfilePicture: FileWithSignedUrl + uploadFilesFieldFile: FileWithSignedUrl + uploadFilesFieldFileByUniversalIdentifier: FileWithSignedUrl + checkoutSession: BillingSession + switchSubscriptionInterval: BillingUpdate + switchBillingPlan: BillingUpdate + cancelSwitchBillingPlan: BillingUpdate + cancelSwitchBillingInterval: BillingUpdate + setMeteredSubscriptionPrice: BillingUpdate + endSubscriptionTrialPeriod: BillingEndTrialPeriod + cancelSwitchMeteredPrice: BillingUpdate + createNavigationMenuItem: NavigationMenuItem + updateNavigationMenuItem: NavigationMenuItem + deleteNavigationMenuItem: NavigationMenuItem + createApiKey: ApiKey + updateApiKey?: ApiKey + revokeApiKey?: ApiKey + assignRoleToApiKey: Scalars['Boolean'] + updateWorkspaceMemberRole: WorkspaceMember + createOneRole: Role + updateOneRole: Role + deleteOneRole: Scalars['String'] + upsertObjectPermissions: ObjectPermission[] + upsertPermissionFlags: PermissionFlag[] + upsertFieldPermissions: FieldPermission[] + upsertRowLevelPermissionPredicates: UpsertRowLevelPermissionPredicatesResult + assignRoleToAgent: Scalars['Boolean'] + removeRoleFromAgent: Scalars['Boolean'] + skipSyncEmailOnboardingStep: OnboardingStepSuccess + skipBookOnboardingStep: OnboardingStepSuccess + deleteWorkspaceInvitation: Scalars['String'] + resendWorkspaceInvitation: SendInvitations + sendInvitations: SendInvitations + createApprovedAccessDomain: ApprovedAccessDomain + deleteApprovedAccessDomain: Scalars['Boolean'] + validateApprovedAccessDomain: ApprovedAccessDomain + createOneField: Field + updateOneField: Field + deleteOneField: Field + deleteUser: User + deleteUserFromWorkspace: UserWorkspace + updateUserEmail: Scalars['Boolean'] + resendEmailVerificationToken: ResendEmailVerificationToken + activateWorkspace: Workspace + updateWorkspace: Workspace + deleteCurrentWorkspace: Workspace + checkCustomDomainValidRecords?: DomainValidRecords + getAuthorizationUrlForSSO: GetAuthorizationUrlForSSO + getLoginTokenFromCredentials: LoginToken + signIn: AvailableWorkspacesAndAccessTokens + verifyEmailAndGetLoginToken: VerifyEmailAndGetLoginToken + verifyEmailAndGetWorkspaceAgnosticToken: AvailableWorkspacesAndAccessTokens + getAuthTokensFromOTP: AuthTokens + signUp: AvailableWorkspacesAndAccessTokens + signUpInWorkspace: SignUp + signUpInNewWorkspace: SignUp + generateTransientToken: TransientToken + getAuthTokensFromLoginToken: AuthTokens + authorizeApp: AuthorizeApp + renewToken: AuthTokens + generateApiKeyToken: ApiKeyToken + emailPasswordResetLink: EmailPasswordResetLink + updatePasswordViaResetToken: InvalidatePassword + createApplicationRegistration: CreateApplicationRegistration + updateApplicationRegistration: ApplicationRegistration + deleteApplicationRegistration: Scalars['Boolean'] + rotateApplicationRegistrationClientSecret: RotateClientSecret + createApplicationRegistrationVariable: ApplicationRegistrationVariable + updateApplicationRegistrationVariable: ApplicationRegistrationVariable + deleteApplicationRegistrationVariable: Scalars['Boolean'] + uploadAppTarball: ApplicationRegistration + transferApplicationRegistrationOwnership: ApplicationRegistration + initiateOTPProvisioning: InitiateTwoFactorAuthenticationProvisioning + initiateOTPProvisioningForAuthenticatedUser: InitiateTwoFactorAuthenticationProvisioning + deleteTwoFactorAuthenticationMethod: DeleteTwoFactorAuthenticationMethod + verifyTwoFactorAuthenticationMethodForAuthenticatedUser: VerifyTwoFactorAuthenticationMethod + createOIDCIdentityProvider: SetupSso + createSAMLIdentityProvider: SetupSso + deleteSSOIdentityProvider: DeleteSso + editSSOIdentityProvider: EditSso + createWebhook: Webhook + updateWebhook: Webhook + deleteWebhook: Webhook + createChatThread: AgentChatThread + createSkill: Skill + updateSkill: Skill + deleteSkill: Skill + activateSkill: Skill + deactivateSkill: Skill + evaluateAgentTurn: AgentTurnEvaluation + runEvaluationInput: AgentTurn + duplicateDashboard: DuplicatedDashboard + impersonate: Impersonate + startChannelSync: ChannelSyncSuccess + saveImapSmtpCaldavAccount: ImapSmtpCaldavConnectionSuccess + updateLabPublicFeatureFlag: FeatureFlag + userLookupAdminPanel: UserLookup + updateWorkspaceFeatureFlag: Scalars['Boolean'] + setAdminAiModelEnabled: Scalars['Boolean'] + createDatabaseConfigVariable: Scalars['Boolean'] + updateDatabaseConfigVariable: Scalars['Boolean'] + deleteDatabaseConfigVariable: Scalars['Boolean'] + retryJobs: RetryJobsResponse + deleteJobs: DeleteJobsResponse + enablePostgresProxy: PostgresCredentials + disablePostgresProxy: PostgresCredentials + createPublicDomain: PublicDomain + deletePublicDomain: Scalars['Boolean'] + checkPublicDomainValidRecords?: DomainValidRecords + createEmailingDomain: EmailingDomain + deleteEmailingDomain: Scalars['Boolean'] + verifyEmailingDomain: EmailingDomain + createOneAppToken: AppToken + installMarketplaceApp: Scalars['Boolean'] + installApplication: Scalars['Boolean'] + runWorkspaceMigration: Scalars['Boolean'] + uninstallApplication: Scalars['Boolean'] + updateOneApplicationVariable: Scalars['Boolean'] + createDevelopmentApplication: DevelopmentApplication + generateApplicationToken: ApplicationTokenPair + syncApplication: WorkspaceMigration + uploadApplicationFile: File + upgradeApplication: Scalars['Boolean'] + renewApplicationToken: ApplicationTokenPair + __typename: 'Mutation' +} + +export type AnalyticsType = 'PAGEVIEW' | 'TRACK' + +export type WorkspaceMigrationActionType = 'delete' | 'create' | 'update' + +export type AllMetadataName = 'fieldMetadata' | 'objectMetadata' | 'view' | 'viewField' | 'viewFieldGroup' | 'viewGroup' | 'viewSort' | 'rowLevelPermissionPredicate' | 'rowLevelPermissionPredicateGroup' | 'viewFilterGroup' | 'index' | 'logicFunction' | 'viewFilter' | 'role' | 'roleTarget' | 'agent' | 'skill' | 'pageLayout' | 'pageLayoutWidget' | 'pageLayoutTab' | 'commandMenuItem' | 'navigationMenuItem' | 'frontComponent' | 'webhook' + +export type FileFolder = 'ProfilePicture' | 'WorkspaceLogo' | 'Attachment' | 'PersonPicture' | 'CorePicture' | 'File' | 'AgentChat' | 'BuiltLogicFunction' | 'BuiltFrontComponent' | 'PublicAsset' | 'Source' | 'FilesField' | 'Dependencies' | 'Workflow' | 'AppTarball' + +export interface Subscription { + onDbEvent: OnDbEvent + onEventSubscription?: EventSubscription + logicFunctionLogs: LogicFunctionLogs + __typename: 'Subscription' +} + +export interface BillingProductDTOGenqlSelection{ + name?: boolean | number + description?: boolean | number + images?: boolean | number + metadata?: BillingProductMetadataGenqlSelection + on_BillingLicensedProduct?: BillingLicensedProductGenqlSelection + on_BillingMeteredProduct?: BillingMeteredProductGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApiKeyGenqlSelection{ + id?: boolean | number + name?: boolean | number + expiresAt?: boolean | number + revokedAt?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + role?: RoleGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationRegistrationVariableGenqlSelection{ + id?: boolean | number + key?: boolean | number + description?: boolean | number + isSecret?: boolean | number + isRequired?: boolean | number + isFilled?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationRegistrationGenqlSelection{ + id?: boolean | number + universalIdentifier?: boolean | number + name?: boolean | number + description?: boolean | number + logoUrl?: boolean | number + author?: boolean | number + oAuthClientId?: boolean | number + oAuthRedirectUris?: boolean | number + oAuthScopes?: boolean | number + ownerWorkspaceId?: boolean | number + sourceType?: boolean | number + sourcePackage?: boolean | number + latestAvailableVersion?: boolean | number + websiteUrl?: boolean | number + termsUrl?: boolean | number + isListed?: boolean | number + isFeatured?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface TwoFactorAuthenticationMethodSummaryGenqlSelection{ + twoFactorAuthenticationMethodId?: boolean | number + status?: boolean | number + strategy?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RowLevelPermissionPredicateGroupGenqlSelection{ + id?: boolean | number + parentRowLevelPermissionPredicateGroupId?: boolean | number + logicalOperator?: boolean | number + positionInRowLevelPermissionPredicateGroup?: boolean | number + roleId?: boolean | number + objectMetadataId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RowLevelPermissionPredicateGenqlSelection{ + id?: boolean | number + fieldMetadataId?: boolean | number + objectMetadataId?: boolean | number + operand?: boolean | number + subFieldName?: boolean | number + workspaceMemberFieldMetadataId?: boolean | number + workspaceMemberSubFieldName?: boolean | number + rowLevelPermissionPredicateGroupId?: boolean | number + positionInRowLevelPermissionPredicateGroup?: boolean | number + roleId?: boolean | number + value?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectPermissionGenqlSelection{ + objectMetadataId?: boolean | number + canReadObjectRecords?: boolean | number + canUpdateObjectRecords?: boolean | number + canSoftDeleteObjectRecords?: boolean | number + canDestroyObjectRecords?: boolean | number + restrictedFields?: boolean | number + rowLevelPermissionPredicates?: RowLevelPermissionPredicateGenqlSelection + rowLevelPermissionPredicateGroups?: RowLevelPermissionPredicateGroupGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface UserWorkspaceGenqlSelection{ + id?: boolean | number + user?: UserGenqlSelection + userId?: boolean | number + locale?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + permissionFlags?: boolean | number + objectPermissions?: ObjectPermissionGenqlSelection + objectsPermissions?: ObjectPermissionGenqlSelection + twoFactorAuthenticationMethodSummary?: TwoFactorAuthenticationMethodSummaryGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FullNameGenqlSelection{ + firstName?: boolean | number + lastName?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceMemberGenqlSelection{ + id?: boolean | number + name?: FullNameGenqlSelection + userEmail?: boolean | number + colorScheme?: boolean | number + avatarUrl?: boolean | number + locale?: boolean | number + calendarStartDay?: boolean | number + timeZone?: boolean | number + dateFormat?: boolean | number + timeFormat?: boolean | number + roles?: RoleGenqlSelection + userWorkspaceId?: boolean | number + numberFormat?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentGenqlSelection{ + id?: boolean | number + name?: boolean | number + label?: boolean | number + icon?: boolean | number + description?: boolean | number + prompt?: boolean | number + modelId?: boolean | number + responseFormat?: boolean | number + roleId?: boolean | number + isCustom?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + modelConfiguration?: boolean | number + evaluationInputs?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldPermissionGenqlSelection{ + id?: boolean | number + objectMetadataId?: boolean | number + fieldMetadataId?: boolean | number + roleId?: boolean | number + canReadFieldValue?: boolean | number + canUpdateFieldValue?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PermissionFlagGenqlSelection{ + id?: boolean | number + roleId?: boolean | number + flag?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApiKeyForRoleGenqlSelection{ + id?: boolean | number + name?: boolean | number + expiresAt?: boolean | number + revokedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RoleGenqlSelection{ + id?: boolean | number + universalIdentifier?: boolean | number + label?: boolean | number + description?: boolean | number + icon?: boolean | number + isEditable?: boolean | number + canBeAssignedToUsers?: boolean | number + canBeAssignedToAgents?: boolean | number + canBeAssignedToApiKeys?: boolean | number + workspaceMembers?: WorkspaceMemberGenqlSelection + agents?: AgentGenqlSelection + apiKeys?: ApiKeyForRoleGenqlSelection + canUpdateAllSettings?: boolean | number + canAccessAllTools?: boolean | number + canReadAllObjectRecords?: boolean | number + canUpdateAllObjectRecords?: boolean | number + canSoftDeleteAllObjectRecords?: boolean | number + canDestroyAllObjectRecords?: boolean | number + permissionFlags?: PermissionFlagGenqlSelection + objectPermissions?: ObjectPermissionGenqlSelection + fieldPermissions?: FieldPermissionGenqlSelection + rowLevelPermissionPredicates?: RowLevelPermissionPredicateGenqlSelection + rowLevelPermissionPredicateGroups?: RowLevelPermissionPredicateGroupGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationRegistrationSummaryGenqlSelection{ + id?: boolean | number + latestAvailableVersion?: boolean | number + sourceType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationVariableGenqlSelection{ + id?: boolean | number + key?: boolean | number + value?: boolean | number + description?: boolean | number + isSecret?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LogicFunctionGenqlSelection{ + id?: boolean | number + name?: boolean | number + description?: boolean | number + runtime?: boolean | number + timeoutSeconds?: boolean | number + sourceHandlerPath?: boolean | number + handlerName?: boolean | number + toolInputSchema?: boolean | number + isTool?: boolean | number + cronTriggerSettings?: boolean | number + databaseEventTriggerSettings?: boolean | number + httpRouteTriggerSettings?: boolean | number + applicationId?: boolean | number + universalIdentifier?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface StandardOverridesGenqlSelection{ + label?: boolean | number + description?: boolean | number + icon?: boolean | number + translations?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldGenqlSelection{ + id?: boolean | number + universalIdentifier?: boolean | number + type?: boolean | number + name?: boolean | number + label?: boolean | number + description?: boolean | number + icon?: boolean | number + standardOverrides?: StandardOverridesGenqlSelection + isCustom?: boolean | number + isActive?: boolean | number + isSystem?: boolean | number + isUIReadOnly?: boolean | number + isNullable?: boolean | number + isUnique?: boolean | number + defaultValue?: boolean | number + options?: boolean | number + settings?: boolean | number + isLabelSyncedWithName?: boolean | number + morphId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + applicationId?: boolean | number + relation?: RelationGenqlSelection + morphRelations?: RelationGenqlSelection + object?: ObjectGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexFieldGenqlSelection{ + id?: boolean | number + fieldMetadataId?: boolean | number + order?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexGenqlSelection{ + id?: boolean | number + name?: boolean | number + isCustom?: boolean | number + isUnique?: boolean | number + indexWhereClause?: boolean | number + indexType?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + indexFieldMetadataList?: IndexFieldGenqlSelection + objectMetadata?: (IndexObjectMetadataConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: ObjectFilter} }) + indexFieldMetadatas?: (IndexIndexFieldMetadatasConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: IndexFieldFilter} }) + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CursorPaging { +/** Paginate before opaque cursor */ +before?: (Scalars['ConnectionCursor'] | null), +/** Paginate after opaque cursor */ +after?: (Scalars['ConnectionCursor'] | null), +/** Paginate first */ +first?: (Scalars['Int'] | null), +/** Paginate last */ +last?: (Scalars['Int'] | null)} + +export interface ObjectFilter {and?: (ObjectFilter[] | null),or?: (ObjectFilter[] | null),id?: (UUIDFilterComparison | null),universalIdentifier?: (UUIDFilterComparison | null),isCustom?: (BooleanFieldComparison | null),isRemote?: (BooleanFieldComparison | null),isActive?: (BooleanFieldComparison | null),isSystem?: (BooleanFieldComparison | null),isUIReadOnly?: (BooleanFieldComparison | null),isSearchable?: (BooleanFieldComparison | null)} + +export interface UUIDFilterComparison {is?: (Scalars['Boolean'] | null),isNot?: (Scalars['Boolean'] | null),eq?: (Scalars['UUID'] | null),neq?: (Scalars['UUID'] | null),gt?: (Scalars['UUID'] | null),gte?: (Scalars['UUID'] | null),lt?: (Scalars['UUID'] | null),lte?: (Scalars['UUID'] | null),like?: (Scalars['UUID'] | null),notLike?: (Scalars['UUID'] | null),iLike?: (Scalars['UUID'] | null),notILike?: (Scalars['UUID'] | null),in?: (Scalars['UUID'][] | null),notIn?: (Scalars['UUID'][] | null)} + +export interface BooleanFieldComparison {is?: (Scalars['Boolean'] | null),isNot?: (Scalars['Boolean'] | null)} + +export interface IndexFieldFilter {and?: (IndexFieldFilter[] | null),or?: (IndexFieldFilter[] | null),id?: (UUIDFilterComparison | null),fieldMetadataId?: (UUIDFilterComparison | null)} + +export interface ObjectStandardOverridesGenqlSelection{ + labelSingular?: boolean | number + labelPlural?: boolean | number + description?: boolean | number + icon?: boolean | number + translations?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectGenqlSelection{ + id?: boolean | number + universalIdentifier?: boolean | number + nameSingular?: boolean | number + namePlural?: boolean | number + labelSingular?: boolean | number + labelPlural?: boolean | number + description?: boolean | number + icon?: boolean | number + standardOverrides?: ObjectStandardOverridesGenqlSelection + shortcut?: boolean | number + isCustom?: boolean | number + isRemote?: boolean | number + isActive?: boolean | number + isSystem?: boolean | number + isUIReadOnly?: boolean | number + isSearchable?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + labelIdentifierFieldMetadataId?: boolean | number + imageIdentifierFieldMetadataId?: boolean | number + isLabelSyncedWithName?: boolean | number + duplicateCriteria?: boolean | number + fieldsList?: FieldGenqlSelection + indexMetadataList?: IndexGenqlSelection + fields?: (ObjectFieldsConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: FieldFilter} }) + indexMetadatas?: (ObjectIndexMetadatasConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: IndexFilter} }) + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldFilter {and?: (FieldFilter[] | null),or?: (FieldFilter[] | null),id?: (UUIDFilterComparison | null),universalIdentifier?: (UUIDFilterComparison | null),isCustom?: (BooleanFieldComparison | null),isActive?: (BooleanFieldComparison | null),isSystem?: (BooleanFieldComparison | null),isUIReadOnly?: (BooleanFieldComparison | null)} + +export interface IndexFilter {and?: (IndexFilter[] | null),or?: (IndexFilter[] | null),id?: (UUIDFilterComparison | null),isCustom?: (BooleanFieldComparison | null)} + +export interface ApplicationGenqlSelection{ + id?: boolean | number + name?: boolean | number + description?: boolean | number + version?: boolean | number + universalIdentifier?: boolean | number + packageJsonChecksum?: boolean | number + packageJsonFileId?: boolean | number + yarnLockChecksum?: boolean | number + yarnLockFileId?: boolean | number + availablePackages?: boolean | number + applicationRegistrationId?: boolean | number + canBeUninstalled?: boolean | number + defaultRoleId?: boolean | number + settingsCustomTabFrontComponentId?: boolean | number + defaultLogicFunctionRole?: RoleGenqlSelection + agents?: AgentGenqlSelection + logicFunctions?: LogicFunctionGenqlSelection + objects?: ObjectGenqlSelection + applicationVariables?: ApplicationVariableGenqlSelection + applicationRegistration?: ApplicationRegistrationSummaryGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewFieldGenqlSelection{ + id?: boolean | number + fieldMetadataId?: boolean | number + isVisible?: boolean | number + size?: boolean | number + position?: boolean | number + aggregateOperation?: boolean | number + viewId?: boolean | number + viewFieldGroupId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewFilterGroupGenqlSelection{ + id?: boolean | number + parentViewFilterGroupId?: boolean | number + logicalOperator?: boolean | number + positionInViewFilterGroup?: boolean | number + viewId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewFilterGenqlSelection{ + id?: boolean | number + fieldMetadataId?: boolean | number + operand?: boolean | number + value?: boolean | number + viewFilterGroupId?: boolean | number + positionInViewFilterGroup?: boolean | number + subFieldName?: boolean | number + viewId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewGroupGenqlSelection{ + id?: boolean | number + isVisible?: boolean | number + fieldValue?: boolean | number + position?: boolean | number + viewId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewSortGenqlSelection{ + id?: boolean | number + fieldMetadataId?: boolean | number + direction?: boolean | number + viewId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewFieldGroupGenqlSelection{ + id?: boolean | number + name?: boolean | number + position?: boolean | number + isVisible?: boolean | number + viewId?: boolean | number + workspaceId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + viewFields?: CoreViewFieldGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CoreViewGenqlSelection{ + id?: boolean | number + name?: boolean | number + objectMetadataId?: boolean | number + type?: boolean | number + key?: boolean | number + icon?: boolean | number + position?: boolean | number + isCompact?: boolean | number + isCustom?: boolean | number + openRecordIn?: boolean | number + kanbanAggregateOperation?: boolean | number + kanbanAggregateOperationFieldMetadataId?: boolean | number + mainGroupByFieldMetadataId?: boolean | number + shouldHideEmptyGroups?: boolean | number + calendarFieldMetadataId?: boolean | number + workspaceId?: boolean | number + anyFieldFilterValue?: boolean | number + calendarLayout?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + viewFields?: CoreViewFieldGenqlSelection + viewFilters?: CoreViewFilterGenqlSelection + viewFilterGroups?: CoreViewFilterGroupGenqlSelection + viewSorts?: CoreViewSortGenqlSelection + viewGroups?: CoreViewGroupGenqlSelection + viewFieldGroups?: CoreViewFieldGroupGenqlSelection + visibility?: boolean | number + createdByUserWorkspaceId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceGenqlSelection{ + id?: boolean | number + displayName?: boolean | number + logo?: boolean | number + logoFileId?: boolean | number + inviteHash?: boolean | number + deletedAt?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + allowImpersonation?: boolean | number + isPublicInviteLinkEnabled?: boolean | number + trashRetentionDays?: boolean | number + eventLogRetentionDays?: boolean | number + workspaceMembersCount?: boolean | number + activationStatus?: boolean | number + views?: CoreViewGenqlSelection + viewFields?: CoreViewFieldGenqlSelection + viewFilters?: CoreViewFilterGenqlSelection + viewFilterGroups?: CoreViewFilterGroupGenqlSelection + viewGroups?: CoreViewGroupGenqlSelection + viewSorts?: CoreViewSortGenqlSelection + metadataVersion?: boolean | number + databaseUrl?: boolean | number + databaseSchema?: boolean | number + subdomain?: boolean | number + customDomain?: boolean | number + isGoogleAuthEnabled?: boolean | number + isGoogleAuthBypassEnabled?: boolean | number + isTwoFactorAuthenticationEnforced?: boolean | number + isPasswordAuthEnabled?: boolean | number + isPasswordAuthBypassEnabled?: boolean | number + isMicrosoftAuthEnabled?: boolean | number + isMicrosoftAuthBypassEnabled?: boolean | number + isCustomDomainEnabled?: boolean | number + editableProfileFields?: boolean | number + defaultRole?: RoleGenqlSelection + version?: boolean | number + fastModel?: boolean | number + smartModel?: boolean | number + aiAdditionalInstructions?: boolean | number + autoEnableNewAiModels?: boolean | number + disabledAiModelIds?: boolean | number + enabledAiModelIds?: boolean | number + useRecommendedModels?: boolean | number + routerModel?: boolean | number + workspaceCustomApplication?: ApplicationGenqlSelection + featureFlags?: FeatureFlagGenqlSelection + billingSubscriptions?: BillingSubscriptionGenqlSelection + currentBillingSubscription?: BillingSubscriptionGenqlSelection + billingEntitlements?: BillingEntitlementGenqlSelection + hasValidEnterpriseKey?: boolean | number + workspaceUrls?: WorkspaceUrlsGenqlSelection + workspaceCustomApplicationId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AppTokenGenqlSelection{ + id?: boolean | number + type?: boolean | number + expiresAt?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface UserGenqlSelection{ + id?: boolean | number + firstName?: boolean | number + lastName?: boolean | number + email?: boolean | number + defaultAvatarUrl?: boolean | number + isEmailVerified?: boolean | number + disabled?: boolean | number + canImpersonate?: boolean | number + canAccessFullAdminPanel?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + locale?: boolean | number + workspaceMember?: WorkspaceMemberGenqlSelection + userWorkspaces?: UserWorkspaceGenqlSelection + onboardingStatus?: boolean | number + currentWorkspace?: WorkspaceGenqlSelection + currentUserWorkspace?: UserWorkspaceGenqlSelection + userVars?: boolean | number + workspaceMembers?: WorkspaceMemberGenqlSelection + deletedWorkspaceMembers?: DeletedWorkspaceMemberGenqlSelection + hasPassword?: boolean | number + supportUserHash?: boolean | number + workspaces?: UserWorkspaceGenqlSelection + availableWorkspaces?: AvailableWorkspacesGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RatioAggregateConfigGenqlSelection{ + fieldMetadataId?: boolean | number + optionValue?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface NewFieldDefaultConfigurationGenqlSelection{ + isVisible?: boolean | number + viewFieldGroupId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RichTextV2BodyGenqlSelection{ + blocknote?: boolean | number + markdown?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface GridPositionGenqlSelection{ + row?: boolean | number + column?: boolean | number + rowSpan?: boolean | number + columnSpan?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutWidgetGenqlSelection{ + id?: boolean | number + pageLayoutTabId?: boolean | number + title?: boolean | number + type?: boolean | number + objectMetadataId?: boolean | number + gridPosition?: GridPositionGenqlSelection + position?: PageLayoutWidgetPositionGenqlSelection + configuration?: WidgetConfigurationGenqlSelection + conditionalDisplay?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutWidgetPositionGenqlSelection{ + on_PageLayoutWidgetGridPosition?:PageLayoutWidgetGridPositionGenqlSelection, + on_PageLayoutWidgetVerticalListPosition?:PageLayoutWidgetVerticalListPositionGenqlSelection, + on_PageLayoutWidgetCanvasPosition?:PageLayoutWidgetCanvasPositionGenqlSelection, + __typename?: boolean | number +} + +export interface PageLayoutWidgetGridPositionGenqlSelection{ + layoutMode?: boolean | number + row?: boolean | number + column?: boolean | number + rowSpan?: boolean | number + columnSpan?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutWidgetVerticalListPositionGenqlSelection{ + layoutMode?: boolean | number + index?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutWidgetCanvasPositionGenqlSelection{ + layoutMode?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WidgetConfigurationGenqlSelection{ + on_AggregateChartConfiguration?:AggregateChartConfigurationGenqlSelection, + on_StandaloneRichTextConfiguration?:StandaloneRichTextConfigurationGenqlSelection, + on_PieChartConfiguration?:PieChartConfigurationGenqlSelection, + on_LineChartConfiguration?:LineChartConfigurationGenqlSelection, + on_IframeConfiguration?:IframeConfigurationGenqlSelection, + on_GaugeChartConfiguration?:GaugeChartConfigurationGenqlSelection, + on_BarChartConfiguration?:BarChartConfigurationGenqlSelection, + on_CalendarConfiguration?:CalendarConfigurationGenqlSelection, + on_FrontComponentConfiguration?:FrontComponentConfigurationGenqlSelection, + on_EmailsConfiguration?:EmailsConfigurationGenqlSelection, + on_FieldConfiguration?:FieldConfigurationGenqlSelection, + on_FieldRichTextConfiguration?:FieldRichTextConfigurationGenqlSelection, + on_FieldsConfiguration?:FieldsConfigurationGenqlSelection, + on_FilesConfiguration?:FilesConfigurationGenqlSelection, + on_NotesConfiguration?:NotesConfigurationGenqlSelection, + on_TasksConfiguration?:TasksConfigurationGenqlSelection, + on_TimelineConfiguration?:TimelineConfigurationGenqlSelection, + on_ViewConfiguration?:ViewConfigurationGenqlSelection, + on_WorkflowConfiguration?:WorkflowConfigurationGenqlSelection, + on_WorkflowRunConfiguration?:WorkflowRunConfigurationGenqlSelection, + on_WorkflowVersionConfiguration?:WorkflowVersionConfigurationGenqlSelection, + __typename?: boolean | number +} + +export interface AggregateChartConfigurationGenqlSelection{ + configurationType?: boolean | number + aggregateFieldMetadataId?: boolean | number + aggregateOperation?: boolean | number + label?: boolean | number + displayDataLabel?: boolean | number + format?: boolean | number + description?: boolean | number + filter?: boolean | number + timezone?: boolean | number + firstDayOfTheWeek?: boolean | number + prefix?: boolean | number + suffix?: boolean | number + ratioAggregateConfig?: RatioAggregateConfigGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface StandaloneRichTextConfigurationGenqlSelection{ + configurationType?: boolean | number + body?: RichTextV2BodyGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PieChartConfigurationGenqlSelection{ + configurationType?: boolean | number + aggregateFieldMetadataId?: boolean | number + aggregateOperation?: boolean | number + groupByFieldMetadataId?: boolean | number + groupBySubFieldName?: boolean | number + dateGranularity?: boolean | number + orderBy?: boolean | number + manualSortOrder?: boolean | number + displayDataLabel?: boolean | number + showCenterMetric?: boolean | number + displayLegend?: boolean | number + hideEmptyCategory?: boolean | number + splitMultiValueFields?: boolean | number + description?: boolean | number + color?: boolean | number + filter?: boolean | number + timezone?: boolean | number + firstDayOfTheWeek?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LineChartConfigurationGenqlSelection{ + configurationType?: boolean | number + aggregateFieldMetadataId?: boolean | number + aggregateOperation?: boolean | number + primaryAxisGroupByFieldMetadataId?: boolean | number + primaryAxisGroupBySubFieldName?: boolean | number + primaryAxisDateGranularity?: boolean | number + primaryAxisOrderBy?: boolean | number + primaryAxisManualSortOrder?: boolean | number + secondaryAxisGroupByFieldMetadataId?: boolean | number + secondaryAxisGroupBySubFieldName?: boolean | number + secondaryAxisGroupByDateGranularity?: boolean | number + secondaryAxisOrderBy?: boolean | number + secondaryAxisManualSortOrder?: boolean | number + omitNullValues?: boolean | number + splitMultiValueFields?: boolean | number + axisNameDisplay?: boolean | number + displayDataLabel?: boolean | number + displayLegend?: boolean | number + rangeMin?: boolean | number + rangeMax?: boolean | number + description?: boolean | number + color?: boolean | number + filter?: boolean | number + isStacked?: boolean | number + isCumulative?: boolean | number + timezone?: boolean | number + firstDayOfTheWeek?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IframeConfigurationGenqlSelection{ + configurationType?: boolean | number + url?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface GaugeChartConfigurationGenqlSelection{ + configurationType?: boolean | number + aggregateFieldMetadataId?: boolean | number + aggregateOperation?: boolean | number + displayDataLabel?: boolean | number + color?: boolean | number + description?: boolean | number + filter?: boolean | number + timezone?: boolean | number + firstDayOfTheWeek?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BarChartConfigurationGenqlSelection{ + configurationType?: boolean | number + aggregateFieldMetadataId?: boolean | number + aggregateOperation?: boolean | number + primaryAxisGroupByFieldMetadataId?: boolean | number + primaryAxisGroupBySubFieldName?: boolean | number + primaryAxisDateGranularity?: boolean | number + primaryAxisOrderBy?: boolean | number + primaryAxisManualSortOrder?: boolean | number + secondaryAxisGroupByFieldMetadataId?: boolean | number + secondaryAxisGroupBySubFieldName?: boolean | number + secondaryAxisGroupByDateGranularity?: boolean | number + secondaryAxisOrderBy?: boolean | number + secondaryAxisManualSortOrder?: boolean | number + omitNullValues?: boolean | number + splitMultiValueFields?: boolean | number + axisNameDisplay?: boolean | number + displayDataLabel?: boolean | number + displayLegend?: boolean | number + rangeMin?: boolean | number + rangeMax?: boolean | number + description?: boolean | number + color?: boolean | number + filter?: boolean | number + groupMode?: boolean | number + layout?: boolean | number + isCumulative?: boolean | number + timezone?: boolean | number + firstDayOfTheWeek?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CalendarConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FrontComponentConfigurationGenqlSelection{ + configurationType?: boolean | number + frontComponentId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EmailsConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldRichTextConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldsConfigurationGenqlSelection{ + configurationType?: boolean | number + viewId?: boolean | number + newFieldDefaultConfiguration?: NewFieldDefaultConfigurationGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FilesConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface NotesConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface TasksConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface TimelineConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ViewConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkflowConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkflowRunConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkflowVersionConfigurationGenqlSelection{ + configurationType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutTabGenqlSelection{ + id?: boolean | number + applicationId?: boolean | number + title?: boolean | number + position?: boolean | number + pageLayoutId?: boolean | number + widgets?: PageLayoutWidgetGenqlSelection + icon?: boolean | number + layoutMode?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageLayoutGenqlSelection{ + id?: boolean | number + name?: boolean | number + type?: boolean | number + objectMetadataId?: boolean | number + tabs?: PageLayoutTabGenqlSelection + defaultTabToFocusOnMobileAndSidePanelId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectRecordEventPropertiesGenqlSelection{ + updatedFields?: boolean | number + before?: boolean | number + after?: boolean | number + diff?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MetadataEventGenqlSelection{ + type?: boolean | number + metadataName?: boolean | number + recordId?: boolean | number + properties?: ObjectRecordEventPropertiesGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectRecordEventGenqlSelection{ + action?: boolean | number + objectNameSingular?: boolean | number + recordId?: boolean | number + userId?: boolean | number + workspaceMemberId?: boolean | number + properties?: ObjectRecordEventPropertiesGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectRecordEventWithQueryIdsGenqlSelection{ + queryIds?: boolean | number + objectRecordEvent?: ObjectRecordEventGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MetadataEventWithQueryIdsGenqlSelection{ + queryIds?: boolean | number + metadataEvent?: MetadataEventGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EventSubscriptionGenqlSelection{ + eventStreamId?: boolean | number + objectRecordEventsWithQueryIds?: ObjectRecordEventWithQueryIdsGenqlSelection + metadataEventsWithQueryIds?: MetadataEventWithQueryIdsGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface OnDbEventGenqlSelection{ + action?: boolean | number + objectNameSingular?: boolean | number + eventDate?: boolean | number + record?: boolean | number + updatedFields?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AnalyticsGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingSubscriptionSchedulePhaseItemGenqlSelection{ + price?: boolean | number + quantity?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingSubscriptionSchedulePhaseGenqlSelection{ + start_date?: boolean | number + end_date?: boolean | number + items?: BillingSubscriptionSchedulePhaseItemGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingProductMetadataGenqlSelection{ + planKey?: boolean | number + priceUsageBased?: boolean | number + productKey?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingPriceLicensedGenqlSelection{ + recurringInterval?: boolean | number + unitAmount?: boolean | number + stripePriceId?: boolean | number + priceUsageType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingPriceTierGenqlSelection{ + upTo?: boolean | number + flatAmount?: boolean | number + unitAmount?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingPriceMeteredGenqlSelection{ + tiers?: BillingPriceTierGenqlSelection + recurringInterval?: boolean | number + stripePriceId?: boolean | number + priceUsageType?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingProductGenqlSelection{ + name?: boolean | number + description?: boolean | number + images?: boolean | number + metadata?: BillingProductMetadataGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingLicensedProductGenqlSelection{ + name?: boolean | number + description?: boolean | number + images?: boolean | number + metadata?: BillingProductMetadataGenqlSelection + prices?: BillingPriceLicensedGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingMeteredProductGenqlSelection{ + name?: boolean | number + description?: boolean | number + images?: boolean | number + metadata?: BillingProductMetadataGenqlSelection + prices?: BillingPriceMeteredGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingSubscriptionItemGenqlSelection{ + id?: boolean | number + hasReachedCurrentPeriodCap?: boolean | number + quantity?: boolean | number + stripePriceId?: boolean | number + billingProduct?: BillingProductDTOGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingSubscriptionGenqlSelection{ + id?: boolean | number + status?: boolean | number + interval?: boolean | number + billingSubscriptionItems?: BillingSubscriptionItemGenqlSelection + currentPeriodEnd?: boolean | number + metadata?: boolean | number + phases?: BillingSubscriptionSchedulePhaseGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingEndTrialPeriodGenqlSelection{ + /** Updated subscription status */ + status?: boolean | number + /** Boolean that confirms if a payment method was found */ + hasPaymentMethod?: boolean | number + /** Billing portal URL for payment method update (returned when no payment method exists) */ + billingPortalUrl?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingMeteredProductUsageGenqlSelection{ + productKey?: boolean | number + periodStart?: boolean | number + periodEnd?: boolean | number + usedCredits?: boolean | number + grantedCredits?: boolean | number + rolloverCredits?: boolean | number + totalGrantedCredits?: boolean | number + unitPriceCents?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingPlanGenqlSelection{ + planKey?: boolean | number + licensedProducts?: BillingLicensedProductGenqlSelection + meteredProducts?: BillingMeteredProductGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingSessionGenqlSelection{ + url?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingUpdateGenqlSelection{ + /** Current billing subscription */ + currentBillingSubscription?: BillingSubscriptionGenqlSelection + /** All billing subscriptions */ + billingSubscriptions?: BillingSubscriptionGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface OnboardingStepSuccessGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApprovedAccessDomainGenqlSelection{ + id?: boolean | number + domain?: boolean | number + isValidated?: boolean | number + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FileWithSignedUrlGenqlSelection{ + id?: boolean | number + path?: boolean | number + size?: boolean | number + createdAt?: boolean | number + url?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceInvitationGenqlSelection{ + id?: boolean | number + email?: boolean | number + roleId?: boolean | number + expiresAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SendInvitationsGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + errors?: boolean | number + result?: WorkspaceInvitationGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ResendEmailVerificationTokenGenqlSelection{ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceUrlsGenqlSelection{ + customUrl?: boolean | number + subdomainUrl?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SSOConnectionGenqlSelection{ + type?: boolean | number + id?: boolean | number + issuer?: boolean | number + name?: boolean | number + status?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AvailableWorkspaceGenqlSelection{ + id?: boolean | number + displayName?: boolean | number + loginToken?: boolean | number + personalInviteToken?: boolean | number + inviteHash?: boolean | number + workspaceUrls?: WorkspaceUrlsGenqlSelection + logo?: boolean | number + sso?: SSOConnectionGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AvailableWorkspacesGenqlSelection{ + availableWorkspacesForSignIn?: AvailableWorkspaceGenqlSelection + availableWorkspacesForSignUp?: AvailableWorkspaceGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DeletedWorkspaceMemberGenqlSelection{ + id?: boolean | number + name?: FullNameGenqlSelection + userEmail?: boolean | number + avatarUrl?: boolean | number + userWorkspaceId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingEntitlementGenqlSelection{ + key?: boolean | number + value?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DomainRecordGenqlSelection{ + validationType?: boolean | number + type?: boolean | number + status?: boolean | number + key?: boolean | number + value?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DomainValidRecordsGenqlSelection{ + id?: boolean | number + domain?: boolean | number + records?: DomainRecordGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FeatureFlagGenqlSelection{ + key?: boolean | number + value?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SSOIdentityProviderGenqlSelection{ + id?: boolean | number + name?: boolean | number + type?: boolean | number + status?: boolean | number + issuer?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthProvidersGenqlSelection{ + sso?: SSOIdentityProviderGenqlSelection + google?: boolean | number + magicLink?: boolean | number + password?: boolean | number + microsoft?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthBypassProvidersGenqlSelection{ + google?: boolean | number + password?: boolean | number + microsoft?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PublicWorkspaceDataGenqlSelection{ + id?: boolean | number + authProviders?: AuthProvidersGenqlSelection + authBypassProviders?: AuthBypassProvidersGenqlSelection + logo?: boolean | number + displayName?: boolean | number + workspaceUrls?: WorkspaceUrlsGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexEdgeGenqlSelection{ + /** The node containing the Index */ + node?: IndexGenqlSelection + /** Cursor for this node. */ + cursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PageInfoGenqlSelection{ + /** true if paging forward and there are more records. */ + hasNextPage?: boolean | number + /** true if paging backwards and there are more records. */ + hasPreviousPage?: boolean | number + /** The cursor of the first returned record. */ + startCursor?: boolean | number + /** The cursor of the last returned record. */ + endCursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: IndexEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexFieldEdgeGenqlSelection{ + /** The node containing the IndexField */ + node?: IndexFieldGenqlSelection + /** Cursor for this node. */ + cursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexIndexFieldMetadatasConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: IndexFieldEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectEdgeGenqlSelection{ + /** The node containing the Object */ + node?: ObjectGenqlSelection + /** Cursor for this node. */ + cursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface IndexObjectMetadataConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: ObjectEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectRecordCountGenqlSelection{ + objectNamePlural?: boolean | number + totalCount?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: ObjectEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectIndexMetadatasConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: IndexEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldEdgeGenqlSelection{ + /** The node containing the Field */ + node?: FieldGenqlSelection + /** Cursor for this node. */ + cursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ObjectFieldsConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: FieldEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface UpsertRowLevelPermissionPredicatesResultGenqlSelection{ + predicates?: RowLevelPermissionPredicateGenqlSelection + predicateGroups?: RowLevelPermissionPredicateGroupGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RelationGenqlSelection{ + type?: boolean | number + sourceObjectMetadata?: ObjectGenqlSelection + targetObjectMetadata?: ObjectGenqlSelection + sourceFieldMetadata?: FieldGenqlSelection + targetFieldMetadata?: FieldGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FieldConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: FieldEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface VersionDistributionEntryGenqlSelection{ + version?: boolean | number + count?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationRegistrationStatsGenqlSelection{ + activeInstalls?: boolean | number + mostInstalledVersion?: boolean | number + versionDistribution?: VersionDistributionEntryGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CreateApplicationRegistrationGenqlSelection{ + applicationRegistration?: ApplicationRegistrationGenqlSelection + clientSecret?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PublicApplicationRegistrationGenqlSelection{ + id?: boolean | number + name?: boolean | number + logoUrl?: boolean | number + websiteUrl?: boolean | number + oAuthScopes?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RotateClientSecretGenqlSelection{ + clientSecret?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DeleteSsoGenqlSelection{ + identityProviderId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EditSsoGenqlSelection{ + id?: boolean | number + type?: boolean | number + issuer?: boolean | number + name?: boolean | number + status?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceNameAndIdGenqlSelection{ + displayName?: boolean | number + id?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FindAvailableSSOIDPGenqlSelection{ + type?: boolean | number + id?: boolean | number + issuer?: boolean | number + name?: boolean | number + status?: boolean | number + workspace?: WorkspaceNameAndIdGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SetupSsoGenqlSelection{ + id?: boolean | number + type?: boolean | number + issuer?: boolean | number + name?: boolean | number + status?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DeleteTwoFactorAuthenticationMethodGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface InitiateTwoFactorAuthenticationProvisioningGenqlSelection{ + uri?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface VerifyTwoFactorAuthenticationMethodGenqlSelection{ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthorizeAppGenqlSelection{ + redirectUrl?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthTokenGenqlSelection{ + token?: boolean | number + expiresAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthTokenPairGenqlSelection{ + accessOrWorkspaceAgnosticToken?: AuthTokenGenqlSelection + refreshToken?: AuthTokenGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AvailableWorkspacesAndAccessTokensGenqlSelection{ + tokens?: AuthTokenPairGenqlSelection + availableWorkspaces?: AvailableWorkspacesGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EmailPasswordResetLinkGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface GetAuthorizationUrlForSSOGenqlSelection{ + authorizationURL?: boolean | number + type?: boolean | number + id?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface InvalidatePasswordGenqlSelection{ + /** Boolean that confirms query was dispatched */ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceUrlsAndIdGenqlSelection{ + workspaceUrls?: WorkspaceUrlsGenqlSelection + id?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SignUpGenqlSelection{ + loginToken?: AuthTokenGenqlSelection + workspace?: WorkspaceUrlsAndIdGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface TransientTokenGenqlSelection{ + transientToken?: AuthTokenGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ValidatePasswordResetTokenGenqlSelection{ + id?: boolean | number + email?: boolean | number + hasPassword?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface VerifyEmailAndGetLoginTokenGenqlSelection{ + loginToken?: AuthTokenGenqlSelection + workspaceUrls?: WorkspaceUrlsGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApiKeyTokenGenqlSelection{ + token?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AuthTokensGenqlSelection{ + tokens?: AuthTokenPairGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LoginTokenGenqlSelection{ + loginToken?: AuthTokenGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CheckUserExistGenqlSelection{ + exists?: boolean | number + availableWorkspacesCount?: boolean | number + isEmailVerified?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceInviteHashValidGenqlSelection{ + isValid?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RecordIdentifierGenqlSelection{ + id?: boolean | number + labelIdentifier?: boolean | number + imageIdentifier?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface NavigationMenuItemGenqlSelection{ + id?: boolean | number + userWorkspaceId?: boolean | number + targetRecordId?: boolean | number + targetObjectMetadataId?: boolean | number + viewId?: boolean | number + name?: boolean | number + link?: boolean | number + icon?: boolean | number + color?: boolean | number + folderId?: boolean | number + position?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + targetRecordIdentifier?: RecordIdentifierGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LogicFunctionExecutionResultGenqlSelection{ + /** Execution result in JSON format */ + data?: boolean | number + /** Execution Logs */ + logs?: boolean | number + /** Execution duration in milliseconds */ + duration?: boolean | number + /** Execution status */ + status?: boolean | number + /** Execution error in JSON format */ + error?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LogicFunctionLogsGenqlSelection{ + /** Execution Logs */ + logs?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ToolIndexEntryGenqlSelection{ + name?: boolean | number + description?: boolean | number + category?: boolean | number + objectName?: boolean | number + inputSchema?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentMessagePartGenqlSelection{ + id?: boolean | number + messageId?: boolean | number + orderIndex?: boolean | number + type?: boolean | number + textContent?: boolean | number + reasoningContent?: boolean | number + toolName?: boolean | number + toolCallId?: boolean | number + toolInput?: boolean | number + toolOutput?: boolean | number + state?: boolean | number + errorMessage?: boolean | number + errorDetails?: boolean | number + sourceUrlSourceId?: boolean | number + sourceUrlUrl?: boolean | number + sourceUrlTitle?: boolean | number + sourceDocumentSourceId?: boolean | number + sourceDocumentMediaType?: boolean | number + sourceDocumentTitle?: boolean | number + sourceDocumentFilename?: boolean | number + fileMediaType?: boolean | number + fileFilename?: boolean | number + fileId?: boolean | number + fileUrl?: boolean | number + providerMetadata?: boolean | number + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SkillGenqlSelection{ + id?: boolean | number + name?: boolean | number + label?: boolean | number + icon?: boolean | number + description?: boolean | number + content?: boolean | number + isCustom?: boolean | number + isActive?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApplicationTokenPairGenqlSelection{ + applicationAccessToken?: AuthTokenGenqlSelection + applicationRefreshToken?: AuthTokenGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FrontComponentGenqlSelection{ + id?: boolean | number + name?: boolean | number + description?: boolean | number + sourceComponentPath?: boolean | number + builtComponentPath?: boolean | number + componentName?: boolean | number + builtComponentChecksum?: boolean | number + universalIdentifier?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + isHeadless?: boolean | number + applicationTokenPair?: ApplicationTokenPairGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CommandMenuItemGenqlSelection{ + id?: boolean | number + workflowVersionId?: boolean | number + frontComponentId?: boolean | number + frontComponent?: FrontComponentGenqlSelection + label?: boolean | number + icon?: boolean | number + shortLabel?: boolean | number + position?: boolean | number + isPinned?: boolean | number + availabilityType?: boolean | number + conditionalAvailabilityExpression?: boolean | number + availabilityObjectMetadataId?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentChatThreadGenqlSelection{ + id?: boolean | number + title?: boolean | number + totalInputTokens?: boolean | number + totalOutputTokens?: boolean | number + contextWindowTokens?: boolean | number + conversationSize?: boolean | number + totalInputCredits?: boolean | number + totalOutputCredits?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentMessageGenqlSelection{ + id?: boolean | number + threadId?: boolean | number + turnId?: boolean | number + agentId?: boolean | number + role?: boolean | number + parts?: AgentMessagePartGenqlSelection + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AISystemPromptSectionGenqlSelection{ + title?: boolean | number + content?: boolean | number + estimatedTokenCount?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AISystemPromptPreviewGenqlSelection{ + sections?: AISystemPromptSectionGenqlSelection + estimatedTokenCount?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentChatThreadEdgeGenqlSelection{ + /** The node containing the AgentChatThread */ + node?: AgentChatThreadGenqlSelection + /** Cursor for this node. */ + cursor?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentChatThreadConnectionGenqlSelection{ + /** Paging information */ + pageInfo?: PageInfoGenqlSelection + /** Array of edges. */ + edges?: AgentChatThreadEdgeGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentTurnEvaluationGenqlSelection{ + id?: boolean | number + turnId?: boolean | number + score?: boolean | number + comment?: boolean | number + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AgentTurnGenqlSelection{ + id?: boolean | number + threadId?: boolean | number + agentId?: boolean | number + evaluations?: AgentTurnEvaluationGenqlSelection + messages?: AgentMessageGenqlSelection + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WebhookGenqlSelection{ + id?: boolean | number + targetUrl?: boolean | number + operations?: boolean | number + description?: boolean | number + secret?: boolean | number + applicationId?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + deletedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingTrialPeriodGenqlSelection{ + duration?: boolean | number + isCreditCardRequired?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface NativeModelCapabilitiesGenqlSelection{ + webSearch?: boolean | number + twitterSearch?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ClientAIModelConfigGenqlSelection{ + modelId?: boolean | number + label?: boolean | number + modelFamily?: boolean | number + inferenceProvider?: boolean | number + inputCostPerMillionTokensInCredits?: boolean | number + outputCostPerMillionTokensInCredits?: boolean | number + nativeCapabilities?: NativeModelCapabilitiesGenqlSelection + deprecated?: boolean | number + isRecommended?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AdminAIModelConfigGenqlSelection{ + modelId?: boolean | number + label?: boolean | number + modelFamily?: boolean | number + inferenceProvider?: boolean | number + isAvailable?: boolean | number + isAdminEnabled?: boolean | number + deprecated?: boolean | number + isRecommended?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AdminAIModelsGenqlSelection{ + autoEnableNewModels?: boolean | number + models?: AdminAIModelConfigGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BillingGenqlSelection{ + isBillingEnabled?: boolean | number + billingUrl?: boolean | number + trialPeriods?: BillingTrialPeriodGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SupportGenqlSelection{ + supportDriver?: boolean | number + supportFrontChatId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SentryGenqlSelection{ + environment?: boolean | number + release?: boolean | number + dsn?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface CaptchaGenqlSelection{ + provider?: boolean | number + siteKey?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ApiConfigGenqlSelection{ + mutationMaximumAffectedRecords?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PublicFeatureFlagMetadataGenqlSelection{ + label?: boolean | number + description?: boolean | number + imagePath?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PublicFeatureFlagGenqlSelection{ + key?: boolean | number + metadata?: PublicFeatureFlagMetadataGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ClientConfigGenqlSelection{ + appVersion?: boolean | number + authProviders?: AuthProvidersGenqlSelection + billing?: BillingGenqlSelection + aiModels?: ClientAIModelConfigGenqlSelection + signInPrefilled?: boolean | number + isMultiWorkspaceEnabled?: boolean | number + isEmailVerificationRequired?: boolean | number + defaultSubdomain?: boolean | number + frontDomain?: boolean | number + analyticsEnabled?: boolean | number + support?: SupportGenqlSelection + isAttachmentPreviewEnabled?: boolean | number + sentry?: SentryGenqlSelection + captcha?: CaptchaGenqlSelection + chromeExtensionId?: boolean | number + api?: ApiConfigGenqlSelection + canManageFeatureFlags?: boolean | number + publicFeatureFlags?: PublicFeatureFlagGenqlSelection + isMicrosoftMessagingEnabled?: boolean | number + isMicrosoftCalendarEnabled?: boolean | number + isGoogleMessagingEnabled?: boolean | number + isGoogleCalendarEnabled?: boolean | number + isConfigVariablesInDbEnabled?: boolean | number + isImapSmtpCaldavEnabled?: boolean | number + allowRequestsToTwentyIcons?: boolean | number + calendarBookingPageId?: boolean | number + isCloudflareIntegrationEnabled?: boolean | number + isClickHouseConfigured?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ConfigVariableGenqlSelection{ + name?: boolean | number + description?: boolean | number + value?: boolean | number + isSensitive?: boolean | number + source?: boolean | number + isEnvOnly?: boolean | number + type?: boolean | number + options?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ConfigVariablesGroupDataGenqlSelection{ + variables?: ConfigVariableGenqlSelection + name?: boolean | number + description?: boolean | number + isHiddenOnLoad?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ConfigVariablesGenqlSelection{ + groups?: ConfigVariablesGroupDataGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface JobOperationResultGenqlSelection{ + jobId?: boolean | number + success?: boolean | number + error?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DeleteJobsResponseGenqlSelection{ + deletedCount?: boolean | number + results?: JobOperationResultGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueJobGenqlSelection{ + id?: boolean | number + name?: boolean | number + data?: boolean | number + state?: boolean | number + timestamp?: boolean | number + failedReason?: boolean | number + processedOn?: boolean | number + finishedOn?: boolean | number + attemptsMade?: boolean | number + returnValue?: boolean | number + logs?: boolean | number + stackTrace?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueRetentionConfigGenqlSelection{ + completedMaxAge?: boolean | number + completedMaxCount?: boolean | number + failedMaxAge?: boolean | number + failedMaxCount?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueJobsResponseGenqlSelection{ + jobs?: QueueJobGenqlSelection + count?: boolean | number + totalCount?: boolean | number + hasMore?: boolean | number + retentionConfig?: QueueRetentionConfigGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface RetryJobsResponseGenqlSelection{ + retriedCount?: boolean | number + results?: JobOperationResultGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SystemHealthServiceGenqlSelection{ + id?: boolean | number + label?: boolean | number + status?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface SystemHealthGenqlSelection{ + services?: SystemHealthServiceGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface UserInfoGenqlSelection{ + id?: boolean | number + email?: boolean | number + firstName?: boolean | number + lastName?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceInfoGenqlSelection{ + id?: boolean | number + name?: boolean | number + allowImpersonation?: boolean | number + logo?: boolean | number + totalUsers?: boolean | number + workspaceUrls?: WorkspaceUrlsGenqlSelection + users?: UserInfoGenqlSelection + featureFlags?: FeatureFlagGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface UserLookupGenqlSelection{ + user?: UserInfoGenqlSelection + workspaces?: WorkspaceInfoGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface VersionInfoGenqlSelection{ + currentVersion?: boolean | number + latestVersion?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AdminPanelWorkerQueueHealthGenqlSelection{ + id?: boolean | number + queueName?: boolean | number + status?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AdminPanelHealthServiceDataGenqlSelection{ + id?: boolean | number + label?: boolean | number + description?: boolean | number + status?: boolean | number + errorMessage?: boolean | number + details?: boolean | number + queues?: AdminPanelWorkerQueueHealthGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueMetricsDataPointGenqlSelection{ + x?: boolean | number + y?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueMetricsSeriesGenqlSelection{ + id?: boolean | number + data?: QueueMetricsDataPointGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkerQueueMetricsGenqlSelection{ + failed?: boolean | number + completed?: boolean | number + waiting?: boolean | number + active?: boolean | number + delayed?: boolean | number + failureRate?: boolean | number + failedData?: boolean | number + completedData?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueueMetricsDataGenqlSelection{ + queueName?: boolean | number + workers?: boolean | number + timeRange?: boolean | number + details?: WorkerQueueMetricsGenqlSelection + data?: QueueMetricsSeriesGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ImpersonateGenqlSelection{ + loginToken?: AuthTokenGenqlSelection + workspace?: WorkspaceUrlsAndIdGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DevelopmentApplicationGenqlSelection{ + id?: boolean | number + universalIdentifier?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface WorkspaceMigrationGenqlSelection{ + applicationUniversalIdentifier?: boolean | number + actions?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface FileGenqlSelection{ + id?: boolean | number + path?: boolean | number + size?: boolean | number + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppFieldGenqlSelection{ + name?: boolean | number + type?: boolean | number + label?: boolean | number + description?: boolean | number + icon?: boolean | number + objectUniversalIdentifier?: boolean | number + universalIdentifier?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppObjectGenqlSelection{ + universalIdentifier?: boolean | number + nameSingular?: boolean | number + namePlural?: boolean | number + labelSingular?: boolean | number + labelPlural?: boolean | number + description?: boolean | number + icon?: boolean | number + fields?: MarketplaceAppFieldGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppLogicFunctionGenqlSelection{ + name?: boolean | number + description?: boolean | number + timeoutSeconds?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppFrontComponentGenqlSelection{ + name?: boolean | number + description?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppRoleObjectPermissionGenqlSelection{ + objectUniversalIdentifier?: boolean | number + canReadObjectRecords?: boolean | number + canUpdateObjectRecords?: boolean | number + canSoftDeleteObjectRecords?: boolean | number + canDestroyObjectRecords?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppRoleFieldPermissionGenqlSelection{ + objectUniversalIdentifier?: boolean | number + fieldUniversalIdentifier?: boolean | number + canReadFieldValue?: boolean | number + canUpdateFieldValue?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppDefaultRoleGenqlSelection{ + id?: boolean | number + label?: boolean | number + description?: boolean | number + canReadAllObjectRecords?: boolean | number + canUpdateAllObjectRecords?: boolean | number + canSoftDeleteAllObjectRecords?: boolean | number + canDestroyAllObjectRecords?: boolean | number + canUpdateAllSettings?: boolean | number + canAccessAllTools?: boolean | number + objectPermissions?: MarketplaceAppRoleObjectPermissionGenqlSelection + fieldPermissions?: MarketplaceAppRoleFieldPermissionGenqlSelection + permissionFlags?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface MarketplaceAppGenqlSelection{ + id?: boolean | number + name?: boolean | number + description?: boolean | number + icon?: boolean | number + version?: boolean | number + author?: boolean | number + category?: boolean | number + logo?: boolean | number + screenshots?: boolean | number + aboutDescription?: boolean | number + providers?: boolean | number + websiteUrl?: boolean | number + termsUrl?: boolean | number + objects?: MarketplaceAppObjectGenqlSelection + fields?: MarketplaceAppFieldGenqlSelection + logicFunctions?: MarketplaceAppLogicFunctionGenqlSelection + frontComponents?: MarketplaceAppFrontComponentGenqlSelection + defaultRole?: MarketplaceAppDefaultRoleGenqlSelection + sourcePackage?: boolean | number + isFeatured?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PublicDomainGenqlSelection{ + id?: boolean | number + domain?: boolean | number + isValidated?: boolean | number + createdAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface VerificationRecordGenqlSelection{ + type?: boolean | number + key?: boolean | number + value?: boolean | number + priority?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EmailingDomainGenqlSelection{ + id?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + domain?: boolean | number + driver?: boolean | number + status?: boolean | number + verificationRecords?: VerificationRecordGenqlSelection + verifiedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AutocompleteResultGenqlSelection{ + text?: boolean | number + placeId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LocationGenqlSelection{ + lat?: boolean | number + lng?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PlaceDetailsResultGenqlSelection{ + state?: boolean | number + postcode?: boolean | number + city?: boolean | number + country?: boolean | number + location?: LocationGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ConnectionParametersOutputGenqlSelection{ + host?: boolean | number + port?: boolean | number + username?: boolean | number + password?: boolean | number + secure?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ImapSmtpCaldavConnectionParametersGenqlSelection{ + IMAP?: ConnectionParametersOutputGenqlSelection + SMTP?: ConnectionParametersOutputGenqlSelection + CALDAV?: ConnectionParametersOutputGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ConnectedImapSmtpCaldavAccountGenqlSelection{ + id?: boolean | number + handle?: boolean | number + provider?: boolean | number + accountOwnerId?: boolean | number + connectionParameters?: ImapSmtpCaldavConnectionParametersGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ImapSmtpCaldavConnectionSuccessGenqlSelection{ + success?: boolean | number + connectedAccountId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PostgresCredentialsGenqlSelection{ + id?: boolean | number + user?: boolean | number + password?: boolean | number + workspaceId?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface ChannelSyncSuccessGenqlSelection{ + success?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BarChartSeriesGenqlSelection{ + key?: boolean | number + label?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface BarChartDataGenqlSelection{ + data?: boolean | number + indexBy?: boolean | number + keys?: boolean | number + series?: BarChartSeriesGenqlSelection + xAxisLabel?: boolean | number + yAxisLabel?: boolean | number + showLegend?: boolean | number + showDataLabels?: boolean | number + layout?: boolean | number + groupMode?: boolean | number + hasTooManyGroups?: boolean | number + formattedToRawLookup?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LineChartDataPointGenqlSelection{ + x?: boolean | number + y?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LineChartSeriesGenqlSelection{ + id?: boolean | number + label?: boolean | number + data?: LineChartDataPointGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LineChartDataGenqlSelection{ + series?: LineChartSeriesGenqlSelection + xAxisLabel?: boolean | number + yAxisLabel?: boolean | number + showLegend?: boolean | number + showDataLabels?: boolean | number + hasTooManyGroups?: boolean | number + formattedToRawLookup?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PieChartDataItemGenqlSelection{ + id?: boolean | number + value?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface PieChartDataGenqlSelection{ + data?: PieChartDataItemGenqlSelection + showLegend?: boolean | number + showDataLabels?: boolean | number + showCenterMetric?: boolean | number + hasTooManyGroups?: boolean | number + formattedToRawLookup?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface DuplicatedDashboardGenqlSelection{ + id?: boolean | number + title?: boolean | number + pageLayoutId?: boolean | number + position?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EventLogRecordGenqlSelection{ + event?: boolean | number + timestamp?: boolean | number + userId?: boolean | number + properties?: boolean | number + recordId?: boolean | number + objectMetadataId?: boolean | number + isCustom?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EventLogPageInfoGenqlSelection{ + endCursor?: boolean | number + hasNextPage?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface EventLogQueryResultGenqlSelection{ + records?: EventLogRecordGenqlSelection + totalCount?: boolean | number + pageInfo?: EventLogPageInfoGenqlSelection + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface QueryGenqlSelection{ + getPageLayoutWidgets?: (PageLayoutWidgetGenqlSelection & { __args: {pageLayoutTabId: Scalars['String']} }) + getPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String']} }) + getPageLayoutTabs?: (PageLayoutTabGenqlSelection & { __args: {pageLayoutId: Scalars['String']} }) + getPageLayoutTab?: (PageLayoutTabGenqlSelection & { __args: {id: Scalars['String']} }) + getPageLayouts?: (PageLayoutGenqlSelection & { __args?: {objectMetadataId?: (Scalars['String'] | null), pageLayoutType?: (PageLayoutType | null)} }) + getPageLayout?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String']} }) + findOneLogicFunction?: (LogicFunctionGenqlSelection & { __args: {input: LogicFunctionIdInput} }) + findManyLogicFunctions?: LogicFunctionGenqlSelection + getAvailablePackages?: { __args: {input: LogicFunctionIdInput} } + getLogicFunctionSourceCode?: { __args: {input: LogicFunctionIdInput} } + objectRecordCounts?: ObjectRecordCountGenqlSelection + object?: (ObjectGenqlSelection & { __args: { + /** The id of the record to find. */ + id: Scalars['UUID']} }) + objects?: (ObjectConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: ObjectFilter} }) + getCoreViewFields?: (CoreViewFieldGenqlSelection & { __args: {viewId: Scalars['String']} }) + getCoreViewField?: (CoreViewFieldGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViews?: (CoreViewGenqlSelection & { __args?: {objectMetadataId?: (Scalars['String'] | null), viewTypes?: (ViewType[] | null)} }) + getCoreView?: (CoreViewGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViewSorts?: (CoreViewSortGenqlSelection & { __args?: {viewId?: (Scalars['String'] | null)} }) + getCoreViewSort?: (CoreViewSortGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViewGroups?: (CoreViewGroupGenqlSelection & { __args?: {viewId?: (Scalars['String'] | null)} }) + getCoreViewGroup?: (CoreViewGroupGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViewFilterGroups?: (CoreViewFilterGroupGenqlSelection & { __args?: {viewId?: (Scalars['String'] | null)} }) + getCoreViewFilterGroup?: (CoreViewFilterGroupGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViewFilters?: (CoreViewFilterGenqlSelection & { __args?: {viewId?: (Scalars['String'] | null)} }) + getCoreViewFilter?: (CoreViewFilterGenqlSelection & { __args: {id: Scalars['String']} }) + getCoreViewFieldGroups?: (CoreViewFieldGroupGenqlSelection & { __args: {viewId: Scalars['String']} }) + getCoreViewFieldGroup?: (CoreViewFieldGroupGenqlSelection & { __args: {id: Scalars['String']} }) + index?: (IndexGenqlSelection & { __args: { + /** The id of the record to find. */ + id: Scalars['UUID']} }) + indexMetadatas?: (IndexConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: IndexFilter} }) + commandMenuItems?: CommandMenuItemGenqlSelection + commandMenuItem?: (CommandMenuItemGenqlSelection & { __args: {id: Scalars['UUID']} }) + frontComponents?: FrontComponentGenqlSelection + frontComponent?: (FrontComponentGenqlSelection & { __args: {id: Scalars['UUID']} }) + findManyAgents?: AgentGenqlSelection + findOneAgent?: (AgentGenqlSelection & { __args: {input: AgentIdInput} }) + billingPortalSession?: (BillingSessionGenqlSelection & { __args?: {returnUrlPath?: (Scalars['String'] | null)} }) + listPlans?: BillingPlanGenqlSelection + getMeteredProductsUsage?: BillingMeteredProductUsageGenqlSelection + navigationMenuItems?: NavigationMenuItemGenqlSelection + navigationMenuItem?: (NavigationMenuItemGenqlSelection & { __args: {id: Scalars['UUID']} }) + apiKeys?: ApiKeyGenqlSelection + apiKey?: (ApiKeyGenqlSelection & { __args: {input: GetApiKeyInput} }) + getRoles?: RoleGenqlSelection + findWorkspaceInvitations?: WorkspaceInvitationGenqlSelection + getApprovedAccessDomains?: ApprovedAccessDomainGenqlSelection + getToolIndex?: ToolIndexEntryGenqlSelection + getToolInputSchema?: { __args: {toolName: Scalars['String']} } + field?: (FieldGenqlSelection & { __args: { + /** The id of the record to find. */ + id: Scalars['UUID']} }) + fields?: (FieldConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: FieldFilter} }) + currentUser?: UserGenqlSelection + currentWorkspace?: WorkspaceGenqlSelection + getPublicWorkspaceDataByDomain?: (PublicWorkspaceDataGenqlSelection & { __args?: {origin?: (Scalars['String'] | null)} }) + checkUserExists?: (CheckUserExistGenqlSelection & { __args: {email: Scalars['String'], captchaToken?: (Scalars['String'] | null)} }) + checkWorkspaceInviteHashIsValid?: (WorkspaceInviteHashValidGenqlSelection & { __args: {inviteHash: Scalars['String']} }) + findWorkspaceFromInviteHash?: (WorkspaceGenqlSelection & { __args: {inviteHash: Scalars['String']} }) + validatePasswordResetToken?: (ValidatePasswordResetTokenGenqlSelection & { __args: {passwordResetToken: Scalars['String']} }) + findApplicationRegistrationByClientId?: (PublicApplicationRegistrationGenqlSelection & { __args: {clientId: Scalars['String']} }) + findApplicationRegistrationByUniversalIdentifier?: (ApplicationRegistrationGenqlSelection & { __args: {universalIdentifier: Scalars['String']} }) + findManyApplicationRegistrations?: ApplicationRegistrationGenqlSelection + findOneApplicationRegistration?: (ApplicationRegistrationGenqlSelection & { __args: {id: Scalars['String']} }) + findApplicationRegistrationStats?: (ApplicationRegistrationStatsGenqlSelection & { __args: {id: Scalars['String']} }) + findApplicationRegistrationVariables?: (ApplicationRegistrationVariableGenqlSelection & { __args: {applicationRegistrationId: Scalars['String']} }) + applicationRegistrationTarballUrl?: { __args: {id: Scalars['String']} } + getSSOIdentityProviders?: FindAvailableSSOIDPGenqlSelection + webhooks?: WebhookGenqlSelection + webhook?: (WebhookGenqlSelection & { __args: {id: Scalars['UUID']} }) + chatThread?: (AgentChatThreadGenqlSelection & { __args: {id: Scalars['UUID']} }) + chatMessages?: (AgentMessageGenqlSelection & { __args: {threadId: Scalars['UUID']} }) + getAISystemPromptPreview?: AISystemPromptPreviewGenqlSelection + skills?: SkillGenqlSelection + skill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} }) + chatThreads?: (AgentChatThreadConnectionGenqlSelection & { __args: { + /** Limit or page results. */ + paging: CursorPaging, + /** Specify to filter the records returned. */ + filter: AgentChatThreadFilter, + /** Specify to sort results. */ + sorting: AgentChatThreadSort[]} }) + agentTurns?: (AgentTurnGenqlSelection & { __args: {agentId: Scalars['UUID']} }) + eventLogs?: (EventLogQueryResultGenqlSelection & { __args: {input: EventLogQueryInput} }) + pieChartData?: (PieChartDataGenqlSelection & { __args: {input: PieChartDataInput} }) + lineChartData?: (LineChartDataGenqlSelection & { __args: {input: LineChartDataInput} }) + barChartData?: (BarChartDataGenqlSelection & { __args: {input: BarChartDataInput} }) + getConnectedImapSmtpCaldavAccount?: (ConnectedImapSmtpCaldavAccountGenqlSelection & { __args: {id: Scalars['UUID']} }) + getAutoCompleteAddress?: (AutocompleteResultGenqlSelection & { __args: {address: Scalars['String'], token: Scalars['String'], country?: (Scalars['String'] | null), isFieldCity?: (Scalars['Boolean'] | null)} }) + getAddressDetails?: (PlaceDetailsResultGenqlSelection & { __args: {placeId: Scalars['String'], token: Scalars['String']} }) + getConfigVariablesGrouped?: ConfigVariablesGenqlSelection + getSystemHealthStatus?: SystemHealthGenqlSelection + getIndicatorHealthStatus?: (AdminPanelHealthServiceDataGenqlSelection & { __args: {indicatorId: HealthIndicatorId} }) + getQueueMetrics?: (QueueMetricsDataGenqlSelection & { __args: {queueName: Scalars['String'], timeRange?: (QueueMetricsTimeRange | null)} }) + versionInfo?: VersionInfoGenqlSelection + getAdminAiModels?: AdminAIModelsGenqlSelection + getDatabaseConfigVariable?: (ConfigVariableGenqlSelection & { __args: {key: Scalars['String']} }) + getQueueJobs?: (QueueJobsResponseGenqlSelection & { __args: {queueName: Scalars['String'], state: JobState, limit?: (Scalars['Int'] | null), offset?: (Scalars['Int'] | null)} }) + findAllApplicationRegistrations?: ApplicationRegistrationGenqlSelection + getPostgresCredentials?: PostgresCredentialsGenqlSelection + findManyPublicDomains?: PublicDomainGenqlSelection + getEmailingDomains?: EmailingDomainGenqlSelection + findManyMarketplaceApps?: MarketplaceAppGenqlSelection + findOneMarketplaceApp?: (MarketplaceAppGenqlSelection & { __args: {universalIdentifier: Scalars['String']} }) + findManyApplications?: ApplicationGenqlSelection + findOneApplication?: (ApplicationGenqlSelection & { __args?: {id?: (Scalars['UUID'] | null), universalIdentifier?: (Scalars['UUID'] | null)} }) + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface LogicFunctionIdInput { +/** The id of the function. */ +id: Scalars['ID']} + +export interface AgentIdInput { +/** The id of the agent. */ +id: Scalars['UUID']} + +export interface GetApiKeyInput {id: Scalars['UUID']} + +export interface AgentChatThreadFilter {and?: (AgentChatThreadFilter[] | null),or?: (AgentChatThreadFilter[] | null),id?: (UUIDFilterComparison | null),updatedAt?: (DateFieldComparison | null)} + +export interface DateFieldComparison {is?: (Scalars['Boolean'] | null),isNot?: (Scalars['Boolean'] | null),eq?: (Scalars['DateTime'] | null),neq?: (Scalars['DateTime'] | null),gt?: (Scalars['DateTime'] | null),gte?: (Scalars['DateTime'] | null),lt?: (Scalars['DateTime'] | null),lte?: (Scalars['DateTime'] | null),in?: (Scalars['DateTime'][] | null),notIn?: (Scalars['DateTime'][] | null),between?: (DateFieldComparisonBetween | null),notBetween?: (DateFieldComparisonBetween | null)} + +export interface DateFieldComparisonBetween {lower: Scalars['DateTime'],upper: Scalars['DateTime']} + +export interface AgentChatThreadSort {field: AgentChatThreadSortFields,direction: SortDirection,nulls?: (SortNulls | null)} + +export interface EventLogQueryInput {table: EventLogTable,filters?: (EventLogFiltersInput | null),first?: (Scalars['Int'] | null),after?: (Scalars['String'] | null)} + +export interface EventLogFiltersInput {eventType?: (Scalars['String'] | null),userWorkspaceId?: (Scalars['String'] | null),dateRange?: (EventLogDateRangeInput | null),recordId?: (Scalars['String'] | null),objectMetadataId?: (Scalars['String'] | null)} + +export interface EventLogDateRangeInput {start?: (Scalars['DateTime'] | null),end?: (Scalars['DateTime'] | null)} + +export interface PieChartDataInput {objectMetadataId: Scalars['UUID'],configuration: Scalars['JSON']} + +export interface LineChartDataInput {objectMetadataId: Scalars['UUID'],configuration: Scalars['JSON']} + +export interface BarChartDataInput {objectMetadataId: Scalars['UUID'],configuration: Scalars['JSON']} + +export interface MutationGenqlSelection{ + addQueryToEventStream?: { __args: {input: AddQuerySubscriptionInput} } + removeQueryFromEventStream?: { __args: {input: RemoveQueryFromEventStreamInput} } + createObjectEvent?: (AnalyticsGenqlSelection & { __args: {event: Scalars['String'], recordId: Scalars['UUID'], objectMetadataId: Scalars['UUID'], properties?: (Scalars['JSON'] | null)} }) + trackAnalytics?: (AnalyticsGenqlSelection & { __args: {type: AnalyticsType, name?: (Scalars['String'] | null), event?: (Scalars['String'] | null), properties?: (Scalars['JSON'] | null)} }) + createPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {input: CreatePageLayoutWidgetInput} }) + updatePageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWidgetInput} }) + destroyPageLayoutWidget?: { __args: {id: Scalars['String']} } + createPageLayoutTab?: (PageLayoutTabGenqlSelection & { __args: {input: CreatePageLayoutTabInput} }) + updatePageLayoutTab?: (PageLayoutTabGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutTabInput} }) + destroyPageLayoutTab?: { __args: {id: Scalars['String']} } + createPageLayout?: (PageLayoutGenqlSelection & { __args: {input: CreatePageLayoutInput} }) + updatePageLayout?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutInput} }) + destroyPageLayout?: { __args: {id: Scalars['String']} } + updatePageLayoutWithTabsAndWidgets?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWithTabsInput} }) + deleteOneLogicFunction?: (LogicFunctionGenqlSelection & { __args: {input: LogicFunctionIdInput} }) + createOneLogicFunction?: (LogicFunctionGenqlSelection & { __args: {input: CreateLogicFunctionFromSourceInput} }) + executeOneLogicFunction?: (LogicFunctionExecutionResultGenqlSelection & { __args: {input: ExecuteOneLogicFunctionInput} }) + updateOneLogicFunction?: { __args: {input: UpdateLogicFunctionFromSourceInput} } + createOneObject?: (ObjectGenqlSelection & { __args: {input: CreateOneObjectInput} }) + deleteOneObject?: (ObjectGenqlSelection & { __args: {input: DeleteOneObjectInput} }) + updateOneObject?: (ObjectGenqlSelection & { __args: {input: UpdateOneObjectInput} }) + updateCoreViewField?: (CoreViewFieldGenqlSelection & { __args: {input: UpdateViewFieldInput} }) + createCoreViewField?: (CoreViewFieldGenqlSelection & { __args: {input: CreateViewFieldInput} }) + createManyCoreViewFields?: (CoreViewFieldGenqlSelection & { __args: {inputs: CreateViewFieldInput[]} }) + deleteCoreViewField?: (CoreViewFieldGenqlSelection & { __args: {input: DeleteViewFieldInput} }) + destroyCoreViewField?: (CoreViewFieldGenqlSelection & { __args: {input: DestroyViewFieldInput} }) + createCoreView?: (CoreViewGenqlSelection & { __args: {input: CreateViewInput} }) + updateCoreView?: (CoreViewGenqlSelection & { __args: {id: Scalars['String'], input: UpdateViewInput} }) + deleteCoreView?: { __args: {id: Scalars['String']} } + destroyCoreView?: { __args: {id: Scalars['String']} } + createCoreViewSort?: (CoreViewSortGenqlSelection & { __args: {input: CreateViewSortInput} }) + updateCoreViewSort?: (CoreViewSortGenqlSelection & { __args: {input: UpdateViewSortInput} }) + deleteCoreViewSort?: { __args: {input: DeleteViewSortInput} } + destroyCoreViewSort?: { __args: {input: DestroyViewSortInput} } + createCoreViewGroup?: (CoreViewGroupGenqlSelection & { __args: {input: CreateViewGroupInput} }) + createManyCoreViewGroups?: (CoreViewGroupGenqlSelection & { __args: {inputs: CreateViewGroupInput[]} }) + updateCoreViewGroup?: (CoreViewGroupGenqlSelection & { __args: {input: UpdateViewGroupInput} }) + deleteCoreViewGroup?: (CoreViewGroupGenqlSelection & { __args: {input: DeleteViewGroupInput} }) + destroyCoreViewGroup?: (CoreViewGroupGenqlSelection & { __args: {input: DestroyViewGroupInput} }) + createCoreViewFilterGroup?: (CoreViewFilterGroupGenqlSelection & { __args: {input: CreateViewFilterGroupInput} }) + updateCoreViewFilterGroup?: (CoreViewFilterGroupGenqlSelection & { __args: {id: Scalars['String'], input: UpdateViewFilterGroupInput} }) + deleteCoreViewFilterGroup?: { __args: {id: Scalars['String']} } + destroyCoreViewFilterGroup?: { __args: {id: Scalars['String']} } + createCoreViewFilter?: (CoreViewFilterGenqlSelection & { __args: {input: CreateViewFilterInput} }) + updateCoreViewFilter?: (CoreViewFilterGenqlSelection & { __args: {input: UpdateViewFilterInput} }) + deleteCoreViewFilter?: (CoreViewFilterGenqlSelection & { __args: {input: DeleteViewFilterInput} }) + destroyCoreViewFilter?: (CoreViewFilterGenqlSelection & { __args: {input: DestroyViewFilterInput} }) + updateCoreViewFieldGroup?: (CoreViewFieldGroupGenqlSelection & { __args: {input: UpdateViewFieldGroupInput} }) + createCoreViewFieldGroup?: (CoreViewFieldGroupGenqlSelection & { __args: {input: CreateViewFieldGroupInput} }) + createManyCoreViewFieldGroups?: (CoreViewFieldGroupGenqlSelection & { __args: {inputs: CreateViewFieldGroupInput[]} }) + deleteCoreViewFieldGroup?: (CoreViewFieldGroupGenqlSelection & { __args: {input: DeleteViewFieldGroupInput} }) + destroyCoreViewFieldGroup?: (CoreViewFieldGroupGenqlSelection & { __args: {input: DestroyViewFieldGroupInput} }) + upsertFieldsWidget?: (CoreViewGenqlSelection & { __args: {input: UpsertFieldsWidgetInput} }) + createCommandMenuItem?: (CommandMenuItemGenqlSelection & { __args: {input: CreateCommandMenuItemInput} }) + updateCommandMenuItem?: (CommandMenuItemGenqlSelection & { __args: {input: UpdateCommandMenuItemInput} }) + deleteCommandMenuItem?: (CommandMenuItemGenqlSelection & { __args: {id: Scalars['UUID']} }) + createFrontComponent?: (FrontComponentGenqlSelection & { __args: {input: CreateFrontComponentInput} }) + updateFrontComponent?: (FrontComponentGenqlSelection & { __args: {input: UpdateFrontComponentInput} }) + deleteFrontComponent?: (FrontComponentGenqlSelection & { __args: {id: Scalars['UUID']} }) + createOneAgent?: (AgentGenqlSelection & { __args: {input: CreateAgentInput} }) + updateOneAgent?: (AgentGenqlSelection & { __args: {input: UpdateAgentInput} }) + deleteOneAgent?: (AgentGenqlSelection & { __args: {input: AgentIdInput} }) + uploadAIChatFile?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload']} }) + uploadWorkflowFile?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload']} }) + uploadWorkspaceLogo?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload']} }) + uploadWorkspaceMemberProfilePicture?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload']} }) + uploadFilesFieldFile?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload'], fieldMetadataId: Scalars['String']} }) + uploadFilesFieldFileByUniversalIdentifier?: (FileWithSignedUrlGenqlSelection & { __args: {file: Scalars['Upload'], fieldMetadataUniversalIdentifier: Scalars['String']} }) + checkoutSession?: (BillingSessionGenqlSelection & { __args: {recurringInterval: SubscriptionInterval, plan: BillingPlanKey, requirePaymentMethod: Scalars['Boolean'], successUrlPath?: (Scalars['String'] | null)} }) + switchSubscriptionInterval?: BillingUpdateGenqlSelection + switchBillingPlan?: BillingUpdateGenqlSelection + cancelSwitchBillingPlan?: BillingUpdateGenqlSelection + cancelSwitchBillingInterval?: BillingUpdateGenqlSelection + setMeteredSubscriptionPrice?: (BillingUpdateGenqlSelection & { __args: {priceId: Scalars['String']} }) + endSubscriptionTrialPeriod?: BillingEndTrialPeriodGenqlSelection + cancelSwitchMeteredPrice?: BillingUpdateGenqlSelection + createNavigationMenuItem?: (NavigationMenuItemGenqlSelection & { __args: {input: CreateNavigationMenuItemInput} }) + updateNavigationMenuItem?: (NavigationMenuItemGenqlSelection & { __args: {input: UpdateOneNavigationMenuItemInput} }) + deleteNavigationMenuItem?: (NavigationMenuItemGenqlSelection & { __args: {id: Scalars['UUID']} }) + createApiKey?: (ApiKeyGenqlSelection & { __args: {input: CreateApiKeyInput} }) + updateApiKey?: (ApiKeyGenqlSelection & { __args: {input: UpdateApiKeyInput} }) + revokeApiKey?: (ApiKeyGenqlSelection & { __args: {input: RevokeApiKeyInput} }) + assignRoleToApiKey?: { __args: {apiKeyId: Scalars['UUID'], roleId: Scalars['UUID']} } + updateWorkspaceMemberRole?: (WorkspaceMemberGenqlSelection & { __args: {workspaceMemberId: Scalars['UUID'], roleId: Scalars['UUID']} }) + createOneRole?: (RoleGenqlSelection & { __args: {createRoleInput: CreateRoleInput} }) + updateOneRole?: (RoleGenqlSelection & { __args: {updateRoleInput: UpdateRoleInput} }) + deleteOneRole?: { __args: {roleId: Scalars['UUID']} } + upsertObjectPermissions?: (ObjectPermissionGenqlSelection & { __args: {upsertObjectPermissionsInput: UpsertObjectPermissionsInput} }) + upsertPermissionFlags?: (PermissionFlagGenqlSelection & { __args: {upsertPermissionFlagsInput: UpsertPermissionFlagsInput} }) + upsertFieldPermissions?: (FieldPermissionGenqlSelection & { __args: {upsertFieldPermissionsInput: UpsertFieldPermissionsInput} }) + upsertRowLevelPermissionPredicates?: (UpsertRowLevelPermissionPredicatesResultGenqlSelection & { __args: {input: UpsertRowLevelPermissionPredicatesInput} }) + assignRoleToAgent?: { __args: {agentId: Scalars['UUID'], roleId: Scalars['UUID']} } + removeRoleFromAgent?: { __args: {agentId: Scalars['UUID']} } + skipSyncEmailOnboardingStep?: OnboardingStepSuccessGenqlSelection + skipBookOnboardingStep?: OnboardingStepSuccessGenqlSelection + deleteWorkspaceInvitation?: { __args: {appTokenId: Scalars['String']} } + resendWorkspaceInvitation?: (SendInvitationsGenqlSelection & { __args: {appTokenId: Scalars['String']} }) + sendInvitations?: (SendInvitationsGenqlSelection & { __args: {emails: Scalars['String'][], roleId?: (Scalars['UUID'] | null)} }) + createApprovedAccessDomain?: (ApprovedAccessDomainGenqlSelection & { __args: {input: CreateApprovedAccessDomainInput} }) + deleteApprovedAccessDomain?: { __args: {input: DeleteApprovedAccessDomainInput} } + validateApprovedAccessDomain?: (ApprovedAccessDomainGenqlSelection & { __args: {input: ValidateApprovedAccessDomainInput} }) + createOneField?: (FieldGenqlSelection & { __args: {input: CreateOneFieldMetadataInput} }) + updateOneField?: (FieldGenqlSelection & { __args: {input: UpdateOneFieldMetadataInput} }) + deleteOneField?: (FieldGenqlSelection & { __args: {input: DeleteOneFieldInput} }) + deleteUser?: UserGenqlSelection + deleteUserFromWorkspace?: (UserWorkspaceGenqlSelection & { __args: {workspaceMemberIdToDelete: Scalars['String']} }) + updateUserEmail?: { __args: {newEmail: Scalars['String'], verifyEmailRedirectPath?: (Scalars['String'] | null)} } + resendEmailVerificationToken?: (ResendEmailVerificationTokenGenqlSelection & { __args: {email: Scalars['String'], origin: Scalars['String']} }) + activateWorkspace?: (WorkspaceGenqlSelection & { __args: {data: ActivateWorkspaceInput} }) + updateWorkspace?: (WorkspaceGenqlSelection & { __args: {data: UpdateWorkspaceInput} }) + deleteCurrentWorkspace?: WorkspaceGenqlSelection + checkCustomDomainValidRecords?: DomainValidRecordsGenqlSelection + getAuthorizationUrlForSSO?: (GetAuthorizationUrlForSSOGenqlSelection & { __args: {input: GetAuthorizationUrlForSSOInput} }) + getLoginTokenFromCredentials?: (LoginTokenGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null), origin: Scalars['String']} }) + signIn?: (AvailableWorkspacesAndAccessTokensGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null)} }) + verifyEmailAndGetLoginToken?: (VerifyEmailAndGetLoginTokenGenqlSelection & { __args: {emailVerificationToken: Scalars['String'], email: Scalars['String'], captchaToken?: (Scalars['String'] | null), origin: Scalars['String']} }) + verifyEmailAndGetWorkspaceAgnosticToken?: (AvailableWorkspacesAndAccessTokensGenqlSelection & { __args: {emailVerificationToken: Scalars['String'], email: Scalars['String'], captchaToken?: (Scalars['String'] | null)} }) + getAuthTokensFromOTP?: (AuthTokensGenqlSelection & { __args: {otp: Scalars['String'], loginToken: Scalars['String'], captchaToken?: (Scalars['String'] | null), origin: Scalars['String']} }) + signUp?: (AvailableWorkspacesAndAccessTokensGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null)} }) + signUpInWorkspace?: (SignUpGenqlSelection & { __args: {email: Scalars['String'], password: Scalars['String'], workspaceId?: (Scalars['UUID'] | null), workspaceInviteHash?: (Scalars['String'] | null), workspacePersonalInviteToken?: (Scalars['String'] | null), captchaToken?: (Scalars['String'] | null), locale?: (Scalars['String'] | null), verifyEmailRedirectPath?: (Scalars['String'] | null)} }) + signUpInNewWorkspace?: SignUpGenqlSelection + generateTransientToken?: TransientTokenGenqlSelection + getAuthTokensFromLoginToken?: (AuthTokensGenqlSelection & { __args: {loginToken: Scalars['String'], origin: Scalars['String']} }) + authorizeApp?: (AuthorizeAppGenqlSelection & { __args: {clientId: Scalars['String'], codeChallenge?: (Scalars['String'] | null), redirectUrl: Scalars['String'], state?: (Scalars['String'] | null), scope?: (Scalars['String'] | null)} }) + renewToken?: (AuthTokensGenqlSelection & { __args: {appToken: Scalars['String']} }) + generateApiKeyToken?: (ApiKeyTokenGenqlSelection & { __args: {apiKeyId: Scalars['UUID'], expiresAt: Scalars['String']} }) + emailPasswordResetLink?: (EmailPasswordResetLinkGenqlSelection & { __args: {email: Scalars['String'], workspaceId?: (Scalars['UUID'] | null)} }) + updatePasswordViaResetToken?: (InvalidatePasswordGenqlSelection & { __args: {passwordResetToken: Scalars['String'], newPassword: Scalars['String']} }) + createApplicationRegistration?: (CreateApplicationRegistrationGenqlSelection & { __args: {input: CreateApplicationRegistrationInput} }) + updateApplicationRegistration?: (ApplicationRegistrationGenqlSelection & { __args: {input: UpdateApplicationRegistrationInput} }) + deleteApplicationRegistration?: { __args: {id: Scalars['String']} } + rotateApplicationRegistrationClientSecret?: (RotateClientSecretGenqlSelection & { __args: {id: Scalars['String']} }) + createApplicationRegistrationVariable?: (ApplicationRegistrationVariableGenqlSelection & { __args: {input: CreateApplicationRegistrationVariableInput} }) + updateApplicationRegistrationVariable?: (ApplicationRegistrationVariableGenqlSelection & { __args: {input: UpdateApplicationRegistrationVariableInput} }) + deleteApplicationRegistrationVariable?: { __args: {id: Scalars['String']} } + uploadAppTarball?: (ApplicationRegistrationGenqlSelection & { __args: {file: Scalars['Upload'], universalIdentifier?: (Scalars['String'] | null)} }) + transferApplicationRegistrationOwnership?: (ApplicationRegistrationGenqlSelection & { __args: {applicationRegistrationId: Scalars['String'], targetWorkspaceSubdomain: Scalars['String']} }) + initiateOTPProvisioning?: (InitiateTwoFactorAuthenticationProvisioningGenqlSelection & { __args: {loginToken: Scalars['String'], origin: Scalars['String']} }) + initiateOTPProvisioningForAuthenticatedUser?: InitiateTwoFactorAuthenticationProvisioningGenqlSelection + deleteTwoFactorAuthenticationMethod?: (DeleteTwoFactorAuthenticationMethodGenqlSelection & { __args: {twoFactorAuthenticationMethodId: Scalars['UUID']} }) + verifyTwoFactorAuthenticationMethodForAuthenticatedUser?: (VerifyTwoFactorAuthenticationMethodGenqlSelection & { __args: {otp: Scalars['String']} }) + createOIDCIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupOIDCSsoInput} }) + createSAMLIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupSAMLSsoInput} }) + deleteSSOIdentityProvider?: (DeleteSsoGenqlSelection & { __args: {input: DeleteSsoInput} }) + editSSOIdentityProvider?: (EditSsoGenqlSelection & { __args: {input: EditSsoInput} }) + createWebhook?: (WebhookGenqlSelection & { __args: {input: CreateWebhookInput} }) + updateWebhook?: (WebhookGenqlSelection & { __args: {input: UpdateWebhookInput} }) + deleteWebhook?: (WebhookGenqlSelection & { __args: {id: Scalars['UUID']} }) + createChatThread?: AgentChatThreadGenqlSelection + createSkill?: (SkillGenqlSelection & { __args: {input: CreateSkillInput} }) + updateSkill?: (SkillGenqlSelection & { __args: {input: UpdateSkillInput} }) + deleteSkill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} }) + activateSkill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} }) + deactivateSkill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} }) + evaluateAgentTurn?: (AgentTurnEvaluationGenqlSelection & { __args: {turnId: Scalars['UUID']} }) + runEvaluationInput?: (AgentTurnGenqlSelection & { __args: {agentId: Scalars['UUID'], input: Scalars['String']} }) + duplicateDashboard?: (DuplicatedDashboardGenqlSelection & { __args: {id: Scalars['UUID']} }) + impersonate?: (ImpersonateGenqlSelection & { __args: {userId: Scalars['UUID'], workspaceId: Scalars['UUID']} }) + startChannelSync?: (ChannelSyncSuccessGenqlSelection & { __args: {connectedAccountId: Scalars['UUID']} }) + saveImapSmtpCaldavAccount?: (ImapSmtpCaldavConnectionSuccessGenqlSelection & { __args: {accountOwnerId: Scalars['UUID'], handle: Scalars['String'], connectionParameters: EmailAccountConnectionParameters, id?: (Scalars['UUID'] | null)} }) + updateLabPublicFeatureFlag?: (FeatureFlagGenqlSelection & { __args: {input: UpdateLabPublicFeatureFlagInput} }) + userLookupAdminPanel?: (UserLookupGenqlSelection & { __args: {userIdentifier: Scalars['String']} }) + updateWorkspaceFeatureFlag?: { __args: {workspaceId: Scalars['UUID'], featureFlag: Scalars['String'], value: Scalars['Boolean']} } + setAdminAiModelEnabled?: { __args: {modelId: Scalars['String'], enabled: Scalars['Boolean']} } + createDatabaseConfigVariable?: { __args: {key: Scalars['String'], value: Scalars['JSON']} } + updateDatabaseConfigVariable?: { __args: {key: Scalars['String'], value: Scalars['JSON']} } + deleteDatabaseConfigVariable?: { __args: {key: Scalars['String']} } + retryJobs?: (RetryJobsResponseGenqlSelection & { __args: {queueName: Scalars['String'], jobIds: Scalars['String'][]} }) + deleteJobs?: (DeleteJobsResponseGenqlSelection & { __args: {queueName: Scalars['String'], jobIds: Scalars['String'][]} }) + enablePostgresProxy?: PostgresCredentialsGenqlSelection + disablePostgresProxy?: PostgresCredentialsGenqlSelection + createPublicDomain?: (PublicDomainGenqlSelection & { __args: {domain: Scalars['String']} }) + deletePublicDomain?: { __args: {domain: Scalars['String']} } + checkPublicDomainValidRecords?: (DomainValidRecordsGenqlSelection & { __args: {domain: Scalars['String']} }) + createEmailingDomain?: (EmailingDomainGenqlSelection & { __args: {domain: Scalars['String'], driver: EmailingDomainDriver} }) + deleteEmailingDomain?: { __args: {id: Scalars['String']} } + verifyEmailingDomain?: (EmailingDomainGenqlSelection & { __args: {id: Scalars['String']} }) + createOneAppToken?: (AppTokenGenqlSelection & { __args: {input: CreateOneAppTokenInput} }) + installMarketplaceApp?: { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} } + installApplication?: { __args: {appRegistrationId: Scalars['String'], version?: (Scalars['String'] | null)} } + runWorkspaceMigration?: { __args: {workspaceMigration: WorkspaceMigrationInput} } + uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} } + updateOneApplicationVariable?: { __args: {key: Scalars['String'], value: Scalars['String'], applicationId: Scalars['UUID']} } + createDevelopmentApplication?: (DevelopmentApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], name: Scalars['String']} }) + generateApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationId: Scalars['UUID']} }) + syncApplication?: (WorkspaceMigrationGenqlSelection & { __args: {manifest: Scalars['JSON']} }) + uploadApplicationFile?: (FileGenqlSelection & { __args: {file: Scalars['Upload'], applicationUniversalIdentifier: Scalars['String'], fileFolder: FileFolder, filePath: Scalars['String']} }) + upgradeApplication?: { __args: {appRegistrationId: Scalars['String'], targetVersion: Scalars['String']} } + renewApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationRefreshToken: Scalars['String']} }) + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface AddQuerySubscriptionInput {eventStreamId: Scalars['String'],queryId: Scalars['String'],operationSignature: Scalars['JSON']} + +export interface RemoveQueryFromEventStreamInput {eventStreamId: Scalars['String'],queryId: Scalars['String']} + +export interface CreatePageLayoutWidgetInput {pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition: GridPositionInput,position?: (Scalars['JSON'] | null),configuration: Scalars['JSON']} + +export interface GridPositionInput {row: Scalars['Float'],column: Scalars['Float'],rowSpan: Scalars['Float'],columnSpan: Scalars['Float']} + +export interface UpdatePageLayoutWidgetInput {title?: (Scalars['String'] | null),type?: (WidgetType | null),objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null)} + +export interface CreatePageLayoutTabInput {title: Scalars['String'],position?: (Scalars['Float'] | null),pageLayoutId: Scalars['UUID']} + +export interface UpdatePageLayoutTabInput {title?: (Scalars['String'] | null),position?: (Scalars['Float'] | null)} + +export interface CreatePageLayoutInput {name: Scalars['String'],type?: (PageLayoutType | null),objectMetadataId?: (Scalars['UUID'] | null)} + +export interface UpdatePageLayoutInput {name?: (Scalars['String'] | null),type?: (PageLayoutType | null),objectMetadataId?: (Scalars['UUID'] | null)} + +export interface UpdatePageLayoutWithTabsInput {name: Scalars['String'],type: PageLayoutType,objectMetadataId?: (Scalars['UUID'] | null),tabs: UpdatePageLayoutTabWithWidgetsInput[]} + +export interface UpdatePageLayoutTabWithWidgetsInput {id: Scalars['UUID'],title: Scalars['String'],position: Scalars['Float'],widgets: UpdatePageLayoutWidgetWithIdInput[]} + +export interface UpdatePageLayoutWidgetWithIdInput {id: Scalars['UUID'],pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition: GridPositionInput,position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null)} + +export interface CreateLogicFunctionFromSourceInput {id?: (Scalars['UUID'] | null),universalIdentifier?: (Scalars['UUID'] | null),name: Scalars['String'],description?: (Scalars['String'] | null),timeoutSeconds?: (Scalars['Float'] | null),toolInputSchema?: (Scalars['JSON'] | null),isTool?: (Scalars['Boolean'] | null),source?: (Scalars['JSON'] | null),cronTriggerSettings?: (Scalars['JSON'] | null),databaseEventTriggerSettings?: (Scalars['JSON'] | null),httpRouteTriggerSettings?: (Scalars['JSON'] | null)} + +export interface ExecuteOneLogicFunctionInput { +/** Id of the logic function to execute */ +id: Scalars['UUID'], +/** Payload in JSON format */ +payload: Scalars['JSON']} + +export interface UpdateLogicFunctionFromSourceInput { +/** Id of the logic function to update */ +id: Scalars['UUID'], +/** The logic function updates */ +update: UpdateLogicFunctionFromSourceInputUpdates} + +export interface UpdateLogicFunctionFromSourceInputUpdates {name?: (Scalars['String'] | null),description?: (Scalars['String'] | null),timeoutSeconds?: (Scalars['Float'] | null),sourceHandlerCode?: (Scalars['String'] | null),toolInputSchema?: (Scalars['JSON'] | null),handlerName?: (Scalars['String'] | null),sourceHandlerPath?: (Scalars['String'] | null),isTool?: (Scalars['Boolean'] | null),cronTriggerSettings?: (Scalars['JSON'] | null),databaseEventTriggerSettings?: (Scalars['JSON'] | null),httpRouteTriggerSettings?: (Scalars['JSON'] | null)} + +export interface CreateOneObjectInput { +/** The object to create */ +object: CreateObjectInput} + +export interface CreateObjectInput {nameSingular: Scalars['String'],namePlural: Scalars['String'],labelSingular: Scalars['String'],labelPlural: Scalars['String'],description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortcut?: (Scalars['String'] | null),skipNameField?: (Scalars['Boolean'] | null),isRemote?: (Scalars['Boolean'] | null),primaryKeyColumnType?: (Scalars['String'] | null),primaryKeyFieldMetadataSettings?: (Scalars['JSON'] | null),isLabelSyncedWithName?: (Scalars['Boolean'] | null)} + +export interface DeleteOneObjectInput { +/** The id of the record to delete. */ +id: Scalars['UUID']} + +export interface UpdateOneObjectInput {update: UpdateObjectPayload, +/** The id of the object to update */ +id: Scalars['UUID']} + +export interface UpdateObjectPayload {labelSingular?: (Scalars['String'] | null),labelPlural?: (Scalars['String'] | null),nameSingular?: (Scalars['String'] | null),namePlural?: (Scalars['String'] | null),description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortcut?: (Scalars['String'] | null),isActive?: (Scalars['Boolean'] | null),labelIdentifierFieldMetadataId?: (Scalars['UUID'] | null),imageIdentifierFieldMetadataId?: (Scalars['UUID'] | null),isLabelSyncedWithName?: (Scalars['Boolean'] | null)} + +export interface UpdateViewFieldInput { +/** The id of the view field to update */ +id: Scalars['UUID'], +/** The view field to update */ +update: UpdateViewFieldInputUpdates} + +export interface UpdateViewFieldInputUpdates {isVisible?: (Scalars['Boolean'] | null),size?: (Scalars['Float'] | null),position?: (Scalars['Float'] | null),aggregateOperation?: (AggregateOperations | null),viewFieldGroupId?: (Scalars['UUID'] | null)} + +export interface CreateViewFieldInput {id?: (Scalars['UUID'] | null),fieldMetadataId: Scalars['UUID'],viewId: Scalars['UUID'],isVisible?: (Scalars['Boolean'] | null),size?: (Scalars['Float'] | null),position?: (Scalars['Float'] | null),aggregateOperation?: (AggregateOperations | null),viewFieldGroupId?: (Scalars['UUID'] | null)} + +export interface DeleteViewFieldInput { +/** The id of the view field to delete. */ +id: Scalars['UUID']} + +export interface DestroyViewFieldInput { +/** The id of the view field to destroy. */ +id: Scalars['UUID']} + +export interface CreateViewInput {id?: (Scalars['UUID'] | null),name: Scalars['String'],objectMetadataId: Scalars['UUID'],type?: (ViewType | null),key?: (ViewKey | null),icon: Scalars['String'],position?: (Scalars['Float'] | null),isCompact?: (Scalars['Boolean'] | null),shouldHideEmptyGroups?: (Scalars['Boolean'] | null),openRecordIn?: (ViewOpenRecordIn | null),kanbanAggregateOperation?: (AggregateOperations | null),kanbanAggregateOperationFieldMetadataId?: (Scalars['UUID'] | null),anyFieldFilterValue?: (Scalars['String'] | null),calendarLayout?: (ViewCalendarLayout | null),calendarFieldMetadataId?: (Scalars['UUID'] | null),mainGroupByFieldMetadataId?: (Scalars['UUID'] | null),visibility?: (ViewVisibility | null)} + +export interface UpdateViewInput {id?: (Scalars['UUID'] | null),name?: (Scalars['String'] | null),type?: (ViewType | null),icon?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isCompact?: (Scalars['Boolean'] | null),openRecordIn?: (ViewOpenRecordIn | null),kanbanAggregateOperation?: (AggregateOperations | null),kanbanAggregateOperationFieldMetadataId?: (Scalars['UUID'] | null),anyFieldFilterValue?: (Scalars['String'] | null),calendarLayout?: (ViewCalendarLayout | null),calendarFieldMetadataId?: (Scalars['UUID'] | null),visibility?: (ViewVisibility | null),mainGroupByFieldMetadataId?: (Scalars['UUID'] | null),shouldHideEmptyGroups?: (Scalars['Boolean'] | null)} + +export interface CreateViewSortInput {id?: (Scalars['UUID'] | null),fieldMetadataId: Scalars['UUID'],direction?: (ViewSortDirection | null),viewId: Scalars['UUID']} + +export interface UpdateViewSortInput { +/** The id of the view sort to update */ +id: Scalars['UUID'], +/** The view sort to update */ +update: UpdateViewSortInputUpdates} + +export interface UpdateViewSortInputUpdates {direction?: (ViewSortDirection | null)} + +export interface DeleteViewSortInput { +/** The id of the view sort to delete. */ +id: Scalars['UUID']} + +export interface DestroyViewSortInput { +/** The id of the view sort to destroy. */ +id: Scalars['UUID']} + +export interface CreateViewGroupInput {id?: (Scalars['UUID'] | null),isVisible?: (Scalars['Boolean'] | null),fieldValue: Scalars['String'],position?: (Scalars['Float'] | null),viewId: Scalars['UUID']} + +export interface UpdateViewGroupInput { +/** The id of the view group to update */ +id: Scalars['UUID'], +/** The view group to update */ +update: UpdateViewGroupInputUpdates} + +export interface UpdateViewGroupInputUpdates {fieldMetadataId?: (Scalars['UUID'] | null),isVisible?: (Scalars['Boolean'] | null),fieldValue?: (Scalars['String'] | null),position?: (Scalars['Float'] | null)} + +export interface DeleteViewGroupInput { +/** The id of the view group to delete. */ +id: Scalars['UUID']} + +export interface DestroyViewGroupInput { +/** The id of the view group to destroy. */ +id: Scalars['UUID']} + +export interface CreateViewFilterGroupInput {id?: (Scalars['UUID'] | null),parentViewFilterGroupId?: (Scalars['UUID'] | null),logicalOperator?: (ViewFilterGroupLogicalOperator | null),positionInViewFilterGroup?: (Scalars['Float'] | null),viewId: Scalars['UUID']} + +export interface UpdateViewFilterGroupInput {id?: (Scalars['UUID'] | null),parentViewFilterGroupId?: (Scalars['UUID'] | null),logicalOperator?: (ViewFilterGroupLogicalOperator | null),positionInViewFilterGroup?: (Scalars['Float'] | null),viewId?: (Scalars['UUID'] | null)} + +export interface CreateViewFilterInput {id?: (Scalars['UUID'] | null),fieldMetadataId: Scalars['UUID'],operand?: (ViewFilterOperand | null),value: Scalars['JSON'],viewFilterGroupId?: (Scalars['UUID'] | null),positionInViewFilterGroup?: (Scalars['Float'] | null),subFieldName?: (Scalars['String'] | null),viewId: Scalars['UUID']} + +export interface UpdateViewFilterInput { +/** The id of the view filter to update */ +id: Scalars['UUID'], +/** The view filter to update */ +update: UpdateViewFilterInputUpdates} + +export interface UpdateViewFilterInputUpdates {fieldMetadataId?: (Scalars['UUID'] | null),operand?: (ViewFilterOperand | null),value?: (Scalars['JSON'] | null),viewFilterGroupId?: (Scalars['UUID'] | null),positionInViewFilterGroup?: (Scalars['Float'] | null),subFieldName?: (Scalars['String'] | null)} + +export interface DeleteViewFilterInput { +/** The id of the view filter to delete. */ +id: Scalars['UUID']} + +export interface DestroyViewFilterInput { +/** The id of the view filter to destroy. */ +id: Scalars['UUID']} + +export interface UpdateViewFieldGroupInput { +/** The id of the view field group to update */ +id: Scalars['UUID'], +/** The view field group to update */ +update: UpdateViewFieldGroupInputUpdates} + +export interface UpdateViewFieldGroupInputUpdates {name?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isVisible?: (Scalars['Boolean'] | null),deletedAt?: (Scalars['String'] | null)} + +export interface CreateViewFieldGroupInput {id?: (Scalars['UUID'] | null),name: Scalars['String'],viewId: Scalars['UUID'],position?: (Scalars['Float'] | null),isVisible?: (Scalars['Boolean'] | null)} + +export interface DeleteViewFieldGroupInput { +/** The id of the view field group to delete. */ +id: Scalars['UUID']} + +export interface DestroyViewFieldGroupInput { +/** The id of the view field group to destroy. */ +id: Scalars['UUID']} + +export interface UpsertFieldsWidgetInput { +/** The id of the fields widget whose groups and fields to upsert */ +widgetId: Scalars['UUID'], +/** The groups (with nested fields) to upsert. Mutually exclusive with "fields". */ +groups?: (UpsertFieldsWidgetGroupInput[] | null), +/** The ungrouped fields to upsert. When provided, all existing groups are deleted and fields are detached from groups. Mutually exclusive with "groups". */ +fields?: (UpsertFieldsWidgetFieldInput[] | null)} + +export interface UpsertFieldsWidgetGroupInput {id: Scalars['UUID'],name: Scalars['String'],position: Scalars['Float'],isVisible: Scalars['Boolean'],fields: UpsertFieldsWidgetFieldInput[]} + +export interface UpsertFieldsWidgetFieldInput { +/** The id of the view field */ +viewFieldId: Scalars['UUID'],isVisible: Scalars['Boolean'],position: Scalars['Float']} + +export interface CreateCommandMenuItemInput {workflowVersionId?: (Scalars['UUID'] | null),frontComponentId?: (Scalars['UUID'] | null),label: Scalars['String'],icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),conditionalAvailabilityExpression?: (Scalars['String'] | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null)} + +export interface UpdateCommandMenuItemInput {id: Scalars['UUID'],label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null)} + +export interface CreateFrontComponentInput {id?: (Scalars['UUID'] | null),name: Scalars['String'],description?: (Scalars['String'] | null),sourceComponentPath: Scalars['String'],builtComponentPath: Scalars['String'],componentName: Scalars['String'],builtComponentChecksum: Scalars['String']} + +export interface UpdateFrontComponentInput { +/** The id of the front component to update */ +id: Scalars['UUID'], +/** The front component fields to update */ +update: UpdateFrontComponentInputUpdates} + +export interface UpdateFrontComponentInputUpdates {name?: (Scalars['String'] | null),description?: (Scalars['String'] | null)} + +export interface CreateAgentInput {name?: (Scalars['String'] | null),label: Scalars['String'],icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),prompt: Scalars['String'],modelId: Scalars['String'],roleId?: (Scalars['UUID'] | null),responseFormat?: (Scalars['JSON'] | null),modelConfiguration?: (Scalars['JSON'] | null),evaluationInputs?: (Scalars['String'][] | null)} + +export interface UpdateAgentInput {id: Scalars['UUID'],name?: (Scalars['String'] | null),label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),prompt?: (Scalars['String'] | null),modelId?: (Scalars['String'] | null),roleId?: (Scalars['UUID'] | null),responseFormat?: (Scalars['JSON'] | null),modelConfiguration?: (Scalars['JSON'] | null),evaluationInputs?: (Scalars['String'][] | null)} + +export interface CreateNavigationMenuItemInput {userWorkspaceId?: (Scalars['UUID'] | null),targetRecordId?: (Scalars['UUID'] | null),targetObjectMetadataId?: (Scalars['UUID'] | null),viewId?: (Scalars['UUID'] | null),name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null),folderId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null)} + +export interface UpdateOneNavigationMenuItemInput { +/** The id of the record to update */ +id: Scalars['UUID'], +/** The record to update */ +update: UpdateNavigationMenuItemInput} + +export interface UpdateNavigationMenuItemInput {folderId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null),name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null)} + +export interface CreateApiKeyInput {name: Scalars['String'],expiresAt: Scalars['String'],revokedAt?: (Scalars['String'] | null),roleId: Scalars['UUID']} + +export interface UpdateApiKeyInput {id: Scalars['UUID'],name?: (Scalars['String'] | null),expiresAt?: (Scalars['String'] | null),revokedAt?: (Scalars['String'] | null)} + +export interface RevokeApiKeyInput {id: Scalars['UUID']} + +export interface CreateRoleInput {id?: (Scalars['String'] | null),label: Scalars['String'],description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),canUpdateAllSettings?: (Scalars['Boolean'] | null),canAccessAllTools?: (Scalars['Boolean'] | null),canReadAllObjectRecords?: (Scalars['Boolean'] | null),canUpdateAllObjectRecords?: (Scalars['Boolean'] | null),canSoftDeleteAllObjectRecords?: (Scalars['Boolean'] | null),canDestroyAllObjectRecords?: (Scalars['Boolean'] | null),canBeAssignedToUsers?: (Scalars['Boolean'] | null),canBeAssignedToAgents?: (Scalars['Boolean'] | null),canBeAssignedToApiKeys?: (Scalars['Boolean'] | null)} + +export interface UpdateRoleInput {update: UpdateRolePayload, +/** The id of the role to update */ +id: Scalars['UUID']} + +export interface UpdateRolePayload {label?: (Scalars['String'] | null),description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),canUpdateAllSettings?: (Scalars['Boolean'] | null),canAccessAllTools?: (Scalars['Boolean'] | null),canReadAllObjectRecords?: (Scalars['Boolean'] | null),canUpdateAllObjectRecords?: (Scalars['Boolean'] | null),canSoftDeleteAllObjectRecords?: (Scalars['Boolean'] | null),canDestroyAllObjectRecords?: (Scalars['Boolean'] | null),canBeAssignedToUsers?: (Scalars['Boolean'] | null),canBeAssignedToAgents?: (Scalars['Boolean'] | null),canBeAssignedToApiKeys?: (Scalars['Boolean'] | null)} + +export interface UpsertObjectPermissionsInput {roleId: Scalars['UUID'],objectPermissions: ObjectPermissionInput[]} + +export interface ObjectPermissionInput {objectMetadataId: Scalars['UUID'],canReadObjectRecords?: (Scalars['Boolean'] | null),canUpdateObjectRecords?: (Scalars['Boolean'] | null),canSoftDeleteObjectRecords?: (Scalars['Boolean'] | null),canDestroyObjectRecords?: (Scalars['Boolean'] | null)} + +export interface UpsertPermissionFlagsInput {roleId: Scalars['UUID'],permissionFlagKeys: PermissionFlagType[]} + +export interface UpsertFieldPermissionsInput {roleId: Scalars['UUID'],fieldPermissions: FieldPermissionInput[]} + +export interface FieldPermissionInput {objectMetadataId: Scalars['UUID'],fieldMetadataId: Scalars['UUID'],canReadFieldValue?: (Scalars['Boolean'] | null),canUpdateFieldValue?: (Scalars['Boolean'] | null)} + +export interface UpsertRowLevelPermissionPredicatesInput {roleId: Scalars['UUID'],objectMetadataId: Scalars['UUID'],predicates: RowLevelPermissionPredicateInput[],predicateGroups: RowLevelPermissionPredicateGroupInput[]} + +export interface RowLevelPermissionPredicateInput {id?: (Scalars['UUID'] | null),fieldMetadataId: Scalars['UUID'],operand: RowLevelPermissionPredicateOperand,value?: (Scalars['JSON'] | null),subFieldName?: (Scalars['String'] | null),workspaceMemberFieldMetadataId?: (Scalars['String'] | null),workspaceMemberSubFieldName?: (Scalars['String'] | null),rowLevelPermissionPredicateGroupId?: (Scalars['UUID'] | null),positionInRowLevelPermissionPredicateGroup?: (Scalars['Float'] | null)} + +export interface RowLevelPermissionPredicateGroupInput {id?: (Scalars['UUID'] | null),objectMetadataId: Scalars['UUID'],parentRowLevelPermissionPredicateGroupId?: (Scalars['UUID'] | null),logicalOperator: RowLevelPermissionPredicateGroupLogicalOperator,positionInRowLevelPermissionPredicateGroup?: (Scalars['Float'] | null)} + +export interface CreateApprovedAccessDomainInput {domain: Scalars['String'],email: Scalars['String']} + +export interface DeleteApprovedAccessDomainInput {id: Scalars['UUID']} + +export interface ValidateApprovedAccessDomainInput {validationToken: Scalars['String'],approvedAccessDomainId: Scalars['UUID']} + +export interface CreateOneFieldMetadataInput { +/** The record to create */ +field: CreateFieldInput} + +export interface CreateFieldInput {type: FieldMetadataType,name: Scalars['String'],label: Scalars['String'],description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),isCustom?: (Scalars['Boolean'] | null),isActive?: (Scalars['Boolean'] | null),isSystem?: (Scalars['Boolean'] | null),isUIReadOnly?: (Scalars['Boolean'] | null),isNullable?: (Scalars['Boolean'] | null),isUnique?: (Scalars['Boolean'] | null),defaultValue?: (Scalars['JSON'] | null),options?: (Scalars['JSON'] | null),settings?: (Scalars['JSON'] | null),isLabelSyncedWithName?: (Scalars['Boolean'] | null),objectMetadataId: Scalars['UUID'],isRemoteCreation?: (Scalars['Boolean'] | null),relationCreationPayload?: (Scalars['JSON'] | null),morphRelationsCreationPayload?: (Scalars['JSON'][] | null)} + +export interface UpdateOneFieldMetadataInput { +/** The id of the record to update */ +id: Scalars['UUID'], +/** The record to update */ +update: UpdateFieldInput} + +export interface UpdateFieldInput {universalIdentifier?: (Scalars['UUID'] | null),name?: (Scalars['String'] | null),label?: (Scalars['String'] | null),description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),isActive?: (Scalars['Boolean'] | null),isSystem?: (Scalars['Boolean'] | null),isUIReadOnly?: (Scalars['Boolean'] | null),isNullable?: (Scalars['Boolean'] | null),isUnique?: (Scalars['Boolean'] | null),defaultValue?: (Scalars['JSON'] | null),options?: (Scalars['JSON'] | null),settings?: (Scalars['JSON'] | null),isLabelSyncedWithName?: (Scalars['Boolean'] | null),morphRelationsUpdatePayload?: (Scalars['JSON'][] | null)} + +export interface DeleteOneFieldInput { +/** The id of the field to delete. */ +id: Scalars['UUID']} + +export interface ActivateWorkspaceInput {displayName?: (Scalars['String'] | null)} + +export interface UpdateWorkspaceInput {subdomain?: (Scalars['String'] | null),customDomain?: (Scalars['String'] | null),displayName?: (Scalars['String'] | null),logo?: (Scalars['String'] | null),inviteHash?: (Scalars['String'] | null),isPublicInviteLinkEnabled?: (Scalars['Boolean'] | null),allowImpersonation?: (Scalars['Boolean'] | null),isGoogleAuthEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthEnabled?: (Scalars['Boolean'] | null),isPasswordAuthEnabled?: (Scalars['Boolean'] | null),isGoogleAuthBypassEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthBypassEnabled?: (Scalars['Boolean'] | null),isPasswordAuthBypassEnabled?: (Scalars['Boolean'] | null),defaultRoleId?: (Scalars['UUID'] | null),isTwoFactorAuthenticationEnforced?: (Scalars['Boolean'] | null),trashRetentionDays?: (Scalars['Float'] | null),eventLogRetentionDays?: (Scalars['Float'] | null),fastModel?: (Scalars['String'] | null),smartModel?: (Scalars['String'] | null),aiAdditionalInstructions?: (Scalars['String'] | null),editableProfileFields?: (Scalars['String'][] | null),autoEnableNewAiModels?: (Scalars['Boolean'] | null),disabledAiModelIds?: (Scalars['String'][] | null),enabledAiModelIds?: (Scalars['String'][] | null),useRecommendedModels?: (Scalars['Boolean'] | null)} + +export interface GetAuthorizationUrlForSSOInput {identityProviderId: Scalars['UUID'],workspaceInviteHash?: (Scalars['String'] | null)} + +export interface CreateApplicationRegistrationInput {name: Scalars['String'],description?: (Scalars['String'] | null),logoUrl?: (Scalars['String'] | null),author?: (Scalars['String'] | null),universalIdentifier?: (Scalars['String'] | null),oAuthRedirectUris?: (Scalars['String'][] | null),oAuthScopes?: (Scalars['String'][] | null),websiteUrl?: (Scalars['String'] | null),termsUrl?: (Scalars['String'] | null)} + +export interface UpdateApplicationRegistrationInput {id: Scalars['String'],update: UpdateApplicationRegistrationPayload} + +export interface UpdateApplicationRegistrationPayload {name?: (Scalars['String'] | null),description?: (Scalars['String'] | null),logoUrl?: (Scalars['String'] | null),author?: (Scalars['String'] | null),oAuthRedirectUris?: (Scalars['String'][] | null),oAuthScopes?: (Scalars['String'][] | null),websiteUrl?: (Scalars['String'] | null),termsUrl?: (Scalars['String'] | null),isListed?: (Scalars['Boolean'] | null)} + +export interface CreateApplicationRegistrationVariableInput {applicationRegistrationId: Scalars['String'],key: Scalars['String'],value: Scalars['String'],description?: (Scalars['String'] | null),isSecret?: (Scalars['Boolean'] | null)} + +export interface UpdateApplicationRegistrationVariableInput {id: Scalars['String'],update: UpdateApplicationRegistrationVariablePayload} + +export interface UpdateApplicationRegistrationVariablePayload {value?: (Scalars['String'] | null),description?: (Scalars['String'] | null)} + +export interface SetupOIDCSsoInput {name: Scalars['String'],issuer: Scalars['String'],clientID: Scalars['String'],clientSecret: Scalars['String']} + +export interface SetupSAMLSsoInput {name: Scalars['String'],issuer: Scalars['String'],id: Scalars['UUID'],ssoURL: Scalars['String'],certificate: Scalars['String'],fingerprint?: (Scalars['String'] | null)} + +export interface DeleteSsoInput {identityProviderId: Scalars['UUID']} + +export interface EditSsoInput {id: Scalars['UUID'],status: SSOIdentityProviderStatus} + +export interface CreateWebhookInput {id?: (Scalars['UUID'] | null),targetUrl: Scalars['String'],operations: Scalars['String'][],description?: (Scalars['String'] | null),secret?: (Scalars['String'] | null)} + +export interface UpdateWebhookInput { +/** The id of the webhook to update */ +id: Scalars['UUID'], +/** The webhook fields to update */ +update: UpdateWebhookInputUpdates} + +export interface UpdateWebhookInputUpdates {targetUrl?: (Scalars['String'] | null),operations?: (Scalars['String'][] | null),description?: (Scalars['String'] | null),secret?: (Scalars['String'] | null)} + +export interface CreateSkillInput {id?: (Scalars['UUID'] | null),name: Scalars['String'],label: Scalars['String'],icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),content: Scalars['String']} + +export interface UpdateSkillInput {id: Scalars['UUID'],name?: (Scalars['String'] | null),label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),content?: (Scalars['String'] | null),isActive?: (Scalars['Boolean'] | null)} + +export interface EmailAccountConnectionParameters {IMAP?: (ConnectionParameters | null),SMTP?: (ConnectionParameters | null),CALDAV?: (ConnectionParameters | null)} + +export interface ConnectionParameters {host: Scalars['String'],port: Scalars['Float'],username?: (Scalars['String'] | null),password: Scalars['String'],secure?: (Scalars['Boolean'] | null)} + +export interface UpdateLabPublicFeatureFlagInput {publicFeatureFlag: Scalars['String'],value: Scalars['Boolean']} + +export interface CreateOneAppTokenInput { +/** The record to create */ +appToken: CreateAppTokenInput} + +export interface CreateAppTokenInput {expiresAt: Scalars['DateTime']} + +export interface WorkspaceMigrationInput {actions: WorkspaceMigrationDeleteActionInput[]} + +export interface WorkspaceMigrationDeleteActionInput {type: WorkspaceMigrationActionType,metadataName: AllMetadataName,universalIdentifier: Scalars['String']} + +export interface SubscriptionGenqlSelection{ + onDbEvent?: (OnDbEventGenqlSelection & { __args: {input: OnDbEventInput} }) + onEventSubscription?: (EventSubscriptionGenqlSelection & { __args: {eventStreamId: Scalars['String']} }) + logicFunctionLogs?: (LogicFunctionLogsGenqlSelection & { __args: {input: LogicFunctionLogsInput} }) + __typename?: boolean | number + __scalar?: boolean | number +} + +export interface OnDbEventInput {action?: (DatabaseEventAction | null),objectNameSingular?: (Scalars['String'] | null),recordId?: (Scalars['UUID'] | null)} + +export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null),applicationUniversalIdentifier?: (Scalars['UUID'] | null),name?: (Scalars['String'] | null),id?: (Scalars['UUID'] | null),universalIdentifier?: (Scalars['UUID'] | null)} + + + const BillingProductDTO_possibleTypes: string[] = ['BillingLicensedProduct','BillingMeteredProduct'] + export const isBillingProductDTO = (obj?: { __typename?: any } | null): obj is BillingProductDTO => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingProductDTO"') + return BillingProductDTO_possibleTypes.includes(obj.__typename) + } + + + + const ApiKey_possibleTypes: string[] = ['ApiKey'] + export const isApiKey = (obj?: { __typename?: any } | null): obj is ApiKey => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApiKey"') + return ApiKey_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationRegistrationVariable_possibleTypes: string[] = ['ApplicationRegistrationVariable'] + export const isApplicationRegistrationVariable = (obj?: { __typename?: any } | null): obj is ApplicationRegistrationVariable => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistrationVariable"') + return ApplicationRegistrationVariable_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationRegistration_possibleTypes: string[] = ['ApplicationRegistration'] + export const isApplicationRegistration = (obj?: { __typename?: any } | null): obj is ApplicationRegistration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistration"') + return ApplicationRegistration_possibleTypes.includes(obj.__typename) + } + + + + const TwoFactorAuthenticationMethodSummary_possibleTypes: string[] = ['TwoFactorAuthenticationMethodSummary'] + export const isTwoFactorAuthenticationMethodSummary = (obj?: { __typename?: any } | null): obj is TwoFactorAuthenticationMethodSummary => { + if (!obj?.__typename) throw new Error('__typename is missing in "isTwoFactorAuthenticationMethodSummary"') + return TwoFactorAuthenticationMethodSummary_possibleTypes.includes(obj.__typename) + } + + + + const RowLevelPermissionPredicateGroup_possibleTypes: string[] = ['RowLevelPermissionPredicateGroup'] + export const isRowLevelPermissionPredicateGroup = (obj?: { __typename?: any } | null): obj is RowLevelPermissionPredicateGroup => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRowLevelPermissionPredicateGroup"') + return RowLevelPermissionPredicateGroup_possibleTypes.includes(obj.__typename) + } + + + + const RowLevelPermissionPredicate_possibleTypes: string[] = ['RowLevelPermissionPredicate'] + export const isRowLevelPermissionPredicate = (obj?: { __typename?: any } | null): obj is RowLevelPermissionPredicate => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRowLevelPermissionPredicate"') + return RowLevelPermissionPredicate_possibleTypes.includes(obj.__typename) + } + + + + const ObjectPermission_possibleTypes: string[] = ['ObjectPermission'] + export const isObjectPermission = (obj?: { __typename?: any } | null): obj is ObjectPermission => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectPermission"') + return ObjectPermission_possibleTypes.includes(obj.__typename) + } + + + + const UserWorkspace_possibleTypes: string[] = ['UserWorkspace'] + export const isUserWorkspace = (obj?: { __typename?: any } | null): obj is UserWorkspace => { + if (!obj?.__typename) throw new Error('__typename is missing in "isUserWorkspace"') + return UserWorkspace_possibleTypes.includes(obj.__typename) + } + + + + const FullName_possibleTypes: string[] = ['FullName'] + export const isFullName = (obj?: { __typename?: any } | null): obj is FullName => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFullName"') + return FullName_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceMember_possibleTypes: string[] = ['WorkspaceMember'] + export const isWorkspaceMember = (obj?: { __typename?: any } | null): obj is WorkspaceMember => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceMember"') + return WorkspaceMember_possibleTypes.includes(obj.__typename) + } + + + + const Agent_possibleTypes: string[] = ['Agent'] + export const isAgent = (obj?: { __typename?: any } | null): obj is Agent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgent"') + return Agent_possibleTypes.includes(obj.__typename) + } + + + + const FieldPermission_possibleTypes: string[] = ['FieldPermission'] + export const isFieldPermission = (obj?: { __typename?: any } | null): obj is FieldPermission => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldPermission"') + return FieldPermission_possibleTypes.includes(obj.__typename) + } + + + + const PermissionFlag_possibleTypes: string[] = ['PermissionFlag'] + export const isPermissionFlag = (obj?: { __typename?: any } | null): obj is PermissionFlag => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPermissionFlag"') + return PermissionFlag_possibleTypes.includes(obj.__typename) + } + + + + const ApiKeyForRole_possibleTypes: string[] = ['ApiKeyForRole'] + export const isApiKeyForRole = (obj?: { __typename?: any } | null): obj is ApiKeyForRole => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApiKeyForRole"') + return ApiKeyForRole_possibleTypes.includes(obj.__typename) + } + + + + const Role_possibleTypes: string[] = ['Role'] + export const isRole = (obj?: { __typename?: any } | null): obj is Role => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRole"') + return Role_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationRegistrationSummary_possibleTypes: string[] = ['ApplicationRegistrationSummary'] + export const isApplicationRegistrationSummary = (obj?: { __typename?: any } | null): obj is ApplicationRegistrationSummary => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistrationSummary"') + return ApplicationRegistrationSummary_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationVariable_possibleTypes: string[] = ['ApplicationVariable'] + export const isApplicationVariable = (obj?: { __typename?: any } | null): obj is ApplicationVariable => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationVariable"') + return ApplicationVariable_possibleTypes.includes(obj.__typename) + } + + + + const LogicFunction_possibleTypes: string[] = ['LogicFunction'] + export const isLogicFunction = (obj?: { __typename?: any } | null): obj is LogicFunction => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLogicFunction"') + return LogicFunction_possibleTypes.includes(obj.__typename) + } + + + + const StandardOverrides_possibleTypes: string[] = ['StandardOverrides'] + export const isStandardOverrides = (obj?: { __typename?: any } | null): obj is StandardOverrides => { + if (!obj?.__typename) throw new Error('__typename is missing in "isStandardOverrides"') + return StandardOverrides_possibleTypes.includes(obj.__typename) + } + + + + const Field_possibleTypes: string[] = ['Field'] + export const isField = (obj?: { __typename?: any } | null): obj is Field => { + if (!obj?.__typename) throw new Error('__typename is missing in "isField"') + return Field_possibleTypes.includes(obj.__typename) + } + + + + const IndexField_possibleTypes: string[] = ['IndexField'] + export const isIndexField = (obj?: { __typename?: any } | null): obj is IndexField => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexField"') + return IndexField_possibleTypes.includes(obj.__typename) + } + + + + const Index_possibleTypes: string[] = ['Index'] + export const isIndex = (obj?: { __typename?: any } | null): obj is Index => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndex"') + return Index_possibleTypes.includes(obj.__typename) + } + + + + const ObjectStandardOverrides_possibleTypes: string[] = ['ObjectStandardOverrides'] + export const isObjectStandardOverrides = (obj?: { __typename?: any } | null): obj is ObjectStandardOverrides => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectStandardOverrides"') + return ObjectStandardOverrides_possibleTypes.includes(obj.__typename) + } + + + + const Object_possibleTypes: string[] = ['Object'] + export const isObject = (obj?: { __typename?: any } | null): obj is Object => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObject"') + return Object_possibleTypes.includes(obj.__typename) + } + + + + const Application_possibleTypes: string[] = ['Application'] + export const isApplication = (obj?: { __typename?: any } | null): obj is Application => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplication"') + return Application_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewField_possibleTypes: string[] = ['CoreViewField'] + export const isCoreViewField = (obj?: { __typename?: any } | null): obj is CoreViewField => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewField"') + return CoreViewField_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewFilterGroup_possibleTypes: string[] = ['CoreViewFilterGroup'] + export const isCoreViewFilterGroup = (obj?: { __typename?: any } | null): obj is CoreViewFilterGroup => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewFilterGroup"') + return CoreViewFilterGroup_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewFilter_possibleTypes: string[] = ['CoreViewFilter'] + export const isCoreViewFilter = (obj?: { __typename?: any } | null): obj is CoreViewFilter => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewFilter"') + return CoreViewFilter_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewGroup_possibleTypes: string[] = ['CoreViewGroup'] + export const isCoreViewGroup = (obj?: { __typename?: any } | null): obj is CoreViewGroup => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewGroup"') + return CoreViewGroup_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewSort_possibleTypes: string[] = ['CoreViewSort'] + export const isCoreViewSort = (obj?: { __typename?: any } | null): obj is CoreViewSort => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewSort"') + return CoreViewSort_possibleTypes.includes(obj.__typename) + } + + + + const CoreViewFieldGroup_possibleTypes: string[] = ['CoreViewFieldGroup'] + export const isCoreViewFieldGroup = (obj?: { __typename?: any } | null): obj is CoreViewFieldGroup => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreViewFieldGroup"') + return CoreViewFieldGroup_possibleTypes.includes(obj.__typename) + } + + + + const CoreView_possibleTypes: string[] = ['CoreView'] + export const isCoreView = (obj?: { __typename?: any } | null): obj is CoreView => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCoreView"') + return CoreView_possibleTypes.includes(obj.__typename) + } + + + + const Workspace_possibleTypes: string[] = ['Workspace'] + export const isWorkspace = (obj?: { __typename?: any } | null): obj is Workspace => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspace"') + return Workspace_possibleTypes.includes(obj.__typename) + } + + + + const AppToken_possibleTypes: string[] = ['AppToken'] + export const isAppToken = (obj?: { __typename?: any } | null): obj is AppToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAppToken"') + return AppToken_possibleTypes.includes(obj.__typename) + } + + + + const User_possibleTypes: string[] = ['User'] + export const isUser = (obj?: { __typename?: any } | null): obj is User => { + if (!obj?.__typename) throw new Error('__typename is missing in "isUser"') + return User_possibleTypes.includes(obj.__typename) + } + + + + const RatioAggregateConfig_possibleTypes: string[] = ['RatioAggregateConfig'] + export const isRatioAggregateConfig = (obj?: { __typename?: any } | null): obj is RatioAggregateConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRatioAggregateConfig"') + return RatioAggregateConfig_possibleTypes.includes(obj.__typename) + } + + + + const NewFieldDefaultConfiguration_possibleTypes: string[] = ['NewFieldDefaultConfiguration'] + export const isNewFieldDefaultConfiguration = (obj?: { __typename?: any } | null): obj is NewFieldDefaultConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isNewFieldDefaultConfiguration"') + return NewFieldDefaultConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const RichTextV2Body_possibleTypes: string[] = ['RichTextV2Body'] + export const isRichTextV2Body = (obj?: { __typename?: any } | null): obj is RichTextV2Body => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRichTextV2Body"') + return RichTextV2Body_possibleTypes.includes(obj.__typename) + } + + + + const GridPosition_possibleTypes: string[] = ['GridPosition'] + export const isGridPosition = (obj?: { __typename?: any } | null): obj is GridPosition => { + if (!obj?.__typename) throw new Error('__typename is missing in "isGridPosition"') + return GridPosition_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutWidget_possibleTypes: string[] = ['PageLayoutWidget'] + export const isPageLayoutWidget = (obj?: { __typename?: any } | null): obj is PageLayoutWidget => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutWidget"') + return PageLayoutWidget_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutWidgetPosition_possibleTypes: string[] = ['PageLayoutWidgetGridPosition','PageLayoutWidgetVerticalListPosition','PageLayoutWidgetCanvasPosition'] + export const isPageLayoutWidgetPosition = (obj?: { __typename?: any } | null): obj is PageLayoutWidgetPosition => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutWidgetPosition"') + return PageLayoutWidgetPosition_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutWidgetGridPosition_possibleTypes: string[] = ['PageLayoutWidgetGridPosition'] + export const isPageLayoutWidgetGridPosition = (obj?: { __typename?: any } | null): obj is PageLayoutWidgetGridPosition => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutWidgetGridPosition"') + return PageLayoutWidgetGridPosition_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutWidgetVerticalListPosition_possibleTypes: string[] = ['PageLayoutWidgetVerticalListPosition'] + export const isPageLayoutWidgetVerticalListPosition = (obj?: { __typename?: any } | null): obj is PageLayoutWidgetVerticalListPosition => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutWidgetVerticalListPosition"') + return PageLayoutWidgetVerticalListPosition_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutWidgetCanvasPosition_possibleTypes: string[] = ['PageLayoutWidgetCanvasPosition'] + export const isPageLayoutWidgetCanvasPosition = (obj?: { __typename?: any } | null): obj is PageLayoutWidgetCanvasPosition => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutWidgetCanvasPosition"') + return PageLayoutWidgetCanvasPosition_possibleTypes.includes(obj.__typename) + } + + + + const WidgetConfiguration_possibleTypes: string[] = ['AggregateChartConfiguration','StandaloneRichTextConfiguration','PieChartConfiguration','LineChartConfiguration','IframeConfiguration','GaugeChartConfiguration','BarChartConfiguration','CalendarConfiguration','FrontComponentConfiguration','EmailsConfiguration','FieldConfiguration','FieldRichTextConfiguration','FieldsConfiguration','FilesConfiguration','NotesConfiguration','TasksConfiguration','TimelineConfiguration','ViewConfiguration','WorkflowConfiguration','WorkflowRunConfiguration','WorkflowVersionConfiguration'] + export const isWidgetConfiguration = (obj?: { __typename?: any } | null): obj is WidgetConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWidgetConfiguration"') + return WidgetConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const AggregateChartConfiguration_possibleTypes: string[] = ['AggregateChartConfiguration'] + export const isAggregateChartConfiguration = (obj?: { __typename?: any } | null): obj is AggregateChartConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAggregateChartConfiguration"') + return AggregateChartConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const StandaloneRichTextConfiguration_possibleTypes: string[] = ['StandaloneRichTextConfiguration'] + export const isStandaloneRichTextConfiguration = (obj?: { __typename?: any } | null): obj is StandaloneRichTextConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isStandaloneRichTextConfiguration"') + return StandaloneRichTextConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const PieChartConfiguration_possibleTypes: string[] = ['PieChartConfiguration'] + export const isPieChartConfiguration = (obj?: { __typename?: any } | null): obj is PieChartConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPieChartConfiguration"') + return PieChartConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const LineChartConfiguration_possibleTypes: string[] = ['LineChartConfiguration'] + export const isLineChartConfiguration = (obj?: { __typename?: any } | null): obj is LineChartConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLineChartConfiguration"') + return LineChartConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const IframeConfiguration_possibleTypes: string[] = ['IframeConfiguration'] + export const isIframeConfiguration = (obj?: { __typename?: any } | null): obj is IframeConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIframeConfiguration"') + return IframeConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const GaugeChartConfiguration_possibleTypes: string[] = ['GaugeChartConfiguration'] + export const isGaugeChartConfiguration = (obj?: { __typename?: any } | null): obj is GaugeChartConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isGaugeChartConfiguration"') + return GaugeChartConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const BarChartConfiguration_possibleTypes: string[] = ['BarChartConfiguration'] + export const isBarChartConfiguration = (obj?: { __typename?: any } | null): obj is BarChartConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBarChartConfiguration"') + return BarChartConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const CalendarConfiguration_possibleTypes: string[] = ['CalendarConfiguration'] + export const isCalendarConfiguration = (obj?: { __typename?: any } | null): obj is CalendarConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCalendarConfiguration"') + return CalendarConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const FrontComponentConfiguration_possibleTypes: string[] = ['FrontComponentConfiguration'] + export const isFrontComponentConfiguration = (obj?: { __typename?: any } | null): obj is FrontComponentConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFrontComponentConfiguration"') + return FrontComponentConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const EmailsConfiguration_possibleTypes: string[] = ['EmailsConfiguration'] + export const isEmailsConfiguration = (obj?: { __typename?: any } | null): obj is EmailsConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEmailsConfiguration"') + return EmailsConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const FieldConfiguration_possibleTypes: string[] = ['FieldConfiguration'] + export const isFieldConfiguration = (obj?: { __typename?: any } | null): obj is FieldConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldConfiguration"') + return FieldConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const FieldRichTextConfiguration_possibleTypes: string[] = ['FieldRichTextConfiguration'] + export const isFieldRichTextConfiguration = (obj?: { __typename?: any } | null): obj is FieldRichTextConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldRichTextConfiguration"') + return FieldRichTextConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const FieldsConfiguration_possibleTypes: string[] = ['FieldsConfiguration'] + export const isFieldsConfiguration = (obj?: { __typename?: any } | null): obj is FieldsConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldsConfiguration"') + return FieldsConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const FilesConfiguration_possibleTypes: string[] = ['FilesConfiguration'] + export const isFilesConfiguration = (obj?: { __typename?: any } | null): obj is FilesConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFilesConfiguration"') + return FilesConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const NotesConfiguration_possibleTypes: string[] = ['NotesConfiguration'] + export const isNotesConfiguration = (obj?: { __typename?: any } | null): obj is NotesConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isNotesConfiguration"') + return NotesConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const TasksConfiguration_possibleTypes: string[] = ['TasksConfiguration'] + export const isTasksConfiguration = (obj?: { __typename?: any } | null): obj is TasksConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isTasksConfiguration"') + return TasksConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const TimelineConfiguration_possibleTypes: string[] = ['TimelineConfiguration'] + export const isTimelineConfiguration = (obj?: { __typename?: any } | null): obj is TimelineConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isTimelineConfiguration"') + return TimelineConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const ViewConfiguration_possibleTypes: string[] = ['ViewConfiguration'] + export const isViewConfiguration = (obj?: { __typename?: any } | null): obj is ViewConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isViewConfiguration"') + return ViewConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const WorkflowConfiguration_possibleTypes: string[] = ['WorkflowConfiguration'] + export const isWorkflowConfiguration = (obj?: { __typename?: any } | null): obj is WorkflowConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkflowConfiguration"') + return WorkflowConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const WorkflowRunConfiguration_possibleTypes: string[] = ['WorkflowRunConfiguration'] + export const isWorkflowRunConfiguration = (obj?: { __typename?: any } | null): obj is WorkflowRunConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkflowRunConfiguration"') + return WorkflowRunConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const WorkflowVersionConfiguration_possibleTypes: string[] = ['WorkflowVersionConfiguration'] + export const isWorkflowVersionConfiguration = (obj?: { __typename?: any } | null): obj is WorkflowVersionConfiguration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkflowVersionConfiguration"') + return WorkflowVersionConfiguration_possibleTypes.includes(obj.__typename) + } + + + + const PageLayoutTab_possibleTypes: string[] = ['PageLayoutTab'] + export const isPageLayoutTab = (obj?: { __typename?: any } | null): obj is PageLayoutTab => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayoutTab"') + return PageLayoutTab_possibleTypes.includes(obj.__typename) + } + + + + const PageLayout_possibleTypes: string[] = ['PageLayout'] + export const isPageLayout = (obj?: { __typename?: any } | null): obj is PageLayout => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageLayout"') + return PageLayout_possibleTypes.includes(obj.__typename) + } + + + + const ObjectRecordEventProperties_possibleTypes: string[] = ['ObjectRecordEventProperties'] + export const isObjectRecordEventProperties = (obj?: { __typename?: any } | null): obj is ObjectRecordEventProperties => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectRecordEventProperties"') + return ObjectRecordEventProperties_possibleTypes.includes(obj.__typename) + } + + + + const MetadataEvent_possibleTypes: string[] = ['MetadataEvent'] + export const isMetadataEvent = (obj?: { __typename?: any } | null): obj is MetadataEvent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMetadataEvent"') + return MetadataEvent_possibleTypes.includes(obj.__typename) + } + + + + const ObjectRecordEvent_possibleTypes: string[] = ['ObjectRecordEvent'] + export const isObjectRecordEvent = (obj?: { __typename?: any } | null): obj is ObjectRecordEvent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectRecordEvent"') + return ObjectRecordEvent_possibleTypes.includes(obj.__typename) + } + + + + const ObjectRecordEventWithQueryIds_possibleTypes: string[] = ['ObjectRecordEventWithQueryIds'] + export const isObjectRecordEventWithQueryIds = (obj?: { __typename?: any } | null): obj is ObjectRecordEventWithQueryIds => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectRecordEventWithQueryIds"') + return ObjectRecordEventWithQueryIds_possibleTypes.includes(obj.__typename) + } + + + + const MetadataEventWithQueryIds_possibleTypes: string[] = ['MetadataEventWithQueryIds'] + export const isMetadataEventWithQueryIds = (obj?: { __typename?: any } | null): obj is MetadataEventWithQueryIds => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMetadataEventWithQueryIds"') + return MetadataEventWithQueryIds_possibleTypes.includes(obj.__typename) + } + + + + const EventSubscription_possibleTypes: string[] = ['EventSubscription'] + export const isEventSubscription = (obj?: { __typename?: any } | null): obj is EventSubscription => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEventSubscription"') + return EventSubscription_possibleTypes.includes(obj.__typename) + } + + + + const OnDbEvent_possibleTypes: string[] = ['OnDbEvent'] + export const isOnDbEvent = (obj?: { __typename?: any } | null): obj is OnDbEvent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isOnDbEvent"') + return OnDbEvent_possibleTypes.includes(obj.__typename) + } + + + + const Analytics_possibleTypes: string[] = ['Analytics'] + export const isAnalytics = (obj?: { __typename?: any } | null): obj is Analytics => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAnalytics"') + return Analytics_possibleTypes.includes(obj.__typename) + } + + + + const BillingSubscriptionSchedulePhaseItem_possibleTypes: string[] = ['BillingSubscriptionSchedulePhaseItem'] + export const isBillingSubscriptionSchedulePhaseItem = (obj?: { __typename?: any } | null): obj is BillingSubscriptionSchedulePhaseItem => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingSubscriptionSchedulePhaseItem"') + return BillingSubscriptionSchedulePhaseItem_possibleTypes.includes(obj.__typename) + } + + + + const BillingSubscriptionSchedulePhase_possibleTypes: string[] = ['BillingSubscriptionSchedulePhase'] + export const isBillingSubscriptionSchedulePhase = (obj?: { __typename?: any } | null): obj is BillingSubscriptionSchedulePhase => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingSubscriptionSchedulePhase"') + return BillingSubscriptionSchedulePhase_possibleTypes.includes(obj.__typename) + } + + + + const BillingProductMetadata_possibleTypes: string[] = ['BillingProductMetadata'] + export const isBillingProductMetadata = (obj?: { __typename?: any } | null): obj is BillingProductMetadata => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingProductMetadata"') + return BillingProductMetadata_possibleTypes.includes(obj.__typename) + } + + + + const BillingPriceLicensed_possibleTypes: string[] = ['BillingPriceLicensed'] + export const isBillingPriceLicensed = (obj?: { __typename?: any } | null): obj is BillingPriceLicensed => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingPriceLicensed"') + return BillingPriceLicensed_possibleTypes.includes(obj.__typename) + } + + + + const BillingPriceTier_possibleTypes: string[] = ['BillingPriceTier'] + export const isBillingPriceTier = (obj?: { __typename?: any } | null): obj is BillingPriceTier => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingPriceTier"') + return BillingPriceTier_possibleTypes.includes(obj.__typename) + } + + + + const BillingPriceMetered_possibleTypes: string[] = ['BillingPriceMetered'] + export const isBillingPriceMetered = (obj?: { __typename?: any } | null): obj is BillingPriceMetered => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingPriceMetered"') + return BillingPriceMetered_possibleTypes.includes(obj.__typename) + } + + + + const BillingProduct_possibleTypes: string[] = ['BillingProduct'] + export const isBillingProduct = (obj?: { __typename?: any } | null): obj is BillingProduct => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingProduct"') + return BillingProduct_possibleTypes.includes(obj.__typename) + } + + + + const BillingLicensedProduct_possibleTypes: string[] = ['BillingLicensedProduct'] + export const isBillingLicensedProduct = (obj?: { __typename?: any } | null): obj is BillingLicensedProduct => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingLicensedProduct"') + return BillingLicensedProduct_possibleTypes.includes(obj.__typename) + } + + + + const BillingMeteredProduct_possibleTypes: string[] = ['BillingMeteredProduct'] + export const isBillingMeteredProduct = (obj?: { __typename?: any } | null): obj is BillingMeteredProduct => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingMeteredProduct"') + return BillingMeteredProduct_possibleTypes.includes(obj.__typename) + } + + + + const BillingSubscriptionItem_possibleTypes: string[] = ['BillingSubscriptionItem'] + export const isBillingSubscriptionItem = (obj?: { __typename?: any } | null): obj is BillingSubscriptionItem => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingSubscriptionItem"') + return BillingSubscriptionItem_possibleTypes.includes(obj.__typename) + } + + + + const BillingSubscription_possibleTypes: string[] = ['BillingSubscription'] + export const isBillingSubscription = (obj?: { __typename?: any } | null): obj is BillingSubscription => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingSubscription"') + return BillingSubscription_possibleTypes.includes(obj.__typename) + } + + + + const BillingEndTrialPeriod_possibleTypes: string[] = ['BillingEndTrialPeriod'] + export const isBillingEndTrialPeriod = (obj?: { __typename?: any } | null): obj is BillingEndTrialPeriod => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingEndTrialPeriod"') + return BillingEndTrialPeriod_possibleTypes.includes(obj.__typename) + } + + + + const BillingMeteredProductUsage_possibleTypes: string[] = ['BillingMeteredProductUsage'] + export const isBillingMeteredProductUsage = (obj?: { __typename?: any } | null): obj is BillingMeteredProductUsage => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingMeteredProductUsage"') + return BillingMeteredProductUsage_possibleTypes.includes(obj.__typename) + } + + + + const BillingPlan_possibleTypes: string[] = ['BillingPlan'] + export const isBillingPlan = (obj?: { __typename?: any } | null): obj is BillingPlan => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingPlan"') + return BillingPlan_possibleTypes.includes(obj.__typename) + } + + + + const BillingSession_possibleTypes: string[] = ['BillingSession'] + export const isBillingSession = (obj?: { __typename?: any } | null): obj is BillingSession => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingSession"') + return BillingSession_possibleTypes.includes(obj.__typename) + } + + + + const BillingUpdate_possibleTypes: string[] = ['BillingUpdate'] + export const isBillingUpdate = (obj?: { __typename?: any } | null): obj is BillingUpdate => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingUpdate"') + return BillingUpdate_possibleTypes.includes(obj.__typename) + } + + + + const OnboardingStepSuccess_possibleTypes: string[] = ['OnboardingStepSuccess'] + export const isOnboardingStepSuccess = (obj?: { __typename?: any } | null): obj is OnboardingStepSuccess => { + if (!obj?.__typename) throw new Error('__typename is missing in "isOnboardingStepSuccess"') + return OnboardingStepSuccess_possibleTypes.includes(obj.__typename) + } + + + + const ApprovedAccessDomain_possibleTypes: string[] = ['ApprovedAccessDomain'] + export const isApprovedAccessDomain = (obj?: { __typename?: any } | null): obj is ApprovedAccessDomain => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApprovedAccessDomain"') + return ApprovedAccessDomain_possibleTypes.includes(obj.__typename) + } + + + + const FileWithSignedUrl_possibleTypes: string[] = ['FileWithSignedUrl'] + export const isFileWithSignedUrl = (obj?: { __typename?: any } | null): obj is FileWithSignedUrl => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFileWithSignedUrl"') + return FileWithSignedUrl_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceInvitation_possibleTypes: string[] = ['WorkspaceInvitation'] + export const isWorkspaceInvitation = (obj?: { __typename?: any } | null): obj is WorkspaceInvitation => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceInvitation"') + return WorkspaceInvitation_possibleTypes.includes(obj.__typename) + } + + + + const SendInvitations_possibleTypes: string[] = ['SendInvitations'] + export const isSendInvitations = (obj?: { __typename?: any } | null): obj is SendInvitations => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSendInvitations"') + return SendInvitations_possibleTypes.includes(obj.__typename) + } + + + + const ResendEmailVerificationToken_possibleTypes: string[] = ['ResendEmailVerificationToken'] + export const isResendEmailVerificationToken = (obj?: { __typename?: any } | null): obj is ResendEmailVerificationToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isResendEmailVerificationToken"') + return ResendEmailVerificationToken_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceUrls_possibleTypes: string[] = ['WorkspaceUrls'] + export const isWorkspaceUrls = (obj?: { __typename?: any } | null): obj is WorkspaceUrls => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceUrls"') + return WorkspaceUrls_possibleTypes.includes(obj.__typename) + } + + + + const SSOConnection_possibleTypes: string[] = ['SSOConnection'] + export const isSSOConnection = (obj?: { __typename?: any } | null): obj is SSOConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSSOConnection"') + return SSOConnection_possibleTypes.includes(obj.__typename) + } + + + + const AvailableWorkspace_possibleTypes: string[] = ['AvailableWorkspace'] + export const isAvailableWorkspace = (obj?: { __typename?: any } | null): obj is AvailableWorkspace => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspace"') + return AvailableWorkspace_possibleTypes.includes(obj.__typename) + } + + + + const AvailableWorkspaces_possibleTypes: string[] = ['AvailableWorkspaces'] + export const isAvailableWorkspaces = (obj?: { __typename?: any } | null): obj is AvailableWorkspaces => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspaces"') + return AvailableWorkspaces_possibleTypes.includes(obj.__typename) + } + + + + const DeletedWorkspaceMember_possibleTypes: string[] = ['DeletedWorkspaceMember'] + export const isDeletedWorkspaceMember = (obj?: { __typename?: any } | null): obj is DeletedWorkspaceMember => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDeletedWorkspaceMember"') + return DeletedWorkspaceMember_possibleTypes.includes(obj.__typename) + } + + + + const BillingEntitlement_possibleTypes: string[] = ['BillingEntitlement'] + export const isBillingEntitlement = (obj?: { __typename?: any } | null): obj is BillingEntitlement => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingEntitlement"') + return BillingEntitlement_possibleTypes.includes(obj.__typename) + } + + + + const DomainRecord_possibleTypes: string[] = ['DomainRecord'] + export const isDomainRecord = (obj?: { __typename?: any } | null): obj is DomainRecord => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDomainRecord"') + return DomainRecord_possibleTypes.includes(obj.__typename) + } + + + + const DomainValidRecords_possibleTypes: string[] = ['DomainValidRecords'] + export const isDomainValidRecords = (obj?: { __typename?: any } | null): obj is DomainValidRecords => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDomainValidRecords"') + return DomainValidRecords_possibleTypes.includes(obj.__typename) + } + + + + const FeatureFlag_possibleTypes: string[] = ['FeatureFlag'] + export const isFeatureFlag = (obj?: { __typename?: any } | null): obj is FeatureFlag => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFeatureFlag"') + return FeatureFlag_possibleTypes.includes(obj.__typename) + } + + + + const SSOIdentityProvider_possibleTypes: string[] = ['SSOIdentityProvider'] + export const isSSOIdentityProvider = (obj?: { __typename?: any } | null): obj is SSOIdentityProvider => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSSOIdentityProvider"') + return SSOIdentityProvider_possibleTypes.includes(obj.__typename) + } + + + + const AuthProviders_possibleTypes: string[] = ['AuthProviders'] + export const isAuthProviders = (obj?: { __typename?: any } | null): obj is AuthProviders => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthProviders"') + return AuthProviders_possibleTypes.includes(obj.__typename) + } + + + + const AuthBypassProviders_possibleTypes: string[] = ['AuthBypassProviders'] + export const isAuthBypassProviders = (obj?: { __typename?: any } | null): obj is AuthBypassProviders => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthBypassProviders"') + return AuthBypassProviders_possibleTypes.includes(obj.__typename) + } + + + + const PublicWorkspaceData_possibleTypes: string[] = ['PublicWorkspaceData'] + export const isPublicWorkspaceData = (obj?: { __typename?: any } | null): obj is PublicWorkspaceData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPublicWorkspaceData"') + return PublicWorkspaceData_possibleTypes.includes(obj.__typename) + } + + + + const IndexEdge_possibleTypes: string[] = ['IndexEdge'] + export const isIndexEdge = (obj?: { __typename?: any } | null): obj is IndexEdge => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexEdge"') + return IndexEdge_possibleTypes.includes(obj.__typename) + } + + + + const PageInfo_possibleTypes: string[] = ['PageInfo'] + export const isPageInfo = (obj?: { __typename?: any } | null): obj is PageInfo => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPageInfo"') + return PageInfo_possibleTypes.includes(obj.__typename) + } + + + + const IndexConnection_possibleTypes: string[] = ['IndexConnection'] + export const isIndexConnection = (obj?: { __typename?: any } | null): obj is IndexConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexConnection"') + return IndexConnection_possibleTypes.includes(obj.__typename) + } + + + + const IndexFieldEdge_possibleTypes: string[] = ['IndexFieldEdge'] + export const isIndexFieldEdge = (obj?: { __typename?: any } | null): obj is IndexFieldEdge => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexFieldEdge"') + return IndexFieldEdge_possibleTypes.includes(obj.__typename) + } + + + + const IndexIndexFieldMetadatasConnection_possibleTypes: string[] = ['IndexIndexFieldMetadatasConnection'] + export const isIndexIndexFieldMetadatasConnection = (obj?: { __typename?: any } | null): obj is IndexIndexFieldMetadatasConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexIndexFieldMetadatasConnection"') + return IndexIndexFieldMetadatasConnection_possibleTypes.includes(obj.__typename) + } + + + + const ObjectEdge_possibleTypes: string[] = ['ObjectEdge'] + export const isObjectEdge = (obj?: { __typename?: any } | null): obj is ObjectEdge => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectEdge"') + return ObjectEdge_possibleTypes.includes(obj.__typename) + } + + + + const IndexObjectMetadataConnection_possibleTypes: string[] = ['IndexObjectMetadataConnection'] + export const isIndexObjectMetadataConnection = (obj?: { __typename?: any } | null): obj is IndexObjectMetadataConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isIndexObjectMetadataConnection"') + return IndexObjectMetadataConnection_possibleTypes.includes(obj.__typename) + } + + + + const ObjectRecordCount_possibleTypes: string[] = ['ObjectRecordCount'] + export const isObjectRecordCount = (obj?: { __typename?: any } | null): obj is ObjectRecordCount => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectRecordCount"') + return ObjectRecordCount_possibleTypes.includes(obj.__typename) + } + + + + const ObjectConnection_possibleTypes: string[] = ['ObjectConnection'] + export const isObjectConnection = (obj?: { __typename?: any } | null): obj is ObjectConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectConnection"') + return ObjectConnection_possibleTypes.includes(obj.__typename) + } + + + + const ObjectIndexMetadatasConnection_possibleTypes: string[] = ['ObjectIndexMetadatasConnection'] + export const isObjectIndexMetadatasConnection = (obj?: { __typename?: any } | null): obj is ObjectIndexMetadatasConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectIndexMetadatasConnection"') + return ObjectIndexMetadatasConnection_possibleTypes.includes(obj.__typename) + } + + + + const FieldEdge_possibleTypes: string[] = ['FieldEdge'] + export const isFieldEdge = (obj?: { __typename?: any } | null): obj is FieldEdge => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldEdge"') + return FieldEdge_possibleTypes.includes(obj.__typename) + } + + + + const ObjectFieldsConnection_possibleTypes: string[] = ['ObjectFieldsConnection'] + export const isObjectFieldsConnection = (obj?: { __typename?: any } | null): obj is ObjectFieldsConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isObjectFieldsConnection"') + return ObjectFieldsConnection_possibleTypes.includes(obj.__typename) + } + + + + const UpsertRowLevelPermissionPredicatesResult_possibleTypes: string[] = ['UpsertRowLevelPermissionPredicatesResult'] + export const isUpsertRowLevelPermissionPredicatesResult = (obj?: { __typename?: any } | null): obj is UpsertRowLevelPermissionPredicatesResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isUpsertRowLevelPermissionPredicatesResult"') + return UpsertRowLevelPermissionPredicatesResult_possibleTypes.includes(obj.__typename) + } + + + + const Relation_possibleTypes: string[] = ['Relation'] + export const isRelation = (obj?: { __typename?: any } | null): obj is Relation => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRelation"') + return Relation_possibleTypes.includes(obj.__typename) + } + + + + const FieldConnection_possibleTypes: string[] = ['FieldConnection'] + export const isFieldConnection = (obj?: { __typename?: any } | null): obj is FieldConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFieldConnection"') + return FieldConnection_possibleTypes.includes(obj.__typename) + } + + + + const VersionDistributionEntry_possibleTypes: string[] = ['VersionDistributionEntry'] + export const isVersionDistributionEntry = (obj?: { __typename?: any } | null): obj is VersionDistributionEntry => { + if (!obj?.__typename) throw new Error('__typename is missing in "isVersionDistributionEntry"') + return VersionDistributionEntry_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationRegistrationStats_possibleTypes: string[] = ['ApplicationRegistrationStats'] + export const isApplicationRegistrationStats = (obj?: { __typename?: any } | null): obj is ApplicationRegistrationStats => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistrationStats"') + return ApplicationRegistrationStats_possibleTypes.includes(obj.__typename) + } + + + + const CreateApplicationRegistration_possibleTypes: string[] = ['CreateApplicationRegistration'] + export const isCreateApplicationRegistration = (obj?: { __typename?: any } | null): obj is CreateApplicationRegistration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCreateApplicationRegistration"') + return CreateApplicationRegistration_possibleTypes.includes(obj.__typename) + } + + + + const PublicApplicationRegistration_possibleTypes: string[] = ['PublicApplicationRegistration'] + export const isPublicApplicationRegistration = (obj?: { __typename?: any } | null): obj is PublicApplicationRegistration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPublicApplicationRegistration"') + return PublicApplicationRegistration_possibleTypes.includes(obj.__typename) + } + + + + const RotateClientSecret_possibleTypes: string[] = ['RotateClientSecret'] + export const isRotateClientSecret = (obj?: { __typename?: any } | null): obj is RotateClientSecret => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRotateClientSecret"') + return RotateClientSecret_possibleTypes.includes(obj.__typename) + } + + + + const DeleteSso_possibleTypes: string[] = ['DeleteSso'] + export const isDeleteSso = (obj?: { __typename?: any } | null): obj is DeleteSso => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDeleteSso"') + return DeleteSso_possibleTypes.includes(obj.__typename) + } + + + + const EditSso_possibleTypes: string[] = ['EditSso'] + export const isEditSso = (obj?: { __typename?: any } | null): obj is EditSso => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEditSso"') + return EditSso_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceNameAndId_possibleTypes: string[] = ['WorkspaceNameAndId'] + export const isWorkspaceNameAndId = (obj?: { __typename?: any } | null): obj is WorkspaceNameAndId => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceNameAndId"') + return WorkspaceNameAndId_possibleTypes.includes(obj.__typename) + } + + + + const FindAvailableSSOIDP_possibleTypes: string[] = ['FindAvailableSSOIDP'] + export const isFindAvailableSSOIDP = (obj?: { __typename?: any } | null): obj is FindAvailableSSOIDP => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFindAvailableSSOIDP"') + return FindAvailableSSOIDP_possibleTypes.includes(obj.__typename) + } + + + + const SetupSso_possibleTypes: string[] = ['SetupSso'] + export const isSetupSso = (obj?: { __typename?: any } | null): obj is SetupSso => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSetupSso"') + return SetupSso_possibleTypes.includes(obj.__typename) + } + + + + const DeleteTwoFactorAuthenticationMethod_possibleTypes: string[] = ['DeleteTwoFactorAuthenticationMethod'] + export const isDeleteTwoFactorAuthenticationMethod = (obj?: { __typename?: any } | null): obj is DeleteTwoFactorAuthenticationMethod => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDeleteTwoFactorAuthenticationMethod"') + return DeleteTwoFactorAuthenticationMethod_possibleTypes.includes(obj.__typename) + } + + + + const InitiateTwoFactorAuthenticationProvisioning_possibleTypes: string[] = ['InitiateTwoFactorAuthenticationProvisioning'] + export const isInitiateTwoFactorAuthenticationProvisioning = (obj?: { __typename?: any } | null): obj is InitiateTwoFactorAuthenticationProvisioning => { + if (!obj?.__typename) throw new Error('__typename is missing in "isInitiateTwoFactorAuthenticationProvisioning"') + return InitiateTwoFactorAuthenticationProvisioning_possibleTypes.includes(obj.__typename) + } + + + + const VerifyTwoFactorAuthenticationMethod_possibleTypes: string[] = ['VerifyTwoFactorAuthenticationMethod'] + export const isVerifyTwoFactorAuthenticationMethod = (obj?: { __typename?: any } | null): obj is VerifyTwoFactorAuthenticationMethod => { + if (!obj?.__typename) throw new Error('__typename is missing in "isVerifyTwoFactorAuthenticationMethod"') + return VerifyTwoFactorAuthenticationMethod_possibleTypes.includes(obj.__typename) + } + + + + const AuthorizeApp_possibleTypes: string[] = ['AuthorizeApp'] + export const isAuthorizeApp = (obj?: { __typename?: any } | null): obj is AuthorizeApp => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthorizeApp"') + return AuthorizeApp_possibleTypes.includes(obj.__typename) + } + + + + const AuthToken_possibleTypes: string[] = ['AuthToken'] + export const isAuthToken = (obj?: { __typename?: any } | null): obj is AuthToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthToken"') + return AuthToken_possibleTypes.includes(obj.__typename) + } + + + + const AuthTokenPair_possibleTypes: string[] = ['AuthTokenPair'] + export const isAuthTokenPair = (obj?: { __typename?: any } | null): obj is AuthTokenPair => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthTokenPair"') + return AuthTokenPair_possibleTypes.includes(obj.__typename) + } + + + + const AvailableWorkspacesAndAccessTokens_possibleTypes: string[] = ['AvailableWorkspacesAndAccessTokens'] + export const isAvailableWorkspacesAndAccessTokens = (obj?: { __typename?: any } | null): obj is AvailableWorkspacesAndAccessTokens => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspacesAndAccessTokens"') + return AvailableWorkspacesAndAccessTokens_possibleTypes.includes(obj.__typename) + } + + + + const EmailPasswordResetLink_possibleTypes: string[] = ['EmailPasswordResetLink'] + export const isEmailPasswordResetLink = (obj?: { __typename?: any } | null): obj is EmailPasswordResetLink => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEmailPasswordResetLink"') + return EmailPasswordResetLink_possibleTypes.includes(obj.__typename) + } + + + + const GetAuthorizationUrlForSSO_possibleTypes: string[] = ['GetAuthorizationUrlForSSO'] + export const isGetAuthorizationUrlForSSO = (obj?: { __typename?: any } | null): obj is GetAuthorizationUrlForSSO => { + if (!obj?.__typename) throw new Error('__typename is missing in "isGetAuthorizationUrlForSSO"') + return GetAuthorizationUrlForSSO_possibleTypes.includes(obj.__typename) + } + + + + const InvalidatePassword_possibleTypes: string[] = ['InvalidatePassword'] + export const isInvalidatePassword = (obj?: { __typename?: any } | null): obj is InvalidatePassword => { + if (!obj?.__typename) throw new Error('__typename is missing in "isInvalidatePassword"') + return InvalidatePassword_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceUrlsAndId_possibleTypes: string[] = ['WorkspaceUrlsAndId'] + export const isWorkspaceUrlsAndId = (obj?: { __typename?: any } | null): obj is WorkspaceUrlsAndId => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceUrlsAndId"') + return WorkspaceUrlsAndId_possibleTypes.includes(obj.__typename) + } + + + + const SignUp_possibleTypes: string[] = ['SignUp'] + export const isSignUp = (obj?: { __typename?: any } | null): obj is SignUp => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSignUp"') + return SignUp_possibleTypes.includes(obj.__typename) + } + + + + const TransientToken_possibleTypes: string[] = ['TransientToken'] + export const isTransientToken = (obj?: { __typename?: any } | null): obj is TransientToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isTransientToken"') + return TransientToken_possibleTypes.includes(obj.__typename) + } + + + + const ValidatePasswordResetToken_possibleTypes: string[] = ['ValidatePasswordResetToken'] + export const isValidatePasswordResetToken = (obj?: { __typename?: any } | null): obj is ValidatePasswordResetToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isValidatePasswordResetToken"') + return ValidatePasswordResetToken_possibleTypes.includes(obj.__typename) + } + + + + const VerifyEmailAndGetLoginToken_possibleTypes: string[] = ['VerifyEmailAndGetLoginToken'] + export const isVerifyEmailAndGetLoginToken = (obj?: { __typename?: any } | null): obj is VerifyEmailAndGetLoginToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isVerifyEmailAndGetLoginToken"') + return VerifyEmailAndGetLoginToken_possibleTypes.includes(obj.__typename) + } + + + + const ApiKeyToken_possibleTypes: string[] = ['ApiKeyToken'] + export const isApiKeyToken = (obj?: { __typename?: any } | null): obj is ApiKeyToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApiKeyToken"') + return ApiKeyToken_possibleTypes.includes(obj.__typename) + } + + + + const AuthTokens_possibleTypes: string[] = ['AuthTokens'] + export const isAuthTokens = (obj?: { __typename?: any } | null): obj is AuthTokens => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAuthTokens"') + return AuthTokens_possibleTypes.includes(obj.__typename) + } + + + + const LoginToken_possibleTypes: string[] = ['LoginToken'] + export const isLoginToken = (obj?: { __typename?: any } | null): obj is LoginToken => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLoginToken"') + return LoginToken_possibleTypes.includes(obj.__typename) + } + + + + const CheckUserExist_possibleTypes: string[] = ['CheckUserExist'] + export const isCheckUserExist = (obj?: { __typename?: any } | null): obj is CheckUserExist => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCheckUserExist"') + return CheckUserExist_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceInviteHashValid_possibleTypes: string[] = ['WorkspaceInviteHashValid'] + export const isWorkspaceInviteHashValid = (obj?: { __typename?: any } | null): obj is WorkspaceInviteHashValid => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceInviteHashValid"') + return WorkspaceInviteHashValid_possibleTypes.includes(obj.__typename) + } + + + + const RecordIdentifier_possibleTypes: string[] = ['RecordIdentifier'] + export const isRecordIdentifier = (obj?: { __typename?: any } | null): obj is RecordIdentifier => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRecordIdentifier"') + return RecordIdentifier_possibleTypes.includes(obj.__typename) + } + + + + const NavigationMenuItem_possibleTypes: string[] = ['NavigationMenuItem'] + export const isNavigationMenuItem = (obj?: { __typename?: any } | null): obj is NavigationMenuItem => { + if (!obj?.__typename) throw new Error('__typename is missing in "isNavigationMenuItem"') + return NavigationMenuItem_possibleTypes.includes(obj.__typename) + } + + + + const LogicFunctionExecutionResult_possibleTypes: string[] = ['LogicFunctionExecutionResult'] + export const isLogicFunctionExecutionResult = (obj?: { __typename?: any } | null): obj is LogicFunctionExecutionResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLogicFunctionExecutionResult"') + return LogicFunctionExecutionResult_possibleTypes.includes(obj.__typename) + } + + + + const LogicFunctionLogs_possibleTypes: string[] = ['LogicFunctionLogs'] + export const isLogicFunctionLogs = (obj?: { __typename?: any } | null): obj is LogicFunctionLogs => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLogicFunctionLogs"') + return LogicFunctionLogs_possibleTypes.includes(obj.__typename) + } + + + + const ToolIndexEntry_possibleTypes: string[] = ['ToolIndexEntry'] + export const isToolIndexEntry = (obj?: { __typename?: any } | null): obj is ToolIndexEntry => { + if (!obj?.__typename) throw new Error('__typename is missing in "isToolIndexEntry"') + return ToolIndexEntry_possibleTypes.includes(obj.__typename) + } + + + + const AgentMessagePart_possibleTypes: string[] = ['AgentMessagePart'] + export const isAgentMessagePart = (obj?: { __typename?: any } | null): obj is AgentMessagePart => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentMessagePart"') + return AgentMessagePart_possibleTypes.includes(obj.__typename) + } + + + + const Skill_possibleTypes: string[] = ['Skill'] + export const isSkill = (obj?: { __typename?: any } | null): obj is Skill => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSkill"') + return Skill_possibleTypes.includes(obj.__typename) + } + + + + const ApplicationTokenPair_possibleTypes: string[] = ['ApplicationTokenPair'] + export const isApplicationTokenPair = (obj?: { __typename?: any } | null): obj is ApplicationTokenPair => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationTokenPair"') + return ApplicationTokenPair_possibleTypes.includes(obj.__typename) + } + + + + const FrontComponent_possibleTypes: string[] = ['FrontComponent'] + export const isFrontComponent = (obj?: { __typename?: any } | null): obj is FrontComponent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFrontComponent"') + return FrontComponent_possibleTypes.includes(obj.__typename) + } + + + + const CommandMenuItem_possibleTypes: string[] = ['CommandMenuItem'] + export const isCommandMenuItem = (obj?: { __typename?: any } | null): obj is CommandMenuItem => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCommandMenuItem"') + return CommandMenuItem_possibleTypes.includes(obj.__typename) + } + + + + const AgentChatThread_possibleTypes: string[] = ['AgentChatThread'] + export const isAgentChatThread = (obj?: { __typename?: any } | null): obj is AgentChatThread => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThread"') + return AgentChatThread_possibleTypes.includes(obj.__typename) + } + + + + const AgentMessage_possibleTypes: string[] = ['AgentMessage'] + export const isAgentMessage = (obj?: { __typename?: any } | null): obj is AgentMessage => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentMessage"') + return AgentMessage_possibleTypes.includes(obj.__typename) + } + + + + const AISystemPromptSection_possibleTypes: string[] = ['AISystemPromptSection'] + export const isAISystemPromptSection = (obj?: { __typename?: any } | null): obj is AISystemPromptSection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAISystemPromptSection"') + return AISystemPromptSection_possibleTypes.includes(obj.__typename) + } + + + + const AISystemPromptPreview_possibleTypes: string[] = ['AISystemPromptPreview'] + export const isAISystemPromptPreview = (obj?: { __typename?: any } | null): obj is AISystemPromptPreview => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAISystemPromptPreview"') + return AISystemPromptPreview_possibleTypes.includes(obj.__typename) + } + + + + const AgentChatThreadEdge_possibleTypes: string[] = ['AgentChatThreadEdge'] + export const isAgentChatThreadEdge = (obj?: { __typename?: any } | null): obj is AgentChatThreadEdge => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThreadEdge"') + return AgentChatThreadEdge_possibleTypes.includes(obj.__typename) + } + + + + const AgentChatThreadConnection_possibleTypes: string[] = ['AgentChatThreadConnection'] + export const isAgentChatThreadConnection = (obj?: { __typename?: any } | null): obj is AgentChatThreadConnection => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThreadConnection"') + return AgentChatThreadConnection_possibleTypes.includes(obj.__typename) + } + + + + const AgentTurnEvaluation_possibleTypes: string[] = ['AgentTurnEvaluation'] + export const isAgentTurnEvaluation = (obj?: { __typename?: any } | null): obj is AgentTurnEvaluation => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentTurnEvaluation"') + return AgentTurnEvaluation_possibleTypes.includes(obj.__typename) + } + + + + const AgentTurn_possibleTypes: string[] = ['AgentTurn'] + export const isAgentTurn = (obj?: { __typename?: any } | null): obj is AgentTurn => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAgentTurn"') + return AgentTurn_possibleTypes.includes(obj.__typename) + } + + + + const Webhook_possibleTypes: string[] = ['Webhook'] + export const isWebhook = (obj?: { __typename?: any } | null): obj is Webhook => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWebhook"') + return Webhook_possibleTypes.includes(obj.__typename) + } + + + + const BillingTrialPeriod_possibleTypes: string[] = ['BillingTrialPeriod'] + export const isBillingTrialPeriod = (obj?: { __typename?: any } | null): obj is BillingTrialPeriod => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBillingTrialPeriod"') + return BillingTrialPeriod_possibleTypes.includes(obj.__typename) + } + + + + const NativeModelCapabilities_possibleTypes: string[] = ['NativeModelCapabilities'] + export const isNativeModelCapabilities = (obj?: { __typename?: any } | null): obj is NativeModelCapabilities => { + if (!obj?.__typename) throw new Error('__typename is missing in "isNativeModelCapabilities"') + return NativeModelCapabilities_possibleTypes.includes(obj.__typename) + } + + + + const ClientAIModelConfig_possibleTypes: string[] = ['ClientAIModelConfig'] + export const isClientAIModelConfig = (obj?: { __typename?: any } | null): obj is ClientAIModelConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isClientAIModelConfig"') + return ClientAIModelConfig_possibleTypes.includes(obj.__typename) + } + + + + const AdminAIModelConfig_possibleTypes: string[] = ['AdminAIModelConfig'] + export const isAdminAIModelConfig = (obj?: { __typename?: any } | null): obj is AdminAIModelConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAdminAIModelConfig"') + return AdminAIModelConfig_possibleTypes.includes(obj.__typename) + } + + + + const AdminAIModels_possibleTypes: string[] = ['AdminAIModels'] + export const isAdminAIModels = (obj?: { __typename?: any } | null): obj is AdminAIModels => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAdminAIModels"') + return AdminAIModels_possibleTypes.includes(obj.__typename) + } + + + + const Billing_possibleTypes: string[] = ['Billing'] + export const isBilling = (obj?: { __typename?: any } | null): obj is Billing => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBilling"') + return Billing_possibleTypes.includes(obj.__typename) + } + + + + const Support_possibleTypes: string[] = ['Support'] + export const isSupport = (obj?: { __typename?: any } | null): obj is Support => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSupport"') + return Support_possibleTypes.includes(obj.__typename) + } + + + + const Sentry_possibleTypes: string[] = ['Sentry'] + export const isSentry = (obj?: { __typename?: any } | null): obj is Sentry => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSentry"') + return Sentry_possibleTypes.includes(obj.__typename) + } + + + + const Captcha_possibleTypes: string[] = ['Captcha'] + export const isCaptcha = (obj?: { __typename?: any } | null): obj is Captcha => { + if (!obj?.__typename) throw new Error('__typename is missing in "isCaptcha"') + return Captcha_possibleTypes.includes(obj.__typename) + } + + + + const ApiConfig_possibleTypes: string[] = ['ApiConfig'] + export const isApiConfig = (obj?: { __typename?: any } | null): obj is ApiConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApiConfig"') + return ApiConfig_possibleTypes.includes(obj.__typename) + } + + + + const PublicFeatureFlagMetadata_possibleTypes: string[] = ['PublicFeatureFlagMetadata'] + export const isPublicFeatureFlagMetadata = (obj?: { __typename?: any } | null): obj is PublicFeatureFlagMetadata => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPublicFeatureFlagMetadata"') + return PublicFeatureFlagMetadata_possibleTypes.includes(obj.__typename) + } + + + + const PublicFeatureFlag_possibleTypes: string[] = ['PublicFeatureFlag'] + export const isPublicFeatureFlag = (obj?: { __typename?: any } | null): obj is PublicFeatureFlag => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPublicFeatureFlag"') + return PublicFeatureFlag_possibleTypes.includes(obj.__typename) + } + + + + const ClientConfig_possibleTypes: string[] = ['ClientConfig'] + export const isClientConfig = (obj?: { __typename?: any } | null): obj is ClientConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isClientConfig"') + return ClientConfig_possibleTypes.includes(obj.__typename) + } + + + + const ConfigVariable_possibleTypes: string[] = ['ConfigVariable'] + export const isConfigVariable = (obj?: { __typename?: any } | null): obj is ConfigVariable => { + if (!obj?.__typename) throw new Error('__typename is missing in "isConfigVariable"') + return ConfigVariable_possibleTypes.includes(obj.__typename) + } + + + + const ConfigVariablesGroupData_possibleTypes: string[] = ['ConfigVariablesGroupData'] + export const isConfigVariablesGroupData = (obj?: { __typename?: any } | null): obj is ConfigVariablesGroupData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isConfigVariablesGroupData"') + return ConfigVariablesGroupData_possibleTypes.includes(obj.__typename) + } + + + + const ConfigVariables_possibleTypes: string[] = ['ConfigVariables'] + export const isConfigVariables = (obj?: { __typename?: any } | null): obj is ConfigVariables => { + if (!obj?.__typename) throw new Error('__typename is missing in "isConfigVariables"') + return ConfigVariables_possibleTypes.includes(obj.__typename) + } + + + + const JobOperationResult_possibleTypes: string[] = ['JobOperationResult'] + export const isJobOperationResult = (obj?: { __typename?: any } | null): obj is JobOperationResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isJobOperationResult"') + return JobOperationResult_possibleTypes.includes(obj.__typename) + } + + + + const DeleteJobsResponse_possibleTypes: string[] = ['DeleteJobsResponse'] + export const isDeleteJobsResponse = (obj?: { __typename?: any } | null): obj is DeleteJobsResponse => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDeleteJobsResponse"') + return DeleteJobsResponse_possibleTypes.includes(obj.__typename) + } + + + + const QueueJob_possibleTypes: string[] = ['QueueJob'] + export const isQueueJob = (obj?: { __typename?: any } | null): obj is QueueJob => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueJob"') + return QueueJob_possibleTypes.includes(obj.__typename) + } + + + + const QueueRetentionConfig_possibleTypes: string[] = ['QueueRetentionConfig'] + export const isQueueRetentionConfig = (obj?: { __typename?: any } | null): obj is QueueRetentionConfig => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueRetentionConfig"') + return QueueRetentionConfig_possibleTypes.includes(obj.__typename) + } + + + + const QueueJobsResponse_possibleTypes: string[] = ['QueueJobsResponse'] + export const isQueueJobsResponse = (obj?: { __typename?: any } | null): obj is QueueJobsResponse => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueJobsResponse"') + return QueueJobsResponse_possibleTypes.includes(obj.__typename) + } + + + + const RetryJobsResponse_possibleTypes: string[] = ['RetryJobsResponse'] + export const isRetryJobsResponse = (obj?: { __typename?: any } | null): obj is RetryJobsResponse => { + if (!obj?.__typename) throw new Error('__typename is missing in "isRetryJobsResponse"') + return RetryJobsResponse_possibleTypes.includes(obj.__typename) + } + + + + const SystemHealthService_possibleTypes: string[] = ['SystemHealthService'] + export const isSystemHealthService = (obj?: { __typename?: any } | null): obj is SystemHealthService => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSystemHealthService"') + return SystemHealthService_possibleTypes.includes(obj.__typename) + } + + + + const SystemHealth_possibleTypes: string[] = ['SystemHealth'] + export const isSystemHealth = (obj?: { __typename?: any } | null): obj is SystemHealth => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSystemHealth"') + return SystemHealth_possibleTypes.includes(obj.__typename) + } + + + + const UserInfo_possibleTypes: string[] = ['UserInfo'] + export const isUserInfo = (obj?: { __typename?: any } | null): obj is UserInfo => { + if (!obj?.__typename) throw new Error('__typename is missing in "isUserInfo"') + return UserInfo_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceInfo_possibleTypes: string[] = ['WorkspaceInfo'] + export const isWorkspaceInfo = (obj?: { __typename?: any } | null): obj is WorkspaceInfo => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceInfo"') + return WorkspaceInfo_possibleTypes.includes(obj.__typename) + } + + + + const UserLookup_possibleTypes: string[] = ['UserLookup'] + export const isUserLookup = (obj?: { __typename?: any } | null): obj is UserLookup => { + if (!obj?.__typename) throw new Error('__typename is missing in "isUserLookup"') + return UserLookup_possibleTypes.includes(obj.__typename) + } + + + + const VersionInfo_possibleTypes: string[] = ['VersionInfo'] + export const isVersionInfo = (obj?: { __typename?: any } | null): obj is VersionInfo => { + if (!obj?.__typename) throw new Error('__typename is missing in "isVersionInfo"') + return VersionInfo_possibleTypes.includes(obj.__typename) + } + + + + const AdminPanelWorkerQueueHealth_possibleTypes: string[] = ['AdminPanelWorkerQueueHealth'] + export const isAdminPanelWorkerQueueHealth = (obj?: { __typename?: any } | null): obj is AdminPanelWorkerQueueHealth => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAdminPanelWorkerQueueHealth"') + return AdminPanelWorkerQueueHealth_possibleTypes.includes(obj.__typename) + } + + + + const AdminPanelHealthServiceData_possibleTypes: string[] = ['AdminPanelHealthServiceData'] + export const isAdminPanelHealthServiceData = (obj?: { __typename?: any } | null): obj is AdminPanelHealthServiceData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAdminPanelHealthServiceData"') + return AdminPanelHealthServiceData_possibleTypes.includes(obj.__typename) + } + + + + const QueueMetricsDataPoint_possibleTypes: string[] = ['QueueMetricsDataPoint'] + export const isQueueMetricsDataPoint = (obj?: { __typename?: any } | null): obj is QueueMetricsDataPoint => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueMetricsDataPoint"') + return QueueMetricsDataPoint_possibleTypes.includes(obj.__typename) + } + + + + const QueueMetricsSeries_possibleTypes: string[] = ['QueueMetricsSeries'] + export const isQueueMetricsSeries = (obj?: { __typename?: any } | null): obj is QueueMetricsSeries => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueMetricsSeries"') + return QueueMetricsSeries_possibleTypes.includes(obj.__typename) + } + + + + const WorkerQueueMetrics_possibleTypes: string[] = ['WorkerQueueMetrics'] + export const isWorkerQueueMetrics = (obj?: { __typename?: any } | null): obj is WorkerQueueMetrics => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkerQueueMetrics"') + return WorkerQueueMetrics_possibleTypes.includes(obj.__typename) + } + + + + const QueueMetricsData_possibleTypes: string[] = ['QueueMetricsData'] + export const isQueueMetricsData = (obj?: { __typename?: any } | null): obj is QueueMetricsData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQueueMetricsData"') + return QueueMetricsData_possibleTypes.includes(obj.__typename) + } + + + + const Impersonate_possibleTypes: string[] = ['Impersonate'] + export const isImpersonate = (obj?: { __typename?: any } | null): obj is Impersonate => { + if (!obj?.__typename) throw new Error('__typename is missing in "isImpersonate"') + return Impersonate_possibleTypes.includes(obj.__typename) + } + + + + const DevelopmentApplication_possibleTypes: string[] = ['DevelopmentApplication'] + export const isDevelopmentApplication = (obj?: { __typename?: any } | null): obj is DevelopmentApplication => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDevelopmentApplication"') + return DevelopmentApplication_possibleTypes.includes(obj.__typename) + } + + + + const WorkspaceMigration_possibleTypes: string[] = ['WorkspaceMigration'] + export const isWorkspaceMigration = (obj?: { __typename?: any } | null): obj is WorkspaceMigration => { + if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceMigration"') + return WorkspaceMigration_possibleTypes.includes(obj.__typename) + } + + + + const File_possibleTypes: string[] = ['File'] + export const isFile = (obj?: { __typename?: any } | null): obj is File => { + if (!obj?.__typename) throw new Error('__typename is missing in "isFile"') + return File_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppField_possibleTypes: string[] = ['MarketplaceAppField'] + export const isMarketplaceAppField = (obj?: { __typename?: any } | null): obj is MarketplaceAppField => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppField"') + return MarketplaceAppField_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppObject_possibleTypes: string[] = ['MarketplaceAppObject'] + export const isMarketplaceAppObject = (obj?: { __typename?: any } | null): obj is MarketplaceAppObject => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppObject"') + return MarketplaceAppObject_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppLogicFunction_possibleTypes: string[] = ['MarketplaceAppLogicFunction'] + export const isMarketplaceAppLogicFunction = (obj?: { __typename?: any } | null): obj is MarketplaceAppLogicFunction => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppLogicFunction"') + return MarketplaceAppLogicFunction_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppFrontComponent_possibleTypes: string[] = ['MarketplaceAppFrontComponent'] + export const isMarketplaceAppFrontComponent = (obj?: { __typename?: any } | null): obj is MarketplaceAppFrontComponent => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppFrontComponent"') + return MarketplaceAppFrontComponent_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppRoleObjectPermission_possibleTypes: string[] = ['MarketplaceAppRoleObjectPermission'] + export const isMarketplaceAppRoleObjectPermission = (obj?: { __typename?: any } | null): obj is MarketplaceAppRoleObjectPermission => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppRoleObjectPermission"') + return MarketplaceAppRoleObjectPermission_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppRoleFieldPermission_possibleTypes: string[] = ['MarketplaceAppRoleFieldPermission'] + export const isMarketplaceAppRoleFieldPermission = (obj?: { __typename?: any } | null): obj is MarketplaceAppRoleFieldPermission => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppRoleFieldPermission"') + return MarketplaceAppRoleFieldPermission_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceAppDefaultRole_possibleTypes: string[] = ['MarketplaceAppDefaultRole'] + export const isMarketplaceAppDefaultRole = (obj?: { __typename?: any } | null): obj is MarketplaceAppDefaultRole => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppDefaultRole"') + return MarketplaceAppDefaultRole_possibleTypes.includes(obj.__typename) + } + + + + const MarketplaceApp_possibleTypes: string[] = ['MarketplaceApp'] + export const isMarketplaceApp = (obj?: { __typename?: any } | null): obj is MarketplaceApp => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceApp"') + return MarketplaceApp_possibleTypes.includes(obj.__typename) + } + + + + const PublicDomain_possibleTypes: string[] = ['PublicDomain'] + export const isPublicDomain = (obj?: { __typename?: any } | null): obj is PublicDomain => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPublicDomain"') + return PublicDomain_possibleTypes.includes(obj.__typename) + } + + + + const VerificationRecord_possibleTypes: string[] = ['VerificationRecord'] + export const isVerificationRecord = (obj?: { __typename?: any } | null): obj is VerificationRecord => { + if (!obj?.__typename) throw new Error('__typename is missing in "isVerificationRecord"') + return VerificationRecord_possibleTypes.includes(obj.__typename) + } + + + + const EmailingDomain_possibleTypes: string[] = ['EmailingDomain'] + export const isEmailingDomain = (obj?: { __typename?: any } | null): obj is EmailingDomain => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEmailingDomain"') + return EmailingDomain_possibleTypes.includes(obj.__typename) + } + + + + const AutocompleteResult_possibleTypes: string[] = ['AutocompleteResult'] + export const isAutocompleteResult = (obj?: { __typename?: any } | null): obj is AutocompleteResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isAutocompleteResult"') + return AutocompleteResult_possibleTypes.includes(obj.__typename) + } + + + + const Location_possibleTypes: string[] = ['Location'] + export const isLocation = (obj?: { __typename?: any } | null): obj is Location => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLocation"') + return Location_possibleTypes.includes(obj.__typename) + } + + + + const PlaceDetailsResult_possibleTypes: string[] = ['PlaceDetailsResult'] + export const isPlaceDetailsResult = (obj?: { __typename?: any } | null): obj is PlaceDetailsResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPlaceDetailsResult"') + return PlaceDetailsResult_possibleTypes.includes(obj.__typename) + } + + + + const ConnectionParametersOutput_possibleTypes: string[] = ['ConnectionParametersOutput'] + export const isConnectionParametersOutput = (obj?: { __typename?: any } | null): obj is ConnectionParametersOutput => { + if (!obj?.__typename) throw new Error('__typename is missing in "isConnectionParametersOutput"') + return ConnectionParametersOutput_possibleTypes.includes(obj.__typename) + } + + + + const ImapSmtpCaldavConnectionParameters_possibleTypes: string[] = ['ImapSmtpCaldavConnectionParameters'] + export const isImapSmtpCaldavConnectionParameters = (obj?: { __typename?: any } | null): obj is ImapSmtpCaldavConnectionParameters => { + if (!obj?.__typename) throw new Error('__typename is missing in "isImapSmtpCaldavConnectionParameters"') + return ImapSmtpCaldavConnectionParameters_possibleTypes.includes(obj.__typename) + } + + + + const ConnectedImapSmtpCaldavAccount_possibleTypes: string[] = ['ConnectedImapSmtpCaldavAccount'] + export const isConnectedImapSmtpCaldavAccount = (obj?: { __typename?: any } | null): obj is ConnectedImapSmtpCaldavAccount => { + if (!obj?.__typename) throw new Error('__typename is missing in "isConnectedImapSmtpCaldavAccount"') + return ConnectedImapSmtpCaldavAccount_possibleTypes.includes(obj.__typename) + } + + + + const ImapSmtpCaldavConnectionSuccess_possibleTypes: string[] = ['ImapSmtpCaldavConnectionSuccess'] + export const isImapSmtpCaldavConnectionSuccess = (obj?: { __typename?: any } | null): obj is ImapSmtpCaldavConnectionSuccess => { + if (!obj?.__typename) throw new Error('__typename is missing in "isImapSmtpCaldavConnectionSuccess"') + return ImapSmtpCaldavConnectionSuccess_possibleTypes.includes(obj.__typename) + } + + + + const PostgresCredentials_possibleTypes: string[] = ['PostgresCredentials'] + export const isPostgresCredentials = (obj?: { __typename?: any } | null): obj is PostgresCredentials => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPostgresCredentials"') + return PostgresCredentials_possibleTypes.includes(obj.__typename) + } + + + + const ChannelSyncSuccess_possibleTypes: string[] = ['ChannelSyncSuccess'] + export const isChannelSyncSuccess = (obj?: { __typename?: any } | null): obj is ChannelSyncSuccess => { + if (!obj?.__typename) throw new Error('__typename is missing in "isChannelSyncSuccess"') + return ChannelSyncSuccess_possibleTypes.includes(obj.__typename) + } + + + + const BarChartSeries_possibleTypes: string[] = ['BarChartSeries'] + export const isBarChartSeries = (obj?: { __typename?: any } | null): obj is BarChartSeries => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBarChartSeries"') + return BarChartSeries_possibleTypes.includes(obj.__typename) + } + + + + const BarChartData_possibleTypes: string[] = ['BarChartData'] + export const isBarChartData = (obj?: { __typename?: any } | null): obj is BarChartData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isBarChartData"') + return BarChartData_possibleTypes.includes(obj.__typename) + } + + + + const LineChartDataPoint_possibleTypes: string[] = ['LineChartDataPoint'] + export const isLineChartDataPoint = (obj?: { __typename?: any } | null): obj is LineChartDataPoint => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLineChartDataPoint"') + return LineChartDataPoint_possibleTypes.includes(obj.__typename) + } + + + + const LineChartSeries_possibleTypes: string[] = ['LineChartSeries'] + export const isLineChartSeries = (obj?: { __typename?: any } | null): obj is LineChartSeries => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLineChartSeries"') + return LineChartSeries_possibleTypes.includes(obj.__typename) + } + + + + const LineChartData_possibleTypes: string[] = ['LineChartData'] + export const isLineChartData = (obj?: { __typename?: any } | null): obj is LineChartData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isLineChartData"') + return LineChartData_possibleTypes.includes(obj.__typename) + } + + + + const PieChartDataItem_possibleTypes: string[] = ['PieChartDataItem'] + export const isPieChartDataItem = (obj?: { __typename?: any } | null): obj is PieChartDataItem => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPieChartDataItem"') + return PieChartDataItem_possibleTypes.includes(obj.__typename) + } + + + + const PieChartData_possibleTypes: string[] = ['PieChartData'] + export const isPieChartData = (obj?: { __typename?: any } | null): obj is PieChartData => { + if (!obj?.__typename) throw new Error('__typename is missing in "isPieChartData"') + return PieChartData_possibleTypes.includes(obj.__typename) + } + + + + const DuplicatedDashboard_possibleTypes: string[] = ['DuplicatedDashboard'] + export const isDuplicatedDashboard = (obj?: { __typename?: any } | null): obj is DuplicatedDashboard => { + if (!obj?.__typename) throw new Error('__typename is missing in "isDuplicatedDashboard"') + return DuplicatedDashboard_possibleTypes.includes(obj.__typename) + } + + + + const EventLogRecord_possibleTypes: string[] = ['EventLogRecord'] + export const isEventLogRecord = (obj?: { __typename?: any } | null): obj is EventLogRecord => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEventLogRecord"') + return EventLogRecord_possibleTypes.includes(obj.__typename) + } + + + + const EventLogPageInfo_possibleTypes: string[] = ['EventLogPageInfo'] + export const isEventLogPageInfo = (obj?: { __typename?: any } | null): obj is EventLogPageInfo => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEventLogPageInfo"') + return EventLogPageInfo_possibleTypes.includes(obj.__typename) + } + + + + const EventLogQueryResult_possibleTypes: string[] = ['EventLogQueryResult'] + export const isEventLogQueryResult = (obj?: { __typename?: any } | null): obj is EventLogQueryResult => { + if (!obj?.__typename) throw new Error('__typename is missing in "isEventLogQueryResult"') + return EventLogQueryResult_possibleTypes.includes(obj.__typename) + } + + + + const Query_possibleTypes: string[] = ['Query'] + export const isQuery = (obj?: { __typename?: any } | null): obj is Query => { + if (!obj?.__typename) throw new Error('__typename is missing in "isQuery"') + return Query_possibleTypes.includes(obj.__typename) + } + + + + const Mutation_possibleTypes: string[] = ['Mutation'] + export const isMutation = (obj?: { __typename?: any } | null): obj is Mutation => { + if (!obj?.__typename) throw new Error('__typename is missing in "isMutation"') + return Mutation_possibleTypes.includes(obj.__typename) + } + + + + const Subscription_possibleTypes: string[] = ['Subscription'] + export const isSubscription = (obj?: { __typename?: any } | null): obj is Subscription => { + if (!obj?.__typename) throw new Error('__typename is missing in "isSubscription"') + return Subscription_possibleTypes.includes(obj.__typename) + } + + +export const enumApplicationRegistrationSourceType = { + NPM: 'NPM' as const, + TARBALL: 'TARBALL' as const, + LOCAL: 'LOCAL' as const +} + +export const enumRowLevelPermissionPredicateGroupLogicalOperator = { + AND: 'AND' as const, + OR: 'OR' as const +} + +export const enumRowLevelPermissionPredicateOperand = { + IS: 'IS' as const, + IS_NOT_NULL: 'IS_NOT_NULL' as const, + IS_NOT: 'IS_NOT' as const, + LESS_THAN_OR_EQUAL: 'LESS_THAN_OR_EQUAL' as const, + GREATER_THAN_OR_EQUAL: 'GREATER_THAN_OR_EQUAL' as const, + IS_BEFORE: 'IS_BEFORE' as const, + IS_AFTER: 'IS_AFTER' as const, + CONTAINS: 'CONTAINS' as const, + DOES_NOT_CONTAIN: 'DOES_NOT_CONTAIN' as const, + IS_EMPTY: 'IS_EMPTY' as const, + IS_NOT_EMPTY: 'IS_NOT_EMPTY' as const, + IS_RELATIVE: 'IS_RELATIVE' as const, + IS_IN_PAST: 'IS_IN_PAST' as const, + IS_IN_FUTURE: 'IS_IN_FUTURE' as const, + IS_TODAY: 'IS_TODAY' as const, + VECTOR_SEARCH: 'VECTOR_SEARCH' as const +} + +export const enumPermissionFlagType = { + API_KEYS_AND_WEBHOOKS: 'API_KEYS_AND_WEBHOOKS' as const, + WORKSPACE: 'WORKSPACE' as const, + WORKSPACE_MEMBERS: 'WORKSPACE_MEMBERS' as const, + ROLES: 'ROLES' as const, + DATA_MODEL: 'DATA_MODEL' as const, + SECURITY: 'SECURITY' as const, + WORKFLOWS: 'WORKFLOWS' as const, + IMPERSONATE: 'IMPERSONATE' as const, + SSO_BYPASS: 'SSO_BYPASS' as const, + APPLICATIONS: 'APPLICATIONS' as const, + MARKETPLACE_APPS: 'MARKETPLACE_APPS' as const, + LAYOUTS: 'LAYOUTS' as const, + BILLING: 'BILLING' as const, + AI_SETTINGS: 'AI_SETTINGS' as const, + AI: 'AI' as const, + VIEWS: 'VIEWS' as const, + UPLOAD_FILE: 'UPLOAD_FILE' as const, + DOWNLOAD_FILE: 'DOWNLOAD_FILE' as const, + SEND_EMAIL_TOOL: 'SEND_EMAIL_TOOL' as const, + HTTP_REQUEST_TOOL: 'HTTP_REQUEST_TOOL' as const, + CODE_INTERPRETER_TOOL: 'CODE_INTERPRETER_TOOL' as const, + IMPORT_CSV: 'IMPORT_CSV' as const, + EXPORT_CSV: 'EXPORT_CSV' as const, + CONNECTED_ACCOUNTS: 'CONNECTED_ACCOUNTS' as const, + PROFILE_INFORMATION: 'PROFILE_INFORMATION' as const +} + +export const enumWorkspaceMemberDateFormatEnum = { + SYSTEM: 'SYSTEM' as const, + MONTH_FIRST: 'MONTH_FIRST' as const, + DAY_FIRST: 'DAY_FIRST' as const, + YEAR_FIRST: 'YEAR_FIRST' as const +} + +export const enumWorkspaceMemberTimeFormatEnum = { + SYSTEM: 'SYSTEM' as const, + HOUR_12: 'HOUR_12' as const, + HOUR_24: 'HOUR_24' as const +} + +export const enumWorkspaceMemberNumberFormatEnum = { + SYSTEM: 'SYSTEM' as const, + COMMAS_AND_DOT: 'COMMAS_AND_DOT' as const, + SPACES_AND_COMMA: 'SPACES_AND_COMMA' as const, + DOTS_AND_COMMA: 'DOTS_AND_COMMA' as const, + APOSTROPHE_AND_DOT: 'APOSTROPHE_AND_DOT' as const +} + +export const enumFieldMetadataType = { + ACTOR: 'ACTOR' as const, + ADDRESS: 'ADDRESS' as const, + ARRAY: 'ARRAY' as const, + BOOLEAN: 'BOOLEAN' as const, + CURRENCY: 'CURRENCY' as const, + DATE: 'DATE' as const, + DATE_TIME: 'DATE_TIME' as const, + EMAILS: 'EMAILS' as const, + FILES: 'FILES' as const, + FULL_NAME: 'FULL_NAME' as const, + LINKS: 'LINKS' as const, + MORPH_RELATION: 'MORPH_RELATION' as const, + MULTI_SELECT: 'MULTI_SELECT' as const, + NUMBER: 'NUMBER' as const, + NUMERIC: 'NUMERIC' as const, + PHONES: 'PHONES' as const, + POSITION: 'POSITION' as const, + RATING: 'RATING' as const, + RAW_JSON: 'RAW_JSON' as const, + RELATION: 'RELATION' as const, + RICH_TEXT: 'RICH_TEXT' as const, + RICH_TEXT_V2: 'RICH_TEXT_V2' as const, + SELECT: 'SELECT' as const, + TEXT: 'TEXT' as const, + TS_VECTOR: 'TS_VECTOR' as const, + UUID: 'UUID' as const +} + +export const enumIndexType = { + BTREE: 'BTREE' as const, + GIN: 'GIN' as const +} + +export const enumAggregateOperations = { + MIN: 'MIN' as const, + MAX: 'MAX' as const, + AVG: 'AVG' as const, + SUM: 'SUM' as const, + COUNT: 'COUNT' as const, + COUNT_UNIQUE_VALUES: 'COUNT_UNIQUE_VALUES' as const, + COUNT_EMPTY: 'COUNT_EMPTY' as const, + COUNT_NOT_EMPTY: 'COUNT_NOT_EMPTY' as const, + COUNT_TRUE: 'COUNT_TRUE' as const, + COUNT_FALSE: 'COUNT_FALSE' as const, + PERCENTAGE_EMPTY: 'PERCENTAGE_EMPTY' as const, + PERCENTAGE_NOT_EMPTY: 'PERCENTAGE_NOT_EMPTY' as const +} + +export const enumViewFilterGroupLogicalOperator = { + AND: 'AND' as const, + OR: 'OR' as const, + NOT: 'NOT' as const +} + +export const enumViewFilterOperand = { + IS: 'IS' as const, + IS_NOT_NULL: 'IS_NOT_NULL' as const, + IS_NOT: 'IS_NOT' as const, + LESS_THAN_OR_EQUAL: 'LESS_THAN_OR_EQUAL' as const, + GREATER_THAN_OR_EQUAL: 'GREATER_THAN_OR_EQUAL' as const, + IS_BEFORE: 'IS_BEFORE' as const, + IS_AFTER: 'IS_AFTER' as const, + CONTAINS: 'CONTAINS' as const, + DOES_NOT_CONTAIN: 'DOES_NOT_CONTAIN' as const, + IS_EMPTY: 'IS_EMPTY' as const, + IS_NOT_EMPTY: 'IS_NOT_EMPTY' as const, + IS_RELATIVE: 'IS_RELATIVE' as const, + IS_IN_PAST: 'IS_IN_PAST' as const, + IS_IN_FUTURE: 'IS_IN_FUTURE' as const, + IS_TODAY: 'IS_TODAY' as const, + VECTOR_SEARCH: 'VECTOR_SEARCH' as const +} + +export const enumViewSortDirection = { + ASC: 'ASC' as const, + DESC: 'DESC' as const +} + +export const enumViewType = { + TABLE: 'TABLE' as const, + KANBAN: 'KANBAN' as const, + CALENDAR: 'CALENDAR' as const, + FIELDS_WIDGET: 'FIELDS_WIDGET' as const +} + +export const enumViewKey = { + INDEX: 'INDEX' as const +} + +export const enumViewOpenRecordIn = { + SIDE_PANEL: 'SIDE_PANEL' as const, + RECORD_PAGE: 'RECORD_PAGE' as const +} + +export const enumViewCalendarLayout = { + DAY: 'DAY' as const, + WEEK: 'WEEK' as const, + MONTH: 'MONTH' as const +} + +export const enumViewVisibility = { + WORKSPACE: 'WORKSPACE' as const, + UNLISTED: 'UNLISTED' as const +} + +export const enumWorkspaceActivationStatus = { + ONGOING_CREATION: 'ONGOING_CREATION' as const, + PENDING_CREATION: 'PENDING_CREATION' as const, + ACTIVE: 'ACTIVE' as const, + INACTIVE: 'INACTIVE' as const, + SUSPENDED: 'SUSPENDED' as const +} + +export const enumOnboardingStatus = { + PLAN_REQUIRED: 'PLAN_REQUIRED' as const, + WORKSPACE_ACTIVATION: 'WORKSPACE_ACTIVATION' as const, + PROFILE_CREATION: 'PROFILE_CREATION' as const, + SYNC_EMAIL: 'SYNC_EMAIL' as const, + INVITE_TEAM: 'INVITE_TEAM' as const, + BOOK_ONBOARDING: 'BOOK_ONBOARDING' as const, + COMPLETED: 'COMPLETED' as const +} + +export const enumWidgetType = { + VIEW: 'VIEW' as const, + IFRAME: 'IFRAME' as const, + FIELD: 'FIELD' as const, + FIELDS: 'FIELDS' as const, + GRAPH: 'GRAPH' as const, + STANDALONE_RICH_TEXT: 'STANDALONE_RICH_TEXT' as const, + TIMELINE: 'TIMELINE' as const, + TASKS: 'TASKS' as const, + NOTES: 'NOTES' as const, + FILES: 'FILES' as const, + EMAILS: 'EMAILS' as const, + CALENDAR: 'CALENDAR' as const, + FIELD_RICH_TEXT: 'FIELD_RICH_TEXT' as const, + WORKFLOW: 'WORKFLOW' as const, + WORKFLOW_VERSION: 'WORKFLOW_VERSION' as const, + WORKFLOW_RUN: 'WORKFLOW_RUN' as const, + FRONT_COMPONENT: 'FRONT_COMPONENT' as const +} + +export const enumPageLayoutTabLayoutMode = { + GRID: 'GRID' as const, + VERTICAL_LIST: 'VERTICAL_LIST' as const, + CANVAS: 'CANVAS' as const +} + +export const enumWidgetConfigurationType = { + AGGREGATE_CHART: 'AGGREGATE_CHART' as const, + GAUGE_CHART: 'GAUGE_CHART' as const, + PIE_CHART: 'PIE_CHART' as const, + BAR_CHART: 'BAR_CHART' as const, + LINE_CHART: 'LINE_CHART' as const, + IFRAME: 'IFRAME' as const, + STANDALONE_RICH_TEXT: 'STANDALONE_RICH_TEXT' as const, + VIEW: 'VIEW' as const, + FIELD: 'FIELD' as const, + FIELDS: 'FIELDS' as const, + TIMELINE: 'TIMELINE' as const, + TASKS: 'TASKS' as const, + NOTES: 'NOTES' as const, + FILES: 'FILES' as const, + EMAILS: 'EMAILS' as const, + CALENDAR: 'CALENDAR' as const, + FIELD_RICH_TEXT: 'FIELD_RICH_TEXT' as const, + WORKFLOW: 'WORKFLOW' as const, + WORKFLOW_VERSION: 'WORKFLOW_VERSION' as const, + WORKFLOW_RUN: 'WORKFLOW_RUN' as const, + FRONT_COMPONENT: 'FRONT_COMPONENT' as const +} + +export const enumObjectRecordGroupByDateGranularity = { + DAY: 'DAY' as const, + MONTH: 'MONTH' as const, + QUARTER: 'QUARTER' as const, + YEAR: 'YEAR' as const, + WEEK: 'WEEK' as const, + DAY_OF_THE_WEEK: 'DAY_OF_THE_WEEK' as const, + MONTH_OF_THE_YEAR: 'MONTH_OF_THE_YEAR' as const, + QUARTER_OF_THE_YEAR: 'QUARTER_OF_THE_YEAR' as const, + NONE: 'NONE' as const +} + +export const enumGraphOrderBy = { + FIELD_ASC: 'FIELD_ASC' as const, + FIELD_DESC: 'FIELD_DESC' as const, + FIELD_POSITION_ASC: 'FIELD_POSITION_ASC' as const, + FIELD_POSITION_DESC: 'FIELD_POSITION_DESC' as const, + VALUE_ASC: 'VALUE_ASC' as const, + VALUE_DESC: 'VALUE_DESC' as const, + MANUAL: 'MANUAL' as const +} + +export const enumAxisNameDisplay = { + NONE: 'NONE' as const, + X: 'X' as const, + Y: 'Y' as const, + BOTH: 'BOTH' as const +} + +export const enumBarChartGroupMode = { + STACKED: 'STACKED' as const, + GROUPED: 'GROUPED' as const +} + +export const enumBarChartLayout = { + VERTICAL: 'VERTICAL' as const, + HORIZONTAL: 'HORIZONTAL' as const +} + +export const enumPageLayoutType = { + RECORD_INDEX: 'RECORD_INDEX' as const, + RECORD_PAGE: 'RECORD_PAGE' as const, + DASHBOARD: 'DASHBOARD' as const +} + +export const enumMetadataEventAction = { + CREATED: 'CREATED' as const, + UPDATED: 'UPDATED' as const, + DELETED: 'DELETED' as const +} + +export const enumDatabaseEventAction = { + CREATED: 'CREATED' as const, + UPDATED: 'UPDATED' as const, + DELETED: 'DELETED' as const, + DESTROYED: 'DESTROYED' as const, + RESTORED: 'RESTORED' as const, + UPSERTED: 'UPSERTED' as const +} + +export const enumBillingPlanKey = { + PRO: 'PRO' as const, + ENTERPRISE: 'ENTERPRISE' as const +} + +export const enumBillingUsageType = { + METERED: 'METERED' as const, + LICENSED: 'LICENSED' as const +} + +export const enumBillingProductKey = { + BASE_PRODUCT: 'BASE_PRODUCT' as const, + WORKFLOW_NODE_EXECUTION: 'WORKFLOW_NODE_EXECUTION' as const +} + +export const enumSubscriptionInterval = { + Month: 'Month' as const, + Year: 'Year' as const +} + +export const enumSubscriptionStatus = { + Active: 'Active' as const, + Canceled: 'Canceled' as const, + Incomplete: 'Incomplete' as const, + IncompleteExpired: 'IncompleteExpired' as const, + PastDue: 'PastDue' as const, + Paused: 'Paused' as const, + Trialing: 'Trialing' as const, + Unpaid: 'Unpaid' as const +} + +export const enumIdentityProviderType = { + OIDC: 'OIDC' as const, + SAML: 'SAML' as const +} + +export const enumSsoIdentityProviderStatus = { + Active: 'Active' as const, + Inactive: 'Inactive' as const, + Error: 'Error' as const +} + +export const enumBillingEntitlementKey = { + SSO: 'SSO' as const, + CUSTOM_DOMAIN: 'CUSTOM_DOMAIN' as const, + RLS: 'RLS' as const, + AUDIT_LOGS: 'AUDIT_LOGS' as const +} + +export const enumFeatureFlagKey = { + IS_UNIQUE_INDEXES_ENABLED: 'IS_UNIQUE_INDEXES_ENABLED' as const, + IS_JSON_FILTER_ENABLED: 'IS_JSON_FILTER_ENABLED' as const, + IS_AI_ENABLED: 'IS_AI_ENABLED' as const, + IS_APPLICATION_ENABLED: 'IS_APPLICATION_ENABLED' as const, + IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED: 'IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED' as const, + IS_MARKETPLACE_ENABLED: 'IS_MARKETPLACE_ENABLED' as const, + IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED: 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' as const, + IS_PUBLIC_DOMAIN_ENABLED: 'IS_PUBLIC_DOMAIN_ENABLED' as const, + IS_EMAILING_DOMAIN_ENABLED: 'IS_EMAILING_DOMAIN_ENABLED' as const, + IS_DASHBOARD_V2_ENABLED: 'IS_DASHBOARD_V2_ENABLED' as const, + IS_ATTACHMENT_MIGRATED: 'IS_ATTACHMENT_MIGRATED' as const, + IS_NOTE_TARGET_MIGRATED: 'IS_NOTE_TARGET_MIGRATED' as const, + IS_TASK_TARGET_MIGRATED: 'IS_TASK_TARGET_MIGRATED' as const, + IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED: 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED' as const, + IS_JUNCTION_RELATIONS_ENABLED: 'IS_JUNCTION_RELATIONS_ENABLED' as const, + IS_COMMAND_MENU_ITEM_ENABLED: 'IS_COMMAND_MENU_ITEM_ENABLED' as const, + IS_NAVIGATION_MENU_ITEM_ENABLED: 'IS_NAVIGATION_MENU_ITEM_ENABLED' as const, + IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED: 'IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED' as const, + IS_NAVIGATION_MENU_ITEM_EDITING_ENABLED: 'IS_NAVIGATION_MENU_ITEM_EDITING_ENABLED' as const, + IS_DRAFT_EMAIL_ENABLED: 'IS_DRAFT_EMAIL_ENABLED' as const +} + +export const enumRelationType = { + ONE_TO_MANY: 'ONE_TO_MANY' as const, + MANY_TO_ONE: 'MANY_TO_ONE' as const +} + +export const enumLogicFunctionExecutionStatus = { + IDLE: 'IDLE' as const, + SUCCESS: 'SUCCESS' as const, + ERROR: 'ERROR' as const +} + +export const enumCommandMenuItemAvailabilityType = { + GLOBAL: 'GLOBAL' as const, + RECORD_SELECTION: 'RECORD_SELECTION' as const +} + +export const enumModelFamily = { + OPENAI: 'OPENAI' as const, + ANTHROPIC: 'ANTHROPIC' as const, + GOOGLE: 'GOOGLE' as const, + MISTRAL: 'MISTRAL' as const, + XAI: 'XAI' as const +} + +export const enumInferenceProvider = { + NONE: 'NONE' as const, + OPENAI: 'OPENAI' as const, + ANTHROPIC: 'ANTHROPIC' as const, + BEDROCK: 'BEDROCK' as const, + GOOGLE: 'GOOGLE' as const, + MISTRAL: 'MISTRAL' as const, + OPENAI_COMPATIBLE: 'OPENAI_COMPATIBLE' as const, + XAI: 'XAI' as const, + GROQ: 'GROQ' as const +} + +export const enumSupportDriver = { + NONE: 'NONE' as const, + FRONT: 'FRONT' as const +} + +export const enumCaptchaDriverType = { + GOOGLE_RECAPTCHA: 'GOOGLE_RECAPTCHA' as const, + TURNSTILE: 'TURNSTILE' as const +} + +export const enumConfigSource = { + ENVIRONMENT: 'ENVIRONMENT' as const, + DATABASE: 'DATABASE' as const, + DEFAULT: 'DEFAULT' as const +} + +export const enumConfigVariableType = { + BOOLEAN: 'BOOLEAN' as const, + NUMBER: 'NUMBER' as const, + ARRAY: 'ARRAY' as const, + STRING: 'STRING' as const, + ENUM: 'ENUM' as const +} + +export const enumConfigVariablesGroup = { + SERVER_CONFIG: 'SERVER_CONFIG' as const, + RATE_LIMITING: 'RATE_LIMITING' as const, + STORAGE_CONFIG: 'STORAGE_CONFIG' as const, + GOOGLE_AUTH: 'GOOGLE_AUTH' as const, + MICROSOFT_AUTH: 'MICROSOFT_AUTH' as const, + EMAIL_SETTINGS: 'EMAIL_SETTINGS' as const, + LOGGING: 'LOGGING' as const, + METERING: 'METERING' as const, + EXCEPTION_HANDLER: 'EXCEPTION_HANDLER' as const, + OTHER: 'OTHER' as const, + BILLING_CONFIG: 'BILLING_CONFIG' as const, + CAPTCHA_CONFIG: 'CAPTCHA_CONFIG' as const, + CLOUDFLARE_CONFIG: 'CLOUDFLARE_CONFIG' as const, + LLM: 'LLM' as const, + LOGIC_FUNCTION_CONFIG: 'LOGIC_FUNCTION_CONFIG' as const, + CODE_INTERPRETER_CONFIG: 'CODE_INTERPRETER_CONFIG' as const, + SSL: 'SSL' as const, + SUPPORT_CHAT_CONFIG: 'SUPPORT_CHAT_CONFIG' as const, + ANALYTICS_CONFIG: 'ANALYTICS_CONFIG' as const, + TOKENS_DURATION: 'TOKENS_DURATION' as const, + TWO_FACTOR_AUTHENTICATION: 'TWO_FACTOR_AUTHENTICATION' as const, + AWS_SES_SETTINGS: 'AWS_SES_SETTINGS' as const +} + +export const enumJobState = { + COMPLETED: 'COMPLETED' as const, + FAILED: 'FAILED' as const, + ACTIVE: 'ACTIVE' as const, + WAITING: 'WAITING' as const, + DELAYED: 'DELAYED' as const, + PRIORITIZED: 'PRIORITIZED' as const, + WAITING_CHILDREN: 'WAITING_CHILDREN' as const +} + +export const enumHealthIndicatorId = { + database: 'database' as const, + redis: 'redis' as const, + worker: 'worker' as const, + connectedAccount: 'connectedAccount' as const, + app: 'app' as const +} + +export const enumAdminPanelHealthServiceStatus = { + OPERATIONAL: 'OPERATIONAL' as const, + OUTAGE: 'OUTAGE' as const +} + +export const enumQueueMetricsTimeRange = { + SevenDays: 'SevenDays' as const, + OneDay: 'OneDay' as const, + TwelveHours: 'TwelveHours' as const, + FourHours: 'FourHours' as const, + OneHour: 'OneHour' as const +} + +export const enumEmailingDomainDriver = { + AWS_SES: 'AWS_SES' as const +} + +export const enumEmailingDomainStatus = { + PENDING: 'PENDING' as const, + VERIFIED: 'VERIFIED' as const, + FAILED: 'FAILED' as const, + TEMPORARY_FAILURE: 'TEMPORARY_FAILURE' as const +} + +export const enumAgentChatThreadSortFields = { + id: 'id' as const, + updatedAt: 'updatedAt' as const +} + +export const enumSortDirection = { + ASC: 'ASC' as const, + DESC: 'DESC' as const +} + +export const enumSortNulls = { + NULLS_FIRST: 'NULLS_FIRST' as const, + NULLS_LAST: 'NULLS_LAST' as const +} + +export const enumEventLogTable = { + WORKSPACE_EVENT: 'WORKSPACE_EVENT' as const, + PAGEVIEW: 'PAGEVIEW' as const, + OBJECT_EVENT: 'OBJECT_EVENT' as const +} + +export const enumAnalyticsType = { + PAGEVIEW: 'PAGEVIEW' as const, + TRACK: 'TRACK' as const +} + +export const enumWorkspaceMigrationActionType = { + delete: 'delete' as const, + create: 'create' as const, + update: 'update' as const +} + +export const enumAllMetadataName = { + fieldMetadata: 'fieldMetadata' as const, + objectMetadata: 'objectMetadata' as const, + view: 'view' as const, + viewField: 'viewField' as const, + viewFieldGroup: 'viewFieldGroup' as const, + viewGroup: 'viewGroup' as const, + viewSort: 'viewSort' as const, + rowLevelPermissionPredicate: 'rowLevelPermissionPredicate' as const, + rowLevelPermissionPredicateGroup: 'rowLevelPermissionPredicateGroup' as const, + viewFilterGroup: 'viewFilterGroup' as const, + index: 'index' as const, + logicFunction: 'logicFunction' as const, + viewFilter: 'viewFilter' as const, + role: 'role' as const, + roleTarget: 'roleTarget' as const, + agent: 'agent' as const, + skill: 'skill' as const, + pageLayout: 'pageLayout' as const, + pageLayoutWidget: 'pageLayoutWidget' as const, + pageLayoutTab: 'pageLayoutTab' as const, + commandMenuItem: 'commandMenuItem' as const, + navigationMenuItem: 'navigationMenuItem' as const, + frontComponent: 'frontComponent' as const, + webhook: 'webhook' as const +} + +export const enumFileFolder = { + ProfilePicture: 'ProfilePicture' as const, + WorkspaceLogo: 'WorkspaceLogo' as const, + Attachment: 'Attachment' as const, + PersonPicture: 'PersonPicture' as const, + CorePicture: 'CorePicture' as const, + File: 'File' as const, + AgentChat: 'AgentChat' as const, + BuiltLogicFunction: 'BuiltLogicFunction' as const, + BuiltFrontComponent: 'BuiltFrontComponent' as const, + PublicAsset: 'PublicAsset' as const, + Source: 'Source' as const, + FilesField: 'FilesField' as const, + Dependencies: 'Dependencies' as const, + Workflow: 'Workflow' as const, + AppTarball: 'AppTarball' as const +} diff --git a/packages/twenty-sdk/src/clients/generated/metadata/types.ts b/packages/twenty-sdk/src/clients/generated/metadata/types.ts new file mode 100644 index 0000000000..e436816fc7 --- /dev/null +++ b/packages/twenty-sdk/src/clients/generated/metadata/types.ts @@ -0,0 +1,10643 @@ +export default { + "scalars": [ + 1, + 3, + 4, + 6, + 8, + 11, + 12, + 14, + 15, + 18, + 21, + 22, + 23, + 24, + 35, + 38, + 40, + 51, + 53, + 55, + 58, + 61, + 62, + 63, + 64, + 65, + 67, + 70, + 71, + 77, + 80, + 85, + 88, + 89, + 91, + 95, + 96, + 113, + 116, + 118, + 127, + 128, + 129, + 131, + 139, + 153, + 154, + 159, + 163, + 182, + 217, + 225, + 238, + 239, + 244, + 247, + 253, + 254, + 256, + 261, + 266, + 267, + 279, + 295, + 296, + 319, + 326, + 327, + 328, + 330, + 339, + 398, + 449, + 450, + 451 + ], + "types": { + "BillingProductDTO": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "images": [ + 1 + ], + "metadata": [ + 126 + ], + "on_BillingLicensedProduct": [ + 135 + ], + "on_BillingMeteredProduct": [ + 136 + ], + "__typename": [ + 1 + ] + }, + "String": {}, + "ApiKey": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "expiresAt": [ + 4 + ], + "revokedAt": [ + 4 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "role": [ + 29 + ], + "__typename": [ + 1 + ] + }, + "UUID": {}, + "DateTime": {}, + "ApplicationRegistrationVariable": { + "id": [ + 3 + ], + "key": [ + 1 + ], + "description": [ + 1 + ], + "isSecret": [ + 6 + ], + "isRequired": [ + 6 + ], + "isFilled": [ + 6 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "Boolean": {}, + "ApplicationRegistration": { + "id": [ + 3 + ], + "universalIdentifier": [ + 1 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "logoUrl": [ + 1 + ], + "author": [ + 1 + ], + "oAuthClientId": [ + 1 + ], + "oAuthRedirectUris": [ + 1 + ], + "oAuthScopes": [ + 1 + ], + "ownerWorkspaceId": [ + 3 + ], + "sourceType": [ + 8 + ], + "sourcePackage": [ + 1 + ], + "latestAvailableVersion": [ + 1 + ], + "websiteUrl": [ + 1 + ], + "termsUrl": [ + 1 + ], + "isListed": [ + 6 + ], + "isFeatured": [ + 6 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "ApplicationRegistrationSourceType": {}, + "TwoFactorAuthenticationMethodSummary": { + "twoFactorAuthenticationMethodId": [ + 3 + ], + "status": [ + 1 + ], + "strategy": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "RowLevelPermissionPredicateGroup": { + "id": [ + 1 + ], + "parentRowLevelPermissionPredicateGroupId": [ + 1 + ], + "logicalOperator": [ + 12 + ], + "positionInRowLevelPermissionPredicateGroup": [ + 11 + ], + "roleId": [ + 1 + ], + "objectMetadataId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "Float": {}, + "RowLevelPermissionPredicateGroupLogicalOperator": {}, + "RowLevelPermissionPredicate": { + "id": [ + 1 + ], + "fieldMetadataId": [ + 1 + ], + "objectMetadataId": [ + 1 + ], + "operand": [ + 14 + ], + "subFieldName": [ + 1 + ], + "workspaceMemberFieldMetadataId": [ + 1 + ], + "workspaceMemberSubFieldName": [ + 1 + ], + "rowLevelPermissionPredicateGroupId": [ + 1 + ], + "positionInRowLevelPermissionPredicateGroup": [ + 11 + ], + "roleId": [ + 1 + ], + "value": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "RowLevelPermissionPredicateOperand": {}, + "JSON": {}, + "ObjectPermission": { + "objectMetadataId": [ + 3 + ], + "canReadObjectRecords": [ + 6 + ], + "canUpdateObjectRecords": [ + 6 + ], + "canSoftDeleteObjectRecords": [ + 6 + ], + "canDestroyObjectRecords": [ + 6 + ], + "restrictedFields": [ + 15 + ], + "rowLevelPermissionPredicates": [ + 13 + ], + "rowLevelPermissionPredicateGroups": [ + 10 + ], + "__typename": [ + 1 + ] + }, + "UserWorkspace": { + "id": [ + 3 + ], + "user": [ + 69 + ], + "userId": [ + 3 + ], + "locale": [ + 1 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "permissionFlags": [ + 18 + ], + "objectPermissions": [ + 16 + ], + "objectsPermissions": [ + 16 + ], + "twoFactorAuthenticationMethodSummary": [ + 9 + ], + "__typename": [ + 1 + ] + }, + "PermissionFlagType": {}, + "FullName": { + "firstName": [ + 1 + ], + "lastName": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceMember": { + "id": [ + 3 + ], + "name": [ + 19 + ], + "userEmail": [ + 1 + ], + "colorScheme": [ + 1 + ], + "avatarUrl": [ + 1 + ], + "locale": [ + 1 + ], + "calendarStartDay": [ + 21 + ], + "timeZone": [ + 1 + ], + "dateFormat": [ + 22 + ], + "timeFormat": [ + 23 + ], + "roles": [ + 29 + ], + "userWorkspaceId": [ + 3 + ], + "numberFormat": [ + 24 + ], + "__typename": [ + 1 + ] + }, + "Int": {}, + "WorkspaceMemberDateFormatEnum": {}, + "WorkspaceMemberTimeFormatEnum": {}, + "WorkspaceMemberNumberFormatEnum": {}, + "Agent": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "prompt": [ + 1 + ], + "modelId": [ + 1 + ], + "responseFormat": [ + 15 + ], + "roleId": [ + 3 + ], + "isCustom": [ + 6 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "modelConfiguration": [ + 15 + ], + "evaluationInputs": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "FieldPermission": { + "id": [ + 3 + ], + "objectMetadataId": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "roleId": [ + 3 + ], + "canReadFieldValue": [ + 6 + ], + "canUpdateFieldValue": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "PermissionFlag": { + "id": [ + 3 + ], + "roleId": [ + 3 + ], + "flag": [ + 18 + ], + "__typename": [ + 1 + ] + }, + "ApiKeyForRole": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "expiresAt": [ + 4 + ], + "revokedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "Role": { + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "isEditable": [ + 6 + ], + "canBeAssignedToUsers": [ + 6 + ], + "canBeAssignedToAgents": [ + 6 + ], + "canBeAssignedToApiKeys": [ + 6 + ], + "workspaceMembers": [ + 20 + ], + "agents": [ + 25 + ], + "apiKeys": [ + 28 + ], + "canUpdateAllSettings": [ + 6 + ], + "canAccessAllTools": [ + 6 + ], + "canReadAllObjectRecords": [ + 6 + ], + "canUpdateAllObjectRecords": [ + 6 + ], + "canSoftDeleteAllObjectRecords": [ + 6 + ], + "canDestroyAllObjectRecords": [ + 6 + ], + "permissionFlags": [ + 27 + ], + "objectPermissions": [ + 16 + ], + "fieldPermissions": [ + 26 + ], + "rowLevelPermissionPredicates": [ + 13 + ], + "rowLevelPermissionPredicateGroups": [ + 10 + ], + "__typename": [ + 1 + ] + }, + "ApplicationRegistrationSummary": { + "id": [ + 3 + ], + "latestAvailableVersion": [ + 1 + ], + "sourceType": [ + 8 + ], + "__typename": [ + 1 + ] + }, + "ApplicationVariable": { + "id": [ + 3 + ], + "key": [ + 1 + ], + "value": [ + 1 + ], + "description": [ + 1 + ], + "isSecret": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "LogicFunction": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "runtime": [ + 1 + ], + "timeoutSeconds": [ + 11 + ], + "sourceHandlerPath": [ + 1 + ], + "handlerName": [ + 1 + ], + "toolInputSchema": [ + 15 + ], + "isTool": [ + 6 + ], + "cronTriggerSettings": [ + 15 + ], + "databaseEventTriggerSettings": [ + 15 + ], + "httpRouteTriggerSettings": [ + 15 + ], + "applicationId": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "StandardOverrides": { + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "translations": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "Field": { + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "type": [ + 35 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "standardOverrides": [ + 33 + ], + "isCustom": [ + 6 + ], + "isActive": [ + 6 + ], + "isSystem": [ + 6 + ], + "isUIReadOnly": [ + 6 + ], + "isNullable": [ + 6 + ], + "isUnique": [ + 6 + ], + "defaultValue": [ + 15 + ], + "options": [ + 15 + ], + "settings": [ + 15 + ], + "isLabelSyncedWithName": [ + 6 + ], + "morphId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "applicationId": [ + 3 + ], + "relation": [ + 181 + ], + "morphRelations": [ + 181 + ], + "object": [ + 46 + ], + "__typename": [ + 1 + ] + }, + "FieldMetadataType": {}, + "IndexField": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "order": [ + 11 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "Index": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "isCustom": [ + 6 + ], + "isUnique": [ + 6 + ], + "indexWhereClause": [ + 1 + ], + "indexType": [ + 38 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "indexFieldMetadataList": [ + 36 + ], + "objectMetadata": [ + 174, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 41, + "ObjectFilter!" + ] + } + ], + "indexFieldMetadatas": [ + 172, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 44, + "IndexFieldFilter!" + ] + } + ], + "__typename": [ + 1 + ] + }, + "IndexType": {}, + "CursorPaging": { + "before": [ + 40 + ], + "after": [ + 40 + ], + "first": [ + 21 + ], + "last": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "ConnectionCursor": {}, + "ObjectFilter": { + "and": [ + 41 + ], + "or": [ + 41 + ], + "id": [ + 42 + ], + "universalIdentifier": [ + 42 + ], + "isCustom": [ + 43 + ], + "isRemote": [ + 43 + ], + "isActive": [ + 43 + ], + "isSystem": [ + 43 + ], + "isUIReadOnly": [ + 43 + ], + "isSearchable": [ + 43 + ], + "__typename": [ + 1 + ] + }, + "UUIDFilterComparison": { + "is": [ + 6 + ], + "isNot": [ + 6 + ], + "eq": [ + 3 + ], + "neq": [ + 3 + ], + "gt": [ + 3 + ], + "gte": [ + 3 + ], + "lt": [ + 3 + ], + "lte": [ + 3 + ], + "like": [ + 3 + ], + "notLike": [ + 3 + ], + "iLike": [ + 3 + ], + "notILike": [ + 3 + ], + "in": [ + 3 + ], + "notIn": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "BooleanFieldComparison": { + "is": [ + 6 + ], + "isNot": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "IndexFieldFilter": { + "and": [ + 44 + ], + "or": [ + 44 + ], + "id": [ + 42 + ], + "fieldMetadataId": [ + 42 + ], + "__typename": [ + 1 + ] + }, + "ObjectStandardOverrides": { + "labelSingular": [ + 1 + ], + "labelPlural": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "translations": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "Object": { + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "nameSingular": [ + 1 + ], + "namePlural": [ + 1 + ], + "labelSingular": [ + 1 + ], + "labelPlural": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "standardOverrides": [ + 45 + ], + "shortcut": [ + 1 + ], + "isCustom": [ + 6 + ], + "isRemote": [ + 6 + ], + "isActive": [ + 6 + ], + "isSystem": [ + 6 + ], + "isUIReadOnly": [ + 6 + ], + "isSearchable": [ + 6 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "labelIdentifierFieldMetadataId": [ + 3 + ], + "imageIdentifierFieldMetadataId": [ + 3 + ], + "isLabelSyncedWithName": [ + 6 + ], + "duplicateCriteria": [ + 1 + ], + "fieldsList": [ + 34 + ], + "indexMetadataList": [ + 37 + ], + "fields": [ + 179, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 47, + "FieldFilter!" + ] + } + ], + "indexMetadatas": [ + 177, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 48, + "IndexFilter!" + ] + } + ], + "__typename": [ + 1 + ] + }, + "FieldFilter": { + "and": [ + 47 + ], + "or": [ + 47 + ], + "id": [ + 42 + ], + "universalIdentifier": [ + 42 + ], + "isCustom": [ + 43 + ], + "isActive": [ + 43 + ], + "isSystem": [ + 43 + ], + "isUIReadOnly": [ + 43 + ], + "__typename": [ + 1 + ] + }, + "IndexFilter": { + "and": [ + 48 + ], + "or": [ + 48 + ], + "id": [ + 42 + ], + "isCustom": [ + 43 + ], + "__typename": [ + 1 + ] + }, + "Application": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "version": [ + 1 + ], + "universalIdentifier": [ + 1 + ], + "packageJsonChecksum": [ + 1 + ], + "packageJsonFileId": [ + 3 + ], + "yarnLockChecksum": [ + 1 + ], + "yarnLockFileId": [ + 3 + ], + "availablePackages": [ + 15 + ], + "applicationRegistrationId": [ + 3 + ], + "canBeUninstalled": [ + 6 + ], + "defaultRoleId": [ + 1 + ], + "settingsCustomTabFrontComponentId": [ + 3 + ], + "defaultLogicFunctionRole": [ + 29 + ], + "agents": [ + 25 + ], + "logicFunctions": [ + 32 + ], + "objects": [ + 46 + ], + "applicationVariables": [ + 31 + ], + "applicationRegistration": [ + 30 + ], + "__typename": [ + 1 + ] + }, + "CoreViewField": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "isVisible": [ + 6 + ], + "size": [ + 11 + ], + "position": [ + 11 + ], + "aggregateOperation": [ + 51 + ], + "viewId": [ + 3 + ], + "viewFieldGroupId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AggregateOperations": {}, + "CoreViewFilterGroup": { + "id": [ + 3 + ], + "parentViewFilterGroupId": [ + 3 + ], + "logicalOperator": [ + 53 + ], + "positionInViewFilterGroup": [ + 11 + ], + "viewId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "ViewFilterGroupLogicalOperator": {}, + "CoreViewFilter": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "operand": [ + 55 + ], + "value": [ + 15 + ], + "viewFilterGroupId": [ + 3 + ], + "positionInViewFilterGroup": [ + 11 + ], + "subFieldName": [ + 1 + ], + "viewId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "ViewFilterOperand": {}, + "CoreViewGroup": { + "id": [ + 3 + ], + "isVisible": [ + 6 + ], + "fieldValue": [ + 1 + ], + "position": [ + 11 + ], + "viewId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "CoreViewSort": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "direction": [ + 58 + ], + "viewId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "ViewSortDirection": {}, + "CoreViewFieldGroup": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "position": [ + 11 + ], + "isVisible": [ + 6 + ], + "viewId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "viewFields": [ + 50 + ], + "__typename": [ + 1 + ] + }, + "CoreView": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "objectMetadataId": [ + 3 + ], + "type": [ + 61 + ], + "key": [ + 62 + ], + "icon": [ + 1 + ], + "position": [ + 11 + ], + "isCompact": [ + 6 + ], + "isCustom": [ + 6 + ], + "openRecordIn": [ + 63 + ], + "kanbanAggregateOperation": [ + 51 + ], + "kanbanAggregateOperationFieldMetadataId": [ + 3 + ], + "mainGroupByFieldMetadataId": [ + 3 + ], + "shouldHideEmptyGroups": [ + 6 + ], + "calendarFieldMetadataId": [ + 3 + ], + "workspaceId": [ + 3 + ], + "anyFieldFilterValue": [ + 1 + ], + "calendarLayout": [ + 64 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "viewFields": [ + 50 + ], + "viewFilters": [ + 54 + ], + "viewFilterGroups": [ + 52 + ], + "viewSorts": [ + 57 + ], + "viewGroups": [ + 56 + ], + "viewFieldGroups": [ + 59 + ], + "visibility": [ + 65 + ], + "createdByUserWorkspaceId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "ViewType": {}, + "ViewKey": {}, + "ViewOpenRecordIn": {}, + "ViewCalendarLayout": {}, + "ViewVisibility": {}, + "Workspace": { + "id": [ + 3 + ], + "displayName": [ + 1 + ], + "logo": [ + 1 + ], + "logoFileId": [ + 3 + ], + "inviteHash": [ + 1 + ], + "deletedAt": [ + 4 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "allowImpersonation": [ + 6 + ], + "isPublicInviteLinkEnabled": [ + 6 + ], + "trashRetentionDays": [ + 11 + ], + "eventLogRetentionDays": [ + 11 + ], + "workspaceMembersCount": [ + 11 + ], + "activationStatus": [ + 67 + ], + "views": [ + 60 + ], + "viewFields": [ + 50 + ], + "viewFilters": [ + 54 + ], + "viewFilterGroups": [ + 52 + ], + "viewGroups": [ + 56 + ], + "viewSorts": [ + 57 + ], + "metadataVersion": [ + 11 + ], + "databaseUrl": [ + 1 + ], + "databaseSchema": [ + 1 + ], + "subdomain": [ + 1 + ], + "customDomain": [ + 1 + ], + "isGoogleAuthEnabled": [ + 6 + ], + "isGoogleAuthBypassEnabled": [ + 6 + ], + "isTwoFactorAuthenticationEnforced": [ + 6 + ], + "isPasswordAuthEnabled": [ + 6 + ], + "isPasswordAuthBypassEnabled": [ + 6 + ], + "isMicrosoftAuthEnabled": [ + 6 + ], + "isMicrosoftAuthBypassEnabled": [ + 6 + ], + "isCustomDomainEnabled": [ + 6 + ], + "editableProfileFields": [ + 1 + ], + "defaultRole": [ + 29 + ], + "version": [ + 1 + ], + "fastModel": [ + 1 + ], + "smartModel": [ + 1 + ], + "aiAdditionalInstructions": [ + 1 + ], + "autoEnableNewAiModels": [ + 6 + ], + "disabledAiModelIds": [ + 1 + ], + "enabledAiModelIds": [ + 1 + ], + "useRecommendedModels": [ + 6 + ], + "routerModel": [ + 1 + ], + "workspaceCustomApplication": [ + 49 + ], + "featureFlags": [ + 162 + ], + "billingSubscriptions": [ + 138 + ], + "currentBillingSubscription": [ + 138 + ], + "billingEntitlements": [ + 158 + ], + "hasValidEnterpriseKey": [ + 6 + ], + "workspaceUrls": [ + 151 + ], + "workspaceCustomApplicationId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceActivationStatus": {}, + "AppToken": { + "id": [ + 3 + ], + "type": [ + 1 + ], + "expiresAt": [ + 4 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "User": { + "id": [ + 3 + ], + "firstName": [ + 1 + ], + "lastName": [ + 1 + ], + "email": [ + 1 + ], + "defaultAvatarUrl": [ + 1 + ], + "isEmailVerified": [ + 6 + ], + "disabled": [ + 6 + ], + "canImpersonate": [ + 6 + ], + "canAccessFullAdminPanel": [ + 6 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "locale": [ + 1 + ], + "workspaceMember": [ + 20 + ], + "userWorkspaces": [ + 17 + ], + "onboardingStatus": [ + 70 + ], + "currentWorkspace": [ + 66 + ], + "currentUserWorkspace": [ + 17 + ], + "userVars": [ + 71 + ], + "workspaceMembers": [ + 20 + ], + "deletedWorkspaceMembers": [ + 157 + ], + "hasPassword": [ + 6 + ], + "supportUserHash": [ + 1 + ], + "workspaces": [ + 17 + ], + "availableWorkspaces": [ + 156 + ], + "__typename": [ + 1 + ] + }, + "OnboardingStatus": {}, + "JSONObject": {}, + "RatioAggregateConfig": { + "fieldMetadataId": [ + 3 + ], + "optionValue": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "NewFieldDefaultConfiguration": { + "isVisible": [ + 6 + ], + "viewFieldGroupId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "RichTextV2Body": { + "blocknote": [ + 1 + ], + "markdown": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "GridPosition": { + "row": [ + 11 + ], + "column": [ + 11 + ], + "rowSpan": [ + 11 + ], + "columnSpan": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutWidget": { + "id": [ + 3 + ], + "pageLayoutTabId": [ + 3 + ], + "title": [ + 1 + ], + "type": [ + 77 + ], + "objectMetadataId": [ + 3 + ], + "gridPosition": [ + 75 + ], + "position": [ + 78 + ], + "configuration": [ + 83 + ], + "conditionalDisplay": [ + 15 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "WidgetType": {}, + "PageLayoutWidgetPosition": { + "on_PageLayoutWidgetGridPosition": [ + 79 + ], + "on_PageLayoutWidgetVerticalListPosition": [ + 81 + ], + "on_PageLayoutWidgetCanvasPosition": [ + 82 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutWidgetGridPosition": { + "layoutMode": [ + 80 + ], + "row": [ + 21 + ], + "column": [ + 21 + ], + "rowSpan": [ + 21 + ], + "columnSpan": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutTabLayoutMode": {}, + "PageLayoutWidgetVerticalListPosition": { + "layoutMode": [ + 80 + ], + "index": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutWidgetCanvasPosition": { + "layoutMode": [ + 80 + ], + "__typename": [ + 1 + ] + }, + "WidgetConfiguration": { + "on_AggregateChartConfiguration": [ + 84 + ], + "on_StandaloneRichTextConfiguration": [ + 86 + ], + "on_PieChartConfiguration": [ + 87 + ], + "on_LineChartConfiguration": [ + 90 + ], + "on_IframeConfiguration": [ + 92 + ], + "on_GaugeChartConfiguration": [ + 93 + ], + "on_BarChartConfiguration": [ + 94 + ], + "on_CalendarConfiguration": [ + 97 + ], + "on_FrontComponentConfiguration": [ + 98 + ], + "on_EmailsConfiguration": [ + 99 + ], + "on_FieldConfiguration": [ + 100 + ], + "on_FieldRichTextConfiguration": [ + 101 + ], + "on_FieldsConfiguration": [ + 102 + ], + "on_FilesConfiguration": [ + 103 + ], + "on_NotesConfiguration": [ + 104 + ], + "on_TasksConfiguration": [ + 105 + ], + "on_TimelineConfiguration": [ + 106 + ], + "on_ViewConfiguration": [ + 107 + ], + "on_WorkflowConfiguration": [ + 108 + ], + "on_WorkflowRunConfiguration": [ + 109 + ], + "on_WorkflowVersionConfiguration": [ + 110 + ], + "__typename": [ + 1 + ] + }, + "AggregateChartConfiguration": { + "configurationType": [ + 85 + ], + "aggregateFieldMetadataId": [ + 3 + ], + "aggregateOperation": [ + 51 + ], + "label": [ + 1 + ], + "displayDataLabel": [ + 6 + ], + "format": [ + 1 + ], + "description": [ + 1 + ], + "filter": [ + 15 + ], + "timezone": [ + 1 + ], + "firstDayOfTheWeek": [ + 21 + ], + "prefix": [ + 1 + ], + "suffix": [ + 1 + ], + "ratioAggregateConfig": [ + 72 + ], + "__typename": [ + 1 + ] + }, + "WidgetConfigurationType": {}, + "StandaloneRichTextConfiguration": { + "configurationType": [ + 85 + ], + "body": [ + 74 + ], + "__typename": [ + 1 + ] + }, + "PieChartConfiguration": { + "configurationType": [ + 85 + ], + "aggregateFieldMetadataId": [ + 3 + ], + "aggregateOperation": [ + 51 + ], + "groupByFieldMetadataId": [ + 3 + ], + "groupBySubFieldName": [ + 1 + ], + "dateGranularity": [ + 88 + ], + "orderBy": [ + 89 + ], + "manualSortOrder": [ + 1 + ], + "displayDataLabel": [ + 6 + ], + "showCenterMetric": [ + 6 + ], + "displayLegend": [ + 6 + ], + "hideEmptyCategory": [ + 6 + ], + "splitMultiValueFields": [ + 6 + ], + "description": [ + 1 + ], + "color": [ + 1 + ], + "filter": [ + 15 + ], + "timezone": [ + 1 + ], + "firstDayOfTheWeek": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "ObjectRecordGroupByDateGranularity": {}, + "GraphOrderBy": {}, + "LineChartConfiguration": { + "configurationType": [ + 85 + ], + "aggregateFieldMetadataId": [ + 3 + ], + "aggregateOperation": [ + 51 + ], + "primaryAxisGroupByFieldMetadataId": [ + 3 + ], + "primaryAxisGroupBySubFieldName": [ + 1 + ], + "primaryAxisDateGranularity": [ + 88 + ], + "primaryAxisOrderBy": [ + 89 + ], + "primaryAxisManualSortOrder": [ + 1 + ], + "secondaryAxisGroupByFieldMetadataId": [ + 3 + ], + "secondaryAxisGroupBySubFieldName": [ + 1 + ], + "secondaryAxisGroupByDateGranularity": [ + 88 + ], + "secondaryAxisOrderBy": [ + 89 + ], + "secondaryAxisManualSortOrder": [ + 1 + ], + "omitNullValues": [ + 6 + ], + "splitMultiValueFields": [ + 6 + ], + "axisNameDisplay": [ + 91 + ], + "displayDataLabel": [ + 6 + ], + "displayLegend": [ + 6 + ], + "rangeMin": [ + 11 + ], + "rangeMax": [ + 11 + ], + "description": [ + 1 + ], + "color": [ + 1 + ], + "filter": [ + 15 + ], + "isStacked": [ + 6 + ], + "isCumulative": [ + 6 + ], + "timezone": [ + 1 + ], + "firstDayOfTheWeek": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "AxisNameDisplay": {}, + "IframeConfiguration": { + "configurationType": [ + 85 + ], + "url": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "GaugeChartConfiguration": { + "configurationType": [ + 85 + ], + "aggregateFieldMetadataId": [ + 3 + ], + "aggregateOperation": [ + 51 + ], + "displayDataLabel": [ + 6 + ], + "color": [ + 1 + ], + "description": [ + 1 + ], + "filter": [ + 15 + ], + "timezone": [ + 1 + ], + "firstDayOfTheWeek": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "BarChartConfiguration": { + "configurationType": [ + 85 + ], + "aggregateFieldMetadataId": [ + 3 + ], + "aggregateOperation": [ + 51 + ], + "primaryAxisGroupByFieldMetadataId": [ + 3 + ], + "primaryAxisGroupBySubFieldName": [ + 1 + ], + "primaryAxisDateGranularity": [ + 88 + ], + "primaryAxisOrderBy": [ + 89 + ], + "primaryAxisManualSortOrder": [ + 1 + ], + "secondaryAxisGroupByFieldMetadataId": [ + 3 + ], + "secondaryAxisGroupBySubFieldName": [ + 1 + ], + "secondaryAxisGroupByDateGranularity": [ + 88 + ], + "secondaryAxisOrderBy": [ + 89 + ], + "secondaryAxisManualSortOrder": [ + 1 + ], + "omitNullValues": [ + 6 + ], + "splitMultiValueFields": [ + 6 + ], + "axisNameDisplay": [ + 91 + ], + "displayDataLabel": [ + 6 + ], + "displayLegend": [ + 6 + ], + "rangeMin": [ + 11 + ], + "rangeMax": [ + 11 + ], + "description": [ + 1 + ], + "color": [ + 1 + ], + "filter": [ + 15 + ], + "groupMode": [ + 95 + ], + "layout": [ + 96 + ], + "isCumulative": [ + 6 + ], + "timezone": [ + 1 + ], + "firstDayOfTheWeek": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "BarChartGroupMode": {}, + "BarChartLayout": {}, + "CalendarConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "FrontComponentConfiguration": { + "configurationType": [ + 85 + ], + "frontComponentId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "EmailsConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "FieldConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "FieldRichTextConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "FieldsConfiguration": { + "configurationType": [ + 85 + ], + "viewId": [ + 1 + ], + "newFieldDefaultConfiguration": [ + 73 + ], + "__typename": [ + 1 + ] + }, + "FilesConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "NotesConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "TasksConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "TimelineConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "ViewConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "WorkflowConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "WorkflowRunConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "WorkflowVersionConfiguration": { + "configurationType": [ + 85 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutTab": { + "id": [ + 3 + ], + "applicationId": [ + 3 + ], + "title": [ + 1 + ], + "position": [ + 11 + ], + "pageLayoutId": [ + 3 + ], + "widgets": [ + 76 + ], + "icon": [ + 1 + ], + "layoutMode": [ + 80 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "PageLayout": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "type": [ + 113 + ], + "objectMetadataId": [ + 3 + ], + "tabs": [ + 111 + ], + "defaultTabToFocusOnMobileAndSidePanelId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "PageLayoutType": {}, + "ObjectRecordEventProperties": { + "updatedFields": [ + 1 + ], + "before": [ + 15 + ], + "after": [ + 15 + ], + "diff": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "MetadataEvent": { + "type": [ + 116 + ], + "metadataName": [ + 1 + ], + "recordId": [ + 1 + ], + "properties": [ + 114 + ], + "__typename": [ + 1 + ] + }, + "MetadataEventAction": {}, + "ObjectRecordEvent": { + "action": [ + 118 + ], + "objectNameSingular": [ + 1 + ], + "recordId": [ + 1 + ], + "userId": [ + 1 + ], + "workspaceMemberId": [ + 1 + ], + "properties": [ + 114 + ], + "__typename": [ + 1 + ] + }, + "DatabaseEventAction": {}, + "ObjectRecordEventWithQueryIds": { + "queryIds": [ + 1 + ], + "objectRecordEvent": [ + 117 + ], + "__typename": [ + 1 + ] + }, + "MetadataEventWithQueryIds": { + "queryIds": [ + 1 + ], + "metadataEvent": [ + 115 + ], + "__typename": [ + 1 + ] + }, + "EventSubscription": { + "eventStreamId": [ + 1 + ], + "objectRecordEventsWithQueryIds": [ + 119 + ], + "metadataEventsWithQueryIds": [ + 120 + ], + "__typename": [ + 1 + ] + }, + "OnDbEvent": { + "action": [ + 118 + ], + "objectNameSingular": [ + 1 + ], + "eventDate": [ + 4 + ], + "record": [ + 15 + ], + "updatedFields": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "Analytics": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "BillingSubscriptionSchedulePhaseItem": { + "price": [ + 1 + ], + "quantity": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "BillingSubscriptionSchedulePhase": { + "start_date": [ + 11 + ], + "end_date": [ + 11 + ], + "items": [ + 124 + ], + "__typename": [ + 1 + ] + }, + "BillingProductMetadata": { + "planKey": [ + 127 + ], + "priceUsageBased": [ + 128 + ], + "productKey": [ + 129 + ], + "__typename": [ + 1 + ] + }, + "BillingPlanKey": {}, + "BillingUsageType": {}, + "BillingProductKey": {}, + "BillingPriceLicensed": { + "recurringInterval": [ + 131 + ], + "unitAmount": [ + 11 + ], + "stripePriceId": [ + 1 + ], + "priceUsageType": [ + 128 + ], + "__typename": [ + 1 + ] + }, + "SubscriptionInterval": {}, + "BillingPriceTier": { + "upTo": [ + 11 + ], + "flatAmount": [ + 11 + ], + "unitAmount": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "BillingPriceMetered": { + "tiers": [ + 132 + ], + "recurringInterval": [ + 131 + ], + "stripePriceId": [ + 1 + ], + "priceUsageType": [ + 128 + ], + "__typename": [ + 1 + ] + }, + "BillingProduct": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "images": [ + 1 + ], + "metadata": [ + 126 + ], + "__typename": [ + 1 + ] + }, + "BillingLicensedProduct": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "images": [ + 1 + ], + "metadata": [ + 126 + ], + "prices": [ + 130 + ], + "__typename": [ + 1 + ] + }, + "BillingMeteredProduct": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "images": [ + 1 + ], + "metadata": [ + 126 + ], + "prices": [ + 133 + ], + "__typename": [ + 1 + ] + }, + "BillingSubscriptionItem": { + "id": [ + 3 + ], + "hasReachedCurrentPeriodCap": [ + 6 + ], + "quantity": [ + 11 + ], + "stripePriceId": [ + 1 + ], + "billingProduct": [ + 0 + ], + "__typename": [ + 1 + ] + }, + "BillingSubscription": { + "id": [ + 3 + ], + "status": [ + 139 + ], + "interval": [ + 131 + ], + "billingSubscriptionItems": [ + 137 + ], + "currentPeriodEnd": [ + 4 + ], + "metadata": [ + 15 + ], + "phases": [ + 125 + ], + "__typename": [ + 1 + ] + }, + "SubscriptionStatus": {}, + "BillingEndTrialPeriod": { + "status": [ + 139 + ], + "hasPaymentMethod": [ + 6 + ], + "billingPortalUrl": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "BillingMeteredProductUsage": { + "productKey": [ + 129 + ], + "periodStart": [ + 4 + ], + "periodEnd": [ + 4 + ], + "usedCredits": [ + 11 + ], + "grantedCredits": [ + 11 + ], + "rolloverCredits": [ + 11 + ], + "totalGrantedCredits": [ + 11 + ], + "unitPriceCents": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "BillingPlan": { + "planKey": [ + 127 + ], + "licensedProducts": [ + 135 + ], + "meteredProducts": [ + 136 + ], + "__typename": [ + 1 + ] + }, + "BillingSession": { + "url": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "BillingUpdate": { + "currentBillingSubscription": [ + 138 + ], + "billingSubscriptions": [ + 138 + ], + "__typename": [ + 1 + ] + }, + "OnboardingStepSuccess": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ApprovedAccessDomain": { + "id": [ + 3 + ], + "domain": [ + 1 + ], + "isValidated": [ + 6 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "FileWithSignedUrl": { + "id": [ + 3 + ], + "path": [ + 1 + ], + "size": [ + 11 + ], + "createdAt": [ + 4 + ], + "url": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceInvitation": { + "id": [ + 3 + ], + "email": [ + 1 + ], + "roleId": [ + 3 + ], + "expiresAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "SendInvitations": { + "success": [ + 6 + ], + "errors": [ + 1 + ], + "result": [ + 148 + ], + "__typename": [ + 1 + ] + }, + "ResendEmailVerificationToken": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceUrls": { + "customUrl": [ + 1 + ], + "subdomainUrl": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "SSOConnection": { + "type": [ + 153 + ], + "id": [ + 3 + ], + "issuer": [ + 1 + ], + "name": [ + 1 + ], + "status": [ + 154 + ], + "__typename": [ + 1 + ] + }, + "IdentityProviderType": {}, + "SSOIdentityProviderStatus": {}, + "AvailableWorkspace": { + "id": [ + 3 + ], + "displayName": [ + 1 + ], + "loginToken": [ + 1 + ], + "personalInviteToken": [ + 1 + ], + "inviteHash": [ + 1 + ], + "workspaceUrls": [ + 151 + ], + "logo": [ + 1 + ], + "sso": [ + 152 + ], + "__typename": [ + 1 + ] + }, + "AvailableWorkspaces": { + "availableWorkspacesForSignIn": [ + 155 + ], + "availableWorkspacesForSignUp": [ + 155 + ], + "__typename": [ + 1 + ] + }, + "DeletedWorkspaceMember": { + "id": [ + 3 + ], + "name": [ + 19 + ], + "userEmail": [ + 1 + ], + "avatarUrl": [ + 1 + ], + "userWorkspaceId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "BillingEntitlement": { + "key": [ + 159 + ], + "value": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "BillingEntitlementKey": {}, + "DomainRecord": { + "validationType": [ + 1 + ], + "type": [ + 1 + ], + "status": [ + 1 + ], + "key": [ + 1 + ], + "value": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DomainValidRecords": { + "id": [ + 3 + ], + "domain": [ + 1 + ], + "records": [ + 160 + ], + "__typename": [ + 1 + ] + }, + "FeatureFlag": { + "key": [ + 163 + ], + "value": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "FeatureFlagKey": {}, + "SSOIdentityProvider": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "type": [ + 153 + ], + "status": [ + 154 + ], + "issuer": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "AuthProviders": { + "sso": [ + 164 + ], + "google": [ + 6 + ], + "magicLink": [ + 6 + ], + "password": [ + 6 + ], + "microsoft": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "AuthBypassProviders": { + "google": [ + 6 + ], + "password": [ + 6 + ], + "microsoft": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "PublicWorkspaceData": { + "id": [ + 3 + ], + "authProviders": [ + 165 + ], + "authBypassProviders": [ + 166 + ], + "logo": [ + 1 + ], + "displayName": [ + 1 + ], + "workspaceUrls": [ + 151 + ], + "__typename": [ + 1 + ] + }, + "IndexEdge": { + "node": [ + 37 + ], + "cursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "PageInfo": { + "hasNextPage": [ + 6 + ], + "hasPreviousPage": [ + 6 + ], + "startCursor": [ + 40 + ], + "endCursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "IndexConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 168 + ], + "__typename": [ + 1 + ] + }, + "IndexFieldEdge": { + "node": [ + 36 + ], + "cursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "IndexIndexFieldMetadatasConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 171 + ], + "__typename": [ + 1 + ] + }, + "ObjectEdge": { + "node": [ + 46 + ], + "cursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "IndexObjectMetadataConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 173 + ], + "__typename": [ + 1 + ] + }, + "ObjectRecordCount": { + "objectNamePlural": [ + 1 + ], + "totalCount": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "ObjectConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 173 + ], + "__typename": [ + 1 + ] + }, + "ObjectIndexMetadatasConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 168 + ], + "__typename": [ + 1 + ] + }, + "FieldEdge": { + "node": [ + 34 + ], + "cursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "ObjectFieldsConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 178 + ], + "__typename": [ + 1 + ] + }, + "UpsertRowLevelPermissionPredicatesResult": { + "predicates": [ + 13 + ], + "predicateGroups": [ + 10 + ], + "__typename": [ + 1 + ] + }, + "Relation": { + "type": [ + 182 + ], + "sourceObjectMetadata": [ + 46 + ], + "targetObjectMetadata": [ + 46 + ], + "sourceFieldMetadata": [ + 34 + ], + "targetFieldMetadata": [ + 34 + ], + "__typename": [ + 1 + ] + }, + "RelationType": {}, + "FieldConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 178 + ], + "__typename": [ + 1 + ] + }, + "VersionDistributionEntry": { + "version": [ + 1 + ], + "count": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "ApplicationRegistrationStats": { + "activeInstalls": [ + 21 + ], + "mostInstalledVersion": [ + 1 + ], + "versionDistribution": [ + 184 + ], + "__typename": [ + 1 + ] + }, + "CreateApplicationRegistration": { + "applicationRegistration": [ + 7 + ], + "clientSecret": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "PublicApplicationRegistration": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "logoUrl": [ + 1 + ], + "websiteUrl": [ + 1 + ], + "oAuthScopes": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "RotateClientSecret": { + "clientSecret": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DeleteSso": { + "identityProviderId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "EditSso": { + "id": [ + 3 + ], + "type": [ + 153 + ], + "issuer": [ + 1 + ], + "name": [ + 1 + ], + "status": [ + 154 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceNameAndId": { + "displayName": [ + 1 + ], + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "FindAvailableSSOIDP": { + "type": [ + 153 + ], + "id": [ + 3 + ], + "issuer": [ + 1 + ], + "name": [ + 1 + ], + "status": [ + 154 + ], + "workspace": [ + 191 + ], + "__typename": [ + 1 + ] + }, + "SetupSso": { + "id": [ + 3 + ], + "type": [ + 153 + ], + "issuer": [ + 1 + ], + "name": [ + 1 + ], + "status": [ + 154 + ], + "__typename": [ + 1 + ] + }, + "DeleteTwoFactorAuthenticationMethod": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "InitiateTwoFactorAuthenticationProvisioning": { + "uri": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "VerifyTwoFactorAuthenticationMethod": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "AuthorizeApp": { + "redirectUrl": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "AuthToken": { + "token": [ + 1 + ], + "expiresAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AuthTokenPair": { + "accessOrWorkspaceAgnosticToken": [ + 198 + ], + "refreshToken": [ + 198 + ], + "__typename": [ + 1 + ] + }, + "AvailableWorkspacesAndAccessTokens": { + "tokens": [ + 199 + ], + "availableWorkspaces": [ + 156 + ], + "__typename": [ + 1 + ] + }, + "EmailPasswordResetLink": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "GetAuthorizationUrlForSSO": { + "authorizationURL": [ + 1 + ], + "type": [ + 1 + ], + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "InvalidatePassword": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceUrlsAndId": { + "workspaceUrls": [ + 151 + ], + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "SignUp": { + "loginToken": [ + 198 + ], + "workspace": [ + 204 + ], + "__typename": [ + 1 + ] + }, + "TransientToken": { + "transientToken": [ + 198 + ], + "__typename": [ + 1 + ] + }, + "ValidatePasswordResetToken": { + "id": [ + 3 + ], + "email": [ + 1 + ], + "hasPassword": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "VerifyEmailAndGetLoginToken": { + "loginToken": [ + 198 + ], + "workspaceUrls": [ + 151 + ], + "__typename": [ + 1 + ] + }, + "ApiKeyToken": { + "token": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "AuthTokens": { + "tokens": [ + 199 + ], + "__typename": [ + 1 + ] + }, + "LoginToken": { + "loginToken": [ + 198 + ], + "__typename": [ + 1 + ] + }, + "CheckUserExist": { + "exists": [ + 6 + ], + "availableWorkspacesCount": [ + 11 + ], + "isEmailVerified": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceInviteHashValid": { + "isValid": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "RecordIdentifier": { + "id": [ + 3 + ], + "labelIdentifier": [ + 1 + ], + "imageIdentifier": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "NavigationMenuItem": { + "id": [ + 3 + ], + "userWorkspaceId": [ + 3 + ], + "targetRecordId": [ + 3 + ], + "targetObjectMetadataId": [ + 3 + ], + "viewId": [ + 3 + ], + "name": [ + 1 + ], + "link": [ + 1 + ], + "icon": [ + 1 + ], + "color": [ + 1 + ], + "folderId": [ + 3 + ], + "position": [ + 11 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "targetRecordIdentifier": [ + 214 + ], + "__typename": [ + 1 + ] + }, + "LogicFunctionExecutionResult": { + "data": [ + 15 + ], + "logs": [ + 1 + ], + "duration": [ + 11 + ], + "status": [ + 217 + ], + "error": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "LogicFunctionExecutionStatus": {}, + "LogicFunctionLogs": { + "logs": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "ToolIndexEntry": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "category": [ + 1 + ], + "objectName": [ + 1 + ], + "inputSchema": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "AgentMessagePart": { + "id": [ + 3 + ], + "messageId": [ + 3 + ], + "orderIndex": [ + 21 + ], + "type": [ + 1 + ], + "textContent": [ + 1 + ], + "reasoningContent": [ + 1 + ], + "toolName": [ + 1 + ], + "toolCallId": [ + 1 + ], + "toolInput": [ + 15 + ], + "toolOutput": [ + 15 + ], + "state": [ + 1 + ], + "errorMessage": [ + 1 + ], + "errorDetails": [ + 15 + ], + "sourceUrlSourceId": [ + 1 + ], + "sourceUrlUrl": [ + 1 + ], + "sourceUrlTitle": [ + 1 + ], + "sourceDocumentSourceId": [ + 1 + ], + "sourceDocumentMediaType": [ + 1 + ], + "sourceDocumentTitle": [ + 1 + ], + "sourceDocumentFilename": [ + 1 + ], + "fileMediaType": [ + 1 + ], + "fileFilename": [ + 1 + ], + "fileId": [ + 3 + ], + "fileUrl": [ + 1 + ], + "providerMetadata": [ + 15 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "Skill": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "content": [ + 1 + ], + "isCustom": [ + 6 + ], + "isActive": [ + 6 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "ApplicationTokenPair": { + "applicationAccessToken": [ + 198 + ], + "applicationRefreshToken": [ + 198 + ], + "__typename": [ + 1 + ] + }, + "FrontComponent": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "sourceComponentPath": [ + 1 + ], + "builtComponentPath": [ + 1 + ], + "componentName": [ + 1 + ], + "builtComponentChecksum": [ + 1 + ], + "universalIdentifier": [ + 3 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "isHeadless": [ + 6 + ], + "applicationTokenPair": [ + 222 + ], + "__typename": [ + 1 + ] + }, + "CommandMenuItem": { + "id": [ + 3 + ], + "workflowVersionId": [ + 3 + ], + "frontComponentId": [ + 3 + ], + "frontComponent": [ + 223 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "shortLabel": [ + 1 + ], + "position": [ + 11 + ], + "isPinned": [ + 6 + ], + "availabilityType": [ + 225 + ], + "conditionalAvailabilityExpression": [ + 1 + ], + "availabilityObjectMetadataId": [ + 3 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "CommandMenuItemAvailabilityType": {}, + "AgentChatThread": { + "id": [ + 3 + ], + "title": [ + 1 + ], + "totalInputTokens": [ + 21 + ], + "totalOutputTokens": [ + 21 + ], + "contextWindowTokens": [ + 21 + ], + "conversationSize": [ + 21 + ], + "totalInputCredits": [ + 11 + ], + "totalOutputCredits": [ + 11 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AgentMessage": { + "id": [ + 3 + ], + "threadId": [ + 3 + ], + "turnId": [ + 3 + ], + "agentId": [ + 3 + ], + "role": [ + 1 + ], + "parts": [ + 220 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AISystemPromptSection": { + "title": [ + 1 + ], + "content": [ + 1 + ], + "estimatedTokenCount": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "AISystemPromptPreview": { + "sections": [ + 228 + ], + "estimatedTokenCount": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "AgentChatThreadEdge": { + "node": [ + 226 + ], + "cursor": [ + 40 + ], + "__typename": [ + 1 + ] + }, + "AgentChatThreadConnection": { + "pageInfo": [ + 169 + ], + "edges": [ + 230 + ], + "__typename": [ + 1 + ] + }, + "AgentTurnEvaluation": { + "id": [ + 3 + ], + "turnId": [ + 3 + ], + "score": [ + 21 + ], + "comment": [ + 1 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AgentTurn": { + "id": [ + 3 + ], + "threadId": [ + 3 + ], + "agentId": [ + 3 + ], + "evaluations": [ + 232 + ], + "messages": [ + 227 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "Webhook": { + "id": [ + 3 + ], + "targetUrl": [ + 1 + ], + "operations": [ + 1 + ], + "description": [ + 1 + ], + "secret": [ + 1 + ], + "applicationId": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "deletedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "BillingTrialPeriod": { + "duration": [ + 11 + ], + "isCreditCardRequired": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "NativeModelCapabilities": { + "webSearch": [ + 6 + ], + "twitterSearch": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ClientAIModelConfig": { + "modelId": [ + 1 + ], + "label": [ + 1 + ], + "modelFamily": [ + 238 + ], + "inferenceProvider": [ + 239 + ], + "inputCostPerMillionTokensInCredits": [ + 11 + ], + "outputCostPerMillionTokensInCredits": [ + 11 + ], + "nativeCapabilities": [ + 236 + ], + "deprecated": [ + 6 + ], + "isRecommended": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ModelFamily": {}, + "InferenceProvider": {}, + "AdminAIModelConfig": { + "modelId": [ + 1 + ], + "label": [ + 1 + ], + "modelFamily": [ + 238 + ], + "inferenceProvider": [ + 239 + ], + "isAvailable": [ + 6 + ], + "isAdminEnabled": [ + 6 + ], + "deprecated": [ + 6 + ], + "isRecommended": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "AdminAIModels": { + "autoEnableNewModels": [ + 6 + ], + "models": [ + 240 + ], + "__typename": [ + 1 + ] + }, + "Billing": { + "isBillingEnabled": [ + 6 + ], + "billingUrl": [ + 1 + ], + "trialPeriods": [ + 235 + ], + "__typename": [ + 1 + ] + }, + "Support": { + "supportDriver": [ + 244 + ], + "supportFrontChatId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "SupportDriver": {}, + "Sentry": { + "environment": [ + 1 + ], + "release": [ + 1 + ], + "dsn": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "Captcha": { + "provider": [ + 247 + ], + "siteKey": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CaptchaDriverType": {}, + "ApiConfig": { + "mutationMaximumAffectedRecords": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "PublicFeatureFlagMetadata": { + "label": [ + 1 + ], + "description": [ + 1 + ], + "imagePath": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "PublicFeatureFlag": { + "key": [ + 163 + ], + "metadata": [ + 249 + ], + "__typename": [ + 1 + ] + }, + "ClientConfig": { + "appVersion": [ + 1 + ], + "authProviders": [ + 165 + ], + "billing": [ + 242 + ], + "aiModels": [ + 237 + ], + "signInPrefilled": [ + 6 + ], + "isMultiWorkspaceEnabled": [ + 6 + ], + "isEmailVerificationRequired": [ + 6 + ], + "defaultSubdomain": [ + 1 + ], + "frontDomain": [ + 1 + ], + "analyticsEnabled": [ + 6 + ], + "support": [ + 243 + ], + "isAttachmentPreviewEnabled": [ + 6 + ], + "sentry": [ + 245 + ], + "captcha": [ + 246 + ], + "chromeExtensionId": [ + 1 + ], + "api": [ + 248 + ], + "canManageFeatureFlags": [ + 6 + ], + "publicFeatureFlags": [ + 250 + ], + "isMicrosoftMessagingEnabled": [ + 6 + ], + "isMicrosoftCalendarEnabled": [ + 6 + ], + "isGoogleMessagingEnabled": [ + 6 + ], + "isGoogleCalendarEnabled": [ + 6 + ], + "isConfigVariablesInDbEnabled": [ + 6 + ], + "isImapSmtpCaldavEnabled": [ + 6 + ], + "allowRequestsToTwentyIcons": [ + 6 + ], + "calendarBookingPageId": [ + 1 + ], + "isCloudflareIntegrationEnabled": [ + 6 + ], + "isClickHouseConfigured": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ConfigVariable": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "value": [ + 15 + ], + "isSensitive": [ + 6 + ], + "source": [ + 253 + ], + "isEnvOnly": [ + 6 + ], + "type": [ + 254 + ], + "options": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "ConfigSource": {}, + "ConfigVariableType": {}, + "ConfigVariablesGroupData": { + "variables": [ + 252 + ], + "name": [ + 256 + ], + "description": [ + 1 + ], + "isHiddenOnLoad": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ConfigVariablesGroup": {}, + "ConfigVariables": { + "groups": [ + 255 + ], + "__typename": [ + 1 + ] + }, + "JobOperationResult": { + "jobId": [ + 1 + ], + "success": [ + 6 + ], + "error": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DeleteJobsResponse": { + "deletedCount": [ + 21 + ], + "results": [ + 258 + ], + "__typename": [ + 1 + ] + }, + "QueueJob": { + "id": [ + 1 + ], + "name": [ + 1 + ], + "data": [ + 15 + ], + "state": [ + 261 + ], + "timestamp": [ + 11 + ], + "failedReason": [ + 1 + ], + "processedOn": [ + 11 + ], + "finishedOn": [ + 11 + ], + "attemptsMade": [ + 11 + ], + "returnValue": [ + 15 + ], + "logs": [ + 1 + ], + "stackTrace": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "JobState": {}, + "QueueRetentionConfig": { + "completedMaxAge": [ + 11 + ], + "completedMaxCount": [ + 11 + ], + "failedMaxAge": [ + 11 + ], + "failedMaxCount": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "QueueJobsResponse": { + "jobs": [ + 260 + ], + "count": [ + 11 + ], + "totalCount": [ + 11 + ], + "hasMore": [ + 6 + ], + "retentionConfig": [ + 262 + ], + "__typename": [ + 1 + ] + }, + "RetryJobsResponse": { + "retriedCount": [ + 21 + ], + "results": [ + 258 + ], + "__typename": [ + 1 + ] + }, + "SystemHealthService": { + "id": [ + 266 + ], + "label": [ + 1 + ], + "status": [ + 267 + ], + "__typename": [ + 1 + ] + }, + "HealthIndicatorId": {}, + "AdminPanelHealthServiceStatus": {}, + "SystemHealth": { + "services": [ + 265 + ], + "__typename": [ + 1 + ] + }, + "UserInfo": { + "id": [ + 3 + ], + "email": [ + 1 + ], + "firstName": [ + 1 + ], + "lastName": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceInfo": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "allowImpersonation": [ + 6 + ], + "logo": [ + 1 + ], + "totalUsers": [ + 11 + ], + "workspaceUrls": [ + 151 + ], + "users": [ + 269 + ], + "featureFlags": [ + 162 + ], + "__typename": [ + 1 + ] + }, + "UserLookup": { + "user": [ + 269 + ], + "workspaces": [ + 270 + ], + "__typename": [ + 1 + ] + }, + "VersionInfo": { + "currentVersion": [ + 1 + ], + "latestVersion": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "AdminPanelWorkerQueueHealth": { + "id": [ + 1 + ], + "queueName": [ + 1 + ], + "status": [ + 267 + ], + "__typename": [ + 1 + ] + }, + "AdminPanelHealthServiceData": { + "id": [ + 266 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "status": [ + 267 + ], + "errorMessage": [ + 1 + ], + "details": [ + 1 + ], + "queues": [ + 273 + ], + "__typename": [ + 1 + ] + }, + "QueueMetricsDataPoint": { + "x": [ + 11 + ], + "y": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "QueueMetricsSeries": { + "id": [ + 1 + ], + "data": [ + 275 + ], + "__typename": [ + 1 + ] + }, + "WorkerQueueMetrics": { + "failed": [ + 11 + ], + "completed": [ + 11 + ], + "waiting": [ + 11 + ], + "active": [ + 11 + ], + "delayed": [ + 11 + ], + "failureRate": [ + 11 + ], + "failedData": [ + 11 + ], + "completedData": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "QueueMetricsData": { + "queueName": [ + 1 + ], + "workers": [ + 11 + ], + "timeRange": [ + 279 + ], + "details": [ + 277 + ], + "data": [ + 276 + ], + "__typename": [ + 1 + ] + }, + "QueueMetricsTimeRange": {}, + "Impersonate": { + "loginToken": [ + 198 + ], + "workspace": [ + 204 + ], + "__typename": [ + 1 + ] + }, + "DevelopmentApplication": { + "id": [ + 1 + ], + "universalIdentifier": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceMigration": { + "applicationUniversalIdentifier": [ + 1 + ], + "actions": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "File": { + "id": [ + 3 + ], + "path": [ + 1 + ], + "size": [ + 11 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppField": { + "name": [ + 1 + ], + "type": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "objectUniversalIdentifier": [ + 1 + ], + "universalIdentifier": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppObject": { + "universalIdentifier": [ + 1 + ], + "nameSingular": [ + 1 + ], + "namePlural": [ + 1 + ], + "labelSingular": [ + 1 + ], + "labelPlural": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "fields": [ + 284 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppLogicFunction": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "timeoutSeconds": [ + 21 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppFrontComponent": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppRoleObjectPermission": { + "objectUniversalIdentifier": [ + 1 + ], + "canReadObjectRecords": [ + 6 + ], + "canUpdateObjectRecords": [ + 6 + ], + "canSoftDeleteObjectRecords": [ + 6 + ], + "canDestroyObjectRecords": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppRoleFieldPermission": { + "objectUniversalIdentifier": [ + 1 + ], + "fieldUniversalIdentifier": [ + 1 + ], + "canReadFieldValue": [ + 6 + ], + "canUpdateFieldValue": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceAppDefaultRole": { + "id": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "canReadAllObjectRecords": [ + 6 + ], + "canUpdateAllObjectRecords": [ + 6 + ], + "canSoftDeleteAllObjectRecords": [ + 6 + ], + "canDestroyAllObjectRecords": [ + 6 + ], + "canUpdateAllSettings": [ + 6 + ], + "canAccessAllTools": [ + 6 + ], + "objectPermissions": [ + 288 + ], + "fieldPermissions": [ + 289 + ], + "permissionFlags": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "MarketplaceApp": { + "id": [ + 1 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "version": [ + 1 + ], + "author": [ + 1 + ], + "category": [ + 1 + ], + "logo": [ + 1 + ], + "screenshots": [ + 1 + ], + "aboutDescription": [ + 1 + ], + "providers": [ + 1 + ], + "websiteUrl": [ + 1 + ], + "termsUrl": [ + 1 + ], + "objects": [ + 285 + ], + "fields": [ + 284 + ], + "logicFunctions": [ + 286 + ], + "frontComponents": [ + 287 + ], + "defaultRole": [ + 290 + ], + "sourcePackage": [ + 1 + ], + "isFeatured": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "PublicDomain": { + "id": [ + 3 + ], + "domain": [ + 1 + ], + "isValidated": [ + 6 + ], + "createdAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "VerificationRecord": { + "type": [ + 1 + ], + "key": [ + 1 + ], + "value": [ + 1 + ], + "priority": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "EmailingDomain": { + "id": [ + 3 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "domain": [ + 1 + ], + "driver": [ + 295 + ], + "status": [ + 296 + ], + "verificationRecords": [ + 293 + ], + "verifiedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "EmailingDomainDriver": {}, + "EmailingDomainStatus": {}, + "AutocompleteResult": { + "text": [ + 1 + ], + "placeId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "Location": { + "lat": [ + 11 + ], + "lng": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "PlaceDetailsResult": { + "state": [ + 1 + ], + "postcode": [ + 1 + ], + "city": [ + 1 + ], + "country": [ + 1 + ], + "location": [ + 298 + ], + "__typename": [ + 1 + ] + }, + "ConnectionParametersOutput": { + "host": [ + 1 + ], + "port": [ + 11 + ], + "username": [ + 1 + ], + "password": [ + 1 + ], + "secure": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "ImapSmtpCaldavConnectionParameters": { + "IMAP": [ + 300 + ], + "SMTP": [ + 300 + ], + "CALDAV": [ + 300 + ], + "__typename": [ + 1 + ] + }, + "ConnectedImapSmtpCaldavAccount": { + "id": [ + 3 + ], + "handle": [ + 1 + ], + "provider": [ + 1 + ], + "accountOwnerId": [ + 3 + ], + "connectionParameters": [ + 301 + ], + "__typename": [ + 1 + ] + }, + "ImapSmtpCaldavConnectionSuccess": { + "success": [ + 6 + ], + "connectedAccountId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "PostgresCredentials": { + "id": [ + 3 + ], + "user": [ + 1 + ], + "password": [ + 1 + ], + "workspaceId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "ChannelSyncSuccess": { + "success": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "BarChartSeries": { + "key": [ + 1 + ], + "label": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "BarChartData": { + "data": [ + 15 + ], + "indexBy": [ + 1 + ], + "keys": [ + 1 + ], + "series": [ + 306 + ], + "xAxisLabel": [ + 1 + ], + "yAxisLabel": [ + 1 + ], + "showLegend": [ + 6 + ], + "showDataLabels": [ + 6 + ], + "layout": [ + 96 + ], + "groupMode": [ + 95 + ], + "hasTooManyGroups": [ + 6 + ], + "formattedToRawLookup": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "LineChartDataPoint": { + "x": [ + 1 + ], + "y": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "LineChartSeries": { + "id": [ + 1 + ], + "label": [ + 1 + ], + "data": [ + 308 + ], + "__typename": [ + 1 + ] + }, + "LineChartData": { + "series": [ + 309 + ], + "xAxisLabel": [ + 1 + ], + "yAxisLabel": [ + 1 + ], + "showLegend": [ + 6 + ], + "showDataLabels": [ + 6 + ], + "hasTooManyGroups": [ + 6 + ], + "formattedToRawLookup": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "PieChartDataItem": { + "id": [ + 1 + ], + "value": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "PieChartData": { + "data": [ + 311 + ], + "showLegend": [ + 6 + ], + "showDataLabels": [ + 6 + ], + "showCenterMetric": [ + 6 + ], + "hasTooManyGroups": [ + 6 + ], + "formattedToRawLookup": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "DuplicatedDashboard": { + "id": [ + 3 + ], + "title": [ + 1 + ], + "pageLayoutId": [ + 3 + ], + "position": [ + 11 + ], + "createdAt": [ + 1 + ], + "updatedAt": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "EventLogRecord": { + "event": [ + 1 + ], + "timestamp": [ + 4 + ], + "userId": [ + 1 + ], + "properties": [ + 15 + ], + "recordId": [ + 1 + ], + "objectMetadataId": [ + 1 + ], + "isCustom": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "EventLogPageInfo": { + "endCursor": [ + 1 + ], + "hasNextPage": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "EventLogQueryResult": { + "records": [ + 314 + ], + "totalCount": [ + 21 + ], + "pageInfo": [ + 315 + ], + "__typename": [ + 1 + ] + }, + "Query": { + "getPageLayoutWidgets": [ + 76, + { + "pageLayoutTabId": [ + 1, + "String!" + ] + } + ], + "getPageLayoutWidget": [ + 76, + { + "id": [ + 1, + "String!" + ] + } + ], + "getPageLayoutTabs": [ + 111, + { + "pageLayoutId": [ + 1, + "String!" + ] + } + ], + "getPageLayoutTab": [ + 111, + { + "id": [ + 1, + "String!" + ] + } + ], + "getPageLayouts": [ + 112, + { + "objectMetadataId": [ + 1 + ], + "pageLayoutType": [ + 113 + ] + } + ], + "getPageLayout": [ + 112, + { + "id": [ + 1, + "String!" + ] + } + ], + "findOneLogicFunction": [ + 32, + { + "input": [ + 318, + "LogicFunctionIdInput!" + ] + } + ], + "findManyLogicFunctions": [ + 32 + ], + "getAvailablePackages": [ + 15, + { + "input": [ + 318, + "LogicFunctionIdInput!" + ] + } + ], + "getLogicFunctionSourceCode": [ + 1, + { + "input": [ + 318, + "LogicFunctionIdInput!" + ] + } + ], + "objectRecordCounts": [ + 175 + ], + "object": [ + 46, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "objects": [ + 176, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 41, + "ObjectFilter!" + ] + } + ], + "getCoreViewFields": [ + 50, + { + "viewId": [ + 1, + "String!" + ] + } + ], + "getCoreViewField": [ + 50, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViews": [ + 60, + { + "objectMetadataId": [ + 1 + ], + "viewTypes": [ + 61, + "[ViewType!]" + ] + } + ], + "getCoreView": [ + 60, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViewSorts": [ + 57, + { + "viewId": [ + 1 + ] + } + ], + "getCoreViewSort": [ + 57, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViewGroups": [ + 56, + { + "viewId": [ + 1 + ] + } + ], + "getCoreViewGroup": [ + 56, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViewFilterGroups": [ + 52, + { + "viewId": [ + 1 + ] + } + ], + "getCoreViewFilterGroup": [ + 52, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViewFilters": [ + 54, + { + "viewId": [ + 1 + ] + } + ], + "getCoreViewFilter": [ + 54, + { + "id": [ + 1, + "String!" + ] + } + ], + "getCoreViewFieldGroups": [ + 59, + { + "viewId": [ + 1, + "String!" + ] + } + ], + "getCoreViewFieldGroup": [ + 59, + { + "id": [ + 1, + "String!" + ] + } + ], + "index": [ + 37, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "indexMetadatas": [ + 170, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 48, + "IndexFilter!" + ] + } + ], + "commandMenuItems": [ + 224 + ], + "commandMenuItem": [ + 224, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "frontComponents": [ + 223 + ], + "frontComponent": [ + 223, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "findManyAgents": [ + 25 + ], + "findOneAgent": [ + 25, + { + "input": [ + 320, + "AgentIdInput!" + ] + } + ], + "billingPortalSession": [ + 143, + { + "returnUrlPath": [ + 1 + ] + } + ], + "listPlans": [ + 142 + ], + "getMeteredProductsUsage": [ + 141 + ], + "navigationMenuItems": [ + 215 + ], + "navigationMenuItem": [ + 215, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "apiKeys": [ + 2 + ], + "apiKey": [ + 2, + { + "input": [ + 321, + "GetApiKeyInput!" + ] + } + ], + "getRoles": [ + 29 + ], + "findWorkspaceInvitations": [ + 148 + ], + "getApprovedAccessDomains": [ + 146 + ], + "getToolIndex": [ + 219 + ], + "getToolInputSchema": [ + 15, + { + "toolName": [ + 1, + "String!" + ] + } + ], + "field": [ + 34, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "fields": [ + 183, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 47, + "FieldFilter!" + ] + } + ], + "currentUser": [ + 69 + ], + "currentWorkspace": [ + 66 + ], + "getPublicWorkspaceDataByDomain": [ + 167, + { + "origin": [ + 1 + ] + } + ], + "checkUserExists": [ + 212, + { + "email": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ] + } + ], + "checkWorkspaceInviteHashIsValid": [ + 213, + { + "inviteHash": [ + 1, + "String!" + ] + } + ], + "findWorkspaceFromInviteHash": [ + 66, + { + "inviteHash": [ + 1, + "String!" + ] + } + ], + "validatePasswordResetToken": [ + 207, + { + "passwordResetToken": [ + 1, + "String!" + ] + } + ], + "findApplicationRegistrationByClientId": [ + 187, + { + "clientId": [ + 1, + "String!" + ] + } + ], + "findApplicationRegistrationByUniversalIdentifier": [ + 7, + { + "universalIdentifier": [ + 1, + "String!" + ] + } + ], + "findManyApplicationRegistrations": [ + 7 + ], + "findOneApplicationRegistration": [ + 7, + { + "id": [ + 1, + "String!" + ] + } + ], + "findApplicationRegistrationStats": [ + 185, + { + "id": [ + 1, + "String!" + ] + } + ], + "findApplicationRegistrationVariables": [ + 5, + { + "applicationRegistrationId": [ + 1, + "String!" + ] + } + ], + "applicationRegistrationTarballUrl": [ + 1, + { + "id": [ + 1, + "String!" + ] + } + ], + "getSSOIdentityProviders": [ + 192 + ], + "webhooks": [ + 234 + ], + "webhook": [ + 234, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "chatThread": [ + 226, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "chatMessages": [ + 227, + { + "threadId": [ + 3, + "UUID!" + ] + } + ], + "getAISystemPromptPreview": [ + 229 + ], + "skills": [ + 221 + ], + "skill": [ + 221, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "chatThreads": [ + 231, + { + "paging": [ + 39, + "CursorPaging!" + ], + "filter": [ + 322, + "AgentChatThreadFilter!" + ], + "sorting": [ + 325, + "[AgentChatThreadSort!]!" + ] + } + ], + "agentTurns": [ + 233, + { + "agentId": [ + 3, + "UUID!" + ] + } + ], + "eventLogs": [ + 316, + { + "input": [ + 329, + "EventLogQueryInput!" + ] + } + ], + "pieChartData": [ + 312, + { + "input": [ + 333, + "PieChartDataInput!" + ] + } + ], + "lineChartData": [ + 310, + { + "input": [ + 334, + "LineChartDataInput!" + ] + } + ], + "barChartData": [ + 307, + { + "input": [ + 335, + "BarChartDataInput!" + ] + } + ], + "getConnectedImapSmtpCaldavAccount": [ + 302, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "getAutoCompleteAddress": [ + 297, + { + "address": [ + 1, + "String!" + ], + "token": [ + 1, + "String!" + ], + "country": [ + 1 + ], + "isFieldCity": [ + 6 + ] + } + ], + "getAddressDetails": [ + 299, + { + "placeId": [ + 1, + "String!" + ], + "token": [ + 1, + "String!" + ] + } + ], + "getConfigVariablesGrouped": [ + 257 + ], + "getSystemHealthStatus": [ + 268 + ], + "getIndicatorHealthStatus": [ + 274, + { + "indicatorId": [ + 266, + "HealthIndicatorId!" + ] + } + ], + "getQueueMetrics": [ + 278, + { + "queueName": [ + 1, + "String!" + ], + "timeRange": [ + 279 + ] + } + ], + "versionInfo": [ + 272 + ], + "getAdminAiModels": [ + 241 + ], + "getDatabaseConfigVariable": [ + 252, + { + "key": [ + 1, + "String!" + ] + } + ], + "getQueueJobs": [ + 263, + { + "queueName": [ + 1, + "String!" + ], + "state": [ + 261, + "JobState!" + ], + "limit": [ + 21 + ], + "offset": [ + 21 + ] + } + ], + "findAllApplicationRegistrations": [ + 7 + ], + "getPostgresCredentials": [ + 304 + ], + "findManyPublicDomains": [ + 292 + ], + "getEmailingDomains": [ + 294 + ], + "findManyMarketplaceApps": [ + 291 + ], + "findOneMarketplaceApp": [ + 291, + { + "universalIdentifier": [ + 1, + "String!" + ] + } + ], + "findManyApplications": [ + 49 + ], + "findOneApplication": [ + 49, + { + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ] + } + ], + "__typename": [ + 1 + ] + }, + "LogicFunctionIdInput": { + "id": [ + 319 + ], + "__typename": [ + 1 + ] + }, + "ID": {}, + "AgentIdInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "GetApiKeyInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "AgentChatThreadFilter": { + "and": [ + 322 + ], + "or": [ + 322 + ], + "id": [ + 42 + ], + "updatedAt": [ + 323 + ], + "__typename": [ + 1 + ] + }, + "DateFieldComparison": { + "is": [ + 6 + ], + "isNot": [ + 6 + ], + "eq": [ + 4 + ], + "neq": [ + 4 + ], + "gt": [ + 4 + ], + "gte": [ + 4 + ], + "lt": [ + 4 + ], + "lte": [ + 4 + ], + "in": [ + 4 + ], + "notIn": [ + 4 + ], + "between": [ + 324 + ], + "notBetween": [ + 324 + ], + "__typename": [ + 1 + ] + }, + "DateFieldComparisonBetween": { + "lower": [ + 4 + ], + "upper": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "AgentChatThreadSort": { + "field": [ + 326 + ], + "direction": [ + 327 + ], + "nulls": [ + 328 + ], + "__typename": [ + 1 + ] + }, + "AgentChatThreadSortFields": {}, + "SortDirection": {}, + "SortNulls": {}, + "EventLogQueryInput": { + "table": [ + 330 + ], + "filters": [ + 331 + ], + "first": [ + 21 + ], + "after": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "EventLogTable": {}, + "EventLogFiltersInput": { + "eventType": [ + 1 + ], + "userWorkspaceId": [ + 1 + ], + "dateRange": [ + 332 + ], + "recordId": [ + 1 + ], + "objectMetadataId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "EventLogDateRangeInput": { + "start": [ + 4 + ], + "end": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "PieChartDataInput": { + "objectMetadataId": [ + 3 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "LineChartDataInput": { + "objectMetadataId": [ + 3 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "BarChartDataInput": { + "objectMetadataId": [ + 3 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "Mutation": { + "addQueryToEventStream": [ + 6, + { + "input": [ + 337, + "AddQuerySubscriptionInput!" + ] + } + ], + "removeQueryFromEventStream": [ + 6, + { + "input": [ + 338, + "RemoveQueryFromEventStreamInput!" + ] + } + ], + "createObjectEvent": [ + 123, + { + "event": [ + 1, + "String!" + ], + "recordId": [ + 3, + "UUID!" + ], + "objectMetadataId": [ + 3, + "UUID!" + ], + "properties": [ + 15 + ] + } + ], + "trackAnalytics": [ + 123, + { + "type": [ + 339, + "AnalyticsType!" + ], + "name": [ + 1 + ], + "event": [ + 1 + ], + "properties": [ + 15 + ] + } + ], + "createPageLayoutWidget": [ + 76, + { + "input": [ + 340, + "CreatePageLayoutWidgetInput!" + ] + } + ], + "updatePageLayoutWidget": [ + 76, + { + "id": [ + 1, + "String!" + ], + "input": [ + 342, + "UpdatePageLayoutWidgetInput!" + ] + } + ], + "destroyPageLayoutWidget": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "createPageLayoutTab": [ + 111, + { + "input": [ + 343, + "CreatePageLayoutTabInput!" + ] + } + ], + "updatePageLayoutTab": [ + 111, + { + "id": [ + 1, + "String!" + ], + "input": [ + 344, + "UpdatePageLayoutTabInput!" + ] + } + ], + "destroyPageLayoutTab": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "createPageLayout": [ + 112, + { + "input": [ + 345, + "CreatePageLayoutInput!" + ] + } + ], + "updatePageLayout": [ + 112, + { + "id": [ + 1, + "String!" + ], + "input": [ + 346, + "UpdatePageLayoutInput!" + ] + } + ], + "destroyPageLayout": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "updatePageLayoutWithTabsAndWidgets": [ + 112, + { + "id": [ + 1, + "String!" + ], + "input": [ + 347, + "UpdatePageLayoutWithTabsInput!" + ] + } + ], + "deleteOneLogicFunction": [ + 32, + { + "input": [ + 318, + "LogicFunctionIdInput!" + ] + } + ], + "createOneLogicFunction": [ + 32, + { + "input": [ + 350, + "CreateLogicFunctionFromSourceInput!" + ] + } + ], + "executeOneLogicFunction": [ + 216, + { + "input": [ + 351, + "ExecuteOneLogicFunctionInput!" + ] + } + ], + "updateOneLogicFunction": [ + 6, + { + "input": [ + 352, + "UpdateLogicFunctionFromSourceInput!" + ] + } + ], + "createOneObject": [ + 46, + { + "input": [ + 354, + "CreateOneObjectInput!" + ] + } + ], + "deleteOneObject": [ + 46, + { + "input": [ + 356, + "DeleteOneObjectInput!" + ] + } + ], + "updateOneObject": [ + 46, + { + "input": [ + 357, + "UpdateOneObjectInput!" + ] + } + ], + "updateCoreViewField": [ + 50, + { + "input": [ + 359, + "UpdateViewFieldInput!" + ] + } + ], + "createCoreViewField": [ + 50, + { + "input": [ + 361, + "CreateViewFieldInput!" + ] + } + ], + "createManyCoreViewFields": [ + 50, + { + "inputs": [ + 361, + "[CreateViewFieldInput!]!" + ] + } + ], + "deleteCoreViewField": [ + 50, + { + "input": [ + 362, + "DeleteViewFieldInput!" + ] + } + ], + "destroyCoreViewField": [ + 50, + { + "input": [ + 363, + "DestroyViewFieldInput!" + ] + } + ], + "createCoreView": [ + 60, + { + "input": [ + 364, + "CreateViewInput!" + ] + } + ], + "updateCoreView": [ + 60, + { + "id": [ + 1, + "String!" + ], + "input": [ + 365, + "UpdateViewInput!" + ] + } + ], + "deleteCoreView": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "destroyCoreView": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "createCoreViewSort": [ + 57, + { + "input": [ + 366, + "CreateViewSortInput!" + ] + } + ], + "updateCoreViewSort": [ + 57, + { + "input": [ + 367, + "UpdateViewSortInput!" + ] + } + ], + "deleteCoreViewSort": [ + 6, + { + "input": [ + 369, + "DeleteViewSortInput!" + ] + } + ], + "destroyCoreViewSort": [ + 6, + { + "input": [ + 370, + "DestroyViewSortInput!" + ] + } + ], + "createCoreViewGroup": [ + 56, + { + "input": [ + 371, + "CreateViewGroupInput!" + ] + } + ], + "createManyCoreViewGroups": [ + 56, + { + "inputs": [ + 371, + "[CreateViewGroupInput!]!" + ] + } + ], + "updateCoreViewGroup": [ + 56, + { + "input": [ + 372, + "UpdateViewGroupInput!" + ] + } + ], + "deleteCoreViewGroup": [ + 56, + { + "input": [ + 374, + "DeleteViewGroupInput!" + ] + } + ], + "destroyCoreViewGroup": [ + 56, + { + "input": [ + 375, + "DestroyViewGroupInput!" + ] + } + ], + "createCoreViewFilterGroup": [ + 52, + { + "input": [ + 376, + "CreateViewFilterGroupInput!" + ] + } + ], + "updateCoreViewFilterGroup": [ + 52, + { + "id": [ + 1, + "String!" + ], + "input": [ + 377, + "UpdateViewFilterGroupInput!" + ] + } + ], + "deleteCoreViewFilterGroup": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "destroyCoreViewFilterGroup": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "createCoreViewFilter": [ + 54, + { + "input": [ + 378, + "CreateViewFilterInput!" + ] + } + ], + "updateCoreViewFilter": [ + 54, + { + "input": [ + 379, + "UpdateViewFilterInput!" + ] + } + ], + "deleteCoreViewFilter": [ + 54, + { + "input": [ + 381, + "DeleteViewFilterInput!" + ] + } + ], + "destroyCoreViewFilter": [ + 54, + { + "input": [ + 382, + "DestroyViewFilterInput!" + ] + } + ], + "updateCoreViewFieldGroup": [ + 59, + { + "input": [ + 383, + "UpdateViewFieldGroupInput!" + ] + } + ], + "createCoreViewFieldGroup": [ + 59, + { + "input": [ + 385, + "CreateViewFieldGroupInput!" + ] + } + ], + "createManyCoreViewFieldGroups": [ + 59, + { + "inputs": [ + 385, + "[CreateViewFieldGroupInput!]!" + ] + } + ], + "deleteCoreViewFieldGroup": [ + 59, + { + "input": [ + 386, + "DeleteViewFieldGroupInput!" + ] + } + ], + "destroyCoreViewFieldGroup": [ + 59, + { + "input": [ + 387, + "DestroyViewFieldGroupInput!" + ] + } + ], + "upsertFieldsWidget": [ + 60, + { + "input": [ + 388, + "UpsertFieldsWidgetInput!" + ] + } + ], + "createCommandMenuItem": [ + 224, + { + "input": [ + 391, + "CreateCommandMenuItemInput!" + ] + } + ], + "updateCommandMenuItem": [ + 224, + { + "input": [ + 392, + "UpdateCommandMenuItemInput!" + ] + } + ], + "deleteCommandMenuItem": [ + 224, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "createFrontComponent": [ + 223, + { + "input": [ + 393, + "CreateFrontComponentInput!" + ] + } + ], + "updateFrontComponent": [ + 223, + { + "input": [ + 394, + "UpdateFrontComponentInput!" + ] + } + ], + "deleteFrontComponent": [ + 223, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "createOneAgent": [ + 25, + { + "input": [ + 396, + "CreateAgentInput!" + ] + } + ], + "updateOneAgent": [ + 25, + { + "input": [ + 397, + "UpdateAgentInput!" + ] + } + ], + "deleteOneAgent": [ + 25, + { + "input": [ + 320, + "AgentIdInput!" + ] + } + ], + "uploadAIChatFile": [ + 147, + { + "file": [ + 398, + "Upload!" + ] + } + ], + "uploadWorkflowFile": [ + 147, + { + "file": [ + 398, + "Upload!" + ] + } + ], + "uploadWorkspaceLogo": [ + 147, + { + "file": [ + 398, + "Upload!" + ] + } + ], + "uploadWorkspaceMemberProfilePicture": [ + 147, + { + "file": [ + 398, + "Upload!" + ] + } + ], + "uploadFilesFieldFile": [ + 147, + { + "file": [ + 398, + "Upload!" + ], + "fieldMetadataId": [ + 1, + "String!" + ] + } + ], + "uploadFilesFieldFileByUniversalIdentifier": [ + 147, + { + "file": [ + 398, + "Upload!" + ], + "fieldMetadataUniversalIdentifier": [ + 1, + "String!" + ] + } + ], + "checkoutSession": [ + 143, + { + "recurringInterval": [ + 131, + "SubscriptionInterval!" + ], + "plan": [ + 127, + "BillingPlanKey!" + ], + "requirePaymentMethod": [ + 6, + "Boolean!" + ], + "successUrlPath": [ + 1 + ] + } + ], + "switchSubscriptionInterval": [ + 144 + ], + "switchBillingPlan": [ + 144 + ], + "cancelSwitchBillingPlan": [ + 144 + ], + "cancelSwitchBillingInterval": [ + 144 + ], + "setMeteredSubscriptionPrice": [ + 144, + { + "priceId": [ + 1, + "String!" + ] + } + ], + "endSubscriptionTrialPeriod": [ + 140 + ], + "cancelSwitchMeteredPrice": [ + 144 + ], + "createNavigationMenuItem": [ + 215, + { + "input": [ + 399, + "CreateNavigationMenuItemInput!" + ] + } + ], + "updateNavigationMenuItem": [ + 215, + { + "input": [ + 400, + "UpdateOneNavigationMenuItemInput!" + ] + } + ], + "deleteNavigationMenuItem": [ + 215, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "createApiKey": [ + 2, + { + "input": [ + 402, + "CreateApiKeyInput!" + ] + } + ], + "updateApiKey": [ + 2, + { + "input": [ + 403, + "UpdateApiKeyInput!" + ] + } + ], + "revokeApiKey": [ + 2, + { + "input": [ + 404, + "RevokeApiKeyInput!" + ] + } + ], + "assignRoleToApiKey": [ + 6, + { + "apiKeyId": [ + 3, + "UUID!" + ], + "roleId": [ + 3, + "UUID!" + ] + } + ], + "updateWorkspaceMemberRole": [ + 20, + { + "workspaceMemberId": [ + 3, + "UUID!" + ], + "roleId": [ + 3, + "UUID!" + ] + } + ], + "createOneRole": [ + 29, + { + "createRoleInput": [ + 405, + "CreateRoleInput!" + ] + } + ], + "updateOneRole": [ + 29, + { + "updateRoleInput": [ + 406, + "UpdateRoleInput!" + ] + } + ], + "deleteOneRole": [ + 1, + { + "roleId": [ + 3, + "UUID!" + ] + } + ], + "upsertObjectPermissions": [ + 16, + { + "upsertObjectPermissionsInput": [ + 408, + "UpsertObjectPermissionsInput!" + ] + } + ], + "upsertPermissionFlags": [ + 27, + { + "upsertPermissionFlagsInput": [ + 410, + "UpsertPermissionFlagsInput!" + ] + } + ], + "upsertFieldPermissions": [ + 26, + { + "upsertFieldPermissionsInput": [ + 411, + "UpsertFieldPermissionsInput!" + ] + } + ], + "upsertRowLevelPermissionPredicates": [ + 180, + { + "input": [ + 413, + "UpsertRowLevelPermissionPredicatesInput!" + ] + } + ], + "assignRoleToAgent": [ + 6, + { + "agentId": [ + 3, + "UUID!" + ], + "roleId": [ + 3, + "UUID!" + ] + } + ], + "removeRoleFromAgent": [ + 6, + { + "agentId": [ + 3, + "UUID!" + ] + } + ], + "skipSyncEmailOnboardingStep": [ + 145 + ], + "skipBookOnboardingStep": [ + 145 + ], + "deleteWorkspaceInvitation": [ + 1, + { + "appTokenId": [ + 1, + "String!" + ] + } + ], + "resendWorkspaceInvitation": [ + 149, + { + "appTokenId": [ + 1, + "String!" + ] + } + ], + "sendInvitations": [ + 149, + { + "emails": [ + 1, + "[String!]!" + ], + "roleId": [ + 3 + ] + } + ], + "createApprovedAccessDomain": [ + 146, + { + "input": [ + 416, + "CreateApprovedAccessDomainInput!" + ] + } + ], + "deleteApprovedAccessDomain": [ + 6, + { + "input": [ + 417, + "DeleteApprovedAccessDomainInput!" + ] + } + ], + "validateApprovedAccessDomain": [ + 146, + { + "input": [ + 418, + "ValidateApprovedAccessDomainInput!" + ] + } + ], + "createOneField": [ + 34, + { + "input": [ + 419, + "CreateOneFieldMetadataInput!" + ] + } + ], + "updateOneField": [ + 34, + { + "input": [ + 421, + "UpdateOneFieldMetadataInput!" + ] + } + ], + "deleteOneField": [ + 34, + { + "input": [ + 423, + "DeleteOneFieldInput!" + ] + } + ], + "deleteUser": [ + 69 + ], + "deleteUserFromWorkspace": [ + 17, + { + "workspaceMemberIdToDelete": [ + 1, + "String!" + ] + } + ], + "updateUserEmail": [ + 6, + { + "newEmail": [ + 1, + "String!" + ], + "verifyEmailRedirectPath": [ + 1 + ] + } + ], + "resendEmailVerificationToken": [ + 150, + { + "email": [ + 1, + "String!" + ], + "origin": [ + 1, + "String!" + ] + } + ], + "activateWorkspace": [ + 66, + { + "data": [ + 424, + "ActivateWorkspaceInput!" + ] + } + ], + "updateWorkspace": [ + 66, + { + "data": [ + 425, + "UpdateWorkspaceInput!" + ] + } + ], + "deleteCurrentWorkspace": [ + 66 + ], + "checkCustomDomainValidRecords": [ + 161 + ], + "getAuthorizationUrlForSSO": [ + 202, + { + "input": [ + 426, + "GetAuthorizationUrlForSSOInput!" + ] + } + ], + "getLoginTokenFromCredentials": [ + 211, + { + "email": [ + 1, + "String!" + ], + "password": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ], + "locale": [ + 1 + ], + "verifyEmailRedirectPath": [ + 1 + ], + "origin": [ + 1, + "String!" + ] + } + ], + "signIn": [ + 200, + { + "email": [ + 1, + "String!" + ], + "password": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ], + "locale": [ + 1 + ], + "verifyEmailRedirectPath": [ + 1 + ] + } + ], + "verifyEmailAndGetLoginToken": [ + 208, + { + "emailVerificationToken": [ + 1, + "String!" + ], + "email": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ], + "origin": [ + 1, + "String!" + ] + } + ], + "verifyEmailAndGetWorkspaceAgnosticToken": [ + 200, + { + "emailVerificationToken": [ + 1, + "String!" + ], + "email": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ] + } + ], + "getAuthTokensFromOTP": [ + 210, + { + "otp": [ + 1, + "String!" + ], + "loginToken": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ], + "origin": [ + 1, + "String!" + ] + } + ], + "signUp": [ + 200, + { + "email": [ + 1, + "String!" + ], + "password": [ + 1, + "String!" + ], + "captchaToken": [ + 1 + ], + "locale": [ + 1 + ], + "verifyEmailRedirectPath": [ + 1 + ] + } + ], + "signUpInWorkspace": [ + 205, + { + "email": [ + 1, + "String!" + ], + "password": [ + 1, + "String!" + ], + "workspaceId": [ + 3 + ], + "workspaceInviteHash": [ + 1 + ], + "workspacePersonalInviteToken": [ + 1 + ], + "captchaToken": [ + 1 + ], + "locale": [ + 1 + ], + "verifyEmailRedirectPath": [ + 1 + ] + } + ], + "signUpInNewWorkspace": [ + 205 + ], + "generateTransientToken": [ + 206 + ], + "getAuthTokensFromLoginToken": [ + 210, + { + "loginToken": [ + 1, + "String!" + ], + "origin": [ + 1, + "String!" + ] + } + ], + "authorizeApp": [ + 197, + { + "clientId": [ + 1, + "String!" + ], + "codeChallenge": [ + 1 + ], + "redirectUrl": [ + 1, + "String!" + ], + "state": [ + 1 + ], + "scope": [ + 1 + ] + } + ], + "renewToken": [ + 210, + { + "appToken": [ + 1, + "String!" + ] + } + ], + "generateApiKeyToken": [ + 209, + { + "apiKeyId": [ + 3, + "UUID!" + ], + "expiresAt": [ + 1, + "String!" + ] + } + ], + "emailPasswordResetLink": [ + 201, + { + "email": [ + 1, + "String!" + ], + "workspaceId": [ + 3 + ] + } + ], + "updatePasswordViaResetToken": [ + 203, + { + "passwordResetToken": [ + 1, + "String!" + ], + "newPassword": [ + 1, + "String!" + ] + } + ], + "createApplicationRegistration": [ + 186, + { + "input": [ + 427, + "CreateApplicationRegistrationInput!" + ] + } + ], + "updateApplicationRegistration": [ + 7, + { + "input": [ + 428, + "UpdateApplicationRegistrationInput!" + ] + } + ], + "deleteApplicationRegistration": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "rotateApplicationRegistrationClientSecret": [ + 188, + { + "id": [ + 1, + "String!" + ] + } + ], + "createApplicationRegistrationVariable": [ + 5, + { + "input": [ + 430, + "CreateApplicationRegistrationVariableInput!" + ] + } + ], + "updateApplicationRegistrationVariable": [ + 5, + { + "input": [ + 431, + "UpdateApplicationRegistrationVariableInput!" + ] + } + ], + "deleteApplicationRegistrationVariable": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "uploadAppTarball": [ + 7, + { + "file": [ + 398, + "Upload!" + ], + "universalIdentifier": [ + 1 + ] + } + ], + "transferApplicationRegistrationOwnership": [ + 7, + { + "applicationRegistrationId": [ + 1, + "String!" + ], + "targetWorkspaceSubdomain": [ + 1, + "String!" + ] + } + ], + "initiateOTPProvisioning": [ + 195, + { + "loginToken": [ + 1, + "String!" + ], + "origin": [ + 1, + "String!" + ] + } + ], + "initiateOTPProvisioningForAuthenticatedUser": [ + 195 + ], + "deleteTwoFactorAuthenticationMethod": [ + 194, + { + "twoFactorAuthenticationMethodId": [ + 3, + "UUID!" + ] + } + ], + "verifyTwoFactorAuthenticationMethodForAuthenticatedUser": [ + 196, + { + "otp": [ + 1, + "String!" + ] + } + ], + "createOIDCIdentityProvider": [ + 193, + { + "input": [ + 433, + "SetupOIDCSsoInput!" + ] + } + ], + "createSAMLIdentityProvider": [ + 193, + { + "input": [ + 434, + "SetupSAMLSsoInput!" + ] + } + ], + "deleteSSOIdentityProvider": [ + 189, + { + "input": [ + 435, + "DeleteSsoInput!" + ] + } + ], + "editSSOIdentityProvider": [ + 190, + { + "input": [ + 436, + "EditSsoInput!" + ] + } + ], + "createWebhook": [ + 234, + { + "input": [ + 437, + "CreateWebhookInput!" + ] + } + ], + "updateWebhook": [ + 234, + { + "input": [ + 438, + "UpdateWebhookInput!" + ] + } + ], + "deleteWebhook": [ + 234, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "createChatThread": [ + 226 + ], + "createSkill": [ + 221, + { + "input": [ + 440, + "CreateSkillInput!" + ] + } + ], + "updateSkill": [ + 221, + { + "input": [ + 441, + "UpdateSkillInput!" + ] + } + ], + "deleteSkill": [ + 221, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "activateSkill": [ + 221, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "deactivateSkill": [ + 221, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "evaluateAgentTurn": [ + 232, + { + "turnId": [ + 3, + "UUID!" + ] + } + ], + "runEvaluationInput": [ + 233, + { + "agentId": [ + 3, + "UUID!" + ], + "input": [ + 1, + "String!" + ] + } + ], + "duplicateDashboard": [ + 313, + { + "id": [ + 3, + "UUID!" + ] + } + ], + "impersonate": [ + 280, + { + "userId": [ + 3, + "UUID!" + ], + "workspaceId": [ + 3, + "UUID!" + ] + } + ], + "startChannelSync": [ + 305, + { + "connectedAccountId": [ + 3, + "UUID!" + ] + } + ], + "saveImapSmtpCaldavAccount": [ + 303, + { + "accountOwnerId": [ + 3, + "UUID!" + ], + "handle": [ + 1, + "String!" + ], + "connectionParameters": [ + 442, + "EmailAccountConnectionParameters!" + ], + "id": [ + 3 + ] + } + ], + "updateLabPublicFeatureFlag": [ + 162, + { + "input": [ + 444, + "UpdateLabPublicFeatureFlagInput!" + ] + } + ], + "userLookupAdminPanel": [ + 271, + { + "userIdentifier": [ + 1, + "String!" + ] + } + ], + "updateWorkspaceFeatureFlag": [ + 6, + { + "workspaceId": [ + 3, + "UUID!" + ], + "featureFlag": [ + 1, + "String!" + ], + "value": [ + 6, + "Boolean!" + ] + } + ], + "setAdminAiModelEnabled": [ + 6, + { + "modelId": [ + 1, + "String!" + ], + "enabled": [ + 6, + "Boolean!" + ] + } + ], + "createDatabaseConfigVariable": [ + 6, + { + "key": [ + 1, + "String!" + ], + "value": [ + 15, + "JSON!" + ] + } + ], + "updateDatabaseConfigVariable": [ + 6, + { + "key": [ + 1, + "String!" + ], + "value": [ + 15, + "JSON!" + ] + } + ], + "deleteDatabaseConfigVariable": [ + 6, + { + "key": [ + 1, + "String!" + ] + } + ], + "retryJobs": [ + 264, + { + "queueName": [ + 1, + "String!" + ], + "jobIds": [ + 1, + "[String!]!" + ] + } + ], + "deleteJobs": [ + 259, + { + "queueName": [ + 1, + "String!" + ], + "jobIds": [ + 1, + "[String!]!" + ] + } + ], + "enablePostgresProxy": [ + 304 + ], + "disablePostgresProxy": [ + 304 + ], + "createPublicDomain": [ + 292, + { + "domain": [ + 1, + "String!" + ] + } + ], + "deletePublicDomain": [ + 6, + { + "domain": [ + 1, + "String!" + ] + } + ], + "checkPublicDomainValidRecords": [ + 161, + { + "domain": [ + 1, + "String!" + ] + } + ], + "createEmailingDomain": [ + 294, + { + "domain": [ + 1, + "String!" + ], + "driver": [ + 295, + "EmailingDomainDriver!" + ] + } + ], + "deleteEmailingDomain": [ + 6, + { + "id": [ + 1, + "String!" + ] + } + ], + "verifyEmailingDomain": [ + 294, + { + "id": [ + 1, + "String!" + ] + } + ], + "createOneAppToken": [ + 68, + { + "input": [ + 445, + "CreateOneAppTokenInput!" + ] + } + ], + "installMarketplaceApp": [ + 6, + { + "universalIdentifier": [ + 1, + "String!" + ], + "version": [ + 1 + ] + } + ], + "installApplication": [ + 6, + { + "appRegistrationId": [ + 1, + "String!" + ], + "version": [ + 1 + ] + } + ], + "runWorkspaceMigration": [ + 6, + { + "workspaceMigration": [ + 447, + "WorkspaceMigrationInput!" + ] + } + ], + "uninstallApplication": [ + 6, + { + "universalIdentifier": [ + 1, + "String!" + ] + } + ], + "updateOneApplicationVariable": [ + 6, + { + "key": [ + 1, + "String!" + ], + "value": [ + 1, + "String!" + ], + "applicationId": [ + 3, + "UUID!" + ] + } + ], + "createDevelopmentApplication": [ + 281, + { + "universalIdentifier": [ + 1, + "String!" + ], + "name": [ + 1, + "String!" + ] + } + ], + "generateApplicationToken": [ + 222, + { + "applicationId": [ + 3, + "UUID!" + ] + } + ], + "syncApplication": [ + 282, + { + "manifest": [ + 15, + "JSON!" + ] + } + ], + "uploadApplicationFile": [ + 283, + { + "file": [ + 398, + "Upload!" + ], + "applicationUniversalIdentifier": [ + 1, + "String!" + ], + "fileFolder": [ + 451, + "FileFolder!" + ], + "filePath": [ + 1, + "String!" + ] + } + ], + "upgradeApplication": [ + 6, + { + "appRegistrationId": [ + 1, + "String!" + ], + "targetVersion": [ + 1, + "String!" + ] + } + ], + "renewApplicationToken": [ + 222, + { + "applicationRefreshToken": [ + 1, + "String!" + ] + } + ], + "__typename": [ + 1 + ] + }, + "AddQuerySubscriptionInput": { + "eventStreamId": [ + 1 + ], + "queryId": [ + 1 + ], + "operationSignature": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "RemoveQueryFromEventStreamInput": { + "eventStreamId": [ + 1 + ], + "queryId": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "AnalyticsType": {}, + "CreatePageLayoutWidgetInput": { + "pageLayoutTabId": [ + 3 + ], + "title": [ + 1 + ], + "type": [ + 77 + ], + "objectMetadataId": [ + 3 + ], + "gridPosition": [ + 341 + ], + "position": [ + 15 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "GridPositionInput": { + "row": [ + 11 + ], + "column": [ + 11 + ], + "rowSpan": [ + 11 + ], + "columnSpan": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutWidgetInput": { + "title": [ + 1 + ], + "type": [ + 77 + ], + "objectMetadataId": [ + 3 + ], + "gridPosition": [ + 341 + ], + "position": [ + 15 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "CreatePageLayoutTabInput": { + "title": [ + 1 + ], + "position": [ + 11 + ], + "pageLayoutId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutTabInput": { + "title": [ + 1 + ], + "position": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "CreatePageLayoutInput": { + "name": [ + 1 + ], + "type": [ + 113 + ], + "objectMetadataId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutInput": { + "name": [ + 1 + ], + "type": [ + 113 + ], + "objectMetadataId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutWithTabsInput": { + "name": [ + 1 + ], + "type": [ + 113 + ], + "objectMetadataId": [ + 3 + ], + "tabs": [ + 348 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutTabWithWidgetsInput": { + "id": [ + 3 + ], + "title": [ + 1 + ], + "position": [ + 11 + ], + "widgets": [ + 349 + ], + "__typename": [ + 1 + ] + }, + "UpdatePageLayoutWidgetWithIdInput": { + "id": [ + 3 + ], + "pageLayoutTabId": [ + 3 + ], + "title": [ + 1 + ], + "type": [ + 77 + ], + "objectMetadataId": [ + 3 + ], + "gridPosition": [ + 341 + ], + "position": [ + 15 + ], + "configuration": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "CreateLogicFunctionFromSourceInput": { + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "timeoutSeconds": [ + 11 + ], + "toolInputSchema": [ + 15 + ], + "isTool": [ + 6 + ], + "source": [ + 15 + ], + "cronTriggerSettings": [ + 15 + ], + "databaseEventTriggerSettings": [ + 15 + ], + "httpRouteTriggerSettings": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "ExecuteOneLogicFunctionInput": { + "id": [ + 3 + ], + "payload": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "UpdateLogicFunctionFromSourceInput": { + "id": [ + 3 + ], + "update": [ + 353 + ], + "__typename": [ + 1 + ] + }, + "UpdateLogicFunctionFromSourceInputUpdates": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "timeoutSeconds": [ + 11 + ], + "sourceHandlerCode": [ + 1 + ], + "toolInputSchema": [ + 15 + ], + "handlerName": [ + 1 + ], + "sourceHandlerPath": [ + 1 + ], + "isTool": [ + 6 + ], + "cronTriggerSettings": [ + 15 + ], + "databaseEventTriggerSettings": [ + 15 + ], + "httpRouteTriggerSettings": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "CreateOneObjectInput": { + "object": [ + 355 + ], + "__typename": [ + 1 + ] + }, + "CreateObjectInput": { + "nameSingular": [ + 1 + ], + "namePlural": [ + 1 + ], + "labelSingular": [ + 1 + ], + "labelPlural": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "shortcut": [ + 1 + ], + "skipNameField": [ + 6 + ], + "isRemote": [ + 6 + ], + "primaryKeyColumnType": [ + 1 + ], + "primaryKeyFieldMetadataSettings": [ + 15 + ], + "isLabelSyncedWithName": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "DeleteOneObjectInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateOneObjectInput": { + "update": [ + 358 + ], + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateObjectPayload": { + "labelSingular": [ + 1 + ], + "labelPlural": [ + 1 + ], + "nameSingular": [ + 1 + ], + "namePlural": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "shortcut": [ + 1 + ], + "isActive": [ + 6 + ], + "labelIdentifierFieldMetadataId": [ + 3 + ], + "imageIdentifierFieldMetadataId": [ + 3 + ], + "isLabelSyncedWithName": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFieldInput": { + "id": [ + 3 + ], + "update": [ + 360 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFieldInputUpdates": { + "isVisible": [ + 6 + ], + "size": [ + 11 + ], + "position": [ + 11 + ], + "aggregateOperation": [ + 51 + ], + "viewFieldGroupId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateViewFieldInput": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "viewId": [ + 3 + ], + "isVisible": [ + 6 + ], + "size": [ + 11 + ], + "position": [ + 11 + ], + "aggregateOperation": [ + 51 + ], + "viewFieldGroupId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DeleteViewFieldInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DestroyViewFieldInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateViewInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "objectMetadataId": [ + 3 + ], + "type": [ + 61 + ], + "key": [ + 62 + ], + "icon": [ + 1 + ], + "position": [ + 11 + ], + "isCompact": [ + 6 + ], + "shouldHideEmptyGroups": [ + 6 + ], + "openRecordIn": [ + 63 + ], + "kanbanAggregateOperation": [ + 51 + ], + "kanbanAggregateOperationFieldMetadataId": [ + 3 + ], + "anyFieldFilterValue": [ + 1 + ], + "calendarLayout": [ + 64 + ], + "calendarFieldMetadataId": [ + 3 + ], + "mainGroupByFieldMetadataId": [ + 3 + ], + "visibility": [ + 65 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "type": [ + 61 + ], + "icon": [ + 1 + ], + "position": [ + 11 + ], + "isCompact": [ + 6 + ], + "openRecordIn": [ + 63 + ], + "kanbanAggregateOperation": [ + 51 + ], + "kanbanAggregateOperationFieldMetadataId": [ + 3 + ], + "anyFieldFilterValue": [ + 1 + ], + "calendarLayout": [ + 64 + ], + "calendarFieldMetadataId": [ + 3 + ], + "visibility": [ + 65 + ], + "mainGroupByFieldMetadataId": [ + 3 + ], + "shouldHideEmptyGroups": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "CreateViewSortInput": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "direction": [ + 58 + ], + "viewId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewSortInput": { + "id": [ + 3 + ], + "update": [ + 368 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewSortInputUpdates": { + "direction": [ + 58 + ], + "__typename": [ + 1 + ] + }, + "DeleteViewSortInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DestroyViewSortInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateViewGroupInput": { + "id": [ + 3 + ], + "isVisible": [ + 6 + ], + "fieldValue": [ + 1 + ], + "position": [ + 11 + ], + "viewId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewGroupInput": { + "id": [ + 3 + ], + "update": [ + 373 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewGroupInputUpdates": { + "fieldMetadataId": [ + 3 + ], + "isVisible": [ + 6 + ], + "fieldValue": [ + 1 + ], + "position": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "DeleteViewGroupInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DestroyViewGroupInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateViewFilterGroupInput": { + "id": [ + 3 + ], + "parentViewFilterGroupId": [ + 3 + ], + "logicalOperator": [ + 53 + ], + "positionInViewFilterGroup": [ + 11 + ], + "viewId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFilterGroupInput": { + "id": [ + 3 + ], + "parentViewFilterGroupId": [ + 3 + ], + "logicalOperator": [ + 53 + ], + "positionInViewFilterGroup": [ + 11 + ], + "viewId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateViewFilterInput": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "operand": [ + 55 + ], + "value": [ + 15 + ], + "viewFilterGroupId": [ + 3 + ], + "positionInViewFilterGroup": [ + 11 + ], + "subFieldName": [ + 1 + ], + "viewId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFilterInput": { + "id": [ + 3 + ], + "update": [ + 380 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFilterInputUpdates": { + "fieldMetadataId": [ + 3 + ], + "operand": [ + 55 + ], + "value": [ + 15 + ], + "viewFilterGroupId": [ + 3 + ], + "positionInViewFilterGroup": [ + 11 + ], + "subFieldName": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DeleteViewFilterInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DestroyViewFilterInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFieldGroupInput": { + "id": [ + 3 + ], + "update": [ + 384 + ], + "__typename": [ + 1 + ] + }, + "UpdateViewFieldGroupInputUpdates": { + "name": [ + 1 + ], + "position": [ + 11 + ], + "isVisible": [ + 6 + ], + "deletedAt": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CreateViewFieldGroupInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "viewId": [ + 3 + ], + "position": [ + 11 + ], + "isVisible": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "DeleteViewFieldGroupInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "DestroyViewFieldGroupInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpsertFieldsWidgetInput": { + "widgetId": [ + 3 + ], + "groups": [ + 389 + ], + "fields": [ + 390 + ], + "__typename": [ + 1 + ] + }, + "UpsertFieldsWidgetGroupInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "position": [ + 11 + ], + "isVisible": [ + 6 + ], + "fields": [ + 390 + ], + "__typename": [ + 1 + ] + }, + "UpsertFieldsWidgetFieldInput": { + "viewFieldId": [ + 3 + ], + "isVisible": [ + 6 + ], + "position": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "CreateCommandMenuItemInput": { + "workflowVersionId": [ + 3 + ], + "frontComponentId": [ + 3 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "shortLabel": [ + 1 + ], + "position": [ + 11 + ], + "isPinned": [ + 6 + ], + "availabilityType": [ + 225 + ], + "conditionalAvailabilityExpression": [ + 1 + ], + "availabilityObjectMetadataId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateCommandMenuItemInput": { + "id": [ + 3 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "shortLabel": [ + 1 + ], + "position": [ + 11 + ], + "isPinned": [ + 6 + ], + "availabilityType": [ + 225 + ], + "availabilityObjectMetadataId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateFrontComponentInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "description": [ + 1 + ], + "sourceComponentPath": [ + 1 + ], + "builtComponentPath": [ + 1 + ], + "componentName": [ + 1 + ], + "builtComponentChecksum": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateFrontComponentInput": { + "id": [ + 3 + ], + "update": [ + 395 + ], + "__typename": [ + 1 + ] + }, + "UpdateFrontComponentInputUpdates": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CreateAgentInput": { + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "prompt": [ + 1 + ], + "modelId": [ + 1 + ], + "roleId": [ + 3 + ], + "responseFormat": [ + 15 + ], + "modelConfiguration": [ + 15 + ], + "evaluationInputs": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateAgentInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "prompt": [ + 1 + ], + "modelId": [ + 1 + ], + "roleId": [ + 3 + ], + "responseFormat": [ + 15 + ], + "modelConfiguration": [ + 15 + ], + "evaluationInputs": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "Upload": {}, + "CreateNavigationMenuItemInput": { + "userWorkspaceId": [ + 3 + ], + "targetRecordId": [ + 3 + ], + "targetObjectMetadataId": [ + 3 + ], + "viewId": [ + 3 + ], + "name": [ + 1 + ], + "link": [ + 1 + ], + "icon": [ + 1 + ], + "color": [ + 1 + ], + "folderId": [ + 3 + ], + "position": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "UpdateOneNavigationMenuItemInput": { + "id": [ + 3 + ], + "update": [ + 401 + ], + "__typename": [ + 1 + ] + }, + "UpdateNavigationMenuItemInput": { + "folderId": [ + 3 + ], + "position": [ + 11 + ], + "name": [ + 1 + ], + "link": [ + 1 + ], + "icon": [ + 1 + ], + "color": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CreateApiKeyInput": { + "name": [ + 1 + ], + "expiresAt": [ + 1 + ], + "revokedAt": [ + 1 + ], + "roleId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateApiKeyInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "expiresAt": [ + 1 + ], + "revokedAt": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "RevokeApiKeyInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateRoleInput": { + "id": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "canUpdateAllSettings": [ + 6 + ], + "canAccessAllTools": [ + 6 + ], + "canReadAllObjectRecords": [ + 6 + ], + "canUpdateAllObjectRecords": [ + 6 + ], + "canSoftDeleteAllObjectRecords": [ + 6 + ], + "canDestroyAllObjectRecords": [ + 6 + ], + "canBeAssignedToUsers": [ + 6 + ], + "canBeAssignedToAgents": [ + 6 + ], + "canBeAssignedToApiKeys": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpdateRoleInput": { + "update": [ + 407 + ], + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "UpdateRolePayload": { + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "canUpdateAllSettings": [ + 6 + ], + "canAccessAllTools": [ + 6 + ], + "canReadAllObjectRecords": [ + 6 + ], + "canUpdateAllObjectRecords": [ + 6 + ], + "canSoftDeleteAllObjectRecords": [ + 6 + ], + "canDestroyAllObjectRecords": [ + 6 + ], + "canBeAssignedToUsers": [ + 6 + ], + "canBeAssignedToAgents": [ + 6 + ], + "canBeAssignedToApiKeys": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpsertObjectPermissionsInput": { + "roleId": [ + 3 + ], + "objectPermissions": [ + 409 + ], + "__typename": [ + 1 + ] + }, + "ObjectPermissionInput": { + "objectMetadataId": [ + 3 + ], + "canReadObjectRecords": [ + 6 + ], + "canUpdateObjectRecords": [ + 6 + ], + "canSoftDeleteObjectRecords": [ + 6 + ], + "canDestroyObjectRecords": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpsertPermissionFlagsInput": { + "roleId": [ + 3 + ], + "permissionFlagKeys": [ + 18 + ], + "__typename": [ + 1 + ] + }, + "UpsertFieldPermissionsInput": { + "roleId": [ + 3 + ], + "fieldPermissions": [ + 412 + ], + "__typename": [ + 1 + ] + }, + "FieldPermissionInput": { + "objectMetadataId": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "canReadFieldValue": [ + 6 + ], + "canUpdateFieldValue": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpsertRowLevelPermissionPredicatesInput": { + "roleId": [ + 3 + ], + "objectMetadataId": [ + 3 + ], + "predicates": [ + 414 + ], + "predicateGroups": [ + 415 + ], + "__typename": [ + 1 + ] + }, + "RowLevelPermissionPredicateInput": { + "id": [ + 3 + ], + "fieldMetadataId": [ + 3 + ], + "operand": [ + 14 + ], + "value": [ + 15 + ], + "subFieldName": [ + 1 + ], + "workspaceMemberFieldMetadataId": [ + 1 + ], + "workspaceMemberSubFieldName": [ + 1 + ], + "rowLevelPermissionPredicateGroupId": [ + 3 + ], + "positionInRowLevelPermissionPredicateGroup": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "RowLevelPermissionPredicateGroupInput": { + "id": [ + 3 + ], + "objectMetadataId": [ + 3 + ], + "parentRowLevelPermissionPredicateGroupId": [ + 3 + ], + "logicalOperator": [ + 12 + ], + "positionInRowLevelPermissionPredicateGroup": [ + 11 + ], + "__typename": [ + 1 + ] + }, + "CreateApprovedAccessDomainInput": { + "domain": [ + 1 + ], + "email": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DeleteApprovedAccessDomainInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "ValidateApprovedAccessDomainInput": { + "validationToken": [ + 1 + ], + "approvedAccessDomainId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "CreateOneFieldMetadataInput": { + "field": [ + 420 + ], + "__typename": [ + 1 + ] + }, + "CreateFieldInput": { + "type": [ + 35 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "isCustom": [ + 6 + ], + "isActive": [ + 6 + ], + "isSystem": [ + 6 + ], + "isUIReadOnly": [ + 6 + ], + "isNullable": [ + 6 + ], + "isUnique": [ + 6 + ], + "defaultValue": [ + 15 + ], + "options": [ + 15 + ], + "settings": [ + 15 + ], + "isLabelSyncedWithName": [ + 6 + ], + "objectMetadataId": [ + 3 + ], + "isRemoteCreation": [ + 6 + ], + "relationCreationPayload": [ + 15 + ], + "morphRelationsCreationPayload": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "UpdateOneFieldMetadataInput": { + "id": [ + 3 + ], + "update": [ + 422 + ], + "__typename": [ + 1 + ] + }, + "UpdateFieldInput": { + "universalIdentifier": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "description": [ + 1 + ], + "icon": [ + 1 + ], + "isActive": [ + 6 + ], + "isSystem": [ + 6 + ], + "isUIReadOnly": [ + 6 + ], + "isNullable": [ + 6 + ], + "isUnique": [ + 6 + ], + "defaultValue": [ + 15 + ], + "options": [ + 15 + ], + "settings": [ + 15 + ], + "isLabelSyncedWithName": [ + 6 + ], + "morphRelationsUpdatePayload": [ + 15 + ], + "__typename": [ + 1 + ] + }, + "DeleteOneFieldInput": { + "id": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "ActivateWorkspaceInput": { + "displayName": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateWorkspaceInput": { + "subdomain": [ + 1 + ], + "customDomain": [ + 1 + ], + "displayName": [ + 1 + ], + "logo": [ + 1 + ], + "inviteHash": [ + 1 + ], + "isPublicInviteLinkEnabled": [ + 6 + ], + "allowImpersonation": [ + 6 + ], + "isGoogleAuthEnabled": [ + 6 + ], + "isMicrosoftAuthEnabled": [ + 6 + ], + "isPasswordAuthEnabled": [ + 6 + ], + "isGoogleAuthBypassEnabled": [ + 6 + ], + "isMicrosoftAuthBypassEnabled": [ + 6 + ], + "isPasswordAuthBypassEnabled": [ + 6 + ], + "defaultRoleId": [ + 3 + ], + "isTwoFactorAuthenticationEnforced": [ + 6 + ], + "trashRetentionDays": [ + 11 + ], + "eventLogRetentionDays": [ + 11 + ], + "fastModel": [ + 1 + ], + "smartModel": [ + 1 + ], + "aiAdditionalInstructions": [ + 1 + ], + "editableProfileFields": [ + 1 + ], + "autoEnableNewAiModels": [ + 6 + ], + "disabledAiModelIds": [ + 1 + ], + "enabledAiModelIds": [ + 1 + ], + "useRecommendedModels": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "GetAuthorizationUrlForSSOInput": { + "identityProviderId": [ + 3 + ], + "workspaceInviteHash": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CreateApplicationRegistrationInput": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "logoUrl": [ + 1 + ], + "author": [ + 1 + ], + "universalIdentifier": [ + 1 + ], + "oAuthRedirectUris": [ + 1 + ], + "oAuthScopes": [ + 1 + ], + "websiteUrl": [ + 1 + ], + "termsUrl": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateApplicationRegistrationInput": { + "id": [ + 1 + ], + "update": [ + 429 + ], + "__typename": [ + 1 + ] + }, + "UpdateApplicationRegistrationPayload": { + "name": [ + 1 + ], + "description": [ + 1 + ], + "logoUrl": [ + 1 + ], + "author": [ + 1 + ], + "oAuthRedirectUris": [ + 1 + ], + "oAuthScopes": [ + 1 + ], + "websiteUrl": [ + 1 + ], + "termsUrl": [ + 1 + ], + "isListed": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "CreateApplicationRegistrationVariableInput": { + "applicationRegistrationId": [ + 1 + ], + "key": [ + 1 + ], + "value": [ + 1 + ], + "description": [ + 1 + ], + "isSecret": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpdateApplicationRegistrationVariableInput": { + "id": [ + 1 + ], + "update": [ + 432 + ], + "__typename": [ + 1 + ] + }, + "UpdateApplicationRegistrationVariablePayload": { + "value": [ + 1 + ], + "description": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "SetupOIDCSsoInput": { + "name": [ + 1 + ], + "issuer": [ + 1 + ], + "clientID": [ + 1 + ], + "clientSecret": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "SetupSAMLSsoInput": { + "name": [ + 1 + ], + "issuer": [ + 1 + ], + "id": [ + 3 + ], + "ssoURL": [ + 1 + ], + "certificate": [ + 1 + ], + "fingerprint": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "DeleteSsoInput": { + "identityProviderId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "EditSsoInput": { + "id": [ + 3 + ], + "status": [ + 154 + ], + "__typename": [ + 1 + ] + }, + "CreateWebhookInput": { + "id": [ + 3 + ], + "targetUrl": [ + 1 + ], + "operations": [ + 1 + ], + "description": [ + 1 + ], + "secret": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateWebhookInput": { + "id": [ + 3 + ], + "update": [ + 439 + ], + "__typename": [ + 1 + ] + }, + "UpdateWebhookInputUpdates": { + "targetUrl": [ + 1 + ], + "operations": [ + 1 + ], + "description": [ + 1 + ], + "secret": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "CreateSkillInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "content": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "UpdateSkillInput": { + "id": [ + 3 + ], + "name": [ + 1 + ], + "label": [ + 1 + ], + "icon": [ + 1 + ], + "description": [ + 1 + ], + "content": [ + 1 + ], + "isActive": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "EmailAccountConnectionParameters": { + "IMAP": [ + 443 + ], + "SMTP": [ + 443 + ], + "CALDAV": [ + 443 + ], + "__typename": [ + 1 + ] + }, + "ConnectionParameters": { + "host": [ + 1 + ], + "port": [ + 11 + ], + "username": [ + 1 + ], + "password": [ + 1 + ], + "secure": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "UpdateLabPublicFeatureFlagInput": { + "publicFeatureFlag": [ + 1 + ], + "value": [ + 6 + ], + "__typename": [ + 1 + ] + }, + "CreateOneAppTokenInput": { + "appToken": [ + 446 + ], + "__typename": [ + 1 + ] + }, + "CreateAppTokenInput": { + "expiresAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceMigrationInput": { + "actions": [ + 448 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceMigrationDeleteActionInput": { + "type": [ + 449 + ], + "metadataName": [ + 450 + ], + "universalIdentifier": [ + 1 + ], + "__typename": [ + 1 + ] + }, + "WorkspaceMigrationActionType": {}, + "AllMetadataName": {}, + "FileFolder": {}, + "Subscription": { + "onDbEvent": [ + 122, + { + "input": [ + 453, + "OnDbEventInput!" + ] + } + ], + "onEventSubscription": [ + 121, + { + "eventStreamId": [ + 1, + "String!" + ] + } + ], + "logicFunctionLogs": [ + 218, + { + "input": [ + 454, + "LogicFunctionLogsInput!" + ] + } + ], + "__typename": [ + 1 + ] + }, + "OnDbEventInput": { + "action": [ + 118 + ], + "objectNameSingular": [ + 1 + ], + "recordId": [ + 3 + ], + "__typename": [ + 1 + ] + }, + "LogicFunctionLogsInput": { + "applicationId": [ + 3 + ], + "applicationUniversalIdentifier": [ + 3 + ], + "name": [ + 1 + ], + "id": [ + 3 + ], + "universalIdentifier": [ + 3 + ], + "__typename": [ + 1 + ] + } + } +} \ No newline at end of file diff --git a/packages/twenty-sdk/src/clients/index.ts b/packages/twenty-sdk/src/clients/index.ts new file mode 100644 index 0000000000..d35a443e18 --- /dev/null +++ b/packages/twenty-sdk/src/clients/index.ts @@ -0,0 +1,4 @@ +export { CoreApiClient } from './generated/core/index'; +export * as CoreSchema from './generated/core/schema'; +export { MetadataApiClient } from './generated/metadata/index'; +export * as MetadataSchema from './generated/metadata/schema'; diff --git a/packages/twenty-sdk/vite.config.node.ts b/packages/twenty-sdk/vite.config.node.ts index c84e95d72e..bc364663b8 100644 --- a/packages/twenty-sdk/vite.config.node.ts +++ b/packages/twenty-sdk/vite.config.node.ts @@ -27,6 +27,7 @@ export default defineConfig(() => { index: 'src/sdk/index.ts', cli: 'src/cli/cli.ts', operations: 'src/cli/public-operations/index.ts', + clients: 'src/clients/index.ts', }, name: 'twenty-sdk', }, diff --git a/packages/twenty-sdk/vitest.e2e.config.ts b/packages/twenty-sdk/vitest.e2e.config.ts index 164ff1085b..393312c1e4 100644 --- a/packages/twenty-sdk/vitest.e2e.config.ts +++ b/packages/twenty-sdk/vitest.e2e.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ }, env: { TWENTY_API_URL: 'http://localhost:3000', - TWENTY_TEST_API_KEY: + TWENTY_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik', }, setupFiles: ['src/cli/__tests__/constants/setupTest.ts'], diff --git a/packages/twenty-sdk/vitest.integration.config.ts b/packages/twenty-sdk/vitest.integration.config.ts index 624611568e..ec581a0597 100644 --- a/packages/twenty-sdk/vitest.integration.config.ts +++ b/packages/twenty-sdk/vitest.integration.config.ts @@ -20,7 +20,7 @@ export default defineConfig({ fileParallelism: false, env: { TWENTY_API_URL: 'http://localhost:3000', - TWENTY_TEST_API_KEY: + TWENTY_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik', }, setupFiles: [