How is data structured for Speckle Viewer?

Hi friends,

I am trying to build a web app that utilizes Speckle Viewer to visualize my Revit Models. Ideally, I have my Revit Model on a Speckle Server instance which I can then visualize with Speckle Viewer on my web app. I want to be able to make changes to certain model parameters, for example changing the type for category = doors from wood to steel. This change should be reflected in real-time on the Speckle Viewer, and be able to filter the elements by type.

From my understanding, the data on Speckle Server uses GraphQL, how is the Viewer able to filter by different params such as category and type etc? Am I able to dynamically update parameters of the Revit model on Speckle Server from my web app (without going through Revit)?