export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; export type MakeEmpty = { [_ in K]?: never }; export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { ID: { input: string; output: string; } String: { input: string; output: string; } Boolean: { input: boolean; output: boolean; } Int: { input: number; output: number; } Float: { input: number; output: number; } /** The `BigInt` scalar type represents non-fractional signed whole numeric values. */ BigInt: { input: bigint; output: bigint; } /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ DateTime: { input: string; output: string; } /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ JSONObject: { input: Record; output: Record; } }; export type ActiveUserMutations = { __typename?: 'ActiveUserMutations'; /** Mark onboarding as complete */ finishOnboarding: Scalars['Boolean']['output']; /** Edit a user's profile */ update: User; }; export type ActiveUserMutationsUpdateArgs = { user: UserUpdateInput; }; export type Activity = { __typename?: 'Activity'; actionType: Scalars['String']['output']; id: Scalars['ID']['output']; info: Scalars['JSONObject']['output']; message: Scalars['String']['output']; resourceId: Scalars['String']['output']; resourceType: Scalars['String']['output']; streamId?: Maybe; time: Scalars['DateTime']['output']; userId: Scalars['String']['output']; }; export type ActivityCollection = { __typename?: 'ActivityCollection'; cursor?: Maybe; items?: Maybe>>; totalCount: Scalars['Int']['output']; }; export type AdminInviteList = { __typename?: 'AdminInviteList'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type AdminQueries = { __typename?: 'AdminQueries'; inviteList: AdminInviteList; projectList: ProjectCollection; serverStatistics: ServerStatistics; userList: AdminUserList; }; export type AdminQueriesInviteListArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; query?: InputMaybe; }; export type AdminQueriesProjectListArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; orderBy?: InputMaybe; query?: InputMaybe; visibility?: InputMaybe; }; export type AdminQueriesUserListArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; query?: InputMaybe; role?: InputMaybe; }; export type AdminUserList = { __typename?: 'AdminUserList'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type AdminUserListItem = { __typename?: 'AdminUserListItem'; avatar?: Maybe; company?: Maybe; email?: Maybe; id: Scalars['ID']['output']; name: Scalars['String']['output']; role?: Maybe; verified?: Maybe; }; export type AdminUsersListCollection = { __typename?: 'AdminUsersListCollection'; items: Array; totalCount: Scalars['Int']['output']; }; /** * A representation of a registered or invited user in the admin users list. Either registeredUser * or invitedUser will always be set, both values can't be null. */ export type AdminUsersListItem = { __typename?: 'AdminUsersListItem'; id: Scalars['String']['output']; invitedUser?: Maybe; registeredUser?: Maybe; }; export type ApiToken = { __typename?: 'ApiToken'; createdAt: Scalars['DateTime']['output']; id: Scalars['String']['output']; lastChars: Scalars['String']['output']; lastUsed: Scalars['DateTime']['output']; lifespan: Scalars['BigInt']['output']; name: Scalars['String']['output']; scopes: Array>; }; export type ApiTokenCreateInput = { lifespan?: InputMaybe; name: Scalars['String']['input']; scopes: Array; }; export type AppAuthor = { __typename?: 'AppAuthor'; avatar?: Maybe; id: Scalars['String']['output']; name: Scalars['String']['output']; }; export type AppCreateInput = { description: Scalars['String']['input']; logo?: InputMaybe; name: Scalars['String']['input']; public?: InputMaybe; redirectUrl: Scalars['String']['input']; scopes: Array>; termsAndConditionsLink?: InputMaybe; }; export type AppTokenCreateInput = { lifespan?: InputMaybe; /** Optionally limit the token to only have access to specific resources */ limitResources?: InputMaybe>; name: Scalars['String']['input']; scopes: Array; }; export type AppUpdateInput = { description: Scalars['String']['input']; id: Scalars['String']['input']; logo?: InputMaybe; name: Scalars['String']['input']; public?: InputMaybe; redirectUrl: Scalars['String']['input']; scopes: Array>; termsAndConditionsLink?: InputMaybe; }; export type AuthStrategy = { __typename?: 'AuthStrategy'; color?: Maybe; icon: Scalars['String']['output']; id: Scalars['String']['output']; name: Scalars['String']['output']; url: Scalars['String']['output']; }; export type AutomateAuthCodePayloadTest = { action: Scalars['String']['input']; code: Scalars['String']['input']; userId: Scalars['String']['input']; }; export type AutomateFunction = { __typename?: 'AutomateFunction'; automationCount: Scalars['Int']['output']; /** Only returned if user is a part of this speckle server */ creator?: Maybe; description: Scalars['String']['output']; id: Scalars['ID']['output']; isFeatured: Scalars['Boolean']['output']; logo?: Maybe; name: Scalars['String']['output']; releases: AutomateFunctionReleaseCollection; repo: BasicGitRepositoryMetadata; /** SourceAppNames values from @speckle/shared. Empty array means - all of them */ supportedSourceApps: Array; tags: Array; }; export type AutomateFunctionReleasesArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: InputMaybe; }; export type AutomateFunctionCollection = { __typename?: 'AutomateFunctionCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type AutomateFunctionRelease = { __typename?: 'AutomateFunctionRelease'; commitId: Scalars['String']['output']; createdAt: Scalars['DateTime']['output']; function: AutomateFunction; functionId: Scalars['String']['output']; id: Scalars['ID']['output']; inputSchema?: Maybe; versionTag: Scalars['String']['output']; }; export type AutomateFunctionReleaseCollection = { __typename?: 'AutomateFunctionReleaseCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type AutomateFunctionReleasesFilter = { search?: InputMaybe; }; export type AutomateFunctionRun = { __typename?: 'AutomateFunctionRun'; contextView?: Maybe; createdAt: Scalars['DateTime']['output']; elapsed: Scalars['Float']['output']; /** Nullable, in case the function is not retrievable due to poor network conditions */ function?: Maybe; functionId?: Maybe; functionReleaseId?: Maybe; id: Scalars['ID']['output']; /** AutomateTypes.ResultsSchema type from @speckle/shared */ results?: Maybe; status: AutomateRunStatus; statusMessage?: Maybe; updatedAt: Scalars['DateTime']['output']; }; export type AutomateFunctionRunStatusReportInput = { contextView?: InputMaybe; functionRunId: Scalars['String']['input']; /** AutomateTypes.ResultsSchema type from @speckle/shared */ results?: InputMaybe; status: AutomateRunStatus; statusMessage?: InputMaybe; }; export type AutomateFunctionTemplate = { __typename?: 'AutomateFunctionTemplate'; id: AutomateFunctionTemplateLanguage; logo: Scalars['String']['output']; title: Scalars['String']['output']; url: Scalars['String']['output']; }; export enum AutomateFunctionTemplateLanguage { DotNet = 'DOT_NET', Python = 'PYTHON', Typescript = 'TYPESCRIPT' } export type AutomateFunctionsFilter = { featuredFunctionsOnly?: InputMaybe; /** By default we skip functions without releases. Set this to true to include them. */ functionsWithoutReleases?: InputMaybe; search?: InputMaybe; }; export type AutomateMutations = { __typename?: 'AutomateMutations'; createFunction: AutomateFunction; updateFunction: AutomateFunction; }; export type AutomateMutationsCreateFunctionArgs = { input: CreateAutomateFunctionInput; }; export type AutomateMutationsUpdateFunctionArgs = { input: UpdateAutomateFunctionInput; }; export type AutomateRun = { __typename?: 'AutomateRun'; automation: Automation; automationId: Scalars['String']['output']; createdAt: Scalars['DateTime']['output']; functionRuns: Array; id: Scalars['ID']['output']; status: AutomateRunStatus; trigger: AutomationRunTrigger; updatedAt: Scalars['DateTime']['output']; }; export type AutomateRunCollection = { __typename?: 'AutomateRunCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export enum AutomateRunStatus { Canceled = 'CANCELED', Exception = 'EXCEPTION', Failed = 'FAILED', Initializing = 'INITIALIZING', Pending = 'PENDING', Running = 'RUNNING', Succeeded = 'SUCCEEDED', Timeout = 'TIMEOUT' } export enum AutomateRunTriggerType { VersionCreated = 'VERSION_CREATED' } export type Automation = { __typename?: 'Automation'; createdAt: Scalars['DateTime']['output']; /** Only accessible to automation owners */ creationPublicKeys: Array; currentRevision?: Maybe; enabled: Scalars['Boolean']['output']; id: Scalars['ID']['output']; isTestAutomation: Scalars['Boolean']['output']; name: Scalars['String']['output']; runs: AutomateRunCollection; updatedAt: Scalars['DateTime']['output']; }; export type AutomationRunsArgs = { cursor?: InputMaybe; limit?: InputMaybe; }; export type AutomationCollection = { __typename?: 'AutomationCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type AutomationRevision = { __typename?: 'AutomationRevision'; functions: Array; id: Scalars['ID']['output']; triggerDefinitions: Array; }; export type AutomationRevisionCreateFunctionInput = { functionId: Scalars['String']['input']; functionReleaseId: Scalars['String']['input']; /** Should be encrypted from the client side */ parameters?: InputMaybe; }; export type AutomationRevisionFunction = { __typename?: 'AutomationRevisionFunction'; /** The secrets in parameters are redacted with six asterisks - ****** */ parameters?: Maybe; release: AutomateFunctionRelease; }; export type AutomationRevisionTriggerDefinition = VersionCreatedTriggerDefinition; export type AutomationRunTrigger = VersionCreatedTrigger; export type AvatarUser = { __typename?: 'AvatarUser'; avatar?: Maybe; id: Scalars['ID']['output']; name: Scalars['String']['output']; }; export type BasicGitRepositoryMetadata = { __typename?: 'BasicGitRepositoryMetadata'; id: Scalars['ID']['output']; name: Scalars['String']['output']; owner: Scalars['String']['output']; url: Scalars['String']['output']; }; export type BlobMetadata = { __typename?: 'BlobMetadata'; createdAt: Scalars['DateTime']['output']; fileHash?: Maybe; fileName: Scalars['String']['output']; fileSize?: Maybe; fileType: Scalars['String']['output']; id: Scalars['String']['output']; streamId: Scalars['String']['output']; uploadError?: Maybe; uploadStatus: Scalars['Int']['output']; userId: Scalars['String']['output']; }; export type BlobMetadataCollection = { __typename?: 'BlobMetadataCollection'; cursor?: Maybe; items?: Maybe>; totalCount: Scalars['Int']['output']; totalSize: Scalars['Int']['output']; }; export type Branch = { __typename?: 'Branch'; /** * All the recent activity on this branch in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ activity?: Maybe; author?: Maybe; commits?: Maybe; createdAt?: Maybe; description?: Maybe; id: Scalars['String']['output']; name: Scalars['String']['output']; }; export type BranchActivityArgs = { actionType?: InputMaybe; after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type BranchCommitsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type BranchCollection = { __typename?: 'BranchCollection'; cursor?: Maybe; items?: Maybe>; totalCount: Scalars['Int']['output']; }; export type BranchCreateInput = { description?: InputMaybe; name: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type BranchDeleteInput = { id: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type BranchUpdateInput = { description?: InputMaybe; id: Scalars['String']['input']; name?: InputMaybe; streamId: Scalars['String']['input']; }; export type Comment = { __typename?: 'Comment'; archived: Scalars['Boolean']['output']; author: LimitedUser; authorId: Scalars['String']['output']; createdAt: Scalars['DateTime']['output']; /** * Legacy comment viewer data field * @deprecated Use the new viewerState field instead */ data?: Maybe; /** Whether or not comment is a reply to another comment */ hasParent: Scalars['Boolean']['output']; id: Scalars['String']['output']; /** Parent thread, if there's any */ parent?: Maybe; /** Plain-text version of the comment text, ideal for previews */ rawText: Scalars['String']['output']; /** @deprecated Not actually implemented */ reactions?: Maybe>>; /** Gets the replies to this comment. */ replies: CommentCollection; /** Get authors of replies to this comment */ replyAuthors: CommentReplyAuthorCollection; /** Resources that this comment targets. Can be a mixture of either one stream, or multiple commits and objects. */ resources: Array; screenshot?: Maybe; text: SmartTextEditorValue; /** The time this comment was last updated. Corresponds also to the latest reply to this comment, if any. */ updatedAt: Scalars['DateTime']['output']; /** The last time you viewed this comment. Present only if an auth'ed request. Relevant only if a top level commit. */ viewedAt?: Maybe; /** Resource identifiers as defined and implemented in the Viewer of the new frontend */ viewerResources: Array; /** SerializedViewerState */ viewerState?: Maybe; }; export type CommentRepliesArgs = { cursor?: InputMaybe; limit?: InputMaybe; }; export type CommentReplyAuthorsArgs = { limit?: Scalars['Int']['input']; }; export type CommentActivityMessage = { __typename?: 'CommentActivityMessage'; comment: Comment; type: Scalars['String']['output']; }; export type CommentCollection = { __typename?: 'CommentCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type CommentContentInput = { blobIds?: InputMaybe>; doc?: InputMaybe; }; /** Deprecated: Used by old stream-based mutations */ export type CommentCreateInput = { /** IDs of uploaded blobs that should be attached to this comment */ blobIds: Array; data: Scalars['JSONObject']['input']; /** * Specifies the resources this comment is linked to. There are several use cases: * - a comment targets only one resource (commit or object) * - a comment targets one or more resources (commits or objects) * - a comment targets only a stream */ resources: Array>; screenshot?: InputMaybe; streamId: Scalars['String']['input']; /** ProseMirror document object */ text?: InputMaybe; }; export type CommentDataFilters = { __typename?: 'CommentDataFilters'; hiddenIds?: Maybe>; isolatedIds?: Maybe>; passMax?: Maybe; passMin?: Maybe; propertyInfoKey?: Maybe; sectionBox?: Maybe; }; /** Equivalent to frontend-1's LocalFilterState */ export type CommentDataFiltersInput = { hiddenIds?: InputMaybe>; isolatedIds?: InputMaybe>; passMax?: InputMaybe; passMin?: InputMaybe; propertyInfoKey?: InputMaybe; sectionBox?: InputMaybe; }; /** Deprecated: Used by old stream-based mutations */ export type CommentEditInput = { /** IDs of uploaded blobs that should be attached to this comment */ blobIds: Array; id: Scalars['String']['input']; streamId: Scalars['String']['input']; /** ProseMirror document object */ text?: InputMaybe; }; export type CommentMutations = { __typename?: 'CommentMutations'; archive: Scalars['Boolean']['output']; create: Comment; edit: Comment; markViewed: Scalars['Boolean']['output']; reply: Comment; }; export type CommentMutationsArchiveArgs = { archived?: Scalars['Boolean']['input']; commentId: Scalars['String']['input']; }; export type CommentMutationsCreateArgs = { input: CreateCommentInput; }; export type CommentMutationsEditArgs = { input: EditCommentInput; }; export type CommentMutationsMarkViewedArgs = { commentId: Scalars['String']['input']; }; export type CommentMutationsReplyArgs = { input: CreateCommentReplyInput; }; export type CommentReplyAuthorCollection = { __typename?: 'CommentReplyAuthorCollection'; items: Array; totalCount: Scalars['Int']['output']; }; export type CommentThreadActivityMessage = { __typename?: 'CommentThreadActivityMessage'; data?: Maybe; reply?: Maybe; type: Scalars['String']['output']; }; export type Commit = { __typename?: 'Commit'; /** * All the recent activity on this commit in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ activity?: Maybe; authorAvatar?: Maybe; authorId?: Maybe; authorName?: Maybe; branch?: Maybe; branchName?: Maybe; /** * The total number of comments for this commit. To actually get the comments, use the comments query and pass in a resource array consisting of of this commit's id. * E.g., * ``` * query{ * comments(streamId:"streamId" resources:[{resourceType: commit, resourceId:"commitId"}] ){ * ... * } * ``` * @deprecated Part of the old API surface and will be removed in the future. */ commentCount: Scalars['Int']['output']; createdAt?: Maybe; id: Scalars['String']['output']; message?: Maybe; parents?: Maybe>>; referencedObject: Scalars['String']['output']; sourceApplication?: Maybe; /** * Will throw an authorization error if active user isn't authorized to see it, for example, * if a stream isn't public and the user doesn't have the appropriate rights. */ stream: Stream; /** @deprecated Use the stream field instead */ streamId?: Maybe; /** @deprecated Use the stream field instead */ streamName?: Maybe; totalChildrenCount?: Maybe; }; export type CommitActivityArgs = { actionType?: InputMaybe; after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type CommitCollection = { __typename?: 'CommitCollection'; cursor?: Maybe; items?: Maybe>; totalCount: Scalars['Int']['output']; }; export type CommitCreateInput = { branchName: Scalars['String']['input']; message?: InputMaybe; objectId: Scalars['String']['input']; parents?: InputMaybe>>; /** * **DEPRECATED** Use the `parents` field. * @deprecated Field no longer supported */ previousCommitIds?: InputMaybe>>; sourceApplication?: InputMaybe; streamId: Scalars['String']['input']; totalChildrenCount?: InputMaybe; }; export type CommitDeleteInput = { id: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type CommitReceivedInput = { commitId: Scalars['String']['input']; message?: InputMaybe; sourceApplication: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type CommitUpdateInput = { id: Scalars['String']['input']; message?: InputMaybe; /** To move the commit to a different branch, please the name of the branch. */ newBranchName?: InputMaybe; streamId: Scalars['String']['input']; }; export type CommitsDeleteInput = { commitIds: Array; }; export type CommitsMoveInput = { commitIds: Array; targetBranch: Scalars['String']['input']; }; /** * Can be used instead of a full item collection, when the implementation doesn't call for it yet. Because * of the structure, it can be swapped out to a full item collection in the future */ export type CountOnlyCollection = { __typename?: 'CountOnlyCollection'; totalCount: Scalars['Int']['output']; }; export type CreateAutomateFunctionInput = { description: Scalars['String']['input']; /** Base64 encoded image data string */ logo?: InputMaybe; name: Scalars['String']['input']; /** GitHub organization to create the repository in */ org?: InputMaybe; /** SourceAppNames values from @speckle/shared */ supportedSourceApps: Array; tags: Array; template: AutomateFunctionTemplateLanguage; }; export type CreateCommentInput = { content: CommentContentInput; projectId: Scalars['String']['input']; /** Resources that this comment should be attached to */ resourceIdString: Scalars['String']['input']; screenshot?: InputMaybe; /** * SerializedViewerState. If omitted, comment won't render (correctly) inside the * viewer, but will still be retrievable through the API */ viewerState?: InputMaybe; }; export type CreateCommentReplyInput = { content: CommentContentInput; threadId: Scalars['String']['input']; }; export type CreateModelInput = { description?: InputMaybe; name: Scalars['String']['input']; projectId: Scalars['ID']['input']; }; export type CreateVersionInput = { message?: InputMaybe; modelId: Scalars['String']['input']; objectId: Scalars['String']['input']; parents?: InputMaybe>; projectId: Scalars['String']['input']; sourceApplication?: InputMaybe; totalChildrenCount?: InputMaybe; }; export type DeleteModelInput = { id: Scalars['ID']['input']; projectId: Scalars['ID']['input']; }; export type DeleteVersionsInput = { versionIds: Array; }; export enum DiscoverableStreamsSortType { CreatedDate = 'CREATED_DATE', FavoritesCount = 'FAVORITES_COUNT' } export type DiscoverableStreamsSortingInput = { direction: SortDirection; type: DiscoverableStreamsSortType; }; export type EditCommentInput = { commentId: Scalars['String']['input']; content: CommentContentInput; }; export type FileUpload = { __typename?: 'FileUpload'; branchName: Scalars['String']['output']; /** If present, the conversion result is stored in this commit. */ convertedCommitId?: Maybe; convertedLastUpdate: Scalars['DateTime']['output']; /** Holds any errors or info. */ convertedMessage?: Maybe; /** 0 = queued, 1 = processing, 2 = success, 3 = error */ convertedStatus: Scalars['Int']['output']; /** Alias for convertedCommitId */ convertedVersionId?: Maybe; fileName: Scalars['String']['output']; fileSize: Scalars['Int']['output']; fileType: Scalars['String']['output']; id: Scalars['String']['output']; /** Model associated with the file upload, if it exists already */ model?: Maybe; /** Alias for branchName */ modelName: Scalars['String']['output']; /** Alias for streamId */ projectId: Scalars['String']['output']; streamId: Scalars['String']['output']; uploadComplete: Scalars['Boolean']['output']; uploadDate: Scalars['DateTime']['output']; /** The user's id that uploaded this file. */ userId: Scalars['String']['output']; }; export type GendoAiRender = { __typename?: 'GendoAIRender'; camera?: Maybe; createdAt: Scalars['String']['output']; gendoGenerationId?: Maybe; id: Scalars['ID']['output']; modelId: Scalars['String']['output']; projectId: Scalars['String']['output']; prompt: Scalars['String']['output']; /** This is a blob id. */ responseImage?: Maybe; status: Scalars['String']['output']; updatedAt: Scalars['String']['output']; user?: Maybe; userId: Scalars['String']['output']; versionId: Scalars['String']['output']; }; export type GendoAiRenderCollection = { __typename?: 'GendoAIRenderCollection'; items: Array>; totalCount: Scalars['Int']['output']; }; export type GendoAiRenderInput = { /** Base64 encoded image of the depthmap. */ baseImage: Scalars['String']['input']; camera: Scalars['JSONObject']['input']; modelId: Scalars['ID']['input']; projectId: Scalars['ID']['input']; /** The generation prompt. */ prompt: Scalars['String']['input']; versionId: Scalars['ID']['input']; }; export type LegacyCommentViewerData = { __typename?: 'LegacyCommentViewerData'; /** * An array representing a user's camera position: * [camPos.x, camPos.y, camPos.z, camTarget.x, camTarget.y, camTarget.z, isOrtho, zoomNumber] */ camPos: Array; /** Old FE LocalFilterState type */ filters: CommentDataFilters; /** THREE.Vector3 {x, y, z} */ location: Scalars['JSONObject']['output']; /** Viewer.getCurrentSectionBox(): THREE.Box3 */ sectionBox?: Maybe; /** Currently unused. Ideally comments should keep track of selected objects. */ selection?: Maybe; }; /** * Limited user type, for showing public info about a user * to another user */ export type LimitedUser = { __typename?: 'LimitedUser'; /** * All the recent activity from this user in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ activity?: Maybe; avatar?: Maybe; bio?: Maybe; /** * Get public stream commits authored by the user * @deprecated Part of the old API surface and will be removed in the future. */ commits?: Maybe; company?: Maybe; id: Scalars['ID']['output']; name: Scalars['String']['output']; role?: Maybe; /** * Returns all discoverable streams that the user is a collaborator on * @deprecated Part of the old API surface and will be removed in the future. */ streams: StreamCollection; /** * The user's timeline in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ timeline?: Maybe; /** * Total amount of favorites attached to streams owned by the user * @deprecated Part of the old API surface and will be removed in the future. */ totalOwnedStreamsFavorites: Scalars['Int']['output']; verified?: Maybe; }; /** * Limited user type, for showing public info about a user * to another user */ export type LimitedUserActivityArgs = { actionType?: InputMaybe; after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Limited user type, for showing public info about a user * to another user */ export type LimitedUserCommitsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Limited user type, for showing public info about a user * to another user */ export type LimitedUserStreamsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Limited user type, for showing public info about a user * to another user */ export type LimitedUserTimelineArgs = { after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type MarkReceivedVersionInput = { message?: InputMaybe; projectId: Scalars['String']['input']; sourceApplication: Scalars['String']['input']; versionId: Scalars['String']['input']; }; export type Model = { __typename?: 'Model'; author: LimitedUser; automationsStatus?: Maybe; /** Return a model tree of children */ childrenTree: Array; /** All comment threads in this model */ commentThreads: CommentCollection; createdAt: Scalars['DateTime']['output']; description?: Maybe; /** The shortened/display name that doesn't include the names of parent models */ displayName: Scalars['String']['output']; id: Scalars['ID']['output']; /** Full name including the names of parent models delimited by forward slashes */ name: Scalars['String']['output']; /** Returns a list of versions that are being created from a file import */ pendingImportedVersions: Array; previewUrl?: Maybe; updatedAt: Scalars['DateTime']['output']; version: Version; versions: VersionCollection; }; export type ModelCommentThreadsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ModelPendingImportedVersionsArgs = { limit?: InputMaybe; }; export type ModelVersionArgs = { id: Scalars['String']['input']; }; export type ModelVersionsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ModelCollection = { __typename?: 'ModelCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type ModelMutations = { __typename?: 'ModelMutations'; create: Model; delete: Scalars['Boolean']['output']; update: Model; }; export type ModelMutationsCreateArgs = { input: CreateModelInput; }; export type ModelMutationsDeleteArgs = { input: DeleteModelInput; }; export type ModelMutationsUpdateArgs = { input: UpdateModelInput; }; export type ModelVersionsFilter = { /** Make sure these specified versions are always loaded first */ priorityIds?: InputMaybe>; /** Only return versions specified in `priorityIds` */ priorityIdsOnly?: InputMaybe; }; export type ModelsTreeItem = { __typename?: 'ModelsTreeItem'; children: Array; fullName: Scalars['String']['output']; /** Whether or not this item has nested children models */ hasChildren: Scalars['Boolean']['output']; id: Scalars['ID']['output']; /** * Nullable cause the item can represent a parent that doesn't actually exist as a model on its own. * E.g. A model named "foo/bar" is supposed to be a child of "foo" and will be represented as such, * even if "foo" doesn't exist as its own model. */ model?: Maybe; name: Scalars['String']['output']; updatedAt: Scalars['DateTime']['output']; }; export type ModelsTreeItemCollection = { __typename?: 'ModelsTreeItemCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type MoveVersionsInput = { /** If the name references a nonexistant model, it will be created */ targetModelName: Scalars['String']['input']; versionIds: Array; }; export type Mutation = { __typename?: 'Mutation'; /** The void stares back. */ _?: Maybe; /** Various Active User oriented mutations */ activeUserMutations: ActiveUserMutations; adminDeleteUser: Scalars['Boolean']['output']; /** Creates an personal api token. */ apiTokenCreate: Scalars['String']['output']; /** Revokes (deletes) an personal api token/app token. */ apiTokenRevoke: Scalars['Boolean']['output']; /** Register a new third party application. */ appCreate: Scalars['String']['output']; /** Deletes a thirty party application. */ appDelete: Scalars['Boolean']['output']; /** Revokes (de-authorizes) an application that you have previously authorized. */ appRevokeAccess?: Maybe; /** Create an app token. Only apps can create app tokens and they don't show up under personal access tokens. */ appTokenCreate: Scalars['String']['output']; /** Update an existing third party application. **Note: This will invalidate all existing tokens, refresh tokens and access codes and will require existing users to re-authorize it.** */ appUpdate: Scalars['Boolean']['output']; automateFunctionRunStatusReport: Scalars['Boolean']['output']; automateMutations: AutomateMutations; /** @deprecated Part of the old API surface and will be removed in the future. Use ModelMutations.create instead. */ branchCreate: Scalars['String']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use ModelMutations.delete instead. */ branchDelete: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use ModelMutations.update instead. */ branchUpdate: Scalars['Boolean']['output']; /** Broadcast user activity in the viewer */ broadcastViewerUserActivity: Scalars['Boolean']['output']; /** * Archives a comment. * @deprecated Use commentMutations version */ commentArchive: Scalars['Boolean']['output']; /** * Creates a comment * @deprecated Use commentMutations version */ commentCreate: Scalars['String']['output']; /** * Edits a comment. * @deprecated Use commentMutations version */ commentEdit: Scalars['Boolean']['output']; commentMutations: CommentMutations; /** * Adds a reply to a comment. * @deprecated Use commentMutations version */ commentReply: Scalars['String']['output']; /** * Flags a comment as viewed by you (the logged in user). * @deprecated Use commentMutations version */ commentView: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.create instead. */ commitCreate: Scalars['String']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.delete instead. */ commitDelete: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.markReceived instead. */ commitReceive: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.update/moveToModel instead. */ commitUpdate: Scalars['Boolean']['output']; /** * Delete a batch of commits * @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.delete instead. */ commitsDelete: Scalars['Boolean']['output']; /** * Move a batch of commits to a new branch * @deprecated Part of the old API surface and will be removed in the future. Use VersionMutations.moveToModel instead. */ commitsMove: Scalars['Boolean']['output']; /** * Delete a pending invite * Note: The required scope to invoke this is not given out to app or personal access tokens */ inviteDelete: Scalars['Boolean']['output']; /** * Re-send a pending invite * Note: The required scope to invoke this is not given out to app or personal access tokens */ inviteResend: Scalars['Boolean']['output']; modelMutations: ModelMutations; /** @deprecated Part of the old API surface and will be removed in the future. */ objectCreate: Array; projectMutations: ProjectMutations; /** (Re-)send the account verification e-mail */ requestVerification: Scalars['Boolean']['output']; requestVerificationByEmail: Scalars['Boolean']['output']; serverInfoUpdate?: Maybe; /** Note: The required scope to invoke this is not given out to app or personal access tokens */ serverInviteBatchCreate: Scalars['Boolean']['output']; /** Invite a new user to the speckle server and return the invite ID */ serverInviteCreate: Scalars['Boolean']['output']; /** * Request access to a specific stream * @deprecated Part of the old API surface and will be removed in the future. Use ProjectAccessRequestMutations.create instead. */ streamAccessRequestCreate: StreamAccessRequest; /** * Accept or decline a stream access request. Must be a stream owner to invoke this. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectAccessRequestMutations.use instead. */ streamAccessRequestUse: Scalars['Boolean']['output']; /** * Creates a new stream. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.create instead. */ streamCreate?: Maybe; /** * Deletes an existing stream. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.delete instead. */ streamDelete: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. */ streamFavorite?: Maybe; /** * Note: The required scope to invoke this is not given out to app or personal access tokens * @deprecated Part of the old API surface and will be removed in the future. Use ProjectInviteMutations.batchCreate instead. */ streamInviteBatchCreate: Scalars['Boolean']['output']; /** * Cancel a pending stream invite. Can only be invoked by a stream owner. * Note: The required scope to invoke this is not given out to app or personal access tokens * @deprecated Part of the old API surface and will be removed in the future. Use ProjectInviteMutations.cancel instead. */ streamInviteCancel: Scalars['Boolean']['output']; /** * Invite a new or registered user to the specified stream * Note: The required scope to invoke this is not given out to app or personal access tokens * @deprecated Part of the old API surface and will be removed in the future. Use ProjectInviteMutations.create instead. */ streamInviteCreate: Scalars['Boolean']['output']; /** * Accept or decline a stream invite * @deprecated Part of the old API surface and will be removed in the future. Use ProjectInviteMutations.use instead. */ streamInviteUse: Scalars['Boolean']['output']; /** * Remove yourself from stream collaborators (not possible for the owner) * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.leave instead. */ streamLeave: Scalars['Boolean']['output']; /** * Revokes the permissions of a user on a given stream. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.updateRole instead. */ streamRevokePermission?: Maybe; /** * Updates an existing stream. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.update instead. */ streamUpdate: Scalars['Boolean']['output']; /** * Update permissions of a user on a given stream. * @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.updateRole instead. */ streamUpdatePermission?: Maybe; /** @deprecated Part of the old API surface and will be removed in the future. Use ProjectMutations.batchDelete instead. */ streamsDelete: Scalars['Boolean']['output']; /** * Used for broadcasting real time typing status in comment threads. Does not persist any info. * @deprecated Use broadcastViewerUserActivity */ userCommentThreadActivityBroadcast: Scalars['Boolean']['output']; /** Delete a user's account. */ userDelete: Scalars['Boolean']['output']; userNotificationPreferencesUpdate?: Maybe; userRoleChange: Scalars['Boolean']['output']; /** * Edits a user's profile. * @deprecated Use activeUserMutations version */ userUpdate: Scalars['Boolean']['output']; /** * Used for broadcasting real time chat head bubbles and status. Does not persist any info. * @deprecated Use broadcastViewerUserActivity */ userViewerActivityBroadcast: Scalars['Boolean']['output']; versionMutations: VersionMutations; /** Creates a new webhook on a stream */ webhookCreate: Scalars['String']['output']; /** Deletes an existing webhook */ webhookDelete: Scalars['String']['output']; /** Updates an existing webhook */ webhookUpdate: Scalars['String']['output']; }; export type MutationAdminDeleteUserArgs = { userConfirmation: UserDeleteInput; }; export type MutationApiTokenCreateArgs = { token: ApiTokenCreateInput; }; export type MutationApiTokenRevokeArgs = { token: Scalars['String']['input']; }; export type MutationAppCreateArgs = { app: AppCreateInput; }; export type MutationAppDeleteArgs = { appId: Scalars['String']['input']; }; export type MutationAppRevokeAccessArgs = { appId: Scalars['String']['input']; }; export type MutationAppTokenCreateArgs = { token: AppTokenCreateInput; }; export type MutationAppUpdateArgs = { app: AppUpdateInput; }; export type MutationAutomateFunctionRunStatusReportArgs = { input: AutomateFunctionRunStatusReportInput; }; export type MutationBranchCreateArgs = { branch: BranchCreateInput; }; export type MutationBranchDeleteArgs = { branch: BranchDeleteInput; }; export type MutationBranchUpdateArgs = { branch: BranchUpdateInput; }; export type MutationBroadcastViewerUserActivityArgs = { message: ViewerUserActivityMessageInput; projectId: Scalars['String']['input']; resourceIdString: Scalars['String']['input']; }; export type MutationCommentArchiveArgs = { archived?: Scalars['Boolean']['input']; commentId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type MutationCommentCreateArgs = { input: CommentCreateInput; }; export type MutationCommentEditArgs = { input: CommentEditInput; }; export type MutationCommentReplyArgs = { input: ReplyCreateInput; }; export type MutationCommentViewArgs = { commentId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type MutationCommitCreateArgs = { commit: CommitCreateInput; }; export type MutationCommitDeleteArgs = { commit: CommitDeleteInput; }; export type MutationCommitReceiveArgs = { input: CommitReceivedInput; }; export type MutationCommitUpdateArgs = { commit: CommitUpdateInput; }; export type MutationCommitsDeleteArgs = { input: CommitsDeleteInput; }; export type MutationCommitsMoveArgs = { input: CommitsMoveInput; }; export type MutationInviteDeleteArgs = { inviteId: Scalars['String']['input']; }; export type MutationInviteResendArgs = { inviteId: Scalars['String']['input']; }; export type MutationObjectCreateArgs = { objectInput: ObjectCreateInput; }; export type MutationRequestVerificationByEmailArgs = { email: Scalars['String']['input']; }; export type MutationServerInfoUpdateArgs = { info: ServerInfoUpdateInput; }; export type MutationServerInviteBatchCreateArgs = { input: Array; }; export type MutationServerInviteCreateArgs = { input: ServerInviteCreateInput; }; export type MutationStreamAccessRequestCreateArgs = { streamId: Scalars['String']['input']; }; export type MutationStreamAccessRequestUseArgs = { accept: Scalars['Boolean']['input']; requestId: Scalars['String']['input']; role?: StreamRole; }; export type MutationStreamCreateArgs = { stream: StreamCreateInput; }; export type MutationStreamDeleteArgs = { id: Scalars['String']['input']; }; export type MutationStreamFavoriteArgs = { favorited: Scalars['Boolean']['input']; streamId: Scalars['String']['input']; }; export type MutationStreamInviteBatchCreateArgs = { input: Array; }; export type MutationStreamInviteCancelArgs = { inviteId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type MutationStreamInviteCreateArgs = { input: StreamInviteCreateInput; }; export type MutationStreamInviteUseArgs = { accept: Scalars['Boolean']['input']; streamId: Scalars['String']['input']; token: Scalars['String']['input']; }; export type MutationStreamLeaveArgs = { streamId: Scalars['String']['input']; }; export type MutationStreamRevokePermissionArgs = { permissionParams: StreamRevokePermissionInput; }; export type MutationStreamUpdateArgs = { stream: StreamUpdateInput; }; export type MutationStreamUpdatePermissionArgs = { permissionParams: StreamUpdatePermissionInput; }; export type MutationStreamsDeleteArgs = { ids?: InputMaybe>; }; export type MutationUserCommentThreadActivityBroadcastArgs = { commentId: Scalars['String']['input']; data?: InputMaybe; streamId: Scalars['String']['input']; }; export type MutationUserDeleteArgs = { userConfirmation: UserDeleteInput; }; export type MutationUserNotificationPreferencesUpdateArgs = { preferences: Scalars['JSONObject']['input']; }; export type MutationUserRoleChangeArgs = { userRoleInput: UserRoleInput; }; export type MutationUserUpdateArgs = { user: UserUpdateInput; }; export type MutationUserViewerActivityBroadcastArgs = { data?: InputMaybe; resourceId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type MutationWebhookCreateArgs = { webhook: WebhookCreateInput; }; export type MutationWebhookDeleteArgs = { webhook: WebhookDeleteInput; }; export type MutationWebhookUpdateArgs = { webhook: WebhookUpdateInput; }; export type Object = { __typename?: 'Object'; /** @deprecated Not implemented. */ applicationId?: Maybe; /** * Get any objects that this object references. In the case of commits, this will give you a commit's constituent objects. * **NOTE**: Providing any of the two last arguments ( `query`, `orderBy` ) will trigger a different code branch that executes a much more expensive SQL query. It is not recommended to do so for basic clients that are interested in purely getting all the objects of a given commit. */ children: ObjectCollection; /** * The total number of comments for this commit. To actually get the comments, use the comments query and pass in a resource array consisting of of this object's id. * E.g., * ``` * query{ * comments(streamId:"streamId" resources:[{resourceType: object, resourceId:"objectId"}] ){ * ... * } * ``` * @deprecated Part of the old API surface and will be removed in the future. */ commentCount: Scalars['Int']['output']; createdAt?: Maybe; /** The full object, with all its props & other things. **NOTE:** If you're requesting objects for the purpose of recreating & displaying, you probably only want to request this specific field. */ data?: Maybe; id: Scalars['String']['output']; speckleType?: Maybe; totalChildrenCount?: Maybe; }; export type ObjectChildrenArgs = { cursor?: InputMaybe; depth?: Scalars['Int']['input']; limit?: Scalars['Int']['input']; orderBy?: InputMaybe; query?: InputMaybe>; select?: InputMaybe>>; }; export type ObjectCollection = { __typename?: 'ObjectCollection'; cursor?: Maybe; objects: Array; totalCount: Scalars['Int']['output']; }; export type ObjectCreateInput = { /** The objects you want to create. */ objects: Array>; /** The stream against which these objects will be created. */ streamId: Scalars['String']['input']; }; export type PasswordStrengthCheckFeedback = { __typename?: 'PasswordStrengthCheckFeedback'; suggestions: Array; warning?: Maybe; }; export type PasswordStrengthCheckResults = { __typename?: 'PasswordStrengthCheckResults'; /** Verbal feedback to help choose better passwords. set when score <= 2. */ feedback: PasswordStrengthCheckFeedback; /** * Integer from 0-4 (useful for implementing a strength bar): * 0 too guessable: risky password. (guesses < 10^3) * 1 very guessable: protection from throttled online attacks. (guesses < 10^6) * 2 somewhat guessable: protection from unthrottled online attacks. (guesses < 10^8) * 3 safely unguessable: moderate protection from offline slow-hash scenario. (guesses < 10^10) * 4 very unguessable: strong protection from offline slow-hash scenario. (guesses >= 10^10) */ score: Scalars['Int']['output']; }; export type PendingStreamCollaborator = { __typename?: 'PendingStreamCollaborator'; id: Scalars['String']['output']; inviteId: Scalars['String']['output']; invitedBy: LimitedUser; projectId: Scalars['String']['output']; projectName: Scalars['String']['output']; role: Scalars['String']['output']; /** @deprecated Use projectId instead */ streamId: Scalars['String']['output']; /** @deprecated Use projectName instead */ streamName: Scalars['String']['output']; /** E-mail address or name of the invited user */ title: Scalars['String']['output']; /** Only available if the active user is the pending stream collaborator */ token?: Maybe; /** Set only if user is registered */ user?: Maybe; }; export type Project = { __typename?: 'Project'; allowPublicComments: Scalars['Boolean']['output']; /** Get a single automation by id. Error will be thrown if automation is not found or inaccessible. */ automation: Automation; automations: AutomationCollection; blob?: Maybe; /** Get the metadata collection of blobs stored for this stream. */ blobs?: Maybe; /** Get specific project comment/thread by ID */ comment?: Maybe; /** All comment threads in this project */ commentThreads: ProjectCommentCollection; createdAt: Scalars['DateTime']['output']; description?: Maybe; id: Scalars['ID']['output']; /** Collaborators who have been invited, but not yet accepted. */ invitedTeam?: Maybe>; /** Returns a specific model by its ID */ model: Model; /** Retrieve a specific project model by its ID */ modelByName: Model; /** Return a model tree of children for the specified model name */ modelChildrenTree: Array; /** Returns a flat list of all models */ models: ModelCollection; /** * Return's a project's models in a tree view with submodels being nested under parent models * real or fake (e.g., with a foo/bar model, it will be nested under foo even if such a model doesn't actually exist) */ modelsTree: ModelsTreeItemCollection; name: Scalars['String']['output']; object?: Maybe; /** Pending project access requests */ pendingAccessRequests?: Maybe>; /** Returns a list models that are being created from a file import */ pendingImportedModels: Array; /** Active user's role for this project. `null` if request is not authenticated, or the project is not explicitly shared with you. */ role?: Maybe; /** Source apps used in any models of this project */ sourceApps: Array; team: Array; updatedAt: Scalars['DateTime']['output']; /** Retrieve a specific project version by its ID */ version?: Maybe; /** Returns a flat list of all project versions */ versions: VersionCollection; /** Return metadata about resources being requested in the viewer */ viewerResources: Array; visibility: ProjectVisibility; webhooks: WebhookCollection; }; export type ProjectAutomationArgs = { id: Scalars['String']['input']; }; export type ProjectAutomationsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: InputMaybe; }; export type ProjectBlobArgs = { id: Scalars['String']['input']; }; export type ProjectBlobsArgs = { cursor?: InputMaybe; limit?: InputMaybe; query?: InputMaybe; }; export type ProjectCommentArgs = { id: Scalars['String']['input']; }; export type ProjectCommentThreadsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ProjectModelArgs = { id: Scalars['String']['input']; }; export type ProjectModelByNameArgs = { name: Scalars['String']['input']; }; export type ProjectModelChildrenTreeArgs = { fullName: Scalars['String']['input']; }; export type ProjectModelsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ProjectModelsTreeArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ProjectObjectArgs = { id: Scalars['String']['input']; }; export type ProjectPendingImportedModelsArgs = { limit?: InputMaybe; }; export type ProjectVersionArgs = { id: Scalars['String']['input']; }; export type ProjectVersionsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type ProjectViewerResourcesArgs = { loadedVersionsOnly?: InputMaybe; resourceIdString: Scalars['String']['input']; }; export type ProjectWebhooksArgs = { id?: InputMaybe; }; /** Created when a user requests to become a contributor on a project */ export type ProjectAccessRequest = { __typename?: 'ProjectAccessRequest'; createdAt: Scalars['DateTime']['output']; id: Scalars['ID']['output']; /** Can only be selected if authed user has proper access */ project: Project; projectId: Scalars['String']['output']; requester: LimitedUser; requesterId: Scalars['String']['output']; }; export type ProjectAccessRequestMutations = { __typename?: 'ProjectAccessRequestMutations'; /** Request access to a specific project */ create: ProjectAccessRequest; /** Accept or decline a project access request. Must be a project owner to invoke this. */ use: Project; }; export type ProjectAccessRequestMutationsCreateArgs = { projectId: Scalars['String']['input']; }; export type ProjectAccessRequestMutationsUseArgs = { accept: Scalars['Boolean']['input']; requestId: Scalars['String']['input']; role?: StreamRole; }; export type ProjectAutomationCreateInput = { enabled: Scalars['Boolean']['input']; name: Scalars['String']['input']; }; export type ProjectAutomationMutations = { __typename?: 'ProjectAutomationMutations'; create: Automation; createRevision: AutomationRevision; createTestAutomation: Automation; createTestAutomationRun: TestAutomationRun; /** * Trigger an automation with a fake "version created" trigger. The "version created" will * just refer to the last version of the model. */ trigger: Scalars['String']['output']; update: Automation; }; export type ProjectAutomationMutationsCreateArgs = { input: ProjectAutomationCreateInput; }; export type ProjectAutomationMutationsCreateRevisionArgs = { input: ProjectAutomationRevisionCreateInput; }; export type ProjectAutomationMutationsCreateTestAutomationArgs = { input: ProjectTestAutomationCreateInput; }; export type ProjectAutomationMutationsCreateTestAutomationRunArgs = { automationId: Scalars['ID']['input']; }; export type ProjectAutomationMutationsTriggerArgs = { automationId: Scalars['ID']['input']; }; export type ProjectAutomationMutationsUpdateArgs = { input: ProjectAutomationUpdateInput; }; export type ProjectAutomationRevisionCreateInput = { automationId: Scalars['ID']['input']; functions: Array; /** AutomateTypes.TriggerDefinitionsSchema type from @speckle/shared */ triggerDefinitions: Scalars['JSONObject']['input']; }; export type ProjectAutomationUpdateInput = { enabled?: InputMaybe; id: Scalars['ID']['input']; name?: InputMaybe; }; export type ProjectAutomationsUpdatedMessage = { __typename?: 'ProjectAutomationsUpdatedMessage'; automation?: Maybe; automationId: Scalars['String']['output']; /** Only set if type === CREATED_REVISION */ revision?: Maybe; type: ProjectAutomationsUpdatedMessageType; }; export enum ProjectAutomationsUpdatedMessageType { Created = 'CREATED', CreatedRevision = 'CREATED_REVISION', Updated = 'UPDATED' } export type ProjectCollaborator = { __typename?: 'ProjectCollaborator'; id: Scalars['ID']['output']; role: Scalars['String']['output']; user: LimitedUser; }; export type ProjectCollection = { __typename?: 'ProjectCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type ProjectCommentCollection = { __typename?: 'ProjectCommentCollection'; cursor?: Maybe; items: Array; totalArchivedCount: Scalars['Int']['output']; totalCount: Scalars['Int']['output']; }; export type ProjectCommentsFilter = { /** Whether or not to include archived/resolved threads */ includeArchived?: InputMaybe; /** * By default if resourceIdString is set, the "versionId" part of model resource identifiers will be ignored * and all comments of all versions of any of the referenced models will be returned. If `loadedVersionsOnly` is * enabled, then only comment threads of loaded/referenced versions in resourceIdString will be returned. */ loadedVersionsOnly?: InputMaybe; /** * Only request comments belonging to the resources identified by this * comma-delimited resouce string (same format that's used in the viewer URL) */ resourceIdString?: InputMaybe; }; export type ProjectCommentsUpdatedMessage = { __typename?: 'ProjectCommentsUpdatedMessage'; /** Null if deleted */ comment?: Maybe; id: Scalars['String']['output']; type: ProjectCommentsUpdatedMessageType; }; export enum ProjectCommentsUpdatedMessageType { Archived = 'ARCHIVED', Created = 'CREATED', Updated = 'UPDATED' } /** Any values left null will be ignored */ export type ProjectCreateInput = { description?: InputMaybe; name?: InputMaybe; visibility?: InputMaybe; workspaceId?: InputMaybe; }; export type ProjectFileImportUpdatedMessage = { __typename?: 'ProjectFileImportUpdatedMessage'; /** Upload ID */ id: Scalars['String']['output']; type: ProjectFileImportUpdatedMessageType; upload: FileUpload; }; export enum ProjectFileImportUpdatedMessageType { Created = 'CREATED', Updated = 'UPDATED' } export type ProjectInviteCreateInput = { /** Either this or userId must be filled */ email?: InputMaybe; /** Defaults to the contributor role, if not specified */ role?: InputMaybe; /** Can only be specified if guest mode is on or if the user is an admin */ serverRole?: InputMaybe; /** Either this or email must be filled */ userId?: InputMaybe; }; export type ProjectInviteMutations = { __typename?: 'ProjectInviteMutations'; /** Batch invite to project */ batchCreate: Project; /** Cancel a pending stream invite. Can only be invoked by a project owner. */ cancel: Project; /** Invite a new or registered user to be a project collaborator. Can only be invoked by a project owner. */ create: Project; /** Accept or decline a project invite */ use: Scalars['Boolean']['output']; }; export type ProjectInviteMutationsBatchCreateArgs = { input: Array; projectId: Scalars['ID']['input']; }; export type ProjectInviteMutationsCancelArgs = { inviteId: Scalars['String']['input']; projectId: Scalars['ID']['input']; }; export type ProjectInviteMutationsCreateArgs = { input: ProjectInviteCreateInput; projectId: Scalars['ID']['input']; }; export type ProjectInviteMutationsUseArgs = { input: ProjectInviteUseInput; }; export type ProjectInviteUseInput = { accept: Scalars['Boolean']['input']; projectId: Scalars['ID']['input']; token: Scalars['String']['input']; }; export type ProjectModelsFilter = { /** Filter by IDs of contributors who participated in models */ contributors?: InputMaybe>; /** Excldue models w/ the specified IDs */ excludeIds?: InputMaybe>; /** Only select models w/ the specified IDs */ ids?: InputMaybe>; /** Filter out models that don't have any versions */ onlyWithVersions?: InputMaybe; /** Filter by model names */ search?: InputMaybe; /** Filter by source apps used in models */ sourceApps?: InputMaybe>; }; export type ProjectModelsTreeFilter = { /** Filter by IDs of contributors who participated in models */ contributors?: InputMaybe>; /** Search for specific models. If used, tree items from different levels may be mixed. */ search?: InputMaybe; /** Filter by source apps used in models */ sourceApps?: InputMaybe>; }; export type ProjectModelsUpdatedMessage = { __typename?: 'ProjectModelsUpdatedMessage'; /** Model ID */ id: Scalars['String']['output']; /** Null if model was deleted */ model?: Maybe; type: ProjectModelsUpdatedMessageType; }; export enum ProjectModelsUpdatedMessageType { Created = 'CREATED', Deleted = 'DELETED', Updated = 'UPDATED' } export type ProjectMutations = { __typename?: 'ProjectMutations'; /** Access request related mutations */ accessRequestMutations: ProjectAccessRequestMutations; automationMutations: ProjectAutomationMutations; /** Batch delete projects */ batchDelete: Scalars['Boolean']['output']; /** Create new project */ create: Project; /** * Create onboarding/tutorial project. If one is already created for the active user, that * one will be returned instead. */ createForOnboarding: Project; /** Delete an existing project */ delete: Scalars['Boolean']['output']; /** Invite related mutations */ invites: ProjectInviteMutations; /** Leave a project. Only possible if you're not the last remaining owner. */ leave: Scalars['Boolean']['output']; /** Updates an existing project */ update: Project; /** Update role for a collaborator */ updateRole: Project; }; export type ProjectMutationsAutomationMutationsArgs = { projectId: Scalars['ID']['input']; }; export type ProjectMutationsBatchDeleteArgs = { ids: Array; }; export type ProjectMutationsCreateArgs = { input?: InputMaybe; }; export type ProjectMutationsDeleteArgs = { id: Scalars['String']['input']; }; export type ProjectMutationsLeaveArgs = { id: Scalars['String']['input']; }; export type ProjectMutationsUpdateArgs = { update: ProjectUpdateInput; }; export type ProjectMutationsUpdateRoleArgs = { input: ProjectUpdateRoleInput; }; export type ProjectPendingModelsUpdatedMessage = { __typename?: 'ProjectPendingModelsUpdatedMessage'; /** Upload ID */ id: Scalars['String']['output']; model: FileUpload; type: ProjectPendingModelsUpdatedMessageType; }; export enum ProjectPendingModelsUpdatedMessageType { Created = 'CREATED', Updated = 'UPDATED' } export type ProjectPendingVersionsUpdatedMessage = { __typename?: 'ProjectPendingVersionsUpdatedMessage'; /** Upload ID */ id: Scalars['String']['output']; type: ProjectPendingVersionsUpdatedMessageType; version: FileUpload; }; export enum ProjectPendingVersionsUpdatedMessageType { Created = 'CREATED', Updated = 'UPDATED' } export type ProjectTestAutomationCreateInput = { functionId: Scalars['String']['input']; modelId: Scalars['String']['input']; name: Scalars['String']['input']; }; export type ProjectTriggeredAutomationsStatusUpdatedMessage = { __typename?: 'ProjectTriggeredAutomationsStatusUpdatedMessage'; model: Model; project: Project; run: AutomateRun; type: ProjectTriggeredAutomationsStatusUpdatedMessageType; version: Version; }; export enum ProjectTriggeredAutomationsStatusUpdatedMessageType { RunCreated = 'RUN_CREATED', RunUpdated = 'RUN_UPDATED' } /** Any values left null will be ignored, so only set the properties that you want updated */ export type ProjectUpdateInput = { allowPublicComments?: InputMaybe; description?: InputMaybe; id: Scalars['ID']['input']; name?: InputMaybe; visibility?: InputMaybe; }; export type ProjectUpdateRoleInput = { projectId: Scalars['String']['input']; /** Leave role as null to revoke access entirely */ role?: InputMaybe; userId: Scalars['String']['input']; }; export type ProjectUpdatedMessage = { __typename?: 'ProjectUpdatedMessage'; /** Project ID */ id: Scalars['String']['output']; /** Project entity, null if project was deleted */ project?: Maybe; /** Message type */ type: ProjectUpdatedMessageType; }; export enum ProjectUpdatedMessageType { Deleted = 'DELETED', Updated = 'UPDATED' } export type ProjectVersionsPreviewGeneratedMessage = { __typename?: 'ProjectVersionsPreviewGeneratedMessage'; objectId: Scalars['String']['output']; projectId: Scalars['String']['output']; versionId: Scalars['String']['output']; }; export type ProjectVersionsUpdatedMessage = { __typename?: 'ProjectVersionsUpdatedMessage'; /** Version ID */ id: Scalars['String']['output']; /** Only set if version was deleted, in other scenarios can be queried from 'version' */ modelId?: Maybe; type: ProjectVersionsUpdatedMessageType; /** Null if version was deleted */ version?: Maybe; }; export enum ProjectVersionsUpdatedMessageType { Created = 'CREATED', Deleted = 'DELETED', Updated = 'UPDATED' } export enum ProjectVisibility { Private = 'PRIVATE', Public = 'PUBLIC', Unlisted = 'UNLISTED' } export type Query = { __typename?: 'Query'; /** Stare into the void. */ _?: Maybe; /** Gets the profile of the authenticated user or null if not authenticated */ activeUser?: Maybe; admin: AdminQueries; /** * All the streams of the server. Available to admins only. * @deprecated use admin.projectList instead */ adminStreams?: Maybe; /** * Get all (or search for specific) users, registered or invited, from the server in a paginated view. * The query looks for matches in name, company and email. * @deprecated use admin.UserList instead */ adminUsers?: Maybe; /** Gets a specific app from the server. */ app?: Maybe; /** * Returns all the publicly available apps on this server. * @deprecated Part of the old API surface and will be removed in the future. */ apps?: Maybe>>; /** If user is authenticated using an app token, this will describe the app */ authenticatedAsApp?: Maybe; /** Get a single automate function by id. Error will be thrown if function is not found or inaccessible. */ automateFunction: AutomateFunction; automateFunctions: AutomateFunctionCollection; /** Part of the automation/function creation handshake mechanism */ automateValidateAuthCode: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.comment instead. */ comment?: Maybe; /** * This query can be used in the following ways: * - get all the comments for a stream: **do not pass in any resource identifiers**. * - get the comments targeting any of a set of provided resources (comments/objects): **pass in an array of resources.** * @deprecated Use Project/Version/Model 'commentThreads' fields instead */ comments?: Maybe; /** * All of the discoverable streams of the server * @deprecated Part of the old API surface and will be removed in the future. */ discoverableStreams?: Maybe; /** Get the (limited) profile information of another server user */ otherUser?: Maybe; /** * Find a specific project. Will throw an authorization error if active user isn't authorized * to see it, for example, if a project isn't public and the user doesn't have the appropriate rights. */ project: Project; /** * Look for an invitation to a project, for the current user (authed or not). If token * isn't specified, the server will look for any valid invite. */ projectInvite?: Maybe; serverInfo: ServerInfo; /** Receive metadata about an invite by the invite token */ serverInviteByToken?: Maybe; /** @deprecated use admin.serverStatistics instead */ serverStats: ServerStats; /** * Returns a specific stream. Will throw an authorization error if active user isn't authorized * to see it, for example, if a stream isn't public and the user doesn't have the appropriate rights. * @deprecated Part of the old API surface and will be removed in the future. Use Query.project instead. */ stream?: Maybe; /** * Get authed user's stream access request * @deprecated Part of the old API surface and will be removed in the future. Use User.projectAccessRequest instead. */ streamAccessRequest?: Maybe; /** * Look for an invitation to a stream, for the current user (authed or not). If token * isn't specified, the server will look for any valid invite. * @deprecated Part of the old API surface and will be removed in the future. Use Query.projectInvite instead. */ streamInvite?: Maybe; /** * Get all invitations to streams that the active user has * @deprecated Part of the old API surface and will be removed in the future. Use User.projectInvites instead. */ streamInvites: Array; /** * Returns all streams that the active user is a collaborator on. * Pass in the `query` parameter to search by name, description or ID. * @deprecated Part of the old API surface and will be removed in the future. Use User.projects instead. */ streams?: Maybe; /** * Gets the profile of a user. If no id argument is provided, will return the current authenticated user's profile (as extracted from the authorization header). * @deprecated To be removed in the near future! Use 'activeUser' to get info about the active user or 'otherUser' to get info about another user. */ user?: Maybe; /** * Validate password strength * @deprecated Part of the old API surface and will be removed in the future. */ userPwdStrength: PasswordStrengthCheckResults; /** * Search for users and return limited metadata about them, if you have the server:user role. * The query looks for matches in name & email */ userSearch: UserSearchResultCollection; }; export type QueryAdminStreamsArgs = { limit?: InputMaybe; offset?: InputMaybe; orderBy?: InputMaybe; query?: InputMaybe; visibility?: InputMaybe; }; export type QueryAdminUsersArgs = { limit?: Scalars['Int']['input']; offset?: Scalars['Int']['input']; query?: InputMaybe; }; export type QueryAppArgs = { id: Scalars['String']['input']; }; export type QueryAutomateFunctionArgs = { id: Scalars['ID']['input']; }; export type QueryAutomateFunctionsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: InputMaybe; }; export type QueryAutomateValidateAuthCodeArgs = { payload: AutomateAuthCodePayloadTest; }; export type QueryCommentArgs = { id: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type QueryCommentsArgs = { archived?: Scalars['Boolean']['input']; cursor?: InputMaybe; limit?: InputMaybe; resources?: InputMaybe>>; streamId: Scalars['String']['input']; }; export type QueryDiscoverableStreamsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; sort?: InputMaybe; }; export type QueryOtherUserArgs = { id: Scalars['String']['input']; }; export type QueryProjectArgs = { id: Scalars['String']['input']; }; export type QueryProjectInviteArgs = { projectId: Scalars['String']['input']; token?: InputMaybe; }; export type QueryServerInviteByTokenArgs = { token: Scalars['String']['input']; }; export type QueryStreamArgs = { id: Scalars['String']['input']; }; export type QueryStreamAccessRequestArgs = { streamId: Scalars['String']['input']; }; export type QueryStreamInviteArgs = { streamId: Scalars['String']['input']; token?: InputMaybe; }; export type QueryStreamsArgs = { cursor?: InputMaybe; limit?: InputMaybe; query?: InputMaybe; }; export type QueryUserArgs = { id?: InputMaybe; }; export type QueryUserPwdStrengthArgs = { pwd: Scalars['String']['input']; }; export type QueryUserSearchArgs = { archived?: InputMaybe; cursor?: InputMaybe; emailOnly?: InputMaybe; limit?: Scalars['Int']['input']; query: Scalars['String']['input']; }; /** Deprecated: Used by old stream-based mutations */ export type ReplyCreateInput = { /** IDs of uploaded blobs that should be attached to this reply */ blobIds: Array; data?: InputMaybe; parentComment: Scalars['String']['input']; streamId: Scalars['String']['input']; /** ProseMirror document object */ text?: InputMaybe; }; export type ResourceIdentifier = { __typename?: 'ResourceIdentifier'; resourceId: Scalars['String']['output']; resourceType: ResourceType; }; export type ResourceIdentifierInput = { resourceId: Scalars['String']['input']; resourceType: ResourceType; }; export enum ResourceType { Comment = 'comment', Commit = 'commit', Object = 'object', Stream = 'stream' } export type Role = { __typename?: 'Role'; description: Scalars['String']['output']; name: Scalars['String']['output']; resourceTarget: Scalars['String']['output']; }; /** Available scopes. */ export type Scope = { __typename?: 'Scope'; description: Scalars['String']['output']; name: Scalars['String']['output']; }; export type ServerApp = { __typename?: 'ServerApp'; author?: Maybe; createdAt: Scalars['DateTime']['output']; description?: Maybe; id: Scalars['String']['output']; logo?: Maybe; name: Scalars['String']['output']; public?: Maybe; redirectUrl: Scalars['String']['output']; scopes: Array; secret?: Maybe; termsAndConditionsLink?: Maybe; trustByDefault?: Maybe; }; export type ServerAppListItem = { __typename?: 'ServerAppListItem'; author?: Maybe; description?: Maybe; id: Scalars['String']['output']; logo?: Maybe; name: Scalars['String']['output']; redirectUrl: Scalars['String']['output']; termsAndConditionsLink?: Maybe; trustByDefault?: Maybe; }; export type ServerAutomateInfo = { __typename?: 'ServerAutomateInfo'; availableFunctionTemplates: Array; }; /** Information about this server. */ export type ServerInfo = { __typename?: 'ServerInfo'; adminContact?: Maybe; /** The authentication strategies available on this server. */ authStrategies: Array; automate: ServerAutomateInfo; /** Base URL of Speckle Automate, if set */ automateUrl?: Maybe; blobSizeLimitBytes: Scalars['Int']['output']; canonicalUrl?: Maybe; company?: Maybe; description?: Maybe; /** Whether or not to show messaging about FE2 (banners etc.) */ enableNewWebUiMessaging?: Maybe; guestModeEnabled: Scalars['Boolean']['output']; inviteOnly?: Maybe; /** Server relocation / migration info */ migration?: Maybe; name: Scalars['String']['output']; /** @deprecated Use role constants from the @speckle/shared npm package instead */ roles: Array; scopes: Array; serverRoles: Array; termsOfService?: Maybe; version?: Maybe; }; export type ServerInfoUpdateInput = { adminContact?: InputMaybe; company?: InputMaybe; description?: InputMaybe; guestModeEnabled?: InputMaybe; inviteOnly?: InputMaybe; name: Scalars['String']['input']; termsOfService?: InputMaybe; }; export type ServerInvite = { __typename?: 'ServerInvite'; email: Scalars['String']['output']; id: Scalars['String']['output']; invitedBy: LimitedUser; }; export type ServerInviteCreateInput = { email: Scalars['String']['input']; message?: InputMaybe; /** Can only be specified if guest mode is on or if the user is an admin */ serverRole?: InputMaybe; }; export type ServerMigration = { __typename?: 'ServerMigration'; movedFrom?: Maybe; movedTo?: Maybe; }; export enum ServerRole { ServerAdmin = 'SERVER_ADMIN', ServerArchivedUser = 'SERVER_ARCHIVED_USER', ServerGuest = 'SERVER_GUEST', ServerUser = 'SERVER_USER' } export type ServerRoleItem = { __typename?: 'ServerRoleItem'; id: Scalars['String']['output']; title: Scalars['String']['output']; }; export type ServerStatistics = { __typename?: 'ServerStatistics'; totalPendingInvites: Scalars['Int']['output']; totalProjectCount: Scalars['Int']['output']; totalUserCount: Scalars['Int']['output']; }; export type ServerStats = { __typename?: 'ServerStats'; /** An array of objects currently structured as { created_month: Date, count: int }. */ commitHistory?: Maybe>>; /** An array of objects currently structured as { created_month: Date, count: int }. */ objectHistory?: Maybe>>; /** An array of objects currently structured as { created_month: Date, count: int }. */ streamHistory?: Maybe>>; totalCommitCount: Scalars['Int']['output']; totalObjectCount: Scalars['Int']['output']; totalStreamCount: Scalars['Int']['output']; totalUserCount: Scalars['Int']['output']; /** An array of objects currently structured as { created_month: Date, count: int }. */ userHistory?: Maybe>>; }; export type SmartTextEditorValue = { __typename?: 'SmartTextEditorValue'; /** File attachments, if any */ attachments?: Maybe>; /** * The actual (ProseMirror) document representing the text. Can be empty, * if there are attachments. */ doc?: Maybe; /** The type of editor value (comment, blog post etc.) */ type: Scalars['String']['output']; /** The version of the schema */ version: Scalars['String']['output']; }; export enum SortDirection { Asc = 'ASC', Desc = 'DESC' } export type Stream = { __typename?: 'Stream'; /** * All the recent activity on this stream in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ activity?: Maybe; allowPublicComments: Scalars['Boolean']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.blob instead. */ blob?: Maybe; /** * Get the metadata collection of blobs stored for this stream. * @deprecated Part of the old API surface and will be removed in the future. Use Project.blobs instead. */ blobs?: Maybe; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.model or Project.modelByName instead. */ branch?: Maybe; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.models or Project.modelsTree instead. */ branches?: Maybe; collaborators: Array; /** * The total number of comments for this stream. To actually get the comments, use the comments query without passing in a resource array. E.g.: * * ``` * query{ * comments(streamId:"streamId"){ * ... * } * ``` * @deprecated Part of the old API surface and will be removed in the future. */ commentCount: Scalars['Int']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.version instead. */ commit?: Maybe; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.versions instead. */ commits?: Maybe; createdAt: Scalars['DateTime']['output']; description?: Maybe; /** Date when you favorited this stream. `null` if stream isn't viewed from a specific user's perspective or if it isn't favorited. */ favoritedDate?: Maybe; favoritesCount: Scalars['Int']['output']; /** * Returns a specific file upload that belongs to this stream. * @deprecated Part of the old API surface and will be removed in the future. Use Project.pendingImportedModels or Model.pendingImportedVersions instead. */ fileUpload?: Maybe; /** * Returns a list of all the file uploads for this stream. * @deprecated Part of the old API surface and will be removed in the future. Use Project.pendingImportedModels or Model.pendingImportedVersions instead. */ fileUploads: Array; id: Scalars['String']['output']; /** * Whether the stream (if public) can be found on public stream exploration pages * and searches */ isDiscoverable: Scalars['Boolean']['output']; /** Whether the stream can be viewed by non-contributors */ isPublic: Scalars['Boolean']['output']; name: Scalars['String']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.object instead. */ object?: Maybe; /** * Pending stream access requests * @deprecated Part of the old API surface and will be removed in the future. Use Project.pendingAccessRequests instead. */ pendingAccessRequests?: Maybe>; /** Collaborators who have been invited, but not yet accepted. */ pendingCollaborators?: Maybe>; /** Your role for this stream. `null` if request is not authenticated, or the stream is not explicitly shared with you. */ role?: Maybe; size?: Maybe; updatedAt: Scalars['DateTime']['output']; /** @deprecated Part of the old API surface and will be removed in the future. Use Project.webhooks instead. */ webhooks: WebhookCollection; }; export type StreamActivityArgs = { actionType?: InputMaybe; after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type StreamBlobArgs = { id: Scalars['String']['input']; }; export type StreamBlobsArgs = { cursor?: InputMaybe; limit?: InputMaybe; query?: InputMaybe; }; export type StreamBranchArgs = { name?: InputMaybe; }; export type StreamBranchesArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type StreamCommitArgs = { id?: InputMaybe; }; export type StreamCommitsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type StreamFileUploadArgs = { id: Scalars['String']['input']; }; export type StreamObjectArgs = { id: Scalars['String']['input']; }; export type StreamWebhooksArgs = { id?: InputMaybe; }; /** Created when a user requests to become a contributor on a stream */ export type StreamAccessRequest = { __typename?: 'StreamAccessRequest'; createdAt: Scalars['DateTime']['output']; id: Scalars['ID']['output']; requester: LimitedUser; requesterId: Scalars['String']['output']; /** Can only be selected if authed user has proper access */ stream: Stream; streamId: Scalars['String']['output']; }; export type StreamCollaborator = { __typename?: 'StreamCollaborator'; avatar?: Maybe; company?: Maybe; id: Scalars['String']['output']; name: Scalars['String']['output']; role: Scalars['String']['output']; serverRole: Scalars['String']['output']; }; export type StreamCollection = { __typename?: 'StreamCollection'; cursor?: Maybe; items?: Maybe>; totalCount: Scalars['Int']['output']; }; export type StreamCreateInput = { description?: InputMaybe; /** * Whether the stream (if public) can be found on public stream exploration pages * and searches */ isDiscoverable?: InputMaybe; /** Whether the stream can be viewed by non-contributors */ isPublic?: InputMaybe; name?: InputMaybe; /** Optionally specify user IDs of users that you want to invite to be contributors to this stream */ withContributors?: InputMaybe>; workspaceId?: InputMaybe; }; export type StreamInviteCreateInput = { email?: InputMaybe; message?: InputMaybe; /** Defaults to the contributor role, if not specified */ role?: InputMaybe; /** Can only be specified if guest mode is on or if the user is an admin */ serverRole?: InputMaybe; streamId: Scalars['String']['input']; userId?: InputMaybe; }; export type StreamRevokePermissionInput = { streamId: Scalars['String']['input']; userId: Scalars['String']['input']; }; export enum StreamRole { StreamContributor = 'STREAM_CONTRIBUTOR', StreamOwner = 'STREAM_OWNER', StreamReviewer = 'STREAM_REVIEWER' } export type StreamUpdateInput = { allowPublicComments?: InputMaybe; description?: InputMaybe; id: Scalars['String']['input']; /** * Whether the stream (if public) can be found on public stream exploration pages * and searches */ isDiscoverable?: InputMaybe; /** Whether the stream can be viewed by non-contributors */ isPublic?: InputMaybe; name?: InputMaybe; }; export type StreamUpdatePermissionInput = { role: Scalars['String']['input']; streamId: Scalars['String']['input']; userId: Scalars['String']['input']; }; export type Subscription = { __typename?: 'Subscription'; /** It's lonely in the void. */ _?: Maybe; /** * Subscribe to branch created event * @deprecated Part of the old API surface and will be removed in the future. Use 'projectModelsUpdated' instead. */ branchCreated?: Maybe; /** * Subscribe to branch deleted event * @deprecated Part of the old API surface and will be removed in the future. Use 'projectModelsUpdated' instead. */ branchDeleted?: Maybe; /** * Subscribe to branch updated event. * @deprecated Part of the old API surface and will be removed in the future. Use 'projectModelsUpdated' instead. */ branchUpdated?: Maybe; /** * Subscribe to new comment events. There's two ways to use this subscription: * - for a whole stream: do not pass in any resourceIds; this sub will get called whenever a comment (not reply) is added to any of the stream's resources. * - for a specific resource/set of resources: pass in a list of resourceIds (commit or object ids); this sub will get called when *any* of the resources provided get a comment. * @deprecated Use projectCommentsUpdated */ commentActivity: CommentActivityMessage; /** * Subscribes to events on a specific comment. Use to find out when: * - a top level comment is deleted (trigger a deletion event outside) * - a top level comment receives a reply. * @deprecated Use projectCommentsUpdated or viewerUserActivityBroadcasted for reply status */ commentThreadActivity: CommentThreadActivityMessage; /** * Subscribe to commit created event * @deprecated Part of the old API surface and will be removed in the future. Use 'projectVersionsUpdated' instead. */ commitCreated?: Maybe; /** * Subscribe to commit deleted event * @deprecated Part of the old API surface and will be removed in the future. Use 'projectVersionsUpdated' instead. */ commitDeleted?: Maybe; /** * Subscribe to commit updated event. * @deprecated Part of the old API surface and will be removed in the future. Use 'projectVersionsUpdated' instead. */ commitUpdated?: Maybe; /** Subscribe to updates to automations in the project */ projectAutomationsUpdated: ProjectAutomationsUpdatedMessage; /** * Subscribe to updates to resource comments/threads. Optionally specify resource ID string to only receive * updates regarding comments for those resources. */ projectCommentsUpdated: ProjectCommentsUpdatedMessage; /** * Subscribe to changes to any of a project's file imports * @deprecated Part of the old API surface and will be removed in the future. Use projectPendingModelsUpdated or projectPendingVersionsUpdated instead. */ projectFileImportUpdated: ProjectFileImportUpdatedMessage; /** Subscribe to changes to a project's models. Optionally specify modelIds to track. */ projectModelsUpdated: ProjectModelsUpdatedMessage; /** Subscribe to changes to a project's pending models */ projectPendingModelsUpdated: ProjectPendingModelsUpdatedMessage; /** Subscribe to changes to a project's pending versions */ projectPendingVersionsUpdated: ProjectPendingVersionsUpdatedMessage; /** Subscribe to updates to any triggered automations statuses in the project */ projectTriggeredAutomationsStatusUpdated: ProjectTriggeredAutomationsStatusUpdatedMessage; /** Track updates to a specific project */ projectUpdated: ProjectUpdatedMessage; projectVersionGendoAIRenderCreated: GendoAiRender; projectVersionGendoAIRenderUpdated: GendoAiRender; /** Subscribe to when a project's versions get their preview image fully generated. */ projectVersionsPreviewGenerated: ProjectVersionsPreviewGeneratedMessage; /** Subscribe to changes to a project's versions. */ projectVersionsUpdated: ProjectVersionsUpdatedMessage; /** * Subscribes to stream deleted event. Use this in clients/components that pertain only to this stream. * @deprecated Part of the old API surface and will be removed in the future. Use projectUpdated instead. */ streamDeleted?: Maybe; /** * Subscribes to stream updated event. Use this in clients/components that pertain only to this stream. * @deprecated Part of the old API surface and will be removed in the future. Use projectUpdated instead. */ streamUpdated?: Maybe; /** Track newly added or deleted projects owned by the active user */ userProjectsUpdated: UserProjectsUpdatedMessage; /** * Subscribes to new stream added event for your profile. Use this to display an up-to-date list of streams. * **NOTE**: If someone shares a stream with you, this subscription will be triggered with an extra value of `sharedBy` in the payload. * @deprecated Part of the old API surface and will be removed in the future. Use userProjectsUpdated instead. */ userStreamAdded?: Maybe; /** * Subscribes to stream removed event for your profile. Use this to display an up-to-date list of streams for your profile. * **NOTE**: If someone revokes your permissions on a stream, this subscription will be triggered with an extra value of `revokedBy` in the payload. * @deprecated Part of the old API surface and will be removed in the future. Use userProjectsUpdated instead. */ userStreamRemoved?: Maybe; /** * Broadcasts "real-time" location data for viewer users. * @deprecated Use viewerUserActivityBroadcasted */ userViewerActivity?: Maybe; /** Track user activities in the viewer relating to the specified resources */ viewerUserActivityBroadcasted: ViewerUserActivityMessage; }; export type SubscriptionBranchCreatedArgs = { streamId: Scalars['String']['input']; }; export type SubscriptionBranchDeletedArgs = { streamId: Scalars['String']['input']; }; export type SubscriptionBranchUpdatedArgs = { branchId?: InputMaybe; streamId: Scalars['String']['input']; }; export type SubscriptionCommentActivityArgs = { resourceIds?: InputMaybe>>; streamId: Scalars['String']['input']; }; export type SubscriptionCommentThreadActivityArgs = { commentId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type SubscriptionCommitCreatedArgs = { streamId: Scalars['String']['input']; }; export type SubscriptionCommitDeletedArgs = { streamId: Scalars['String']['input']; }; export type SubscriptionCommitUpdatedArgs = { commitId?: InputMaybe; streamId: Scalars['String']['input']; }; export type SubscriptionProjectAutomationsUpdatedArgs = { projectId: Scalars['String']['input']; }; export type SubscriptionProjectCommentsUpdatedArgs = { target: ViewerUpdateTrackingTarget; }; export type SubscriptionProjectFileImportUpdatedArgs = { id: Scalars['String']['input']; }; export type SubscriptionProjectModelsUpdatedArgs = { id: Scalars['String']['input']; modelIds?: InputMaybe>; }; export type SubscriptionProjectPendingModelsUpdatedArgs = { id: Scalars['String']['input']; }; export type SubscriptionProjectPendingVersionsUpdatedArgs = { id: Scalars['String']['input']; }; export type SubscriptionProjectTriggeredAutomationsStatusUpdatedArgs = { projectId: Scalars['String']['input']; }; export type SubscriptionProjectUpdatedArgs = { id: Scalars['String']['input']; }; export type SubscriptionProjectVersionGendoAiRenderCreatedArgs = { id: Scalars['String']['input']; versionId: Scalars['String']['input']; }; export type SubscriptionProjectVersionGendoAiRenderUpdatedArgs = { id: Scalars['String']['input']; versionId: Scalars['String']['input']; }; export type SubscriptionProjectVersionsPreviewGeneratedArgs = { id: Scalars['String']['input']; }; export type SubscriptionProjectVersionsUpdatedArgs = { id: Scalars['String']['input']; }; export type SubscriptionStreamDeletedArgs = { streamId?: InputMaybe; }; export type SubscriptionStreamUpdatedArgs = { streamId?: InputMaybe; }; export type SubscriptionUserViewerActivityArgs = { resourceId: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type SubscriptionViewerUserActivityBroadcastedArgs = { sessionId?: InputMaybe; target: ViewerUpdateTrackingTarget; }; export type TestAutomationRun = { __typename?: 'TestAutomationRun'; automationRunId: Scalars['String']['output']; functionRunId: Scalars['String']['output']; triggers: Array; }; export type TestAutomationRunTrigger = { __typename?: 'TestAutomationRunTrigger'; payload: TestAutomationRunTriggerPayload; triggerType: Scalars['String']['output']; }; export type TestAutomationRunTriggerPayload = { __typename?: 'TestAutomationRunTriggerPayload'; modelId: Scalars['String']['output']; versionId: Scalars['String']['output']; }; export type TokenResourceIdentifier = { __typename?: 'TokenResourceIdentifier'; id: Scalars['String']['output']; type: TokenResourceIdentifierType; }; export type TokenResourceIdentifierInput = { id: Scalars['String']['input']; type: TokenResourceIdentifierType; }; export enum TokenResourceIdentifierType { Project = 'project' } export type TriggeredAutomationsStatus = { __typename?: 'TriggeredAutomationsStatus'; automationRuns: Array; id: Scalars['ID']['output']; status: AutomateRunStatus; statusMessage?: Maybe; }; /** Any null values will be ignored */ export type UpdateAutomateFunctionInput = { description?: InputMaybe; id: Scalars['ID']['input']; logo?: InputMaybe; name?: InputMaybe; /** SourceAppNames values from @speckle/shared */ supportedSourceApps?: InputMaybe>; tags?: InputMaybe>; }; export type UpdateModelInput = { description?: InputMaybe; id: Scalars['ID']['input']; name?: InputMaybe; projectId: Scalars['ID']['input']; }; /** Only non-null values will be updated */ export type UpdateVersionInput = { message?: InputMaybe; versionId: Scalars['String']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type User = { __typename?: 'User'; /** * All the recent activity from this user in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ activity?: Maybe; /** Returns a list of your personal api tokens. */ apiTokens: Array; /** Returns the apps you have authorized. */ authorizedApps?: Maybe>; automateInfo: UserAutomateInfo; avatar?: Maybe; bio?: Maybe; /** * Get commits authored by the user. If requested for another user, then only commits * from public streams will be returned. * @deprecated Part of the old API surface and will be removed in the future. Use User.versions instead. */ commits?: Maybe; company?: Maybe; /** Returns the apps you have created. */ createdApps?: Maybe>; createdAt?: Maybe; /** Only returned if API user is the user being requested or an admin */ email?: Maybe; /** * All the streams that a active user has favorited. * Note: You can't use this to retrieve another user's favorite streams. * @deprecated Part of the old API surface and will be removed in the future. */ favoriteStreams: StreamCollection; /** Whether the user has a pending/active email verification token */ hasPendingVerification?: Maybe; id: Scalars['ID']['output']; /** Whether post-sign up onboarding has been finished or skipped entirely */ isOnboardingFinished?: Maybe; name: Scalars['String']['output']; notificationPreferences: Scalars['JSONObject']['output']; profiles?: Maybe; /** Get pending project access request, that the user made */ projectAccessRequest?: Maybe; /** Get all invitations to projects that the active user has */ projectInvites: Array; /** Get projects that the user participates in */ projects: ProjectCollection; role?: Maybe; /** * Returns all streams that the user is a collaborator on. If requested for a user, who isn't the * authenticated user, then this will only return discoverable streams. * @deprecated Part of the old API surface and will be removed in the future. Use User.projects instead. */ streams: StreamCollection; /** * The user's timeline in chronological order * @deprecated Part of the old API surface and will be removed in the future. */ timeline?: Maybe; /** * Total amount of favorites attached to streams owned by the user * @deprecated Part of the old API surface and will be removed in the future. */ totalOwnedStreamsFavorites: Scalars['Int']['output']; verified?: Maybe; /** * Get (count of) user's versions. By default gets all versions of all projects the user has access to. * Set authoredOnly=true to only retrieve versions authored by the user. * * Note: Only count resolution is currently implemented */ versions: CountOnlyCollection; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserActivityArgs = { actionType?: InputMaybe; after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserCommitsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserFavoriteStreamsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserProjectAccessRequestArgs = { projectId: Scalars['String']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserProjectsArgs = { cursor?: InputMaybe; filter?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserStreamsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserTimelineArgs = { after?: InputMaybe; before?: InputMaybe; cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; /** * Full user type, should only be used in the context of admin operations or * when a user is reading/writing info about himself */ export type UserVersionsArgs = { authoredOnly?: Scalars['Boolean']['input']; limit?: Scalars['Int']['input']; }; export type UserAutomateInfo = { __typename?: 'UserAutomateInfo'; availableGithubOrgs: Array; hasAutomateGithubApp: Scalars['Boolean']['output']; }; export type UserDeleteInput = { email: Scalars['String']['input']; }; export type UserProjectsFilter = { /** Only include projects where user has the specified roles */ onlyWithRoles?: InputMaybe>; /** Filter out projects by name */ search?: InputMaybe; }; export type UserProjectsUpdatedMessage = { __typename?: 'UserProjectsUpdatedMessage'; /** Project ID */ id: Scalars['String']['output']; /** Project entity, null if project was deleted */ project?: Maybe; /** Message type */ type: UserProjectsUpdatedMessageType; }; export enum UserProjectsUpdatedMessageType { Added = 'ADDED', Removed = 'REMOVED' } export type UserRoleInput = { id: Scalars['String']['input']; role: Scalars['String']['input']; }; export type UserSearchResultCollection = { __typename?: 'UserSearchResultCollection'; cursor?: Maybe; items: Array; }; export type UserUpdateInput = { avatar?: InputMaybe; bio?: InputMaybe; company?: InputMaybe; name?: InputMaybe; }; export type Version = { __typename?: 'Version'; authorUser?: Maybe; automationsStatus?: Maybe; /** All comment threads in this version */ commentThreads: CommentCollection; createdAt: Scalars['DateTime']['output']; gendoAIRender: GendoAiRender; gendoAIRenders: GendoAiRenderCollection; id: Scalars['ID']['output']; message?: Maybe; model: Model; parents?: Maybe>>; previewUrl: Scalars['String']['output']; referencedObject: Scalars['String']['output']; sourceApplication?: Maybe; totalChildrenCount?: Maybe; }; export type VersionCommentThreadsArgs = { cursor?: InputMaybe; limit?: Scalars['Int']['input']; }; export type VersionGendoAiRenderArgs = { id: Scalars['String']['input']; }; export type VersionCollection = { __typename?: 'VersionCollection'; cursor?: Maybe; items: Array; totalCount: Scalars['Int']['output']; }; export type VersionCreatedTrigger = { __typename?: 'VersionCreatedTrigger'; model?: Maybe; type: AutomateRunTriggerType; version?: Maybe; }; export type VersionCreatedTriggerDefinition = { __typename?: 'VersionCreatedTriggerDefinition'; model?: Maybe; type: AutomateRunTriggerType; }; export type VersionMutations = { __typename?: 'VersionMutations'; create: Version; delete: Scalars['Boolean']['output']; markReceived: Scalars['Boolean']['output']; moveToModel: Model; requestGendoAIRender: Scalars['Boolean']['output']; update: Version; }; export type VersionMutationsCreateArgs = { input: CreateVersionInput; }; export type VersionMutationsDeleteArgs = { input: DeleteVersionsInput; }; export type VersionMutationsMarkReceivedArgs = { input: MarkReceivedVersionInput; }; export type VersionMutationsMoveToModelArgs = { input: MoveVersionsInput; }; export type VersionMutationsRequestGendoAiRenderArgs = { input: GendoAiRenderInput; }; export type VersionMutationsUpdateArgs = { input: UpdateVersionInput; }; export type ViewerResourceGroup = { __typename?: 'ViewerResourceGroup'; /** Resource identifier used to refer to a collection of resource items */ identifier: Scalars['String']['output']; /** Viewer resources that the identifier refers to */ items: Array; }; export type ViewerResourceItem = { __typename?: 'ViewerResourceItem'; /** Null if resource represents an object */ modelId?: Maybe; objectId: Scalars['String']['output']; /** Null if resource represents an object */ versionId?: Maybe; }; export type ViewerUpdateTrackingTarget = { /** * By default if resourceIdString is set, the "versionId" part of model resource identifiers will be ignored * and all updates to of all versions of any of the referenced models will be returned. If `loadedVersionsOnly` is * enabled, then only updates of loaded/referenced versions in resourceIdString will be returned. */ loadedVersionsOnly?: InputMaybe; projectId: Scalars['String']['input']; /** * Only request updates to the resources identified by this * comma-delimited resouce string (same format that's used in the viewer URL) */ resourceIdString: Scalars['String']['input']; }; export type ViewerUserActivityMessage = { __typename?: 'ViewerUserActivityMessage'; sessionId: Scalars['String']['output']; /** SerializedViewerState, only null if DISCONNECTED */ state?: Maybe; status: ViewerUserActivityStatus; user?: Maybe; userId?: Maybe; userName: Scalars['String']['output']; }; export type ViewerUserActivityMessageInput = { sessionId: Scalars['String']['input']; /** SerializedViewerState, only null if DISCONNECTED */ state?: InputMaybe; status: ViewerUserActivityStatus; userId?: InputMaybe; userName: Scalars['String']['input']; }; export enum ViewerUserActivityStatus { Disconnected = 'DISCONNECTED', Viewing = 'VIEWING' } export type Webhook = { __typename?: 'Webhook'; description?: Maybe; enabled?: Maybe; hasSecret: Scalars['Boolean']['output']; history?: Maybe; id: Scalars['String']['output']; projectId: Scalars['String']['output']; streamId: Scalars['String']['output']; triggers: Array; url: Scalars['String']['output']; }; export type WebhookHistoryArgs = { limit?: Scalars['Int']['input']; }; export type WebhookCollection = { __typename?: 'WebhookCollection'; items: Array; totalCount: Scalars['Int']['output']; }; export type WebhookCreateInput = { description?: InputMaybe; enabled?: InputMaybe; secret?: InputMaybe; streamId: Scalars['String']['input']; triggers: Array>; url: Scalars['String']['input']; }; export type WebhookDeleteInput = { id: Scalars['String']['input']; streamId: Scalars['String']['input']; }; export type WebhookEvent = { __typename?: 'WebhookEvent'; id: Scalars['String']['output']; lastUpdate: Scalars['DateTime']['output']; payload: Scalars['String']['output']; retryCount: Scalars['Int']['output']; status: Scalars['Int']['output']; statusInfo: Scalars['String']['output']; webhookId: Scalars['String']['output']; }; export type WebhookEventCollection = { __typename?: 'WebhookEventCollection'; items?: Maybe>>; totalCount?: Maybe; }; export type WebhookUpdateInput = { description?: InputMaybe; enabled?: InputMaybe; id: Scalars['String']['input']; secret?: InputMaybe; streamId: Scalars['String']['input']; triggers?: InputMaybe>>; url?: InputMaybe; }; export type CrossSyncCommitBranchMetadataQueryVariables = Exact<{ streamId: Scalars['String']['input']; commitId: Scalars['String']['input']; }>; export type CrossSyncCommitBranchMetadataQuery = { __typename?: 'Query', stream?: { __typename?: 'Stream', commit?: { __typename?: 'Commit', id: string, branchName?: string | null } | null } | null }; export type CrossSyncBranchMetadataQueryVariables = Exact<{ streamId: Scalars['String']['input']; branchName: Scalars['String']['input']; }>; export type CrossSyncBranchMetadataQuery = { __typename?: 'Query', stream?: { __typename?: 'Stream', branch?: { __typename?: 'Branch', id: string } | null } | null }; export type CrossSyncCommitDownloadMetadataQueryVariables = Exact<{ streamId: Scalars['String']['input']; commitId: Scalars['String']['input']; }>; export type CrossSyncCommitDownloadMetadataQuery = { __typename?: 'Query', stream?: { __typename?: 'Stream', commit?: { __typename?: 'Commit', id: string, referencedObject: string, authorId?: string | null, message?: string | null, createdAt?: string | null, sourceApplication?: string | null, totalChildrenCount?: number | null, parents?: Array | null } | null } | null }; export type CrossSyncProjectViewerResourcesQueryVariables = Exact<{ projectId: Scalars['String']['input']; resourceUrlString: Scalars['String']['input']; }>; export type CrossSyncProjectViewerResourcesQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, viewerResources: Array<{ __typename?: 'ViewerResourceGroup', identifier: string, items: Array<{ __typename?: 'ViewerResourceItem', modelId?: string | null, versionId?: string | null, objectId: string }> }> } }; export type CrossSyncDownloadableCommitViewerThreadsQueryVariables = Exact<{ projectId: Scalars['String']['input']; filter: ProjectCommentsFilter; cursor?: InputMaybe; limit?: InputMaybe; }>; export type CrossSyncDownloadableCommitViewerThreadsQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, commentThreads: { __typename?: 'ProjectCommentCollection', totalCount: number, totalArchivedCount: number, items: Array<{ __typename?: 'Comment', id: string, viewerState?: Record | null, screenshot?: string | null, replies: { __typename?: 'CommentCollection', items: Array<{ __typename?: 'Comment', id: string, viewerState?: Record | null, screenshot?: string | null, text: { __typename?: 'SmartTextEditorValue', doc?: Record | null } }> }, text: { __typename?: 'SmartTextEditorValue', doc?: Record | null } }> } } }; export type DownloadbleCommentMetadataFragment = { __typename?: 'Comment', id: string, viewerState?: Record | null, screenshot?: string | null, text: { __typename?: 'SmartTextEditorValue', doc?: Record | null } }; export type CrossSyncProjectMetadataQueryVariables = Exact<{ id: Scalars['String']['input']; versionsCursor?: InputMaybe; }>; export type CrossSyncProjectMetadataQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, name: string, description?: string | null, visibility: ProjectVisibility, versions: { __typename?: 'VersionCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'Version', id: string, createdAt: string, model: { __typename?: 'Model', id: string, name: string } }> } } }; export type CrossSyncClientTestQueryVariables = Exact<{ [key: string]: never; }>; export type CrossSyncClientTestQuery = { __typename?: 'Query', _?: string | null };