refactor(server): regroup application resolvers by resource and unify install permission flag (#22532)
Part of the app settings architecture cleanup (twentyhq/core-team-issues#2456) — implements the API-surface regroup Charles asked for in #20825 ("in application resolvers we have uninstall, upgrade, findMany, etc. and for some reason install is part of the marketplace, and they are not protected by same guards"). ## Changes **Resolver regroup by resource** (GraphQL operation names and signatures unchanged): - `installApplication` + `installMarketplaceApp` (deprecation preserved) move from the marketplace resolver into `application-install.resolver.ts`, next to `findManyApplications`/`findOneApplication`/`uninstallApplication`. - `uninstallApplication` moves from the manifest resolver into `application-install.resolver.ts`. - `runWorkspaceMigration` is deleted outright (unused — no consumer anywhere in the repo, front/SDK/e2e/docs); the now-empty manifest resolver is deleted. Its `AllMetadataName` GraphQL enum registration moves to `collection-hash.dto.ts` (its remaining consumer). - `generateApplicationToken` moves from the development resolver into `application-oauth.resolver.ts` next to `renewApplicationToken`, keeping its effective guards (`WorkspaceAuthGuard` + `SettingsPermissionGuard(APPLICATIONS)`) and its token-bucket throttle verbatim. - `upgradeApplication` stays in the upgrade resolver (moving it into the install resolver would create a module cycle — the upgrade module imports the install module). - Marketplace resolver now only holds catalog concerns: `findManyMarketplaceApps`, `findMarketplaceAppDetail`, `syncMarketplaceCatalog`. **Permission unification** (the only behavior change): `installApplication`, `installMarketplaceApp` and `upgradeApplication` move from `MARKETPLACE_APPS` to `APPLICATIONS`, matching uninstall and the find queries. Front-end install/upgrade button gating updated accordingly (`SettingsApplicationDetails` / `SettingsAvailableApplicationDetails`). **Module wiring**: `MarketplaceModule` no longer imports `ApplicationInstallModule` (only the moved resolver needed it); `ApplicationInstallModule` now imports `MarketplaceModule` — no cycle. Exception filters follow the moved operations (`ApplicationRegistrationExceptionFilter` on the install resolver; `ApplicationExceptionFilter` on the oauth resolver, which also fixes `renewApplicationToken`'s previously unmapped FORBIDDEN). **Codegen**: `twenty-client-sdk` metadata client regenerated for the new schema ordering (pure reordering — no field changes); all front `graphql:generate` configurations produced zero diffs. ## Explicitly kept (per review discussion) `installMarketplaceApp` (deprecated) and `generateApplicationToken` are kept for SDK back-compat despite having no current consumers. `runWorkspaceMigration` was also consumer-less but, unlike those two, had no back-compat rationale (not a deprecated alias, not a token primitive), so it is removed rather than relocated. ## Deferred follow-ups (guard inconsistencies found in the audit, intentionally NOT changed here) - `findApplicationRegistrationByUniversalIdentifier` uses `NoPermissionGuard` and returns the full registration entity, bypassing the `API_KEYS_AND_WEBHOOKS` gate that `findOneApplicationRegistration` enforces on the same data (SDK CLI `ensure-app-registration` depends on it today). - `upgradeApplication` alone requires `UserAuthGuard` — an API key can install but not upgrade. - `uploadAppTarball` (`MARKETPLACE_APPS`) and `transferApplicationRegistrationOwnership` (`APPLICATIONS`) are flag-inconsistent with the rest of registration CRUD (`API_KEYS_AND_WEBHOOKS`). - `syncMarketplaceCatalog` triggers an instance-wide job but is gated only by a per-workspace settings flag. ## Verification - `npx nx typecheck twenty-server` / `twenty-front` ✓; `lint:diff-with-main` clean for both - `npx jest "application"` in twenty-server: 30 suites / 154 tests passed - Server boots with the new module graph (DI verified at runtime); codegen run against the live server - Repo-wide grep: no remaining imports of the deleted manifest resolver <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22532?utm_source=github" rel="nofollow noreferrer noopener" target="_blank">``<img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg">``</a> --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@@ -2192,6 +2192,74 @@ type DeletedWorkspaceMember {
|
||||
userWorkspaceId: UUID
|
||||
}
|
||||
|
||||
type MarketplaceApp {
|
||||
id: String!
|
||||
name: String!
|
||||
description: String!
|
||||
author: String!
|
||||
category: String!
|
||||
logo: String
|
||||
sourcePackage: String
|
||||
isFeatured: Boolean!
|
||||
}
|
||||
|
||||
type MarketplaceAppRoleObjectPermission {
|
||||
universalIdentifier: String!
|
||||
objectUniversalIdentifier: String!
|
||||
canReadObjectRecords: Boolean
|
||||
canUpdateObjectRecords: Boolean
|
||||
canSoftDeleteObjectRecords: Boolean
|
||||
canDestroyObjectRecords: Boolean
|
||||
}
|
||||
|
||||
type MarketplaceAppRoleFieldPermission {
|
||||
universalIdentifier: String!
|
||||
objectUniversalIdentifier: String!
|
||||
fieldUniversalIdentifier: String!
|
||||
canReadFieldValue: Boolean
|
||||
canUpdateFieldValue: Boolean
|
||||
}
|
||||
|
||||
type MarketplaceAppRole {
|
||||
universalIdentifier: String!
|
||||
label: String!
|
||||
description: String
|
||||
icon: String
|
||||
canUpdateAllSettings: Boolean
|
||||
canAccessAllTools: Boolean
|
||||
canReadAllObjectRecords: Boolean
|
||||
canUpdateAllObjectRecords: Boolean
|
||||
canSoftDeleteAllObjectRecords: Boolean
|
||||
canDestroyAllObjectRecords: Boolean
|
||||
permissionFlagUniversalIdentifiers: [String!]
|
||||
objectPermissions: [MarketplaceAppRoleObjectPermission!]
|
||||
fieldPermissions: [MarketplaceAppRoleFieldPermission!]
|
||||
}
|
||||
|
||||
type MarketplaceAppDetail {
|
||||
universalIdentifier: String!
|
||||
id: String!
|
||||
name: String!
|
||||
sourceType: ApplicationRegistrationSourceType!
|
||||
sourcePackage: String
|
||||
latestAvailableVersion: String
|
||||
isListed: Boolean!
|
||||
isFeatured: Boolean!
|
||||
description: String
|
||||
author: String
|
||||
category: String
|
||||
logo: String
|
||||
websiteUrl: String
|
||||
aboutDescription: String
|
||||
termsUrl: String
|
||||
emailSupport: String
|
||||
issueReportUrl: String
|
||||
screenshots: [String!]!
|
||||
defaultRoleUniversalIdentifier: String
|
||||
roles: [MarketplaceAppRole!]
|
||||
manifest: JSON @deprecated(reason: "Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead")
|
||||
}
|
||||
|
||||
type BillingEntitlement {
|
||||
key: BillingEntitlementKey!
|
||||
value: Boolean!
|
||||
@@ -2412,74 +2480,6 @@ type File {
|
||||
createdAt: DateTime!
|
||||
}
|
||||
|
||||
type MarketplaceApp {
|
||||
id: String!
|
||||
name: String!
|
||||
description: String!
|
||||
author: String!
|
||||
category: String!
|
||||
logo: String
|
||||
sourcePackage: String
|
||||
isFeatured: Boolean!
|
||||
}
|
||||
|
||||
type MarketplaceAppRoleObjectPermission {
|
||||
universalIdentifier: String!
|
||||
objectUniversalIdentifier: String!
|
||||
canReadObjectRecords: Boolean
|
||||
canUpdateObjectRecords: Boolean
|
||||
canSoftDeleteObjectRecords: Boolean
|
||||
canDestroyObjectRecords: Boolean
|
||||
}
|
||||
|
||||
type MarketplaceAppRoleFieldPermission {
|
||||
universalIdentifier: String!
|
||||
objectUniversalIdentifier: String!
|
||||
fieldUniversalIdentifier: String!
|
||||
canReadFieldValue: Boolean
|
||||
canUpdateFieldValue: Boolean
|
||||
}
|
||||
|
||||
type MarketplaceAppRole {
|
||||
universalIdentifier: String!
|
||||
label: String!
|
||||
description: String
|
||||
icon: String
|
||||
canUpdateAllSettings: Boolean
|
||||
canAccessAllTools: Boolean
|
||||
canReadAllObjectRecords: Boolean
|
||||
canUpdateAllObjectRecords: Boolean
|
||||
canSoftDeleteAllObjectRecords: Boolean
|
||||
canDestroyAllObjectRecords: Boolean
|
||||
permissionFlagUniversalIdentifiers: [String!]
|
||||
objectPermissions: [MarketplaceAppRoleObjectPermission!]
|
||||
fieldPermissions: [MarketplaceAppRoleFieldPermission!]
|
||||
}
|
||||
|
||||
type MarketplaceAppDetail {
|
||||
universalIdentifier: String!
|
||||
id: String!
|
||||
name: String!
|
||||
sourceType: ApplicationRegistrationSourceType!
|
||||
sourcePackage: String
|
||||
latestAvailableVersion: String
|
||||
isListed: Boolean!
|
||||
isFeatured: Boolean!
|
||||
description: String
|
||||
author: String
|
||||
category: String
|
||||
logo: String
|
||||
websiteUrl: String
|
||||
aboutDescription: String
|
||||
termsUrl: String
|
||||
emailSupport: String
|
||||
issueReportUrl: String
|
||||
screenshots: [String!]!
|
||||
defaultRoleUniversalIdentifier: String
|
||||
roles: [MarketplaceAppRole!]
|
||||
manifest: JSON @deprecated(reason: "Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead")
|
||||
}
|
||||
|
||||
type PublicDomain {
|
||||
id: UUID!
|
||||
domain: String!
|
||||
@@ -3151,6 +3151,8 @@ type Query {
|
||||
getViewGroup(id: String!): ViewGroup
|
||||
findManyApplications: [Application!]!
|
||||
findOneApplication(id: UUID, universalIdentifier: UUID): Application!
|
||||
findManyMarketplaceApps: [MarketplaceApp!]!
|
||||
findMarketplaceAppDetail(universalIdentifier: String!): MarketplaceAppDetail!
|
||||
findApplicationRegistrationByClientId(clientId: String!): PublicApplicationRegistration
|
||||
findApplicationRegistrationByUniversalIdentifier(universalIdentifier: String!): ApplicationRegistration
|
||||
findManyApplicationRegistrations: [ApplicationRegistration!]!
|
||||
@@ -3200,8 +3202,6 @@ type Query {
|
||||
getAddressDetails(placeId: String!, token: String!): PlaceDetailsResult!
|
||||
getUsageAnalytics(input: UsageAnalyticsInput): UsageAnalytics!
|
||||
findManyPublicDomains: [PublicDomain!]!
|
||||
findManyMarketplaceApps: [MarketplaceApp!]!
|
||||
findMarketplaceAppDetail(universalIdentifier: String!): MarketplaceAppDetail!
|
||||
}
|
||||
|
||||
input GetApiKeyInput {
|
||||
@@ -3406,8 +3406,10 @@ type Mutation {
|
||||
updateManyViewGroups(inputs: [UpdateViewGroupInput!]!): [ViewGroup!]!
|
||||
deleteViewGroup(input: DeleteViewGroupInput!): ViewGroup!
|
||||
destroyViewGroup(input: DestroyViewGroupInput!): ViewGroup!
|
||||
runWorkspaceMigration(workspaceMigration: WorkspaceMigrationInput!): Boolean!
|
||||
installMarketplaceApp(universalIdentifier: String!, version: String): Boolean! @deprecated(reason: "Use installApplication instead")
|
||||
installApplication(universalIdentifier: String!, version: String): Application!
|
||||
uninstallApplication(universalIdentifier: String!): Boolean!
|
||||
syncMarketplaceCatalog: Boolean!
|
||||
createApplicationRegistration(input: CreateApplicationRegistrationInput!): CreateApplicationRegistration!
|
||||
updateApplicationRegistration(input: UpdateApplicationRegistrationInput!): ApplicationRegistration!
|
||||
deleteApplicationRegistration(id: String!): Boolean!
|
||||
@@ -3507,14 +3509,11 @@ type Mutation {
|
||||
deletePublicDomain(domain: String!): Boolean!
|
||||
checkPublicDomainValidRecords(domain: String!): DomainValidRecords
|
||||
createOneAppToken(input: CreateOneAppTokenInput!): AppToken!
|
||||
installMarketplaceApp(universalIdentifier: String!, version: String): Boolean! @deprecated(reason: "Use installApplication instead")
|
||||
installApplication(universalIdentifier: String!, version: String): Application!
|
||||
syncMarketplaceCatalog: Boolean!
|
||||
createDevelopmentApplication(universalIdentifier: String!, name: String!): DevelopmentApplication!
|
||||
generateApplicationToken(applicationId: UUID!): ApplicationTokenPair!
|
||||
syncApplication(manifest: JSON!, dryRun: Boolean): WorkspaceMigration!
|
||||
uploadApplicationFile(file: Upload!, applicationUniversalIdentifier: String!, fileFolder: FileFolder!, filePath: String!): File!
|
||||
upgradeApplication(appRegistrationId: String!, targetVersion: String!): Boolean!
|
||||
generateApplicationToken(applicationId: UUID!): ApplicationTokenPair!
|
||||
renewApplicationToken(applicationRefreshToken: String!): ApplicationTokenPair!
|
||||
}
|
||||
|
||||
@@ -4308,22 +4307,6 @@ input DestroyViewGroupInput {
|
||||
id: UUID!
|
||||
}
|
||||
|
||||
input WorkspaceMigrationInput {
|
||||
actions: [WorkspaceMigrationDeleteActionInput!]!
|
||||
}
|
||||
|
||||
input WorkspaceMigrationDeleteActionInput {
|
||||
type: WorkspaceMigrationActionType!
|
||||
metadataName: AllMetadataName!
|
||||
universalIdentifier: String!
|
||||
}
|
||||
|
||||
enum WorkspaceMigrationActionType {
|
||||
delete
|
||||
create
|
||||
update
|
||||
}
|
||||
|
||||
input CreateApplicationRegistrationInput {
|
||||
name: String!
|
||||
universalIdentifier: String
|
||||
|
||||
@@ -1845,6 +1845,80 @@ export interface DeletedWorkspaceMember {
|
||||
__typename: 'DeletedWorkspaceMember'
|
||||
}
|
||||
|
||||
export interface MarketplaceApp {
|
||||
id: Scalars['String']
|
||||
name: Scalars['String']
|
||||
description: Scalars['String']
|
||||
author: Scalars['String']
|
||||
category: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
sourcePackage?: Scalars['String']
|
||||
isFeatured: Scalars['Boolean']
|
||||
__typename: 'MarketplaceApp'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleObjectPermission {
|
||||
universalIdentifier: Scalars['String']
|
||||
objectUniversalIdentifier: Scalars['String']
|
||||
canReadObjectRecords?: Scalars['Boolean']
|
||||
canUpdateObjectRecords?: Scalars['Boolean']
|
||||
canSoftDeleteObjectRecords?: Scalars['Boolean']
|
||||
canDestroyObjectRecords?: Scalars['Boolean']
|
||||
__typename: 'MarketplaceAppRoleObjectPermission'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleFieldPermission {
|
||||
universalIdentifier: Scalars['String']
|
||||
objectUniversalIdentifier: Scalars['String']
|
||||
fieldUniversalIdentifier: Scalars['String']
|
||||
canReadFieldValue?: Scalars['Boolean']
|
||||
canUpdateFieldValue?: Scalars['Boolean']
|
||||
__typename: 'MarketplaceAppRoleFieldPermission'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRole {
|
||||
universalIdentifier: Scalars['String']
|
||||
label: Scalars['String']
|
||||
description?: Scalars['String']
|
||||
icon?: Scalars['String']
|
||||
canUpdateAllSettings?: Scalars['Boolean']
|
||||
canAccessAllTools?: Scalars['Boolean']
|
||||
canReadAllObjectRecords?: Scalars['Boolean']
|
||||
canUpdateAllObjectRecords?: Scalars['Boolean']
|
||||
canSoftDeleteAllObjectRecords?: Scalars['Boolean']
|
||||
canDestroyAllObjectRecords?: Scalars['Boolean']
|
||||
permissionFlagUniversalIdentifiers?: Scalars['String'][]
|
||||
objectPermissions?: MarketplaceAppRoleObjectPermission[]
|
||||
fieldPermissions?: MarketplaceAppRoleFieldPermission[]
|
||||
__typename: 'MarketplaceAppRole'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppDetail {
|
||||
universalIdentifier: Scalars['String']
|
||||
id: Scalars['String']
|
||||
name: Scalars['String']
|
||||
sourceType: ApplicationRegistrationSourceType
|
||||
sourcePackage?: Scalars['String']
|
||||
latestAvailableVersion?: Scalars['String']
|
||||
isListed: Scalars['Boolean']
|
||||
isFeatured: Scalars['Boolean']
|
||||
description?: Scalars['String']
|
||||
author?: Scalars['String']
|
||||
category?: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
websiteUrl?: Scalars['String']
|
||||
aboutDescription?: Scalars['String']
|
||||
termsUrl?: Scalars['String']
|
||||
emailSupport?: Scalars['String']
|
||||
issueReportUrl?: Scalars['String']
|
||||
screenshots: Scalars['String'][]
|
||||
defaultRoleUniversalIdentifier?: Scalars['String']
|
||||
roles?: MarketplaceAppRole[]
|
||||
/** @deprecated Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead */
|
||||
manifest?: Scalars['JSON']
|
||||
__typename: 'MarketplaceAppDetail'
|
||||
}
|
||||
|
||||
export interface BillingEntitlement {
|
||||
key: BillingEntitlementKey
|
||||
value: Scalars['Boolean']
|
||||
@@ -2092,80 +2166,6 @@ export interface File {
|
||||
__typename: 'File'
|
||||
}
|
||||
|
||||
export interface MarketplaceApp {
|
||||
id: Scalars['String']
|
||||
name: Scalars['String']
|
||||
description: Scalars['String']
|
||||
author: Scalars['String']
|
||||
category: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
sourcePackage?: Scalars['String']
|
||||
isFeatured: Scalars['Boolean']
|
||||
__typename: 'MarketplaceApp'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleObjectPermission {
|
||||
universalIdentifier: Scalars['String']
|
||||
objectUniversalIdentifier: Scalars['String']
|
||||
canReadObjectRecords?: Scalars['Boolean']
|
||||
canUpdateObjectRecords?: Scalars['Boolean']
|
||||
canSoftDeleteObjectRecords?: Scalars['Boolean']
|
||||
canDestroyObjectRecords?: Scalars['Boolean']
|
||||
__typename: 'MarketplaceAppRoleObjectPermission'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleFieldPermission {
|
||||
universalIdentifier: Scalars['String']
|
||||
objectUniversalIdentifier: Scalars['String']
|
||||
fieldUniversalIdentifier: Scalars['String']
|
||||
canReadFieldValue?: Scalars['Boolean']
|
||||
canUpdateFieldValue?: Scalars['Boolean']
|
||||
__typename: 'MarketplaceAppRoleFieldPermission'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRole {
|
||||
universalIdentifier: Scalars['String']
|
||||
label: Scalars['String']
|
||||
description?: Scalars['String']
|
||||
icon?: Scalars['String']
|
||||
canUpdateAllSettings?: Scalars['Boolean']
|
||||
canAccessAllTools?: Scalars['Boolean']
|
||||
canReadAllObjectRecords?: Scalars['Boolean']
|
||||
canUpdateAllObjectRecords?: Scalars['Boolean']
|
||||
canSoftDeleteAllObjectRecords?: Scalars['Boolean']
|
||||
canDestroyAllObjectRecords?: Scalars['Boolean']
|
||||
permissionFlagUniversalIdentifiers?: Scalars['String'][]
|
||||
objectPermissions?: MarketplaceAppRoleObjectPermission[]
|
||||
fieldPermissions?: MarketplaceAppRoleFieldPermission[]
|
||||
__typename: 'MarketplaceAppRole'
|
||||
}
|
||||
|
||||
export interface MarketplaceAppDetail {
|
||||
universalIdentifier: Scalars['String']
|
||||
id: Scalars['String']
|
||||
name: Scalars['String']
|
||||
sourceType: ApplicationRegistrationSourceType
|
||||
sourcePackage?: Scalars['String']
|
||||
latestAvailableVersion?: Scalars['String']
|
||||
isListed: Scalars['Boolean']
|
||||
isFeatured: Scalars['Boolean']
|
||||
description?: Scalars['String']
|
||||
author?: Scalars['String']
|
||||
category?: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
websiteUrl?: Scalars['String']
|
||||
aboutDescription?: Scalars['String']
|
||||
termsUrl?: Scalars['String']
|
||||
emailSupport?: Scalars['String']
|
||||
issueReportUrl?: Scalars['String']
|
||||
screenshots: Scalars['String'][]
|
||||
defaultRoleUniversalIdentifier?: Scalars['String']
|
||||
roles?: MarketplaceAppRole[]
|
||||
/** @deprecated Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead */
|
||||
manifest?: Scalars['JSON']
|
||||
__typename: 'MarketplaceAppDetail'
|
||||
}
|
||||
|
||||
export interface PublicDomain {
|
||||
id: Scalars['UUID']
|
||||
domain: Scalars['String']
|
||||
@@ -2763,6 +2763,8 @@ export interface Query {
|
||||
getViewGroup?: ViewGroup
|
||||
findManyApplications: Application[]
|
||||
findOneApplication: Application
|
||||
findManyMarketplaceApps: MarketplaceApp[]
|
||||
findMarketplaceAppDetail: MarketplaceAppDetail
|
||||
findApplicationRegistrationByClientId?: PublicApplicationRegistration
|
||||
findApplicationRegistrationByUniversalIdentifier?: ApplicationRegistration
|
||||
findManyApplicationRegistrations: ApplicationRegistration[]
|
||||
@@ -2812,8 +2814,6 @@ export interface Query {
|
||||
getAddressDetails: PlaceDetailsResult
|
||||
getUsageAnalytics: UsageAnalytics
|
||||
findManyPublicDomains: PublicDomain[]
|
||||
findManyMarketplaceApps: MarketplaceApp[]
|
||||
findMarketplaceAppDetail: MarketplaceAppDetail
|
||||
__typename: 'Query'
|
||||
}
|
||||
|
||||
@@ -2938,8 +2938,11 @@ export interface Mutation {
|
||||
updateManyViewGroups: ViewGroup[]
|
||||
deleteViewGroup: ViewGroup
|
||||
destroyViewGroup: ViewGroup
|
||||
runWorkspaceMigration: Scalars['Boolean']
|
||||
/** @deprecated Use installApplication instead */
|
||||
installMarketplaceApp: Scalars['Boolean']
|
||||
installApplication: Application
|
||||
uninstallApplication: Scalars['Boolean']
|
||||
syncMarketplaceCatalog: Scalars['Boolean']
|
||||
createApplicationRegistration: CreateApplicationRegistration
|
||||
updateApplicationRegistration: ApplicationRegistration
|
||||
deleteApplicationRegistration: Scalars['Boolean']
|
||||
@@ -3039,23 +3042,17 @@ export interface Mutation {
|
||||
deletePublicDomain: Scalars['Boolean']
|
||||
checkPublicDomainValidRecords?: DomainValidRecords
|
||||
createOneAppToken: AppToken
|
||||
/** @deprecated Use installApplication instead */
|
||||
installMarketplaceApp: Scalars['Boolean']
|
||||
installApplication: Application
|
||||
syncMarketplaceCatalog: Scalars['Boolean']
|
||||
createDevelopmentApplication: DevelopmentApplication
|
||||
generateApplicationToken: ApplicationTokenPair
|
||||
syncApplication: WorkspaceMigration
|
||||
uploadApplicationFile: File
|
||||
upgradeApplication: Scalars['Boolean']
|
||||
generateApplicationToken: ApplicationTokenPair
|
||||
renewApplicationToken: ApplicationTokenPair
|
||||
__typename: 'Mutation'
|
||||
}
|
||||
|
||||
export type FileFolder = 'CorePicture' | 'AgentChat' | 'BuiltLogicFunction' | 'BuiltFrontComponent' | 'PublicAsset' | 'Source' | 'FilesField' | 'Dependencies' | 'Workflow' | 'EmailAttachment' | 'AppTarball' | 'GeneratedSdkClient' | 'Dpa'
|
||||
|
||||
export type WorkspaceMigrationActionType = 'delete' | 'create' | 'update'
|
||||
|
||||
export type AnalyticsType = 'PAGEVIEW' | 'TRACK'
|
||||
|
||||
export interface Subscription {
|
||||
@@ -4989,6 +4986,85 @@ export interface DeletedWorkspaceMemberGenqlSelection{
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppGenqlSelection{
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
description?: boolean | number
|
||||
author?: boolean | number
|
||||
category?: boolean | number
|
||||
logo?: boolean | number
|
||||
sourcePackage?: boolean | number
|
||||
isFeatured?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleObjectPermissionGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
objectUniversalIdentifier?: boolean | number
|
||||
canReadObjectRecords?: boolean | number
|
||||
canUpdateObjectRecords?: boolean | number
|
||||
canSoftDeleteObjectRecords?: boolean | number
|
||||
canDestroyObjectRecords?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleFieldPermissionGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
objectUniversalIdentifier?: boolean | number
|
||||
fieldUniversalIdentifier?: boolean | number
|
||||
canReadFieldValue?: boolean | number
|
||||
canUpdateFieldValue?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
label?: boolean | number
|
||||
description?: boolean | number
|
||||
icon?: boolean | number
|
||||
canUpdateAllSettings?: boolean | number
|
||||
canAccessAllTools?: boolean | number
|
||||
canReadAllObjectRecords?: boolean | number
|
||||
canUpdateAllObjectRecords?: boolean | number
|
||||
canSoftDeleteAllObjectRecords?: boolean | number
|
||||
canDestroyAllObjectRecords?: boolean | number
|
||||
permissionFlagUniversalIdentifiers?: boolean | number
|
||||
objectPermissions?: MarketplaceAppRoleObjectPermissionGenqlSelection
|
||||
fieldPermissions?: MarketplaceAppRoleFieldPermissionGenqlSelection
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppDetailGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
sourceType?: boolean | number
|
||||
sourcePackage?: boolean | number
|
||||
latestAvailableVersion?: boolean | number
|
||||
isListed?: boolean | number
|
||||
isFeatured?: boolean | number
|
||||
description?: boolean | number
|
||||
author?: boolean | number
|
||||
category?: boolean | number
|
||||
logo?: boolean | number
|
||||
websiteUrl?: boolean | number
|
||||
aboutDescription?: boolean | number
|
||||
termsUrl?: boolean | number
|
||||
emailSupport?: boolean | number
|
||||
issueReportUrl?: boolean | number
|
||||
screenshots?: boolean | number
|
||||
defaultRoleUniversalIdentifier?: boolean | number
|
||||
roles?: MarketplaceAppRoleGenqlSelection
|
||||
/** @deprecated Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead */
|
||||
manifest?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface BillingEntitlementGenqlSelection{
|
||||
key?: boolean | number
|
||||
value?: boolean | number
|
||||
@@ -5268,85 +5344,6 @@ export interface FileGenqlSelection{
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppGenqlSelection{
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
description?: boolean | number
|
||||
author?: boolean | number
|
||||
category?: boolean | number
|
||||
logo?: boolean | number
|
||||
sourcePackage?: boolean | number
|
||||
isFeatured?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleObjectPermissionGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
objectUniversalIdentifier?: boolean | number
|
||||
canReadObjectRecords?: boolean | number
|
||||
canUpdateObjectRecords?: boolean | number
|
||||
canSoftDeleteObjectRecords?: boolean | number
|
||||
canDestroyObjectRecords?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleFieldPermissionGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
objectUniversalIdentifier?: boolean | number
|
||||
fieldUniversalIdentifier?: boolean | number
|
||||
canReadFieldValue?: boolean | number
|
||||
canUpdateFieldValue?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppRoleGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
label?: boolean | number
|
||||
description?: boolean | number
|
||||
icon?: boolean | number
|
||||
canUpdateAllSettings?: boolean | number
|
||||
canAccessAllTools?: boolean | number
|
||||
canReadAllObjectRecords?: boolean | number
|
||||
canUpdateAllObjectRecords?: boolean | number
|
||||
canSoftDeleteAllObjectRecords?: boolean | number
|
||||
canDestroyAllObjectRecords?: boolean | number
|
||||
permissionFlagUniversalIdentifiers?: boolean | number
|
||||
objectPermissions?: MarketplaceAppRoleObjectPermissionGenqlSelection
|
||||
fieldPermissions?: MarketplaceAppRoleFieldPermissionGenqlSelection
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface MarketplaceAppDetailGenqlSelection{
|
||||
universalIdentifier?: boolean | number
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
sourceType?: boolean | number
|
||||
sourcePackage?: boolean | number
|
||||
latestAvailableVersion?: boolean | number
|
||||
isListed?: boolean | number
|
||||
isFeatured?: boolean | number
|
||||
description?: boolean | number
|
||||
author?: boolean | number
|
||||
category?: boolean | number
|
||||
logo?: boolean | number
|
||||
websiteUrl?: boolean | number
|
||||
aboutDescription?: boolean | number
|
||||
termsUrl?: boolean | number
|
||||
emailSupport?: boolean | number
|
||||
issueReportUrl?: boolean | number
|
||||
screenshots?: boolean | number
|
||||
defaultRoleUniversalIdentifier?: boolean | number
|
||||
roles?: MarketplaceAppRoleGenqlSelection
|
||||
/** @deprecated Use the explicit MarketplaceAppDetail fields (description, author, roles, ...) instead */
|
||||
manifest?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface PublicDomainGenqlSelection{
|
||||
id?: boolean | number
|
||||
domain?: boolean | number
|
||||
@@ -5986,6 +5983,8 @@ export interface QueryGenqlSelection{
|
||||
getViewGroup?: (ViewGroupGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
findManyApplications?: ApplicationGenqlSelection
|
||||
findOneApplication?: (ApplicationGenqlSelection & { __args?: {id?: (Scalars['UUID'] | null), universalIdentifier?: (Scalars['UUID'] | null)} })
|
||||
findManyMarketplaceApps?: MarketplaceAppGenqlSelection
|
||||
findMarketplaceAppDetail?: (MarketplaceAppDetailGenqlSelection & { __args: {universalIdentifier: Scalars['String']} })
|
||||
findApplicationRegistrationByClientId?: (PublicApplicationRegistrationGenqlSelection & { __args: {clientId: Scalars['String']} })
|
||||
findApplicationRegistrationByUniversalIdentifier?: (ApplicationRegistrationGenqlSelection & { __args: {universalIdentifier: Scalars['String']} })
|
||||
findManyApplicationRegistrations?: ApplicationRegistrationGenqlSelection
|
||||
@@ -6035,8 +6034,6 @@ export interface QueryGenqlSelection{
|
||||
getAddressDetails?: (PlaceDetailsResultGenqlSelection & { __args: {placeId: Scalars['String'], token: Scalars['String']} })
|
||||
getUsageAnalytics?: (UsageAnalyticsGenqlSelection & { __args?: {input?: (UsageAnalyticsInput | null)} })
|
||||
findManyPublicDomains?: PublicDomainGenqlSelection
|
||||
findManyMarketplaceApps?: MarketplaceAppGenqlSelection
|
||||
findMarketplaceAppDetail?: (MarketplaceAppDetailGenqlSelection & { __args: {universalIdentifier: Scalars['String']} })
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
@@ -6186,8 +6183,11 @@ export interface MutationGenqlSelection{
|
||||
updateManyViewGroups?: (ViewGroupGenqlSelection & { __args: {inputs: UpdateViewGroupInput[]} })
|
||||
deleteViewGroup?: (ViewGroupGenqlSelection & { __args: {input: DeleteViewGroupInput} })
|
||||
destroyViewGroup?: (ViewGroupGenqlSelection & { __args: {input: DestroyViewGroupInput} })
|
||||
runWorkspaceMigration?: { __args: {workspaceMigration: WorkspaceMigrationInput} }
|
||||
/** @deprecated Use installApplication instead */
|
||||
installMarketplaceApp?: { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} }
|
||||
installApplication?: (ApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} })
|
||||
uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} }
|
||||
syncMarketplaceCatalog?: boolean | number
|
||||
createApplicationRegistration?: (CreateApplicationRegistrationGenqlSelection & { __args: {input: CreateApplicationRegistrationInput} })
|
||||
updateApplicationRegistration?: (ApplicationRegistrationGenqlSelection & { __args: {input: UpdateApplicationRegistrationInput} })
|
||||
deleteApplicationRegistration?: { __args: {id: Scalars['String']} }
|
||||
@@ -6287,15 +6287,11 @@ export interface MutationGenqlSelection{
|
||||
deletePublicDomain?: { __args: {domain: Scalars['String']} }
|
||||
checkPublicDomainValidRecords?: (DomainValidRecordsGenqlSelection & { __args: {domain: Scalars['String']} })
|
||||
createOneAppToken?: (AppTokenGenqlSelection & { __args: {input: CreateOneAppTokenInput} })
|
||||
/** @deprecated Use installApplication instead */
|
||||
installMarketplaceApp?: { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} }
|
||||
installApplication?: (ApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} })
|
||||
syncMarketplaceCatalog?: boolean | number
|
||||
createDevelopmentApplication?: (DevelopmentApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], name: Scalars['String']} })
|
||||
generateApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationId: Scalars['UUID']} })
|
||||
syncApplication?: (WorkspaceMigrationGenqlSelection & { __args: {manifest: Scalars['JSON'], dryRun?: (Scalars['Boolean'] | null)} })
|
||||
uploadApplicationFile?: (FileGenqlSelection & { __args: {file: Scalars['Upload'], applicationUniversalIdentifier: Scalars['String'], fileFolder: FileFolder, filePath: Scalars['String']} })
|
||||
upgradeApplication?: { __args: {appRegistrationId: Scalars['String'], targetVersion: Scalars['String']} }
|
||||
generateApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationId: Scalars['UUID']} })
|
||||
renewApplicationToken?: (ApplicationTokenPairGenqlSelection & { __args: {applicationRefreshToken: Scalars['String']} })
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
@@ -6571,10 +6567,6 @@ export interface DestroyViewGroupInput {
|
||||
/** The id of the view group to destroy. */
|
||||
id: Scalars['UUID']}
|
||||
|
||||
export interface WorkspaceMigrationInput {actions: WorkspaceMigrationDeleteActionInput[]}
|
||||
|
||||
export interface WorkspaceMigrationDeleteActionInput {type: WorkspaceMigrationActionType,metadataName: AllMetadataName,universalIdentifier: Scalars['String']}
|
||||
|
||||
export interface CreateApplicationRegistrationInput {name: Scalars['String'],universalIdentifier?: (Scalars['String'] | null),oAuthRedirectUris?: (Scalars['String'][] | null),oAuthScopes?: (Scalars['String'][] | null)}
|
||||
|
||||
export interface UpdateApplicationRegistrationInput {id: Scalars['String'],update: UpdateApplicationRegistrationPayload}
|
||||
@@ -7989,6 +7981,46 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
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 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 MarketplaceAppRole_possibleTypes: string[] = ['MarketplaceAppRole']
|
||||
export const isMarketplaceAppRole = (obj?: { __typename?: any } | null): obj is MarketplaceAppRole => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppRole"')
|
||||
return MarketplaceAppRole_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const MarketplaceAppDetail_possibleTypes: string[] = ['MarketplaceAppDetail']
|
||||
export const isMarketplaceAppDetail = (obj?: { __typename?: any } | null): obj is MarketplaceAppDetail => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppDetail"')
|
||||
return MarketplaceAppDetail_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"')
|
||||
@@ -8277,46 +8309,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
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 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 MarketplaceAppRole_possibleTypes: string[] = ['MarketplaceAppRole']
|
||||
export const isMarketplaceAppRole = (obj?: { __typename?: any } | null): obj is MarketplaceAppRole => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppRole"')
|
||||
return MarketplaceAppRole_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const MarketplaceAppDetail_possibleTypes: string[] = ['MarketplaceAppDetail']
|
||||
export const isMarketplaceAppDetail = (obj?: { __typename?: any } | null): obj is MarketplaceAppDetail => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isMarketplaceAppDetail"')
|
||||
return MarketplaceAppDetail_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"')
|
||||
@@ -9464,12 +9456,6 @@ export const enumFileFolder = {
|
||||
Dpa: 'Dpa' as const
|
||||
}
|
||||
|
||||
export const enumWorkspaceMigrationActionType = {
|
||||
delete: 'delete' as const,
|
||||
create: 'create' as const,
|
||||
update: 'update' as const
|
||||
}
|
||||
|
||||
export const enumAnalyticsType = {
|
||||
PAGEVIEW: 'PAGEVIEW' as const,
|
||||
TRACK: 'TRACK' as const
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user