58e5fa4511
* Starting on gergo/newAutomateModule * regenerated gql * minor gql optimizations * various fixes for project tabs * WIP featured functions * composable for ez debounced inputs * composable for ez debounced inputs * WIP fn card * TS error fixes * WIP cardd * WIP function cards * empty state done * WIP runs table * runs table looks good * run info dialog works * minor run dialog improvement * feat: add automate module with feature flag * added fautomate feature flag to fe2 as well * link to beta implemented * minor adjustment * enabling dev to skip migrations * Merge branch 'main' into fabians/fe2-automate-integration * tabs set up for single automation page * refactored editable title/description * models title fix * update title mutation * title done * WIP function card * feat: feature flags implementation * WIP runs * feat: feature flags feedback * Revert "feat: feature flags feedback" This reverts commit 139065bcbf967af207c2e98896ff3aae8ff2fdb0. * Revert "feat: feature flags implementation" This reverts commit 0614debb330ab092e96c71b7eccfaa8b4a280a4f. * minor row fix * core automation page done * wip automation fn settings * function settings dialog * apollo dev tools fix * feat: automation run trigger logic * functions page * WIP function page * fix FE2 lint issue * testing library borked, just skip interactive tests * tests fix * enabling automate module for testing * disabling module in test env * WIP fn page * parameters demo dialog * added markdown rendering * finished single function page * faked markdown * pkg json fix * pkg json fix * updated schema for triggers * more schema adjustments * adjusted FE to support triggers * added model select to automate edit * fixed up runs dialog & status icon * migrated viewer to new components * updated automate panel to fit designs in viewer * cleaning up old shit * mocks fix * fn logo size fix * runs table status fix * feat: automate module, automation creation and trigger * test: fix automate module tests * test: fixt automate module tests * feat: create function flow * linting fixes * test fix? * functions page fixes * WIP automation wizard * parameters step done * WIP details step * automation wizard done for the most part * triggering automation * enabled switch * create automation from fns page * create automation from fn page * details validation update * disable capability for switch * edit fn done * functions empty state * various empty states * minor adjustment * various minor fixes * automation status dialog responsivity * status icon responsivity fixes * viewer panel * empty state adjustments * fns page responsivitiy * fn page core responsivity * automation wizard responsivity * fn wizard responsity fixes * minor fix ups * fixed up existing backend stuff * fixing eslint hopefully * tryna fix eslint * automate code validation mechanism added * minor GQL schema change * maybethis fixes eslint? * more eslint debugging * fix cross-env missing * tryna fix eslint memory issues * ci test fix * error improvements * migrations for fn tables * Improve empty state * Update button copy in edit function dialog And remove unused icon * Refine function page design * WIP function create * fn creation tests added * Fix enable switch label text on Automation page * Update design of function card * Change tag to beta * Fix selected ring not being rounded * Minor copy changes here and there * Add border and header column bg to Table component * Update styling of Automations tab * Update styling of individual Automation page * Remove icon from button * fn update w/ tests * fn release creation w/ tests * fixing tests * GH auth endpoint * minor cleanup * WIP reporting function statuses * automation update/delete w/ tests * WIP automation revision & trigger tests * revision creation tests done * trigger tests * function run reporting works * report status tests WIP * run status update tests done * auth code handshake tests * a couple of FE2 fixes * WIP function retrieval queries & tests * WIP automation queries * removed all functions stuff * implemented fn queries * all kinds of queries & resolvers done * more queries * automations query * automation status resolution core algo * FE2 fixes * fixed up mocks * fix(fe2): disallow loading automations if non-owner * chore: circleci extension config change * fixing some benjamins changes * hydration mismatch fix * fixed tests * preview service fix? * env flag fix * more form validation improvements * proper automation status run ordering * featured mock fix * meta data fixed * introduce outdated label * log streaming mock moved to serverside * encryption in create for FE * fix: integration work * core encryption stuff implemented * fixing tests & linting * improved revision input validation * automation create works * automations status fix * fixed automation run queries * minor cleanup * implemented log streaming * properly handing redacted props in update rev flow * implemented subscriptions backend * WIP subscriptions FE implementation * subscriptions work? * feat: add docker compose based reverse proxy for the server stack * revert: restore docker compose ingress dockerfile * chore: disable automate module feature flag by default * fix: move nginx ingress file to the right place * Implement `automateFunctionRunStatusReport` (#2262) * untested implementation * no more errors * no more errors * lint * add all statuses to `AutomationRunStatusOrder` * fix: status reporting now works * park in the right place, grapple with tests * update tests * use correct run ids, adjust tests --------- Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com> * fix: make tab selection robust by using dynamic ID lookup * tests: fix authz module tests * fix: frontend TS issue * ci: add automate encryption keys path value * Fix ts build errors from ui-components changes * fix: frontend automation status colors * gergo/automateBackendModule (#2202) * feat: automation run trigger logic * feat: automate module, automation creation and trigger * test: fix automate module tests * test: fixt automate module tests * minor fix ups * fixed up existing backend stuff * fixing eslint hopefully * tryna fix eslint * automate code validation mechanism added * minor GQL schema change * maybethis fixes eslint? * more eslint debugging * fix cross-env missing * tryna fix eslint memory issues * ci test fix * error improvements * migrations for fn tables * WIP function create * fn creation tests added * fn update w/ tests * fn release creation w/ tests * fixing tests * GH auth endpoint * minor cleanup * WIP reporting function statuses * automation update/delete w/ tests * WIP automation revision & trigger tests * revision creation tests done * trigger tests * function run reporting works * report status tests WIP * run status update tests done * auth code handshake tests * a couple of FE2 fixes * WIP function retrieval queries & tests * WIP automation queries * removed all functions stuff * implemented fn queries * all kinds of queries & resolvers done * more queries * automations query * automation status resolution core algo * FE2 fixes * fixed up mocks * fix(fe2): disallow loading automations if non-owner * fixing some benjamins changes * hydration mismatch fix * fixed tests * preview service fix? * env flag fix * more form validation improvements * proper automation status run ordering * featured mock fix * feat(fe2): promo banner support (#2242) * Initial Commit * Updated Breakpoints * WIP * Fix typing * WIP - broken image * Updates * Hide banners if none defined * Remove test banner * Hardcoded image from assets * Add type to promoBanners * Updates from CR * Add expiry dates to banners * meta data fixed * introduce outdated label * log streaming mock moved to serverside * Viewer API Improvements (#2072) * Fix some monstrous bugs with index buffer shuffling now that we've changed our approach a bit.~ * Finished with the new material management approach for mesh batches. SelectionExtension now uses this approach and also considers existing material opacities when setting select and hover materials * Updated LineBatch to work with the new material management approach * Implemented the required draw range related changes to the point batch * Text batche now work with the new material management * SpeckleLineMaterial and SpecklePointsMaterial are now SpeckleMaterial as well. Had to rename two properties of SpeckleMaterial due to some typescript named property clash thing, but nothing really changed * Removed eslint-disable clauses in materials where they were no longer needed. Removed unused imports and overrides * Added the RTE define for some materials by default. It can still be overriden if users want to * Stencil outlines is now an toggle-able option for any SpeckleMaterial. Restricted to meshes * Implemented setting desired material for all geometry types via RenderMaterial and DisplayStyle data. SpeckleRenderer now has three overloaded setMaterial function. One for a material instance, one for a filer material and one for RenderData&DisplayStyle. Moved material hash related functionality from NodeRendeView into Materials * Added MaterialOptions which can be used when setting materials based on RenderMaterial/DisplayStyle to toggle various material features like stencilOutlines, pointSize. SelectionExtension now uses data material to set materials, and things are so much more simpler and nicer * Added public method for setting seletion extension options * After some profiling, realized three.js was doing a lot of pointless work each frame so now we're caching materials created from RenderMaterial/DisplayStyle to avoid this. Perf is nice and sharp now * addRenderTreeAsync is now a generator. Handled automatic zooming on viewer loading. Disabled section tool by default * Centralized RTE and shadow RTE buffer in an extended webglrenderer. This avoids re-computing rte data for each material over and over. Also, rte data is now centralized and available to materials * SpeckleMeshes now use a cached material clone as their batch material like any other material they use * Cleaned up Materils. Updated the debug show batches function use the new material manipulation system. So much easier now * Real time measurement exist now as a separate extension. Existing functionality preserved, besides one or two small additions. Renamed the MEASUREMENTS object layer to OVERLAY for a more generic usage. SelectionExtension can now be enabled/disabled. Added an additional overload to the setCameraView method in ICameraController which takes a box3 as target to focus the camera on * Removed viewer related events from input and replaced them everywhere with the proper input event types where required * Fixed two issues with the shadowcatcher. One was a regression introduced after we centralized the RTE data. The other was a super old one one and was essentially causing the shadowcatcher to generate the contact shadows incorrectly because the correct transform textures were not bound (this is three.js being a pain) * WIP on the filtering extension * FilteringExtension is done. Kept the same implementation * Added filter reset function * Removed uniform texture and batch count binding from each material's OnBeforeRender function. Additionallit our material override function from SpeckleMesh now uses our fast copy instead of three's copy function for materials. This decreased CPU overhead each frame by 20+% and also eliminated the ugly call to SpeckleMesh's function for updating the material with the transform texture and batch object count from each material's render callback which was not supposed to be there * Update RenderingStats to measure CPU render time per frame. * Added early and late update functions for extensions. First gets called before the core's update, and the latter afterwards * All speckle materials now use the centralized RTE data. Updated the fasts copy method to copy userdata defined uniforms where needed * Added explosion extension. Additional cleanup * Dirty transforms are marked on a per batch object basis, whenever their transforms gets changed. This automates the transform texture update execution, so we no longer need to manually mark entire batches as dirty * Added getObjects which returns all batch objects in the scene and getObjects which takes an rv an returns only the batch object associated with that rv. Both of these methods are availale on the renderer * Added setters for position, rotiation and scale in batch object * Diff extension is complete. We stuck with creating material instances and using those for coloring since it ensures maximum draw call efficiency. Fixed an issue in MeshBatch where transparent draw groups were not always sorted at the end of the group list leading to incorect opauque object selection during the depth pass * RV batch materials are obtained via the viewer-core API based on the RV itslef. This removed the need to get all batch materials for the differ * Small cleanup * Removed all circular dependencies besides one, like I predicted. The final one will dissapaear on it's own in the near future when we'll gracefull make DataTree obsolete. As a note, the circular dependencies were very shallow, reffering to enums/interfaces/statics declared in specific files. There was no real circular dependency on a class level * Removed last circular dependency just for the sake of completion * SpeckleRendere now has a clipping volume which is used internally to reject picks outside of it, and it's also exposed to the outside world to be used however * Implemented the SpeckleLoader along with it's abstract supertype. Data loading is now done through this loader which handles tree population with raw data as well as render view data. * Working minimal obj loader * Added total node counting and displaying * Viewer's load object now takes a loader of any speckle loader base class and uses that to load, instead of taking urls and tokens. This allows for any kind of loader to work with the vieweer's load function. Moved indexing of obj geometry to the obj geometry convertor. Loaders now take the target world tree instance instead of a viewer instance * Loaders can now load from string and array buffer data where implemented. ObjLoader can now load from a string payload. Sandbox can now load obj files from the UI using a file picker * alex/API2.0-core * Started on #1673. Fixed an issue with walkAsync where the recursive generator would waste too much time idle. * Solution for #1673. Replaced the old async pausing approach with a better version that has true variable wait time, and does not add additional dead wait time. Render tree building is now several times faster * Cut down some more on load time by using a lookup table for determined speckle types. For a very large number of objects, getting the actual speckle type was quite slow. For our reference stream with 1kk objects we cut down around 2 seconds of load time * BoxFromObjects now returns the correctly transformed aabb * Implemented optimisations for batch building step from the loading process. Reduced the step's time by around 50% * Implemented a NodeMap which allows us to search for nodes very very fast. * Added a dynamic pause in the loader which stops the converter from blocking. Paramater object types are not added as nodes anymore. Callback from converter is not without arguments * Replaced some internal walks with the newer and much faster id finding approach * Disable object shallow cloning acrss the speckle converter * Fixed the issues with block instances and revit instances caused by not duplicating speckle objects in the converter * getObjectPropertis is now async and slightly improved the execution time of the flatten function which it uses * Set caching to true by default * Fix for display style hashing * Implemented legacy viewer as a wrapper around the old viewer API * Started testing FE1 with API 2.0. Fixed some legacy issues. Also the camera controller extension now exposes it's underlying controls object for the sake of not messing around with unwatend changes in FE1 * Updated FE1 with API2.0 selection changes * Fixing selection bugs * The viewer now ignores duplicate id nodes * Fixes to object properties population, camera zooming and adding subtrees in core * Fixed some filtering issues. Added UpdateFlags to the viewer's requestRender function * Fixed an issue where section boxes were incorrectly added to the URL * Objects with no id are not given nodes into the tree * Updates to FE2 for API2.0. Also fixed a really really obscure bug in viewer-core where a material an incorrect material was set when reseting the batch to the default material * We now store separate node maps for each model loaded. Each node now holds it's subtree id (as a small number for memory considerations) * Render request after updating the visual diff * Fixed some missing update calls on shadows * Reverted FE1 changes and pinned the viewer library to a specific (latest) version pre-API2.0 * We're adding a viewer node for loaded models as subtree parent. This is because we're no longer spoofing ids and the model parent id needs to be preserved * Fixed an issue where clicking on a comment bubble made the pipeline use accumulation improperly, leading to dark blight * Null check for setMaterial. Fixed another case of dark blight. Hack required by frontend * Fixed the issue with filtering state not propagating in the FE * Updated selection event changes * Fixed an issue where an undefined subtree id would yield an incorrect render tree upon requesting it * Fixed an issue where undefined nodes were returned as valid when searching of ids * NodeRenderView now holds it's subtree id along the speckle id. This allows for precise node matching when looking for specific nodes * Fixed an issue with BlockInstances not instancing underlying meshes from breps * Some fixes to diffing. Some older than API2.0, some new. Render views now have guid composed of their id and subtreeid. * Update node render view id with guid where needed * Unload function now checks for requested resource to unload before trying to unload it * Check for the existence of a batch before applying draw ranges. Inthe FE, extension can temporarily keep dead rvs in their state when switching between streams leading to errors * Fixed an issue for filtering where subtree roots would cause incorrect rv additions to the ghosted rv lists * Unified block instance and revit instance conversion implementation * Separted instanced from non-instanced rvs. Working on InstancedMeshBatch * WIP on instanced types * Implemented visual for box draging * BoxSelection extension beautified and documented along with some small but welcomed changes to the viewer-core * Viewer's getExtension now looks in the prototype chain before returning an undefined extension * Added the extended Selection extension here for possible later use * First iteration on instancing. General idea works. Still WIP on several fronts * Fixed issues related to incorrect transform being calculated for instanced geometry. Fixed an issue with incorrect bounds being calculated * Fixed a few issues with instanced vs non instanced render view gathering * Disabled box selection extension * Fixed some linter errors * Disabled a lint 'error' * Fixed issues with depth rendering and instanced objects and fixed draw range visibility for instanced batches in a minimalistic way * Updated the measurements extension with the visiblity option * Restructed a bit our implementation for the acceleration structure because now the BLAS needs to aggregate an instance of three-mesh-bvh not extend it. So that instanced batch objects can share a single bvh instance -> no redundancy * WIP * Revert "WIP" This reverts commit 20d4bbf6210b0d37b956cc5b41fdb06f29845b4f. * More WIP on trying to make instanced geometry TAS and BAS work properly * Both Tas and Bas intersection testing seem to working fine. Now we need to implemented draw grouping for instanced mesh batches * Added draw group management to InstancedMeshBatch. It works in the same manner as for non instanced batches, but the offset value refers to instances not triangles. I believe it could be simplified, but I'd like to get it up and working first * Draw groups need to hold the index and count from the instanced buffer attribute * Added array shuffling to the instanced mesh batch using the same approach we used for the non instanced one. * Instanced batches now dynamically add InstancedMesh objects based on draw groups and a computed transform buffer * Applying draw range updates for instanced batches now works. Still some issues to handle. It aint much, but it's honest work * Disabled some more RTE until setting visibility for draw ranges is finished * Moved getting opaque, transparent and stencil draw ranges out from Batcher and on to a per-batch basis. Now instanced batches correctly apply draw ranges and get their opaque, transparent and stecil ranges * Fixed an issue with setting the visibility ranges for instanced mesh batches * Instanced attributes for instanced meshes now no longer allocate * Shadow depth material for instances is now set in the speckle renderer * R-enabled RTE globally. Made instancing work with RTE. Made instancing work with both RTE and shadowmapping. * Fixed an issue with materials building up in the mesh batch's cache incorrectly * Implemented gradient indexs attributes for instanced batches. Thismeans, any color ramp based material like the ones we use for filtering now works * Changed the way compound ids are created for instances, so that less memory is required. i.e chrome is not crashing anymore on particular streams * Implemented reseting the draw ranges for instanced mesh batches. We no longer double buffer the gradient index buffer. We just create a new one when shuffling, populate it, then copy it over at the end. We're still double buffering the transforms buffer since that one is larger and we might not want to allocate it each time we shuffle * Removed references of draw groups with ids since we're not doing that anymore. Fixed an issue with mesh batches where the material cache would keep piling materials incorrectly * Several issues with selective transformations on instanced batches fixed. * Added default null materials for instanced meshes both with and without vertex colors * Got rid of the patched InstancedMesh because it was ridiculously slow. Instead we're now computing the scene box using our acceleration structures where available and three.s boundingbox where not available * Minor, yet big regression fix * Fixed regression * Exported some extra types * WIP on instanced balancing * Instanced objects under a certain threshold now get batched together as regular mesh batches * Forgot to update the rvs aabb * Unified instanced and non instanced batch creation. Instances which do not qualify for instanced batching anre now mixed together with the rest of the non instanced batched objects * Added some timing information to instanced batches * Fixed an issue with zooming in on objects not working in the selection extension. Fixed an issue with object picking failing due to fp precision for objects right at the edge of the clipping volume. * Removed logs * Update stream moving via UI * Removed the priority argument from loadObject since it's not needed anymore * Updated LegacyViewer * Fixed an issue with API 2.0 where the legacy form of transforms with only an array of values as the matrix would not work * Updated FE1 viewer package to latest before API 2.0 * Disabled selection when measurement mode is on * Updated ibl params updating * Fixed an issue with measurement text not showing up * Logs * lockfile * Made DataTree obsolete. Removed unused 'input' property from viewer * Fixed circular dependencies * Removed DebugViewer, other small changes * Small changes * Small fixes * Added id to NodeData * Removed unused bounds property in rendertree * Notes to future self + ExtendedExtension is now exported * Removed an unused function from renderer. Removed the parent argumetn from getRenderViewerForNode... since it was legacy and has no meaning anymore. * Removed the instance type check in getRenderViewesForNode method. Should not be needed anymore and it was bad to begin with anyway * Removed some test code * Small changes * Removed pointless bounds calculation. Added note * Added return types * Ingestigating large group operations * Nested nodes from TreeNode are now optional. Small update to node render view. * #1818 Remove the concept of speckle data existing behind a 'data' field * Removed unneeded property * made arguments options in transformTRS * getBoundingBox from acceleration structures have an optional argument now * Several Batch methods no longer take variable numbe of arguments, but arrays now * Added note * Note * Removed unused things * Note and made the raycaster protected in intersections * Added some typings * Replaceds some functions with accessors. Added typings. Renamed stuff * Removed some unused properties. * Typings for measurements * Small typing changes * Fixed some more compile errors * Sources from 'batching' folder are now strict compile compliant * Sources from 'materials' folder are now strict compile compliant * Sources from 'extensions' folder are now strict compile compliant * Sources from 'tree' folder are now strict compile compliant * Viewer interface, implementation, legacy implementation and the exports now comply with the strict compilation flag. Also added the new tsconfig * Sources from 'objects' folder now comply to the strict compilation rules * Sources from 'pipeline' now satisfy the requirements for strict compilation * Sources from 'loaders' folder are now compiling with strict. That was so much fun * Sources from 'query' folder are now compiling with strict * Another round of correction triggered by previous changes * Update the declaration file in the object loader to contain a member that needs to be public * SpeckleRenderer along with the rest of the surces from the root 'modules' folder are not compiled with strict * Completely deprecated DataTree. Updated the dependencies with @types/underscore. Fixed remaining compilation issues * Fixed a failing build on the CI regarding a timeout id * Fixed compile errors from sandbox * Another fix * All EventEmiter child classes now have mapped event handler argument types, so that when attaching to a specific event, the provided handler has the correct types for it's arguments. Implicitly, got rid of the the unknown types in all event handlers. * Disabled verbatimModuleSyntax because it was messing things up. Fixed an issue with an improper import * Fixed frontend-2 linting errors. Also added all the event payload maps to the viewer export * Some good additions but mostly typescript catering * Some more typescript catering, but also something useful. The intersect function is now overloaded so that when you specify only the ObjectLayers.STREAM_CONTENT_MESH object layer in it's layers argument it will always return a ExtendedMeshIntersection which guarantees to have a batchObject, face and it's object is of type SpeckleMesh | SpeckleInstancedMesh. Generally you mostly raycast against meshes and getting a three.js intersection object which has all it's fileds optional led to some very useless defined checks. With this we can avoid all of them * Continued from yesterday, finished with the changes in intersections. Added MeshIntersection which is returned by all bvh intersections. This eliminates the need to check for face, faceIndex or index on intersection results from intersection meshes. Groups from MeshBatch and InstancedMeshBatch are now always DrawRanges(they always were) * Mostly catering to typescript * Removed underscore and all unused dependancies. Fixed remaining lint and build errors * Minor changes * Added the no-non-null assertion rule to the sandbox * getExtension never returns null, but rather throws an exception if requested extension does not exist. Added hasExtension for (theoretical) situations where you want to check for extension existence but don't want to go by try/catch with getExtension. Fixed remaining lint/build errors * getBatches now returns explicit batch types based on the geometry type that you provide * Adding the lockfile * undoing unnecessary FE2 changes * Merged viewer/fe SpeckleObject types * Fixed two small issues * Minor linting issues --------- Co-authored-by: Kristaps Fabians Geikins <fabians@speckle.systems> * encryption in create for FE * fix: integration work * bugfix(fe2): Fix conditioning around posting comments in viewer (#2246) * Test fix * Update * Testing * Updates from testing * various fixes --------- Co-authored-by: Kristaps Fabians Geikins <fabians@speckle.systems> * core encryption stuff implemented * fixing tests & linting * improved revision input validation * automation create works * fix(server): avoid removing verified email from user (#2249) * fix(server): avoid removing verified email from user * fix(server): fix test and use secure domain * fix(server): remove redundant test * automations status fix * fixed automation run queries * minor cleanup * implemented log streaming * properly handing redacted props in update rev flow * implemented subscriptions backend * feat(fe2): move settings to tab on projects page (#2207) * Add settings tab. Update style of component * Structuring of files/components * Updates to TexInput * Add RadioGroup * Last FE work * FE Updates * Webhooks Settings Tab * Styling updates to webhooks * Title/Description Update * General Page done * Collaborators WIP * Styling updates * Add custom message to updateProject * Radio Group Same Height * Styling updates to radio group. Disabled state * Updates pre demo * Updates to icons & post demo changes * Major Updates * Unsaved Changes Dialog * Routing WIP * Remove StatsBlock * Auto update discussions on Private * Routing/Redirects * New input style * Invite Dialog * Fix mobile radiogroup * Mobile Improvements * Fix console warning * Fix build * Disabled States * Fix console * Unhide webhooks * Updates from testing * Responsive fixes * Alignment fixes * Fix textarea mobile height * Updates to GraphQL Fragments * Fix disabled state * WIP Arrows for scroll * Update PageTabs - broken * Fix to PageTabs * PageTab fix initial scroll * Hide Scrollbar * Better underline method * Fix mobile initial underline * Webhooks Empty State * Fix input border * Fix empty state * Input Styling updates * Remove mobile smaller text * Update disabled state for disabled items * Updates disabled sates on Settings Block * Fix build. Disable Invite * Fixes to invite permissions * Disable role select when invite is disabled * Small alignment fix * Fix webhooks empty state * cleaning up unnecessary vue files * story improvement * Remove DisabledMessage prop * Fix disabled prop on Button * Move team to Leave Fragment * Remove unused Disabled Message props * Add limit to graphql query * Updates to BlockDiscussions * add formatTriggers function to webhooks * Remove md from button. Improved switch * Update RadioGroup.stories.ts * Update RadioGroup to use defineModel * Various styling and copy updates - More concise and accurate copy - More readable - Works better on mobile * Updates to Invite Dialog * Custom success Message * Update slot names * Remove md in TextInput. Set h-8 to default * Changes from call with fabs * Replace isOwner with composable * Set SettingsBlock icon as optional * Comments from PR * Updates from PR * Final Tidy Ups * Fix Title/Description * Fix spacing issue on Webhooks page * Update borders and colors to align with Automate Makes the same changes that I recently made to the unreleased Automate tab * WEB-869 * Improve styling of radiogroup component Better borders, hover effect, bigger checkmark icon, more subtle active background color, same across breakpoints. * Adjust border styling of RadioGroup component * Improve circle around checkmark in RadioGroup * Split Tabs into 2 components * Restyle overflow arrows * Adjust gap and remove icons from vertical nav Too many icons on the screen got distracting. * Ensure active item visible * Increase gap on vertical nav * Update copy for Access and Discussions settings * Input Tidyup * WEB-877 update-collaborators-block * Update inputs to new style * Fix webhooks button hover state * Fix comment copy Appears in the access settings before embedding a model * Remove hover shadow from search input on Dashboard * Small change from Benjamin * Change collaborators permissions copy * Comments from PR #1 * Comments from PR #2 * Fix condition for EditableHeader * Updates from CR --------- Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com> Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com> * WIP subscriptions FE implementation * Use showbutton prop instead of useCheckViewerCommentingAccess (#2251) * subscriptions work? * Reverted project access copy to something like before (#2254) * bugfix(ui-components): Scroll jumps to top on Dialog open (#2250) * Updates to dialog component * Fix build issues * Fix build * Use shortened header in Scene Explorer (#2256) * feat(fe2) - Replace CommonEditableTitleDescription with new CommonTitleDescription (#2253) * Make project & model headers non-editable * Fixes from PR * Add placeholder for description * Only show manage button when user canEdit (#2260) * feat: add docker compose based reverse proxy for the server stack * revert: restore docker compose ingress dockerfile * chore: disable automate module feature flag by default * fix: move nginx ingress file to the right place * feat(fe2): Hide settings tab for logged out users (#2261) * Hide settings for logged out users * Hide settings tab for non-logged in users * Add middleware to settings to login * Add middleware * Update to webhooks middleware * Updates to middleware * Changes to middleware * Update comments * bugfix(fe2): Coloring function disappears if parameter title is too long (#2255) * Add truncation to filter name * Use shortened model name in scene explorer * Revert "Use shortened model name in scene explorer" This reverts commit b86e1d8577ba1009462f68fb45840b8b1f66ec1a. * Remove gap * Implement `automateFunctionRunStatusReport` (#2262) * untested implementation * no more errors * no more errors * lint * add all statuses to `AutomationRunStatusOrder` * fix: status reporting now works * park in the right place, grapple with tests * update tests * use correct run ids, adjust tests --------- Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com> * fix: make tab selection robust by using dynamic ID lookup * tests: fix authz module tests * fix: frontend TS issue * ci: add automate encryption keys path value * Fix ts build errors from ui-components changes * fix: frontend automation status colors * add handling for all enum cases in useRunStatusMetadata * Fix merge issue --------- Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com> Co-authored-by: andrewwallacespeckle <139135120+andrewwallacespeckle@users.noreply.github.com> Co-authored-by: Alexandru Popovici <alexandrupopoviciioan@gmail.com> Co-authored-by: Kristaps Fabians Geikins <fabians@speckle.systems> Co-authored-by: Alessandro Magionami <alessandro.magionami@gmail.com> Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com> Co-authored-by: Chuck Driesler <cdriesler.iv@gmail.com> * fix: runStatus label merge error --------- Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com> Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com> Co-authored-by: Chuck Driesler <cdriesler.iv@gmail.com> Co-authored-by: andrewwallacespeckle <139135120+andrewwallacespeckle@users.noreply.github.com> Co-authored-by: Alexandru Popovici <alexandrupopoviciioan@gmail.com> Co-authored-by: Kristaps Fabians Geikins <fabians@speckle.systems> Co-authored-by: Alessandro Magionami <alessandro.magionami@gmail.com>
3446 lines
100 KiB
TypeScript
3446 lines
100 KiB
TypeScript
export type Maybe<T> = T | null;
|
|
export type InputMaybe<T> = Maybe<T>;
|
|
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
|
|
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
|
|
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
|
|
/** All built-in and custom scalars, mapped to their actual values */
|
|
export type Scalars = {
|
|
ID: string;
|
|
String: string;
|
|
Boolean: boolean;
|
|
Int: number;
|
|
Float: number;
|
|
/** The `BigInt` scalar type represents non-fractional signed whole numeric values. */
|
|
BigInt: 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: string;
|
|
EmailAddress: any;
|
|
/** 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: Record<string, unknown>;
|
|
};
|
|
|
|
export type ActiveUserMutations = {
|
|
__typename?: 'ActiveUserMutations';
|
|
/** Mark onboarding as complete */
|
|
finishOnboarding: Scalars['Boolean'];
|
|
/** Edit a user's profile */
|
|
update: User;
|
|
};
|
|
|
|
|
|
export type ActiveUserMutationsUpdateArgs = {
|
|
user: UserUpdateInput;
|
|
};
|
|
|
|
export type Activity = {
|
|
__typename?: 'Activity';
|
|
actionType: Scalars['String'];
|
|
id: Scalars['ID'];
|
|
info: Scalars['JSONObject'];
|
|
message: Scalars['String'];
|
|
resourceId: Scalars['String'];
|
|
resourceType: Scalars['String'];
|
|
streamId?: Maybe<Scalars['String']>;
|
|
time: Scalars['DateTime'];
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export type ActivityCollection = {
|
|
__typename?: 'ActivityCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items?: Maybe<Array<Maybe<Activity>>>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AdminInviteList = {
|
|
__typename?: 'AdminInviteList';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<ServerInvite>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AdminQueries = {
|
|
__typename?: 'AdminQueries';
|
|
inviteList: AdminInviteList;
|
|
projectList: ProjectCollection;
|
|
serverStatistics: ServerStatistics;
|
|
userList: AdminUserList;
|
|
};
|
|
|
|
|
|
export type AdminQueriesInviteListArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
query?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type AdminQueriesProjectListArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
orderBy?: InputMaybe<Scalars['String']>;
|
|
query?: InputMaybe<Scalars['String']>;
|
|
visibility?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type AdminQueriesUserListArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
query?: InputMaybe<Scalars['String']>;
|
|
role?: InputMaybe<ServerRole>;
|
|
};
|
|
|
|
export type AdminUserList = {
|
|
__typename?: 'AdminUserList';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<AdminUserListItem>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AdminUserListItem = {
|
|
__typename?: 'AdminUserListItem';
|
|
avatar?: Maybe<Scalars['String']>;
|
|
company?: Maybe<Scalars['String']>;
|
|
email?: Maybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
name: Scalars['String'];
|
|
role?: Maybe<Scalars['String']>;
|
|
verified?: Maybe<Scalars['Boolean']>;
|
|
};
|
|
|
|
export type AdminUsersListCollection = {
|
|
__typename?: 'AdminUsersListCollection';
|
|
items: Array<AdminUsersListItem>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
/**
|
|
* 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'];
|
|
invitedUser?: Maybe<ServerInvite>;
|
|
registeredUser?: Maybe<User>;
|
|
};
|
|
|
|
export type ApiToken = {
|
|
__typename?: 'ApiToken';
|
|
createdAt: Scalars['DateTime'];
|
|
id: Scalars['String'];
|
|
lastChars: Scalars['String'];
|
|
lastUsed: Scalars['DateTime'];
|
|
lifespan: Scalars['BigInt'];
|
|
name: Scalars['String'];
|
|
scopes: Array<Maybe<Scalars['String']>>;
|
|
};
|
|
|
|
export type ApiTokenCreateInput = {
|
|
lifespan?: InputMaybe<Scalars['BigInt']>;
|
|
name: Scalars['String'];
|
|
scopes: Array<Scalars['String']>;
|
|
};
|
|
|
|
export type AppAuthor = {
|
|
__typename?: 'AppAuthor';
|
|
avatar?: Maybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
name: Scalars['String'];
|
|
};
|
|
|
|
export type AppCreateInput = {
|
|
description: Scalars['String'];
|
|
logo?: InputMaybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
public?: InputMaybe<Scalars['Boolean']>;
|
|
redirectUrl: Scalars['String'];
|
|
scopes: Array<InputMaybe<Scalars['String']>>;
|
|
termsAndConditionsLink?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AppTokenCreateInput = {
|
|
lifespan?: InputMaybe<Scalars['BigInt']>;
|
|
/** Optionally limit the token to only have access to specific resources */
|
|
limitResources?: InputMaybe<Array<TokenResourceIdentifierInput>>;
|
|
name: Scalars['String'];
|
|
scopes: Array<Scalars['String']>;
|
|
};
|
|
|
|
export type AppUpdateInput = {
|
|
description: Scalars['String'];
|
|
id: Scalars['String'];
|
|
logo?: InputMaybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
public?: InputMaybe<Scalars['Boolean']>;
|
|
redirectUrl: Scalars['String'];
|
|
scopes: Array<InputMaybe<Scalars['String']>>;
|
|
termsAndConditionsLink?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AuthStrategy = {
|
|
__typename?: 'AuthStrategy';
|
|
color?: Maybe<Scalars['String']>;
|
|
icon: Scalars['String'];
|
|
id: Scalars['String'];
|
|
name: Scalars['String'];
|
|
url: Scalars['String'];
|
|
};
|
|
|
|
export type AutomateFunction = {
|
|
__typename?: 'AutomateFunction';
|
|
automationCount: Scalars['Int'];
|
|
description: Scalars['String'];
|
|
id: Scalars['ID'];
|
|
isFeatured: Scalars['Boolean'];
|
|
logo?: Maybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
releases: AutomateFunctionReleaseCollection;
|
|
repo: BasicGitRepositoryMetadata;
|
|
/** SourceAppNames values from @speckle/shared. Empty array means - all of them */
|
|
supportedSourceApps: Array<Scalars['String']>;
|
|
tags: Array<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type AutomateFunctionReleasesArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<AutomateFunctionReleasesFilter>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
export type AutomateFunctionCollection = {
|
|
__typename?: 'AutomateFunctionCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<AutomateFunction>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AutomateFunctionRelease = {
|
|
__typename?: 'AutomateFunctionRelease';
|
|
commitId: Scalars['String'];
|
|
createdAt: Scalars['DateTime'];
|
|
function: AutomateFunction;
|
|
functionId: Scalars['String'];
|
|
id: Scalars['ID'];
|
|
inputSchema?: Maybe<Scalars['JSONObject']>;
|
|
versionTag: Scalars['String'];
|
|
};
|
|
|
|
export type AutomateFunctionReleaseCollection = {
|
|
__typename?: 'AutomateFunctionReleaseCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<AutomateFunctionRelease>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AutomateFunctionReleasesFilter = {
|
|
search?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AutomateFunctionRun = {
|
|
__typename?: 'AutomateFunctionRun';
|
|
contextView?: Maybe<Scalars['String']>;
|
|
createdAt: Scalars['DateTime'];
|
|
elapsed: Scalars['Float'];
|
|
function: AutomateFunction;
|
|
functionId?: Maybe<Scalars['String']>;
|
|
functionReleaseId?: Maybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
/** AutomateTypes.ResultsSchema type from @speckle/shared */
|
|
results?: Maybe<Scalars['JSONObject']>;
|
|
status: AutomateRunStatus;
|
|
statusMessage?: Maybe<Scalars['String']>;
|
|
updatedAt: Scalars['DateTime'];
|
|
};
|
|
|
|
export type AutomateFunctionRunStatusReportInput = {
|
|
contextView?: InputMaybe<Scalars['String']>;
|
|
functionRunId: Scalars['String'];
|
|
/** AutomateTypes.ResultsSchema type from @speckle/shared */
|
|
results?: InputMaybe<Scalars['JSONObject']>;
|
|
status: AutomateRunStatus;
|
|
statusMessage?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AutomateFunctionTemplate = {
|
|
__typename?: 'AutomateFunctionTemplate';
|
|
id: AutomateFunctionTemplateLanguage;
|
|
logo: Scalars['String'];
|
|
title: Scalars['String'];
|
|
url: Scalars['String'];
|
|
};
|
|
|
|
export enum AutomateFunctionTemplateLanguage {
|
|
DotNet = 'DOT_NET',
|
|
Python = 'PYTHON',
|
|
Typescript = 'TYPESCRIPT'
|
|
}
|
|
|
|
export type AutomateFunctionsFilter = {
|
|
featuredFunctionsOnly?: InputMaybe<Scalars['Boolean']>;
|
|
/** By default we skip functions without releases. Set this to true to include them. */
|
|
functionsWithoutReleases?: InputMaybe<Scalars['Boolean']>;
|
|
search?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
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'];
|
|
createdAt: Scalars['DateTime'];
|
|
functionRuns: Array<AutomateFunctionRun>;
|
|
id: Scalars['ID'];
|
|
status: AutomateRunStatus;
|
|
trigger: AutomationRunTrigger;
|
|
updatedAt: Scalars['DateTime'];
|
|
};
|
|
|
|
export type AutomateRunCollection = {
|
|
__typename?: 'AutomateRunCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<AutomateRun>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export enum AutomateRunStatus {
|
|
Canceled = 'CANCELED',
|
|
Exception = 'EXCEPTION',
|
|
Failed = 'FAILED',
|
|
Initializing = 'INITIALIZING',
|
|
Pending = 'PENDING',
|
|
Running = 'RUNNING',
|
|
Succeeded = 'SUCCEEDED',
|
|
Timeout = 'TIMEOUT'
|
|
}
|
|
|
|
export enum AutomateRunTriggerType {
|
|
TestType = 'TEST_TYPE',
|
|
VersionCreated = 'VERSION_CREATED'
|
|
}
|
|
|
|
export type Automation = {
|
|
__typename?: 'Automation';
|
|
createdAt: Scalars['DateTime'];
|
|
/** Only accessible to automation owners */
|
|
creationPublicKeys: Array<Scalars['String']>;
|
|
currentRevision?: Maybe<AutomationRevision>;
|
|
enabled: Scalars['Boolean'];
|
|
id: Scalars['ID'];
|
|
name: Scalars['String'];
|
|
runs: AutomateRunCollection;
|
|
updatedAt: Scalars['DateTime'];
|
|
};
|
|
|
|
|
|
export type AutomationRunsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
export type AutomationCollection = {
|
|
__typename?: 'AutomationCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Automation>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type AutomationCreateInput = {
|
|
automationId: Scalars['String'];
|
|
automationName: Scalars['String'];
|
|
automationRevisionId: Scalars['String'];
|
|
modelId: Scalars['String'];
|
|
projectId: Scalars['String'];
|
|
webhookId?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AutomationFunctionRun = {
|
|
__typename?: 'AutomationFunctionRun';
|
|
contextView?: Maybe<Scalars['String']>;
|
|
elapsed: Scalars['Float'];
|
|
functionId: Scalars['String'];
|
|
functionLogo?: Maybe<Scalars['String']>;
|
|
functionName: Scalars['String'];
|
|
id: Scalars['ID'];
|
|
resultVersions: Array<Version>;
|
|
/**
|
|
* NOTE: this is the schema for the results field below!
|
|
* Current schema: {
|
|
* version: "1.0.0",
|
|
* values: {
|
|
* objectResults: Record<str, {
|
|
* category: string
|
|
* level: ObjectResultLevel
|
|
* objectIds: string[]
|
|
* message: str | null
|
|
* metadata: Records<str, unknown> | null
|
|
* visualoverrides: Records<str, unknown> | null
|
|
* }[]>
|
|
* blobIds?: string[]
|
|
* }
|
|
* }
|
|
*/
|
|
results?: Maybe<Scalars['JSONObject']>;
|
|
status: AutomationRunStatus;
|
|
statusMessage?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AutomationMutations = {
|
|
__typename?: 'AutomationMutations';
|
|
create: Scalars['Boolean'];
|
|
functionRunStatusReport: Scalars['Boolean'];
|
|
};
|
|
|
|
|
|
export type AutomationMutationsCreateArgs = {
|
|
input: AutomationCreateInput;
|
|
};
|
|
|
|
|
|
export type AutomationMutationsFunctionRunStatusReportArgs = {
|
|
input: AutomationRunStatusUpdateInput;
|
|
};
|
|
|
|
export type AutomationRevision = {
|
|
__typename?: 'AutomationRevision';
|
|
functions: Array<AutomationRevisionFunction>;
|
|
id: Scalars['ID'];
|
|
triggerDefinitions: Array<AutomationRevisionTriggerDefinition>;
|
|
};
|
|
|
|
export type AutomationRevisionCreateFunctionInput = {
|
|
functionId: Scalars['String'];
|
|
functionReleaseId: Scalars['String'];
|
|
/** Should be encrypted from the client side */
|
|
parameters?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type AutomationRevisionFunction = {
|
|
__typename?: 'AutomationRevisionFunction';
|
|
/** The secrets in parameters are redacted with six asterisks - ****** */
|
|
parameters?: Maybe<Scalars['JSONObject']>;
|
|
release: AutomateFunctionRelease;
|
|
};
|
|
|
|
export type AutomationRevisionTriggerDefinition = VersionCreatedTriggerDefinition;
|
|
|
|
export type AutomationRun = {
|
|
__typename?: 'AutomationRun';
|
|
automationId: Scalars['String'];
|
|
automationName: Scalars['String'];
|
|
createdAt: Scalars['DateTime'];
|
|
functionRuns: Array<AutomationFunctionRun>;
|
|
id: Scalars['ID'];
|
|
/** Resolved from all function run statuses */
|
|
status: AutomationRunStatus;
|
|
updatedAt: Scalars['DateTime'];
|
|
versionId: Scalars['String'];
|
|
};
|
|
|
|
export enum AutomationRunStatus {
|
|
Failed = 'FAILED',
|
|
Initializing = 'INITIALIZING',
|
|
Running = 'RUNNING',
|
|
Succeeded = 'SUCCEEDED'
|
|
}
|
|
|
|
export type AutomationRunStatusUpdateInput = {
|
|
automationId: Scalars['String'];
|
|
automationRevisionId: Scalars['String'];
|
|
automationRunId: Scalars['String'];
|
|
functionRuns: Array<FunctionRunStatusInput>;
|
|
versionId: Scalars['String'];
|
|
};
|
|
|
|
export type AutomationRunTrigger = VersionCreatedTrigger;
|
|
|
|
export type AutomationsStatus = {
|
|
__typename?: 'AutomationsStatus';
|
|
automationRuns: Array<AutomationRun>;
|
|
id: Scalars['ID'];
|
|
status: AutomationRunStatus;
|
|
statusMessage?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
export type BasicGitRepositoryMetadata = {
|
|
__typename?: 'BasicGitRepositoryMetadata';
|
|
id: Scalars['ID'];
|
|
name: Scalars['String'];
|
|
owner: Scalars['String'];
|
|
url: Scalars['String'];
|
|
};
|
|
|
|
export type BlobMetadata = {
|
|
__typename?: 'BlobMetadata';
|
|
createdAt: Scalars['DateTime'];
|
|
fileHash?: Maybe<Scalars['String']>;
|
|
fileName: Scalars['String'];
|
|
fileSize?: Maybe<Scalars['Int']>;
|
|
fileType: Scalars['String'];
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
uploadError?: Maybe<Scalars['String']>;
|
|
uploadStatus: Scalars['Int'];
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export type BlobMetadataCollection = {
|
|
__typename?: 'BlobMetadataCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items?: Maybe<Array<BlobMetadata>>;
|
|
totalCount: Scalars['Int'];
|
|
totalSize: Scalars['Int'];
|
|
};
|
|
|
|
export type Branch = {
|
|
__typename?: 'Branch';
|
|
/** All the recent activity on this branch in chronological order */
|
|
activity?: Maybe<ActivityCollection>;
|
|
author?: Maybe<User>;
|
|
commits?: Maybe<CommitCollection>;
|
|
createdAt?: Maybe<Scalars['DateTime']>;
|
|
description?: Maybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
name: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type BranchActivityArgs = {
|
|
actionType?: InputMaybe<Scalars['String']>;
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type BranchCommitsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type BranchCollection = {
|
|
__typename?: 'BranchCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items?: Maybe<Array<Branch>>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type BranchCreateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type BranchDeleteInput = {
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type BranchUpdateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
name?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type Comment = {
|
|
__typename?: 'Comment';
|
|
archived: Scalars['Boolean'];
|
|
author: LimitedUser;
|
|
authorId: Scalars['String'];
|
|
createdAt: Scalars['DateTime'];
|
|
/**
|
|
* Legacy comment viewer data field
|
|
* @deprecated Use the new viewerState field instead
|
|
*/
|
|
data?: Maybe<Scalars['JSONObject']>;
|
|
/** Whether or not comment is a reply to another comment */
|
|
hasParent: Scalars['Boolean'];
|
|
id: Scalars['String'];
|
|
/** Parent thread, if there's any */
|
|
parent?: Maybe<Comment>;
|
|
/** Plain-text version of the comment text, ideal for previews */
|
|
rawText: Scalars['String'];
|
|
/** @deprecated Not actually implemented */
|
|
reactions?: Maybe<Array<Maybe<Scalars['String']>>>;
|
|
/** 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<ResourceIdentifier>;
|
|
screenshot?: Maybe<Scalars['String']>;
|
|
text: SmartTextEditorValue;
|
|
/** The time this comment was last updated. Corresponds also to the latest reply to this comment, if any. */
|
|
updatedAt: Scalars['DateTime'];
|
|
/** The last time you viewed this comment. Present only if an auth'ed request. Relevant only if a top level commit. */
|
|
viewedAt?: Maybe<Scalars['DateTime']>;
|
|
/** Resource identifiers as defined and implemented in the Viewer of the new frontend */
|
|
viewerResources: Array<ViewerResourceItem>;
|
|
/** SerializedViewerState */
|
|
viewerState?: Maybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
|
|
export type CommentRepliesArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type CommentReplyAuthorsArgs = {
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type CommentActivityMessage = {
|
|
__typename?: 'CommentActivityMessage';
|
|
comment: Comment;
|
|
type: Scalars['String'];
|
|
};
|
|
|
|
export type CommentCollection = {
|
|
__typename?: 'CommentCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Comment>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type CommentContentInput = {
|
|
blobIds?: InputMaybe<Array<Scalars['String']>>;
|
|
doc?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
/** Deprecated: Used by old stream-based mutations */
|
|
export type CommentCreateInput = {
|
|
/** IDs of uploaded blobs that should be attached to this comment */
|
|
blobIds: Array<Scalars['String']>;
|
|
data: Scalars['JSONObject'];
|
|
/**
|
|
* 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<InputMaybe<ResourceIdentifierInput>>;
|
|
screenshot?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
/** ProseMirror document object */
|
|
text?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
export type CommentDataFilters = {
|
|
__typename?: 'CommentDataFilters';
|
|
hiddenIds?: Maybe<Array<Scalars['String']>>;
|
|
isolatedIds?: Maybe<Array<Scalars['String']>>;
|
|
passMax?: Maybe<Scalars['Float']>;
|
|
passMin?: Maybe<Scalars['Float']>;
|
|
propertyInfoKey?: Maybe<Scalars['String']>;
|
|
sectionBox?: Maybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
/** Equivalent to frontend-1's LocalFilterState */
|
|
export type CommentDataFiltersInput = {
|
|
hiddenIds?: InputMaybe<Array<Scalars['String']>>;
|
|
isolatedIds?: InputMaybe<Array<Scalars['String']>>;
|
|
passMax?: InputMaybe<Scalars['Float']>;
|
|
passMin?: InputMaybe<Scalars['Float']>;
|
|
propertyInfoKey?: InputMaybe<Scalars['String']>;
|
|
sectionBox?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
/** Deprecated: Used by old stream-based mutations */
|
|
export type CommentEditInput = {
|
|
/** IDs of uploaded blobs that should be attached to this comment */
|
|
blobIds: Array<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
/** ProseMirror document object */
|
|
text?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
export type CommentMutations = {
|
|
__typename?: 'CommentMutations';
|
|
archive: Scalars['Boolean'];
|
|
create: Comment;
|
|
edit: Comment;
|
|
markViewed: Scalars['Boolean'];
|
|
reply: Comment;
|
|
};
|
|
|
|
|
|
export type CommentMutationsArchiveArgs = {
|
|
archived?: Scalars['Boolean'];
|
|
commentId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type CommentMutationsCreateArgs = {
|
|
input: CreateCommentInput;
|
|
};
|
|
|
|
|
|
export type CommentMutationsEditArgs = {
|
|
input: EditCommentInput;
|
|
};
|
|
|
|
|
|
export type CommentMutationsMarkViewedArgs = {
|
|
commentId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type CommentMutationsReplyArgs = {
|
|
input: CreateCommentReplyInput;
|
|
};
|
|
|
|
export type CommentReplyAuthorCollection = {
|
|
__typename?: 'CommentReplyAuthorCollection';
|
|
items: Array<LimitedUser>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type CommentThreadActivityMessage = {
|
|
__typename?: 'CommentThreadActivityMessage';
|
|
data?: Maybe<Scalars['JSONObject']>;
|
|
reply?: Maybe<Comment>;
|
|
type: Scalars['String'];
|
|
};
|
|
|
|
export type Commit = {
|
|
__typename?: 'Commit';
|
|
/** All the recent activity on this commit in chronological order */
|
|
activity?: Maybe<ActivityCollection>;
|
|
authorAvatar?: Maybe<Scalars['String']>;
|
|
authorId?: Maybe<Scalars['String']>;
|
|
authorName?: Maybe<Scalars['String']>;
|
|
branch?: Maybe<Branch>;
|
|
branchName?: Maybe<Scalars['String']>;
|
|
/**
|
|
* 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"}] ){
|
|
* ...
|
|
* }
|
|
* ```
|
|
*/
|
|
commentCount: Scalars['Int'];
|
|
createdAt?: Maybe<Scalars['DateTime']>;
|
|
id: Scalars['String'];
|
|
message?: Maybe<Scalars['String']>;
|
|
parents?: Maybe<Array<Maybe<Scalars['String']>>>;
|
|
referencedObject: Scalars['String'];
|
|
sourceApplication?: Maybe<Scalars['String']>;
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
/** @deprecated Use the stream field instead */
|
|
streamName?: Maybe<Scalars['String']>;
|
|
totalChildrenCount?: Maybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type CommitActivityArgs = {
|
|
actionType?: InputMaybe<Scalars['String']>;
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type CommitCollection = {
|
|
__typename?: 'CommitCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items?: Maybe<Array<Commit>>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type CommitCreateInput = {
|
|
branchName: Scalars['String'];
|
|
message?: InputMaybe<Scalars['String']>;
|
|
objectId: Scalars['String'];
|
|
parents?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
|
|
/**
|
|
* **DEPRECATED** Use the `parents` field.
|
|
* @deprecated Field no longer supported
|
|
*/
|
|
previousCommitIds?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
|
|
sourceApplication?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
totalChildrenCount?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
export type CommitDeleteInput = {
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type CommitReceivedInput = {
|
|
commitId: Scalars['String'];
|
|
message?: InputMaybe<Scalars['String']>;
|
|
sourceApplication: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type CommitUpdateInput = {
|
|
id: Scalars['String'];
|
|
message?: InputMaybe<Scalars['String']>;
|
|
/** To move the commit to a different branch, please the name of the branch. */
|
|
newBranchName?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type CommitsDeleteInput = {
|
|
commitIds: Array<Scalars['String']>;
|
|
};
|
|
|
|
export type CommitsMoveInput = {
|
|
commitIds: Array<Scalars['String']>;
|
|
targetBranch: Scalars['String'];
|
|
};
|
|
|
|
/**
|
|
* 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'];
|
|
};
|
|
|
|
export type CreateAutomateFunctionInput = {
|
|
description: Scalars['String'];
|
|
/** Base64 encoded image data string */
|
|
logo?: InputMaybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
/** GitHub organization to create the repository in */
|
|
org?: InputMaybe<Scalars['String']>;
|
|
/** SourceAppNames values from @speckle/shared */
|
|
supportedSourceApps: Array<Scalars['String']>;
|
|
tags: Array<Scalars['String']>;
|
|
template: AutomateFunctionTemplateLanguage;
|
|
};
|
|
|
|
export type CreateCommentInput = {
|
|
content: CommentContentInput;
|
|
projectId: Scalars['String'];
|
|
/** Resources that this comment should be attached to */
|
|
resourceIdString: Scalars['String'];
|
|
screenshot?: InputMaybe<Scalars['String']>;
|
|
/**
|
|
* SerializedViewerState. If omitted, comment won't render (correctly) inside the
|
|
* viewer, but will still be retrievable through the API
|
|
*/
|
|
viewerState?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
export type CreateCommentReplyInput = {
|
|
content: CommentContentInput;
|
|
threadId: Scalars['String'];
|
|
};
|
|
|
|
export type CreateModelInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
export type DeleteModelInput = {
|
|
id: Scalars['ID'];
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
export type DeleteVersionsInput = {
|
|
versionIds: Array<Scalars['String']>;
|
|
};
|
|
|
|
export enum DiscoverableStreamsSortType {
|
|
CreatedDate = 'CREATED_DATE',
|
|
FavoritesCount = 'FAVORITES_COUNT'
|
|
}
|
|
|
|
export type DiscoverableStreamsSortingInput = {
|
|
direction: SortDirection;
|
|
type: DiscoverableStreamsSortType;
|
|
};
|
|
|
|
export type EditCommentInput = {
|
|
commentId: Scalars['String'];
|
|
content: CommentContentInput;
|
|
};
|
|
|
|
export type FileUpload = {
|
|
__typename?: 'FileUpload';
|
|
branchName: Scalars['String'];
|
|
/** If present, the conversion result is stored in this commit. */
|
|
convertedCommitId?: Maybe<Scalars['String']>;
|
|
convertedLastUpdate: Scalars['DateTime'];
|
|
/** Holds any errors or info. */
|
|
convertedMessage?: Maybe<Scalars['String']>;
|
|
/** 0 = queued, 1 = processing, 2 = success, 3 = error */
|
|
convertedStatus: Scalars['Int'];
|
|
/** Alias for convertedCommitId */
|
|
convertedVersionId?: Maybe<Scalars['String']>;
|
|
fileName: Scalars['String'];
|
|
fileSize: Scalars['Int'];
|
|
fileType: Scalars['String'];
|
|
id: Scalars['String'];
|
|
/** Model associated with the file upload, if it exists already */
|
|
model?: Maybe<Model>;
|
|
/** Alias for branchName */
|
|
modelName: Scalars['String'];
|
|
/** Alias for streamId */
|
|
projectId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
uploadComplete: Scalars['Boolean'];
|
|
uploadDate: Scalars['DateTime'];
|
|
/** The user's id that uploaded this file. */
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export type FunctionRunStatusInput = {
|
|
contextView?: InputMaybe<Scalars['String']>;
|
|
elapsed: Scalars['Float'];
|
|
functionId: Scalars['String'];
|
|
functionLogo?: InputMaybe<Scalars['String']>;
|
|
functionName: Scalars['String'];
|
|
resultVersionIds: Array<Scalars['String']>;
|
|
/**
|
|
* Current schema: {
|
|
* version: "1.0.0",
|
|
* values: {
|
|
* speckleObjects: Record<ObjectId, {level: string; statusMessage: string}[]>
|
|
* blobIds?: string[]
|
|
* }
|
|
* }
|
|
*/
|
|
results?: InputMaybe<Scalars['JSONObject']>;
|
|
status: AutomationRunStatus;
|
|
statusMessage?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
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<Scalars['Float']>;
|
|
/** Old FE LocalFilterState type */
|
|
filters: CommentDataFilters;
|
|
/** THREE.Vector3 {x, y, z} */
|
|
location: Scalars['JSONObject'];
|
|
/** Viewer.getCurrentSectionBox(): THREE.Box3 */
|
|
sectionBox?: Maybe<Scalars['JSONObject']>;
|
|
/** Currently unused. Ideally comments should keep track of selected objects. */
|
|
selection?: Maybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
/**
|
|
* 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 */
|
|
activity?: Maybe<ActivityCollection>;
|
|
avatar?: Maybe<Scalars['String']>;
|
|
bio?: Maybe<Scalars['String']>;
|
|
/** Get public stream commits authored by the user */
|
|
commits?: Maybe<CommitCollection>;
|
|
company?: Maybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
name: Scalars['String'];
|
|
role?: Maybe<Scalars['String']>;
|
|
/** Returns all discoverable streams that the user is a collaborator on */
|
|
streams: StreamCollection;
|
|
/** The user's timeline in chronological order */
|
|
timeline?: Maybe<ActivityCollection>;
|
|
/** Total amount of favorites attached to streams owned by the user */
|
|
totalOwnedStreamsFavorites: Scalars['Int'];
|
|
verified?: Maybe<Scalars['Boolean']>;
|
|
};
|
|
|
|
|
|
/**
|
|
* Limited user type, for showing public info about a user
|
|
* to another user
|
|
*/
|
|
export type LimitedUserActivityArgs = {
|
|
actionType?: InputMaybe<Scalars['String']>;
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* Limited user type, for showing public info about a user
|
|
* to another user
|
|
*/
|
|
export type LimitedUserCommitsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* Limited user type, for showing public info about a user
|
|
* to another user
|
|
*/
|
|
export type LimitedUserStreamsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* Limited user type, for showing public info about a user
|
|
* to another user
|
|
*/
|
|
export type LimitedUserTimelineArgs = {
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type Model = {
|
|
__typename?: 'Model';
|
|
author: LimitedUser;
|
|
automationStatus?: Maybe<AutomationsStatus>;
|
|
automationsStatus?: Maybe<TriggeredAutomationsStatus>;
|
|
/** Return a model tree of children */
|
|
childrenTree: Array<ModelsTreeItem>;
|
|
/** All comment threads in this model */
|
|
commentThreads: CommentCollection;
|
|
createdAt: Scalars['DateTime'];
|
|
description?: Maybe<Scalars['String']>;
|
|
/** The shortened/display name that doesn't include the names of parent models */
|
|
displayName: Scalars['String'];
|
|
id: Scalars['ID'];
|
|
/** Full name including the names of parent models delimited by forward slashes */
|
|
name: Scalars['String'];
|
|
/** Returns a list of versions that are being created from a file import */
|
|
pendingImportedVersions: Array<FileUpload>;
|
|
previewUrl?: Maybe<Scalars['String']>;
|
|
updatedAt: Scalars['DateTime'];
|
|
version: Version;
|
|
versions: VersionCollection;
|
|
};
|
|
|
|
|
|
export type ModelCommentThreadsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type ModelPendingImportedVersionsArgs = {
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type ModelVersionArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ModelVersionsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<ModelVersionsFilter>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type ModelCollection = {
|
|
__typename?: 'ModelCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Model>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type ModelMutations = {
|
|
__typename?: 'ModelMutations';
|
|
create: Model;
|
|
delete: Scalars['Boolean'];
|
|
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<Array<Scalars['String']>>;
|
|
/** Only return versions specified in `priorityIds` */
|
|
priorityIdsOnly?: InputMaybe<Scalars['Boolean']>;
|
|
};
|
|
|
|
export type ModelsTreeItem = {
|
|
__typename?: 'ModelsTreeItem';
|
|
children: Array<ModelsTreeItem>;
|
|
fullName: Scalars['String'];
|
|
/** Whether or not this item has nested children models */
|
|
hasChildren: Scalars['Boolean'];
|
|
id: Scalars['ID'];
|
|
/**
|
|
* 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<Model>;
|
|
name: Scalars['String'];
|
|
updatedAt: Scalars['DateTime'];
|
|
};
|
|
|
|
export type ModelsTreeItemCollection = {
|
|
__typename?: 'ModelsTreeItemCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<ModelsTreeItem>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type MoveVersionsInput = {
|
|
/** If the name references a nonexistant model, it will be created */
|
|
targetModelName: Scalars['String'];
|
|
versionIds: Array<Scalars['String']>;
|
|
};
|
|
|
|
export type Mutation = {
|
|
__typename?: 'Mutation';
|
|
/** The void stares back. */
|
|
_?: Maybe<Scalars['String']>;
|
|
/** Various Active User oriented mutations */
|
|
activeUserMutations: ActiveUserMutations;
|
|
adminDeleteUser: Scalars['Boolean'];
|
|
/** Creates an personal api token. */
|
|
apiTokenCreate: Scalars['String'];
|
|
/** Revokes (deletes) an personal api token/app token. */
|
|
apiTokenRevoke: Scalars['Boolean'];
|
|
/** Register a new third party application. */
|
|
appCreate: Scalars['String'];
|
|
/** Deletes a thirty party application. */
|
|
appDelete: Scalars['Boolean'];
|
|
/** Revokes (de-authorizes) an application that you have previously authorized. */
|
|
appRevokeAccess?: Maybe<Scalars['Boolean']>;
|
|
/** Create an app token. Only apps can create app tokens and they don't show up under personal access tokens. */
|
|
appTokenCreate: Scalars['String'];
|
|
/** 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'];
|
|
automateFunctionRunStatusReport: Scalars['Boolean'];
|
|
automateMutations: AutomateMutations;
|
|
automationMutations: AutomationMutations;
|
|
branchCreate: Scalars['String'];
|
|
branchDelete: Scalars['Boolean'];
|
|
branchUpdate: Scalars['Boolean'];
|
|
/** Broadcast user activity in the viewer */
|
|
broadcastViewerUserActivity: Scalars['Boolean'];
|
|
/**
|
|
* Archives a comment.
|
|
* @deprecated Use commentMutations version
|
|
*/
|
|
commentArchive: Scalars['Boolean'];
|
|
/**
|
|
* Creates a comment
|
|
* @deprecated Use commentMutations version
|
|
*/
|
|
commentCreate: Scalars['String'];
|
|
/**
|
|
* Edits a comment.
|
|
* @deprecated Use commentMutations version
|
|
*/
|
|
commentEdit: Scalars['Boolean'];
|
|
commentMutations: CommentMutations;
|
|
/**
|
|
* Adds a reply to a comment.
|
|
* @deprecated Use commentMutations version
|
|
*/
|
|
commentReply: Scalars['String'];
|
|
/**
|
|
* Flags a comment as viewed by you (the logged in user).
|
|
* @deprecated Use commentMutations version
|
|
*/
|
|
commentView: Scalars['Boolean'];
|
|
commitCreate: Scalars['String'];
|
|
commitDelete: Scalars['Boolean'];
|
|
commitReceive: Scalars['Boolean'];
|
|
commitUpdate: Scalars['Boolean'];
|
|
/** Delete a batch of commits */
|
|
commitsDelete: Scalars['Boolean'];
|
|
/** Move a batch of commits to a new branch */
|
|
commitsMove: Scalars['Boolean'];
|
|
/** Delete a pending invite */
|
|
inviteDelete: Scalars['Boolean'];
|
|
/** Re-send a pending invite */
|
|
inviteResend: Scalars['Boolean'];
|
|
modelMutations: ModelMutations;
|
|
objectCreate: Array<Maybe<Scalars['String']>>;
|
|
projectMutations: ProjectMutations;
|
|
/** (Re-)send the account verification e-mail */
|
|
requestVerification: Scalars['Boolean'];
|
|
requestVerificationByEmail: Scalars['Boolean'];
|
|
serverInfoUpdate?: Maybe<Scalars['Boolean']>;
|
|
serverInviteBatchCreate: Scalars['Boolean'];
|
|
/** Invite a new user to the speckle server and return the invite ID */
|
|
serverInviteCreate: Scalars['Boolean'];
|
|
/** Request access to a specific stream */
|
|
streamAccessRequestCreate: StreamAccessRequest;
|
|
/** Accept or decline a stream access request. Must be a stream owner to invoke this. */
|
|
streamAccessRequestUse: Scalars['Boolean'];
|
|
/** Creates a new stream. */
|
|
streamCreate?: Maybe<Scalars['String']>;
|
|
/** Deletes an existing stream. */
|
|
streamDelete: Scalars['Boolean'];
|
|
streamFavorite?: Maybe<Stream>;
|
|
streamInviteBatchCreate: Scalars['Boolean'];
|
|
/** Cancel a pending stream invite. Can only be invoked by a stream owner. */
|
|
streamInviteCancel: Scalars['Boolean'];
|
|
/** Invite a new or registered user to the specified stream */
|
|
streamInviteCreate: Scalars['Boolean'];
|
|
/** Accept or decline a stream invite */
|
|
streamInviteUse: Scalars['Boolean'];
|
|
/** Remove yourself from stream collaborators (not possible for the owner) */
|
|
streamLeave: Scalars['Boolean'];
|
|
/** Revokes the permissions of a user on a given stream. */
|
|
streamRevokePermission?: Maybe<Scalars['Boolean']>;
|
|
/** Updates an existing stream. */
|
|
streamUpdate: Scalars['Boolean'];
|
|
/** Update permissions of a user on a given stream. */
|
|
streamUpdatePermission?: Maybe<Scalars['Boolean']>;
|
|
streamsDelete: Scalars['Boolean'];
|
|
/**
|
|
* Used for broadcasting real time typing status in comment threads. Does not persist any info.
|
|
* @deprecated Use broadcastViewerUserActivity
|
|
*/
|
|
userCommentThreadActivityBroadcast: Scalars['Boolean'];
|
|
/** Delete a user's account. */
|
|
userDelete: Scalars['Boolean'];
|
|
userNotificationPreferencesUpdate?: Maybe<Scalars['Boolean']>;
|
|
userRoleChange: Scalars['Boolean'];
|
|
/**
|
|
* Edits a user's profile.
|
|
* @deprecated Use activeUserMutations version
|
|
*/
|
|
userUpdate: Scalars['Boolean'];
|
|
/**
|
|
* Used for broadcasting real time chat head bubbles and status. Does not persist any info.
|
|
* @deprecated Use broadcastViewerUserActivity
|
|
*/
|
|
userViewerActivityBroadcast: Scalars['Boolean'];
|
|
versionMutations: VersionMutations;
|
|
/** Creates a new webhook on a stream */
|
|
webhookCreate: Scalars['String'];
|
|
/** Deletes an existing webhook */
|
|
webhookDelete: Scalars['String'];
|
|
/** Updates an existing webhook */
|
|
webhookUpdate: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationAdminDeleteUserArgs = {
|
|
userConfirmation: UserDeleteInput;
|
|
};
|
|
|
|
|
|
export type MutationApiTokenCreateArgs = {
|
|
token: ApiTokenCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationApiTokenRevokeArgs = {
|
|
token: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationAppCreateArgs = {
|
|
app: AppCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationAppDeleteArgs = {
|
|
appId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationAppRevokeAccessArgs = {
|
|
appId: Scalars['String'];
|
|
};
|
|
|
|
|
|
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'];
|
|
resourceIdString: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationCommentArchiveArgs = {
|
|
archived?: Scalars['Boolean'];
|
|
commentId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationCommentCreateArgs = {
|
|
input: CommentCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationCommentEditArgs = {
|
|
input: CommentEditInput;
|
|
};
|
|
|
|
|
|
export type MutationCommentReplyArgs = {
|
|
input: ReplyCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationCommentViewArgs = {
|
|
commentId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
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'];
|
|
};
|
|
|
|
|
|
export type MutationInviteResendArgs = {
|
|
inviteId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationObjectCreateArgs = {
|
|
objectInput: ObjectCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationRequestVerificationByEmailArgs = {
|
|
email: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationServerInfoUpdateArgs = {
|
|
info: ServerInfoUpdateInput;
|
|
};
|
|
|
|
|
|
export type MutationServerInviteBatchCreateArgs = {
|
|
input: Array<ServerInviteCreateInput>;
|
|
};
|
|
|
|
|
|
export type MutationServerInviteCreateArgs = {
|
|
input: ServerInviteCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamAccessRequestCreateArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamAccessRequestUseArgs = {
|
|
accept: Scalars['Boolean'];
|
|
requestId: Scalars['String'];
|
|
role?: StreamRole;
|
|
};
|
|
|
|
|
|
export type MutationStreamCreateArgs = {
|
|
stream: StreamCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamDeleteArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamFavoriteArgs = {
|
|
favorited: Scalars['Boolean'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamInviteBatchCreateArgs = {
|
|
input: Array<StreamInviteCreateInput>;
|
|
};
|
|
|
|
|
|
export type MutationStreamInviteCancelArgs = {
|
|
inviteId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamInviteCreateArgs = {
|
|
input: StreamInviteCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamInviteUseArgs = {
|
|
accept: Scalars['Boolean'];
|
|
streamId: Scalars['String'];
|
|
token: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamLeaveArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationStreamRevokePermissionArgs = {
|
|
permissionParams: StreamRevokePermissionInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamUpdateArgs = {
|
|
stream: StreamUpdateInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamUpdatePermissionArgs = {
|
|
permissionParams: StreamUpdatePermissionInput;
|
|
};
|
|
|
|
|
|
export type MutationStreamsDeleteArgs = {
|
|
ids?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
|
|
export type MutationUserCommentThreadActivityBroadcastArgs = {
|
|
commentId: Scalars['String'];
|
|
data?: InputMaybe<Scalars['JSONObject']>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationUserDeleteArgs = {
|
|
userConfirmation: UserDeleteInput;
|
|
};
|
|
|
|
|
|
export type MutationUserNotificationPreferencesUpdateArgs = {
|
|
preferences: Scalars['JSONObject'];
|
|
};
|
|
|
|
|
|
export type MutationUserRoleChangeArgs = {
|
|
userRoleInput: UserRoleInput;
|
|
};
|
|
|
|
|
|
export type MutationUserUpdateArgs = {
|
|
user: UserUpdateInput;
|
|
};
|
|
|
|
|
|
export type MutationUserViewerActivityBroadcastArgs = {
|
|
data?: InputMaybe<Scalars['JSONObject']>;
|
|
resourceId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type MutationWebhookCreateArgs = {
|
|
webhook: WebhookCreateInput;
|
|
};
|
|
|
|
|
|
export type MutationWebhookDeleteArgs = {
|
|
webhook: WebhookDeleteInput;
|
|
};
|
|
|
|
|
|
export type MutationWebhookUpdateArgs = {
|
|
webhook: WebhookUpdateInput;
|
|
};
|
|
|
|
export type Object = {
|
|
__typename?: 'Object';
|
|
applicationId?: Maybe<Scalars['String']>;
|
|
/**
|
|
* 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"}] ){
|
|
* ...
|
|
* }
|
|
* ```
|
|
*/
|
|
commentCount: Scalars['Int'];
|
|
createdAt?: Maybe<Scalars['DateTime']>;
|
|
/** 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<Scalars['JSONObject']>;
|
|
id: Scalars['String'];
|
|
speckleType?: Maybe<Scalars['String']>;
|
|
totalChildrenCount?: Maybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type ObjectChildrenArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
depth?: Scalars['Int'];
|
|
limit?: Scalars['Int'];
|
|
orderBy?: InputMaybe<Scalars['JSONObject']>;
|
|
query?: InputMaybe<Array<Scalars['JSONObject']>>;
|
|
select?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
|
|
};
|
|
|
|
export type ObjectCollection = {
|
|
__typename?: 'ObjectCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
objects: Array<Maybe<Object>>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type ObjectCreateInput = {
|
|
/** The objects you want to create. */
|
|
objects: Array<InputMaybe<Scalars['JSONObject']>>;
|
|
/** The stream against which these objects will be created. */
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type PasswordStrengthCheckFeedback = {
|
|
__typename?: 'PasswordStrengthCheckFeedback';
|
|
suggestions: Array<Scalars['String']>;
|
|
warning?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
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'];
|
|
};
|
|
|
|
export type PendingStreamCollaborator = {
|
|
__typename?: 'PendingStreamCollaborator';
|
|
id: Scalars['String'];
|
|
inviteId: Scalars['String'];
|
|
invitedBy: LimitedUser;
|
|
projectId: Scalars['String'];
|
|
projectName: Scalars['String'];
|
|
role: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
streamName: Scalars['String'];
|
|
/** E-mail address or name of the invited user */
|
|
title: Scalars['String'];
|
|
/** Only available if the active user is the pending stream collaborator */
|
|
token?: Maybe<Scalars['String']>;
|
|
/** Set only if user is registered */
|
|
user?: Maybe<LimitedUser>;
|
|
};
|
|
|
|
export type Project = {
|
|
__typename?: 'Project';
|
|
allowPublicComments: Scalars['Boolean'];
|
|
/** Get a single automation by id. Error will be thrown if automation is not found or inaccessible. */
|
|
automation: Automation;
|
|
automations: AutomationCollection;
|
|
blob?: Maybe<BlobMetadata>;
|
|
/** Get the metadata collection of blobs stored for this stream. */
|
|
blobs?: Maybe<BlobMetadataCollection>;
|
|
/** All comment threads in this project */
|
|
commentThreads: ProjectCommentCollection;
|
|
createdAt: Scalars['DateTime'];
|
|
description?: Maybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
/** Collaborators who have been invited, but not yet accepted. */
|
|
invitedTeam?: Maybe<Array<PendingStreamCollaborator>>;
|
|
/** Returns a specific model by its ID */
|
|
model: Model;
|
|
/** Return a model tree of children for the specified model name */
|
|
modelChildrenTree: Array<ModelsTreeItem>;
|
|
/** 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'];
|
|
/** Returns a list models that are being created from a file import */
|
|
pendingImportedModels: Array<FileUpload>;
|
|
/** Active user's role for this project. `null` if request is not authenticated, or the project is not explicitly shared with you. */
|
|
role?: Maybe<Scalars['String']>;
|
|
/** Source apps used in any models of this project */
|
|
sourceApps: Array<Scalars['String']>;
|
|
team: Array<ProjectCollaborator>;
|
|
updatedAt: Scalars['DateTime'];
|
|
/** Retrieve a specific project version by its ID */
|
|
version?: Maybe<Version>;
|
|
/** Returns a flat list of all project versions */
|
|
versions: VersionCollection;
|
|
/** Return metadata about resources being requested in the viewer */
|
|
viewerResources: Array<ViewerResourceGroup>;
|
|
visibility: ProjectVisibility;
|
|
webhooks: WebhookCollection;
|
|
};
|
|
|
|
|
|
export type ProjectAutomationArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectAutomationsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type ProjectBlobArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectBlobsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
query?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type ProjectCommentThreadsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<ProjectCommentsFilter>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type ProjectModelArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectModelChildrenTreeArgs = {
|
|
fullName: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectModelsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<ProjectModelsFilter>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type ProjectModelsTreeArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<ProjectModelsTreeFilter>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type ProjectPendingImportedModelsArgs = {
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type ProjectVersionArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectVersionsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type ProjectViewerResourcesArgs = {
|
|
loadedVersionsOnly?: InputMaybe<Scalars['Boolean']>;
|
|
resourceIdString: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectWebhooksArgs = {
|
|
id?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type ProjectAutomationCreateInput = {
|
|
enabled: Scalars['Boolean'];
|
|
name: Scalars['String'];
|
|
};
|
|
|
|
export type ProjectAutomationMutations = {
|
|
__typename?: 'ProjectAutomationMutations';
|
|
create: Automation;
|
|
createRevision: AutomationRevision;
|
|
/**
|
|
* Trigger an automation with a fake "version created" trigger. The "version created" will
|
|
* just refer to the last version of the model.
|
|
*/
|
|
trigger: Scalars['Boolean'];
|
|
update: Automation;
|
|
};
|
|
|
|
|
|
export type ProjectAutomationMutationsCreateArgs = {
|
|
input: ProjectAutomationCreateInput;
|
|
};
|
|
|
|
|
|
export type ProjectAutomationMutationsCreateRevisionArgs = {
|
|
input: ProjectAutomationRevisionCreateInput;
|
|
};
|
|
|
|
|
|
export type ProjectAutomationMutationsTriggerArgs = {
|
|
automationId: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type ProjectAutomationMutationsUpdateArgs = {
|
|
input: ProjectAutomationUpdateInput;
|
|
};
|
|
|
|
export type ProjectAutomationRevisionCreateInput = {
|
|
automationId: Scalars['ID'];
|
|
functions: Array<AutomationRevisionCreateFunctionInput>;
|
|
/** AutomateTypes.TriggerDefinitionsSchema type from @speckle/shared */
|
|
triggerDefinitions: Scalars['JSONObject'];
|
|
};
|
|
|
|
export type ProjectAutomationUpdateInput = {
|
|
enabled?: InputMaybe<Scalars['Boolean']>;
|
|
id: Scalars['ID'];
|
|
name?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type ProjectAutomationsStatusUpdatedMessage = {
|
|
__typename?: 'ProjectAutomationsStatusUpdatedMessage';
|
|
model: Model;
|
|
project: Project;
|
|
status: AutomationsStatus;
|
|
version: Version;
|
|
};
|
|
|
|
export type ProjectAutomationsUpdatedMessage = {
|
|
__typename?: 'ProjectAutomationsUpdatedMessage';
|
|
automation?: Maybe<Automation>;
|
|
automationId: Scalars['String'];
|
|
/** Only set if type === CREATED_REVISION */
|
|
revision?: Maybe<AutomationRevision>;
|
|
type: ProjectAutomationsUpdatedMessageType;
|
|
};
|
|
|
|
export enum ProjectAutomationsUpdatedMessageType {
|
|
Created = 'CREATED',
|
|
CreatedRevision = 'CREATED_REVISION',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
export type ProjectCollaborator = {
|
|
__typename?: 'ProjectCollaborator';
|
|
id: Scalars['ID'];
|
|
role: Scalars['String'];
|
|
user: LimitedUser;
|
|
};
|
|
|
|
export type ProjectCollection = {
|
|
__typename?: 'ProjectCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Project>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type ProjectCommentCollection = {
|
|
__typename?: 'ProjectCommentCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Comment>;
|
|
totalArchivedCount: Scalars['Int'];
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type ProjectCommentsFilter = {
|
|
/** Whether or not to include archived/resolved threads */
|
|
includeArchived?: InputMaybe<Scalars['Boolean']>;
|
|
/**
|
|
* 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<Scalars['Boolean']>;
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
};
|
|
|
|
export type ProjectCommentsUpdatedMessage = {
|
|
__typename?: 'ProjectCommentsUpdatedMessage';
|
|
/** Null if deleted */
|
|
comment?: Maybe<Comment>;
|
|
id: Scalars['String'];
|
|
type: ProjectCommentsUpdatedMessageType;
|
|
};
|
|
|
|
export enum ProjectCommentsUpdatedMessageType {
|
|
Archived = 'ARCHIVED',
|
|
Created = 'CREATED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
/** Any values left null will be ignored */
|
|
export type ProjectCreateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
name?: InputMaybe<Scalars['String']>;
|
|
visibility?: InputMaybe<ProjectVisibility>;
|
|
};
|
|
|
|
export type ProjectFileImportUpdatedMessage = {
|
|
__typename?: 'ProjectFileImportUpdatedMessage';
|
|
/** Upload ID */
|
|
id: Scalars['String'];
|
|
type: ProjectFileImportUpdatedMessageType;
|
|
upload: FileUpload;
|
|
};
|
|
|
|
export enum ProjectFileImportUpdatedMessageType {
|
|
Created = 'CREATED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
export type ProjectInviteCreateInput = {
|
|
/** Either this or userId must be filled */
|
|
email?: InputMaybe<Scalars['String']>;
|
|
/** Defaults to the contributor role, if not specified */
|
|
role?: InputMaybe<Scalars['String']>;
|
|
/** Can only be specified if guest mode is on or if the user is an admin */
|
|
serverRole?: InputMaybe<Scalars['String']>;
|
|
/** Either this or email must be filled */
|
|
userId?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
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'];
|
|
};
|
|
|
|
|
|
export type ProjectInviteMutationsBatchCreateArgs = {
|
|
input: Array<ProjectInviteCreateInput>;
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type ProjectInviteMutationsCancelArgs = {
|
|
inviteId: Scalars['String'];
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type ProjectInviteMutationsCreateArgs = {
|
|
input: ProjectInviteCreateInput;
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type ProjectInviteMutationsUseArgs = {
|
|
input: ProjectInviteUseInput;
|
|
};
|
|
|
|
export type ProjectInviteUseInput = {
|
|
accept: Scalars['Boolean'];
|
|
projectId: Scalars['ID'];
|
|
token: Scalars['String'];
|
|
};
|
|
|
|
export type ProjectModelsFilter = {
|
|
/** Filter by IDs of contributors who participated in models */
|
|
contributors?: InputMaybe<Array<Scalars['String']>>;
|
|
/** Excldue models w/ the specified IDs */
|
|
excludeIds?: InputMaybe<Array<Scalars['String']>>;
|
|
/** Only select models w/ the specified IDs */
|
|
ids?: InputMaybe<Array<Scalars['String']>>;
|
|
/** Filter out models that don't have any versions */
|
|
onlyWithVersions?: InputMaybe<Scalars['Boolean']>;
|
|
/** Filter by model names */
|
|
search?: InputMaybe<Scalars['String']>;
|
|
/** Filter by source apps used in models */
|
|
sourceApps?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
export type ProjectModelsTreeFilter = {
|
|
/** Filter by IDs of contributors who participated in models */
|
|
contributors?: InputMaybe<Array<Scalars['String']>>;
|
|
/** Search for specific models. If used, tree items from different levels may be mixed. */
|
|
search?: InputMaybe<Scalars['String']>;
|
|
/** Filter by source apps used in models */
|
|
sourceApps?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
export type ProjectModelsUpdatedMessage = {
|
|
__typename?: 'ProjectModelsUpdatedMessage';
|
|
/** Model ID */
|
|
id: Scalars['String'];
|
|
/** Null if model was deleted */
|
|
model?: Maybe<Model>;
|
|
type: ProjectModelsUpdatedMessageType;
|
|
};
|
|
|
|
export enum ProjectModelsUpdatedMessageType {
|
|
Created = 'CREATED',
|
|
Deleted = 'DELETED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
export type ProjectMutations = {
|
|
__typename?: 'ProjectMutations';
|
|
automationMutations: ProjectAutomationMutations;
|
|
/** 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'];
|
|
/** Invite related mutations */
|
|
invites: ProjectInviteMutations;
|
|
/** Leave a project. Only possible if you're not the last remaining owner. */
|
|
leave: Scalars['Boolean'];
|
|
/** Updates an existing project */
|
|
update: Project;
|
|
/** Update role for a collaborator */
|
|
updateRole: Project;
|
|
};
|
|
|
|
|
|
export type ProjectMutationsAutomationMutationsArgs = {
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type ProjectMutationsCreateArgs = {
|
|
input?: InputMaybe<ProjectCreateInput>;
|
|
};
|
|
|
|
|
|
export type ProjectMutationsDeleteArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectMutationsLeaveArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type ProjectMutationsUpdateArgs = {
|
|
update: ProjectUpdateInput;
|
|
};
|
|
|
|
|
|
export type ProjectMutationsUpdateRoleArgs = {
|
|
input: ProjectUpdateRoleInput;
|
|
};
|
|
|
|
export type ProjectPendingModelsUpdatedMessage = {
|
|
__typename?: 'ProjectPendingModelsUpdatedMessage';
|
|
/** Upload ID */
|
|
id: Scalars['String'];
|
|
model: FileUpload;
|
|
type: ProjectPendingModelsUpdatedMessageType;
|
|
};
|
|
|
|
export enum ProjectPendingModelsUpdatedMessageType {
|
|
Created = 'CREATED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
export type ProjectPendingVersionsUpdatedMessage = {
|
|
__typename?: 'ProjectPendingVersionsUpdatedMessage';
|
|
/** Upload ID */
|
|
id: Scalars['String'];
|
|
type: ProjectPendingVersionsUpdatedMessageType;
|
|
version: FileUpload;
|
|
};
|
|
|
|
export enum ProjectPendingVersionsUpdatedMessageType {
|
|
Created = 'CREATED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
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<Scalars['Boolean']>;
|
|
description?: InputMaybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
name?: InputMaybe<Scalars['String']>;
|
|
visibility?: InputMaybe<ProjectVisibility>;
|
|
};
|
|
|
|
export type ProjectUpdateRoleInput = {
|
|
projectId: Scalars['String'];
|
|
/** Leave role as null to revoke access entirely */
|
|
role?: InputMaybe<Scalars['String']>;
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export type ProjectUpdatedMessage = {
|
|
__typename?: 'ProjectUpdatedMessage';
|
|
/** Project ID */
|
|
id: Scalars['String'];
|
|
/** Project entity, null if project was deleted */
|
|
project?: Maybe<Project>;
|
|
/** Message type */
|
|
type: ProjectUpdatedMessageType;
|
|
};
|
|
|
|
export enum ProjectUpdatedMessageType {
|
|
Deleted = 'DELETED',
|
|
Updated = 'UPDATED'
|
|
}
|
|
|
|
export type ProjectVersionsPreviewGeneratedMessage = {
|
|
__typename?: 'ProjectVersionsPreviewGeneratedMessage';
|
|
objectId: Scalars['String'];
|
|
projectId: Scalars['String'];
|
|
versionId: Scalars['String'];
|
|
};
|
|
|
|
export type ProjectVersionsUpdatedMessage = {
|
|
__typename?: 'ProjectVersionsUpdatedMessage';
|
|
/** Version ID */
|
|
id: Scalars['String'];
|
|
/** Only set if version was deleted, in other scenarios can be queried from 'version' */
|
|
modelId?: Maybe<Scalars['String']>;
|
|
type: ProjectVersionsUpdatedMessageType;
|
|
/** Null if version was deleted */
|
|
version?: Maybe<Version>;
|
|
};
|
|
|
|
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<Scalars['String']>;
|
|
/** Gets the profile of the authenticated user or null if not authenticated */
|
|
activeUser?: Maybe<User>;
|
|
admin: AdminQueries;
|
|
/**
|
|
* All the streams of the server. Available to admins only.
|
|
* @deprecated use admin.projectList instead
|
|
*/
|
|
adminStreams?: Maybe<StreamCollection>;
|
|
/**
|
|
* 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<AdminUsersListCollection>;
|
|
/** Gets a specific app from the server. */
|
|
app?: Maybe<ServerApp>;
|
|
/** Returns all the publicly available apps on this server. */
|
|
apps?: Maybe<Array<Maybe<ServerAppListItem>>>;
|
|
/** If user is authenticated using an app token, this will describe the app */
|
|
authenticatedAsApp?: Maybe<ServerAppListItem>;
|
|
/** 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'];
|
|
comment?: Maybe<Comment>;
|
|
/**
|
|
* 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 'commentThreads' fields instead
|
|
*/
|
|
comments?: Maybe<CommentCollection>;
|
|
/** All of the discoverable streams of the server */
|
|
discoverableStreams?: Maybe<StreamCollection>;
|
|
/** Get the (limited) profile information of another server user */
|
|
otherUser?: Maybe<LimitedUser>;
|
|
/**
|
|
* 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<PendingStreamCollaborator>;
|
|
serverInfo: ServerInfo;
|
|
/** Receive metadata about an invite by the invite token */
|
|
serverInviteByToken?: Maybe<ServerInvite>;
|
|
/** @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.
|
|
*/
|
|
stream?: Maybe<Stream>;
|
|
/** Get authed user's stream access request */
|
|
streamAccessRequest?: Maybe<StreamAccessRequest>;
|
|
/**
|
|
* 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.
|
|
*/
|
|
streamInvite?: Maybe<PendingStreamCollaborator>;
|
|
/** Get all invitations to streams that the active user has */
|
|
streamInvites: Array<PendingStreamCollaborator>;
|
|
/**
|
|
* Returns all streams that the active user is a collaborator on.
|
|
* Pass in the `query` parameter to search by name, description or ID.
|
|
*/
|
|
streams?: Maybe<StreamCollection>;
|
|
/**
|
|
* 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<User>;
|
|
/** Validate password strength */
|
|
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<Scalars['Int']>;
|
|
offset?: InputMaybe<Scalars['Int']>;
|
|
orderBy?: InputMaybe<Scalars['String']>;
|
|
query?: InputMaybe<Scalars['String']>;
|
|
visibility?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryAdminUsersArgs = {
|
|
limit?: Scalars['Int'];
|
|
offset?: Scalars['Int'];
|
|
query?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryAppArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryAutomateFunctionArgs = {
|
|
id: Scalars['ID'];
|
|
};
|
|
|
|
|
|
export type QueryAutomateFunctionsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
filter?: InputMaybe<AutomateFunctionsFilter>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type QueryAutomateValidateAuthCodeArgs = {
|
|
code: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryCommentArgs = {
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryCommentsArgs = {
|
|
archived?: Scalars['Boolean'];
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
resources?: InputMaybe<Array<InputMaybe<ResourceIdentifierInput>>>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryDiscoverableStreamsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
sort?: InputMaybe<DiscoverableStreamsSortingInput>;
|
|
};
|
|
|
|
|
|
export type QueryOtherUserArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryProjectArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryProjectInviteArgs = {
|
|
projectId: Scalars['String'];
|
|
token?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryServerInviteByTokenArgs = {
|
|
token: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryStreamArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryStreamAccessRequestArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryStreamInviteArgs = {
|
|
streamId: Scalars['String'];
|
|
token?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryStreamsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
query?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryUserArgs = {
|
|
id?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type QueryUserPwdStrengthArgs = {
|
|
pwd: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type QueryUserSearchArgs = {
|
|
archived?: InputMaybe<Scalars['Boolean']>;
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
emailOnly?: InputMaybe<Scalars['Boolean']>;
|
|
limit?: Scalars['Int'];
|
|
query: Scalars['String'];
|
|
};
|
|
|
|
/** Deprecated: Used by old stream-based mutations */
|
|
export type ReplyCreateInput = {
|
|
/** IDs of uploaded blobs that should be attached to this reply */
|
|
blobIds: Array<Scalars['String']>;
|
|
data?: InputMaybe<Scalars['JSONObject']>;
|
|
parentComment: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
/** ProseMirror document object */
|
|
text?: InputMaybe<Scalars['JSONObject']>;
|
|
};
|
|
|
|
export type ResourceIdentifier = {
|
|
__typename?: 'ResourceIdentifier';
|
|
resourceId: Scalars['String'];
|
|
resourceType: ResourceType;
|
|
};
|
|
|
|
export type ResourceIdentifierInput = {
|
|
resourceId: Scalars['String'];
|
|
resourceType: ResourceType;
|
|
};
|
|
|
|
export enum ResourceType {
|
|
Comment = 'comment',
|
|
Commit = 'commit',
|
|
Object = 'object',
|
|
Stream = 'stream'
|
|
}
|
|
|
|
export type Role = {
|
|
__typename?: 'Role';
|
|
description: Scalars['String'];
|
|
name: Scalars['String'];
|
|
resourceTarget: Scalars['String'];
|
|
};
|
|
|
|
/** Available scopes. */
|
|
export type Scope = {
|
|
__typename?: 'Scope';
|
|
description: Scalars['String'];
|
|
name: Scalars['String'];
|
|
};
|
|
|
|
export type ServerApp = {
|
|
__typename?: 'ServerApp';
|
|
author?: Maybe<AppAuthor>;
|
|
createdAt: Scalars['DateTime'];
|
|
description?: Maybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
logo?: Maybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
public?: Maybe<Scalars['Boolean']>;
|
|
redirectUrl: Scalars['String'];
|
|
scopes: Array<Scope>;
|
|
secret?: Maybe<Scalars['String']>;
|
|
termsAndConditionsLink?: Maybe<Scalars['String']>;
|
|
trustByDefault?: Maybe<Scalars['Boolean']>;
|
|
};
|
|
|
|
export type ServerAppListItem = {
|
|
__typename?: 'ServerAppListItem';
|
|
author?: Maybe<AppAuthor>;
|
|
description?: Maybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
logo?: Maybe<Scalars['String']>;
|
|
name: Scalars['String'];
|
|
redirectUrl: Scalars['String'];
|
|
termsAndConditionsLink?: Maybe<Scalars['String']>;
|
|
trustByDefault?: Maybe<Scalars['Boolean']>;
|
|
};
|
|
|
|
export type ServerAutomateInfo = {
|
|
__typename?: 'ServerAutomateInfo';
|
|
availableFunctionTemplates: Array<AutomateFunctionTemplate>;
|
|
};
|
|
|
|
/** Information about this server. */
|
|
export type ServerInfo = {
|
|
__typename?: 'ServerInfo';
|
|
adminContact?: Maybe<Scalars['String']>;
|
|
/** The authentication strategies available on this server. */
|
|
authStrategies: Array<AuthStrategy>;
|
|
automate: ServerAutomateInfo;
|
|
/** Base URL of Speckle Automate, if set */
|
|
automateUrl?: Maybe<Scalars['String']>;
|
|
blobSizeLimitBytes: Scalars['Int'];
|
|
canonicalUrl?: Maybe<Scalars['String']>;
|
|
company?: Maybe<Scalars['String']>;
|
|
description?: Maybe<Scalars['String']>;
|
|
/** Whether or not to show messaging about FE2 (banners etc.) */
|
|
enableNewWebUiMessaging?: Maybe<Scalars['Boolean']>;
|
|
guestModeEnabled: Scalars['Boolean'];
|
|
inviteOnly?: Maybe<Scalars['Boolean']>;
|
|
/** Server relocation / migration info */
|
|
migration?: Maybe<ServerMigration>;
|
|
name: Scalars['String'];
|
|
/** @deprecated Use role constants from the @speckle/shared npm package instead */
|
|
roles: Array<Role>;
|
|
scopes: Array<Scope>;
|
|
serverRoles: Array<ServerRoleItem>;
|
|
termsOfService?: Maybe<Scalars['String']>;
|
|
version?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
export type ServerInfoUpdateInput = {
|
|
adminContact?: InputMaybe<Scalars['String']>;
|
|
company?: InputMaybe<Scalars['String']>;
|
|
description?: InputMaybe<Scalars['String']>;
|
|
guestModeEnabled?: InputMaybe<Scalars['Boolean']>;
|
|
inviteOnly?: InputMaybe<Scalars['Boolean']>;
|
|
name: Scalars['String'];
|
|
termsOfService?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type ServerInvite = {
|
|
__typename?: 'ServerInvite';
|
|
email: Scalars['String'];
|
|
id: Scalars['String'];
|
|
invitedBy: LimitedUser;
|
|
};
|
|
|
|
export type ServerInviteCreateInput = {
|
|
email: Scalars['String'];
|
|
message?: InputMaybe<Scalars['String']>;
|
|
/** Can only be specified if guest mode is on or if the user is an admin */
|
|
serverRole?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type ServerMigration = {
|
|
__typename?: 'ServerMigration';
|
|
movedFrom?: Maybe<Scalars['String']>;
|
|
movedTo?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
export enum ServerRole {
|
|
ServerAdmin = 'SERVER_ADMIN',
|
|
ServerArchivedUser = 'SERVER_ARCHIVED_USER',
|
|
ServerGuest = 'SERVER_GUEST',
|
|
ServerUser = 'SERVER_USER'
|
|
}
|
|
|
|
export type ServerRoleItem = {
|
|
__typename?: 'ServerRoleItem';
|
|
id: Scalars['String'];
|
|
title: Scalars['String'];
|
|
};
|
|
|
|
export type ServerStatistics = {
|
|
__typename?: 'ServerStatistics';
|
|
totalPendingInvites: Scalars['Int'];
|
|
totalProjectCount: Scalars['Int'];
|
|
totalUserCount: Scalars['Int'];
|
|
};
|
|
|
|
export type ServerStats = {
|
|
__typename?: 'ServerStats';
|
|
/** An array of objects currently structured as { created_month: Date, count: int }. */
|
|
commitHistory?: Maybe<Array<Maybe<Scalars['JSONObject']>>>;
|
|
/** An array of objects currently structured as { created_month: Date, count: int }. */
|
|
objectHistory?: Maybe<Array<Maybe<Scalars['JSONObject']>>>;
|
|
/** An array of objects currently structured as { created_month: Date, count: int }. */
|
|
streamHistory?: Maybe<Array<Maybe<Scalars['JSONObject']>>>;
|
|
totalCommitCount: Scalars['Int'];
|
|
totalObjectCount: Scalars['Int'];
|
|
totalStreamCount: Scalars['Int'];
|
|
totalUserCount: Scalars['Int'];
|
|
/** An array of objects currently structured as { created_month: Date, count: int }. */
|
|
userHistory?: Maybe<Array<Maybe<Scalars['JSONObject']>>>;
|
|
};
|
|
|
|
export type SmartTextEditorValue = {
|
|
__typename?: 'SmartTextEditorValue';
|
|
/** File attachments, if any */
|
|
attachments?: Maybe<Array<BlobMetadata>>;
|
|
/**
|
|
* The actual (ProseMirror) document representing the text. Can be empty,
|
|
* if there are attachments.
|
|
*/
|
|
doc?: Maybe<Scalars['JSONObject']>;
|
|
/** The type of editor value (comment, blog post etc.) */
|
|
type: Scalars['String'];
|
|
/** The version of the schema */
|
|
version: Scalars['String'];
|
|
};
|
|
|
|
export enum SortDirection {
|
|
Asc = 'ASC',
|
|
Desc = 'DESC'
|
|
}
|
|
|
|
export type Stream = {
|
|
__typename?: 'Stream';
|
|
/** All the recent activity on this stream in chronological order */
|
|
activity?: Maybe<ActivityCollection>;
|
|
allowPublicComments: Scalars['Boolean'];
|
|
blob?: Maybe<BlobMetadata>;
|
|
/** Get the metadata collection of blobs stored for this stream. */
|
|
blobs?: Maybe<BlobMetadataCollection>;
|
|
branch?: Maybe<Branch>;
|
|
branches?: Maybe<BranchCollection>;
|
|
collaborators: Array<StreamCollaborator>;
|
|
/**
|
|
* 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"){
|
|
* ...
|
|
* }
|
|
* ```
|
|
*/
|
|
commentCount: Scalars['Int'];
|
|
commit?: Maybe<Commit>;
|
|
commits?: Maybe<CommitCollection>;
|
|
createdAt: Scalars['DateTime'];
|
|
description?: Maybe<Scalars['String']>;
|
|
/** 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<Scalars['DateTime']>;
|
|
favoritesCount: Scalars['Int'];
|
|
/** Returns a specific file upload that belongs to this stream. */
|
|
fileUpload?: Maybe<FileUpload>;
|
|
/** Returns a list of all the file uploads for this stream. */
|
|
fileUploads: Array<FileUpload>;
|
|
id: Scalars['String'];
|
|
/**
|
|
* Whether the stream (if public) can be found on public stream exploration pages
|
|
* and searches
|
|
*/
|
|
isDiscoverable: Scalars['Boolean'];
|
|
/** Whether the stream can be viewed by non-contributors */
|
|
isPublic: Scalars['Boolean'];
|
|
name: Scalars['String'];
|
|
object?: Maybe<Object>;
|
|
/** Pending stream access requests */
|
|
pendingAccessRequests?: Maybe<Array<StreamAccessRequest>>;
|
|
/** Collaborators who have been invited, but not yet accepted. */
|
|
pendingCollaborators?: Maybe<Array<PendingStreamCollaborator>>;
|
|
/** Your role for this stream. `null` if request is not authenticated, or the stream is not explicitly shared with you. */
|
|
role?: Maybe<Scalars['String']>;
|
|
size?: Maybe<Scalars['String']>;
|
|
updatedAt: Scalars['DateTime'];
|
|
webhooks: WebhookCollection;
|
|
};
|
|
|
|
|
|
export type StreamActivityArgs = {
|
|
actionType?: InputMaybe<Scalars['String']>;
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type StreamBlobArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type StreamBlobsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
query?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type StreamBranchArgs = {
|
|
name?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type StreamBranchesArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type StreamCommitArgs = {
|
|
id?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type StreamCommitsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
export type StreamFileUploadArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type StreamObjectArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type StreamWebhooksArgs = {
|
|
id?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
/** Created when a user requests to become a contributor on a stream */
|
|
export type StreamAccessRequest = {
|
|
__typename?: 'StreamAccessRequest';
|
|
createdAt: Scalars['DateTime'];
|
|
id: Scalars['ID'];
|
|
requester: LimitedUser;
|
|
requesterId: Scalars['String'];
|
|
/** Can only be selected if authed user has proper access */
|
|
stream: Stream;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type StreamCollaborator = {
|
|
__typename?: 'StreamCollaborator';
|
|
avatar?: Maybe<Scalars['String']>;
|
|
company?: Maybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
name: Scalars['String'];
|
|
role: Scalars['String'];
|
|
serverRole: Scalars['String'];
|
|
};
|
|
|
|
export type StreamCollection = {
|
|
__typename?: 'StreamCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items?: Maybe<Array<Stream>>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type StreamCreateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
/**
|
|
* Whether the stream (if public) can be found on public stream exploration pages
|
|
* and searches
|
|
*/
|
|
isDiscoverable?: InputMaybe<Scalars['Boolean']>;
|
|
/** Whether the stream can be viewed by non-contributors */
|
|
isPublic?: InputMaybe<Scalars['Boolean']>;
|
|
name?: InputMaybe<Scalars['String']>;
|
|
/** Optionally specify user IDs of users that you want to invite to be contributors to this stream */
|
|
withContributors?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
export type StreamInviteCreateInput = {
|
|
email?: InputMaybe<Scalars['String']>;
|
|
message?: InputMaybe<Scalars['String']>;
|
|
/** Defaults to the contributor role, if not specified */
|
|
role?: InputMaybe<Scalars['String']>;
|
|
/** Can only be specified if guest mode is on or if the user is an admin */
|
|
serverRole?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
userId?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type StreamRevokePermissionInput = {
|
|
streamId: Scalars['String'];
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export enum StreamRole {
|
|
StreamContributor = 'STREAM_CONTRIBUTOR',
|
|
StreamOwner = 'STREAM_OWNER',
|
|
StreamReviewer = 'STREAM_REVIEWER'
|
|
}
|
|
|
|
export type StreamUpdateInput = {
|
|
allowPublicComments?: InputMaybe<Scalars['Boolean']>;
|
|
description?: InputMaybe<Scalars['String']>;
|
|
id: Scalars['String'];
|
|
/**
|
|
* Whether the stream (if public) can be found on public stream exploration pages
|
|
* and searches
|
|
*/
|
|
isDiscoverable?: InputMaybe<Scalars['Boolean']>;
|
|
/** Whether the stream can be viewed by non-contributors */
|
|
isPublic?: InputMaybe<Scalars['Boolean']>;
|
|
name?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type StreamUpdatePermissionInput = {
|
|
role: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
userId: Scalars['String'];
|
|
};
|
|
|
|
export type Subscription = {
|
|
__typename?: 'Subscription';
|
|
/** It's lonely in the void. */
|
|
_?: Maybe<Scalars['String']>;
|
|
/** Subscribe to branch created event */
|
|
branchCreated?: Maybe<Scalars['JSONObject']>;
|
|
/** Subscribe to branch deleted event */
|
|
branchDeleted?: Maybe<Scalars['JSONObject']>;
|
|
/** Subscribe to branch updated event. */
|
|
branchUpdated?: Maybe<Scalars['JSONObject']>;
|
|
/**
|
|
* 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 */
|
|
commitCreated?: Maybe<Scalars['JSONObject']>;
|
|
/** Subscribe to commit deleted event */
|
|
commitDeleted?: Maybe<Scalars['JSONObject']>;
|
|
/** Subscribe to commit updated event. */
|
|
commitUpdated?: Maybe<Scalars['JSONObject']>;
|
|
projectAutomationsStatusUpdated: ProjectAutomationsStatusUpdatedMessage;
|
|
/** 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 */
|
|
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;
|
|
/** 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. */
|
|
streamDeleted?: Maybe<Scalars['JSONObject']>;
|
|
/** Subscribes to stream updated event. Use this in clients/components that pertain only to this stream. */
|
|
streamUpdated?: Maybe<Scalars['JSONObject']>;
|
|
/** 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.
|
|
*/
|
|
userStreamAdded?: Maybe<Scalars['JSONObject']>;
|
|
/**
|
|
* 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.
|
|
*/
|
|
userStreamRemoved?: Maybe<Scalars['JSONObject']>;
|
|
/**
|
|
* Broadcasts "real-time" location data for viewer users.
|
|
* @deprecated Use viewerUserActivityBroadcasted
|
|
*/
|
|
userViewerActivity?: Maybe<Scalars['JSONObject']>;
|
|
/** Track user activities in the viewer relating to the specified resources */
|
|
viewerUserActivityBroadcasted: ViewerUserActivityMessage;
|
|
};
|
|
|
|
|
|
export type SubscriptionBranchCreatedArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionBranchDeletedArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionBranchUpdatedArgs = {
|
|
branchId?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionCommentActivityArgs = {
|
|
resourceIds?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionCommentThreadActivityArgs = {
|
|
commentId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionCommitCreatedArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionCommitDeletedArgs = {
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionCommitUpdatedArgs = {
|
|
commitId?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectAutomationsStatusUpdatedArgs = {
|
|
projectId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectAutomationsUpdatedArgs = {
|
|
projectId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectCommentsUpdatedArgs = {
|
|
target: ViewerUpdateTrackingTarget;
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectFileImportUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectModelsUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
modelIds?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectPendingModelsUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectPendingVersionsUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectTriggeredAutomationsStatusUpdatedArgs = {
|
|
projectId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectVersionsPreviewGeneratedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionProjectVersionsUpdatedArgs = {
|
|
id: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionStreamDeletedArgs = {
|
|
streamId?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type SubscriptionStreamUpdatedArgs = {
|
|
streamId?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
|
|
export type SubscriptionUserViewerActivityArgs = {
|
|
resourceId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type SubscriptionViewerUserActivityBroadcastedArgs = {
|
|
sessionId?: InputMaybe<Scalars['String']>;
|
|
target: ViewerUpdateTrackingTarget;
|
|
};
|
|
|
|
export type TokenResourceIdentifier = {
|
|
__typename?: 'TokenResourceIdentifier';
|
|
id: Scalars['String'];
|
|
type: TokenResourceIdentifierType;
|
|
};
|
|
|
|
export type TokenResourceIdentifierInput = {
|
|
id: Scalars['String'];
|
|
type: TokenResourceIdentifierType;
|
|
};
|
|
|
|
export enum TokenResourceIdentifierType {
|
|
Project = 'project'
|
|
}
|
|
|
|
export type TriggeredAutomationsStatus = {
|
|
__typename?: 'TriggeredAutomationsStatus';
|
|
automationRuns: Array<AutomateRun>;
|
|
id: Scalars['ID'];
|
|
status: AutomateRunStatus;
|
|
statusMessage?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
/** Any null values will be ignored */
|
|
export type UpdateAutomateFunctionInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
logo?: InputMaybe<Scalars['String']>;
|
|
name?: InputMaybe<Scalars['String']>;
|
|
/** SourceAppNames values from @speckle/shared */
|
|
supportedSourceApps?: InputMaybe<Array<Scalars['String']>>;
|
|
tags?: InputMaybe<Array<Scalars['String']>>;
|
|
};
|
|
|
|
export type UpdateModelInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
id: Scalars['ID'];
|
|
name?: InputMaybe<Scalars['String']>;
|
|
projectId: Scalars['ID'];
|
|
};
|
|
|
|
/** Only non-null values will be updated */
|
|
export type UpdateVersionInput = {
|
|
message?: InputMaybe<Scalars['String']>;
|
|
versionId: Scalars['String'];
|
|
};
|
|
|
|
/**
|
|
* 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 */
|
|
activity?: Maybe<ActivityCollection>;
|
|
/** Returns a list of your personal api tokens. */
|
|
apiTokens: Array<ApiToken>;
|
|
/** Returns the apps you have authorized. */
|
|
authorizedApps?: Maybe<Array<ServerAppListItem>>;
|
|
automateInfo: UserAutomateInfo;
|
|
avatar?: Maybe<Scalars['String']>;
|
|
bio?: Maybe<Scalars['String']>;
|
|
/**
|
|
* Get commits authored by the user. If requested for another user, then only commits
|
|
* from public streams will be returned.
|
|
*/
|
|
commits?: Maybe<CommitCollection>;
|
|
company?: Maybe<Scalars['String']>;
|
|
/** Returns the apps you have created. */
|
|
createdApps?: Maybe<Array<ServerApp>>;
|
|
createdAt?: Maybe<Scalars['DateTime']>;
|
|
email?: Maybe<Scalars['String']>;
|
|
/**
|
|
* All the streams that a active user has favorited.
|
|
* Note: You can't use this to retrieve another user's favorite streams.
|
|
*/
|
|
favoriteStreams: StreamCollection;
|
|
/** Whether the user has a pending/active email verification token */
|
|
hasPendingVerification?: Maybe<Scalars['Boolean']>;
|
|
id: Scalars['ID'];
|
|
/** Whether post-sign up onboarding has been finished or skipped entirely */
|
|
isOnboardingFinished?: Maybe<Scalars['Boolean']>;
|
|
name: Scalars['String'];
|
|
notificationPreferences: Scalars['JSONObject'];
|
|
profiles?: Maybe<Scalars['JSONObject']>;
|
|
/** Get all invitations to projects that the active user has */
|
|
projectInvites: Array<PendingStreamCollaborator>;
|
|
/** Get projects that the user participates in */
|
|
projects: ProjectCollection;
|
|
role?: Maybe<Scalars['String']>;
|
|
/**
|
|
* 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.
|
|
*/
|
|
streams: StreamCollection;
|
|
/** The user's timeline in chronological order */
|
|
timeline?: Maybe<ActivityCollection>;
|
|
/** Total amount of favorites attached to streams owned by the user */
|
|
totalOwnedStreamsFavorites: Scalars['Int'];
|
|
verified?: Maybe<Scalars['Boolean']>;
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
after?: InputMaybe<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
filter?: InputMaybe<UserProjectsFilter>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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<Scalars['DateTime']>;
|
|
before?: InputMaybe<Scalars['DateTime']>;
|
|
cursor?: InputMaybe<Scalars['DateTime']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
|
|
/**
|
|
* 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'];
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type UserAutomateInfo = {
|
|
__typename?: 'UserAutomateInfo';
|
|
availableGithubOrgs: Array<Scalars['String']>;
|
|
hasAutomateGithubApp: Scalars['Boolean'];
|
|
};
|
|
|
|
export type UserDeleteInput = {
|
|
email: Scalars['String'];
|
|
};
|
|
|
|
export type UserProjectsFilter = {
|
|
/** Only include projects where user has the specified roles */
|
|
onlyWithRoles?: InputMaybe<Array<Scalars['String']>>;
|
|
/** Filter out projects by name */
|
|
search?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type UserProjectsUpdatedMessage = {
|
|
__typename?: 'UserProjectsUpdatedMessage';
|
|
/** Project ID */
|
|
id: Scalars['String'];
|
|
/** Project entity, null if project was deleted */
|
|
project?: Maybe<Project>;
|
|
/** Message type */
|
|
type: UserProjectsUpdatedMessageType;
|
|
};
|
|
|
|
export enum UserProjectsUpdatedMessageType {
|
|
Added = 'ADDED',
|
|
Removed = 'REMOVED'
|
|
}
|
|
|
|
export type UserRoleInput = {
|
|
id: Scalars['String'];
|
|
role: Scalars['String'];
|
|
};
|
|
|
|
export type UserSearchResultCollection = {
|
|
__typename?: 'UserSearchResultCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<LimitedUser>;
|
|
};
|
|
|
|
export type UserUpdateInput = {
|
|
avatar?: InputMaybe<Scalars['String']>;
|
|
bio?: InputMaybe<Scalars['String']>;
|
|
company?: InputMaybe<Scalars['String']>;
|
|
name?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type Version = {
|
|
__typename?: 'Version';
|
|
authorUser?: Maybe<LimitedUser>;
|
|
automationStatus?: Maybe<AutomationsStatus>;
|
|
automationsStatus?: Maybe<TriggeredAutomationsStatus>;
|
|
/** All comment threads in this version */
|
|
commentThreads: CommentCollection;
|
|
createdAt: Scalars['DateTime'];
|
|
id: Scalars['ID'];
|
|
message?: Maybe<Scalars['String']>;
|
|
model: Model;
|
|
parents?: Maybe<Array<Maybe<Scalars['String']>>>;
|
|
previewUrl: Scalars['String'];
|
|
referencedObject: Scalars['String'];
|
|
sourceApplication?: Maybe<Scalars['String']>;
|
|
totalChildrenCount?: Maybe<Scalars['Int']>;
|
|
};
|
|
|
|
|
|
export type VersionCommentThreadsArgs = {
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type VersionCollection = {
|
|
__typename?: 'VersionCollection';
|
|
cursor?: Maybe<Scalars['String']>;
|
|
items: Array<Version>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type VersionCreatedTrigger = {
|
|
__typename?: 'VersionCreatedTrigger';
|
|
model: Model;
|
|
type: AutomateRunTriggerType;
|
|
version: Version;
|
|
};
|
|
|
|
export type VersionCreatedTriggerDefinition = {
|
|
__typename?: 'VersionCreatedTriggerDefinition';
|
|
model: Model;
|
|
type: AutomateRunTriggerType;
|
|
};
|
|
|
|
export type VersionMutations = {
|
|
__typename?: 'VersionMutations';
|
|
delete: Scalars['Boolean'];
|
|
moveToModel: Model;
|
|
update: Version;
|
|
};
|
|
|
|
|
|
export type VersionMutationsDeleteArgs = {
|
|
input: DeleteVersionsInput;
|
|
};
|
|
|
|
|
|
export type VersionMutationsMoveToModelArgs = {
|
|
input: MoveVersionsInput;
|
|
};
|
|
|
|
|
|
export type VersionMutationsUpdateArgs = {
|
|
input: UpdateVersionInput;
|
|
};
|
|
|
|
export type ViewerResourceGroup = {
|
|
__typename?: 'ViewerResourceGroup';
|
|
/** Resource identifier used to refer to a collection of resource items */
|
|
identifier: Scalars['String'];
|
|
/** Viewer resources that the identifier refers to */
|
|
items: Array<ViewerResourceItem>;
|
|
};
|
|
|
|
export type ViewerResourceItem = {
|
|
__typename?: 'ViewerResourceItem';
|
|
/** Null if resource represents an object */
|
|
modelId?: Maybe<Scalars['String']>;
|
|
objectId: Scalars['String'];
|
|
/** Null if resource represents an object */
|
|
versionId?: Maybe<Scalars['String']>;
|
|
};
|
|
|
|
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<Scalars['Boolean']>;
|
|
projectId: Scalars['String'];
|
|
/**
|
|
* 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'];
|
|
};
|
|
|
|
export type ViewerUserActivityMessage = {
|
|
__typename?: 'ViewerUserActivityMessage';
|
|
sessionId: Scalars['String'];
|
|
/** SerializedViewerState, only null if DISCONNECTED */
|
|
state?: Maybe<Scalars['JSONObject']>;
|
|
status: ViewerUserActivityStatus;
|
|
user?: Maybe<LimitedUser>;
|
|
userId?: Maybe<Scalars['String']>;
|
|
userName: Scalars['String'];
|
|
};
|
|
|
|
export type ViewerUserActivityMessageInput = {
|
|
sessionId: Scalars['String'];
|
|
/** SerializedViewerState, only null if DISCONNECTED */
|
|
state?: InputMaybe<Scalars['JSONObject']>;
|
|
status: ViewerUserActivityStatus;
|
|
userId?: InputMaybe<Scalars['String']>;
|
|
userName: Scalars['String'];
|
|
};
|
|
|
|
export enum ViewerUserActivityStatus {
|
|
Disconnected = 'DISCONNECTED',
|
|
Viewing = 'VIEWING'
|
|
}
|
|
|
|
export type Webhook = {
|
|
__typename?: 'Webhook';
|
|
description?: Maybe<Scalars['String']>;
|
|
enabled?: Maybe<Scalars['Boolean']>;
|
|
hasSecret: Scalars['Boolean'];
|
|
history?: Maybe<WebhookEventCollection>;
|
|
id: Scalars['String'];
|
|
projectId: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
triggers: Array<Scalars['String']>;
|
|
url: Scalars['String'];
|
|
};
|
|
|
|
|
|
export type WebhookHistoryArgs = {
|
|
limit?: Scalars['Int'];
|
|
};
|
|
|
|
export type WebhookCollection = {
|
|
__typename?: 'WebhookCollection';
|
|
items: Array<Webhook>;
|
|
totalCount: Scalars['Int'];
|
|
};
|
|
|
|
export type WebhookCreateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
enabled?: InputMaybe<Scalars['Boolean']>;
|
|
secret?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
triggers: Array<InputMaybe<Scalars['String']>>;
|
|
url: Scalars['String'];
|
|
};
|
|
|
|
export type WebhookDeleteInput = {
|
|
id: Scalars['String'];
|
|
streamId: Scalars['String'];
|
|
};
|
|
|
|
export type WebhookEvent = {
|
|
__typename?: 'WebhookEvent';
|
|
id: Scalars['String'];
|
|
lastUpdate: Scalars['DateTime'];
|
|
payload: Scalars['String'];
|
|
retryCount: Scalars['Int'];
|
|
status: Scalars['Int'];
|
|
statusInfo: Scalars['String'];
|
|
webhookId: Scalars['String'];
|
|
};
|
|
|
|
export type WebhookEventCollection = {
|
|
__typename?: 'WebhookEventCollection';
|
|
items?: Maybe<Array<Maybe<WebhookEvent>>>;
|
|
totalCount?: Maybe<Scalars['Int']>;
|
|
};
|
|
|
|
export type WebhookUpdateInput = {
|
|
description?: InputMaybe<Scalars['String']>;
|
|
enabled?: InputMaybe<Scalars['Boolean']>;
|
|
id: Scalars['String'];
|
|
secret?: InputMaybe<Scalars['String']>;
|
|
streamId: Scalars['String'];
|
|
triggers?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
|
|
url?: InputMaybe<Scalars['String']>;
|
|
};
|
|
|
|
export type CrossSyncCommitBranchMetadataQueryVariables = Exact<{
|
|
streamId: Scalars['String'];
|
|
commitId: Scalars['String'];
|
|
}>;
|
|
|
|
|
|
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'];
|
|
branchName: Scalars['String'];
|
|
}>;
|
|
|
|
|
|
export type CrossSyncBranchMetadataQuery = { __typename?: 'Query', stream?: { __typename?: 'Stream', branch?: { __typename?: 'Branch', id: string } | null } | null };
|
|
|
|
export type CrossSyncCommitDownloadMetadataQueryVariables = Exact<{
|
|
streamId: Scalars['String'];
|
|
commitId: Scalars['String'];
|
|
}>;
|
|
|
|
|
|
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<string | null> | null } | null } | null };
|
|
|
|
export type CrossSyncProjectViewerResourcesQueryVariables = Exact<{
|
|
projectId: Scalars['String'];
|
|
resourceUrlString: Scalars['String'];
|
|
}>;
|
|
|
|
|
|
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'];
|
|
filter: ProjectCommentsFilter;
|
|
cursor?: InputMaybe<Scalars['String']>;
|
|
limit?: InputMaybe<Scalars['Int']>;
|
|
}>;
|
|
|
|
|
|
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<string, unknown> | null, screenshot?: string | null, replies: { __typename?: 'CommentCollection', items: Array<{ __typename?: 'Comment', id: string, viewerState?: Record<string, unknown> | null, screenshot?: string | null, text: { __typename?: 'SmartTextEditorValue', doc?: Record<string, unknown> | null } }> }, text: { __typename?: 'SmartTextEditorValue', doc?: Record<string, unknown> | null } }> } } };
|
|
|
|
export type DownloadbleCommentMetadataFragment = { __typename?: 'Comment', id: string, viewerState?: Record<string, unknown> | null, screenshot?: string | null, text: { __typename?: 'SmartTextEditorValue', doc?: Record<string, unknown> | null } };
|
|
|
|
export type CrossSyncProjectMetadataQueryVariables = Exact<{
|
|
id: Scalars['String'];
|
|
versionsCursor?: InputMaybe<Scalars['String']>;
|
|
}>;
|
|
|
|
|
|
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 };
|