On the frontend team we are designing the new normalized data structure, which is how the client will organize all data that is received from the API

      Account

        [Account_ID]

          Paths

            [Path] - empty string for home docs, /[TSID] for CCC, and /human/readable for children docs

              when type: Document

                latestVersion: [cid1.cid2]

                mentions array:

                  resource: [AccountID+Path]

                  mention metadata?

                comments array:

                  [Resource: AccountID+Path]

                activity: TBD - cache the activity events about this specific resource

                search: TBD - cache search results when your search is narrowed to this resource

              when type: Comment

                latestVersion: [cid]

                mentions array:

                  resource: [AccountID+Path]

          Profile

            latestCid: [cid]

      search - used to cache search results when searching the whole node

      activity - cache the node's global activity events

        will reference the Path Resources: [AccountID+Path] or the Profile: [AccountID]

      Immutable

        [CID]

          when a document change:

            State - the current state

              Metadata

              Content

            Blob Data (as it saved in IPFS)

          when a comment, cap, contact, profile:

            Blob Data (as it is saved in IPFS)

            Metadata? If only used if the full blob data is not loaded

        [CID1.CID2]

          for document versions only

          State - if this is a document version

            Metadata

            Content