Conduit: subscriptions in Phriction and Maniphest are treated differently

When you add or remove a subscription from a Maniphest task, the maniphest.search API will return a newer dateModified.
However, if you do this for a Phriction document, the resulting dateModified from the phriction.content.search API call won’t change.

I try to retrieve the newest subscription changes for Maniphest tasks and Phriction documents since a given timestamp.
For the Maniphest tasks, I combine the maniphest.search and the transaction.search APIs.
But I don’t know how I can do this for Phriction documents.

Phriction subscriptions are to documents (phriction.document.search), not to content (phriction.content.search).

A “content” object is a specific version of a document, and generally immutable. For example, if you create the document /w/x/y/z/ and then edit it so there are three different content states, you’ll end up with one Document object (/w/x/y/z/) and three Content objects (versions 1, 2, and 3 of the document content). You can review Content objects for a given Document by clicking “View History” on a Phriction page. When you subscribe to a Document, you’re subscribing to changes to the page (/w/x/y/z/), not to the specific version of the content on that page which is currently displayed (it’s immutable anyway).

Subscribing or unsubscribing likely modifies the dateModified of the Document, but this isn’t currently exposed in the API. It reasonably could be (and there’s no particular reason it isn’t exposed).

However, dateModified is not guaranteed to be “the last date at which transactions were applied”, or to have any other particular properties, and probably should not be used as a logical clock. Phabricator may eventually introduce a logical version clock for objects which has a guarantee like this, but this is nowhere on the horizon.

You can track subscription changes using a Webhook, but you’ll need to run a service which can receive Webhook calls.

There is currently no way to retroactively “pull” webhook calls if you’d prefer not to run a service. This capability may be added in the future, mostly to make some debugging/testing tasks easier. See also https://secure.phabricator.com/T13561, which discusses some internal changes that would likely occur at the same time.

You can also pull this data manually in Feed > Transactions, and export it (Use Results > Export Data) but there’s currently no API access to this particular dataset.

Thanks for the information