Feature Request: Update existing records via URL scheme

The new URL scheme is amazing, and has enabled me to do all sorts of new automation tricks. Thank you! …but I already have a feature request. :wink:

I’d like to be able to update existing records by UUID. Something like:


x-devonthink://x-callback-url/update?uuid=<UUID>&title=<UPDATED_TITLE_VALUE>&text=<BASE64-ENCODED-DATA>&x-success=<ELSEWHERE>

With this, I’d be able to create a workflow where I open DTTG, find a document, share it to another app (probably with a Pythonista script) and make edits. Then, I’d share the document back to DTTG (again with Pythonista), overwriting its contents, and any other properties I want.

Of course, this workflow also assumes I’d have access to the UUID, which currently isn’t available outside of manually copying it. I’m hoping that gets improved too. :slight_smile:

Seems like this might potentially be dangerous unless all your records were plain text files.

And just curious what kind of records would need updating via a URL scheme anyway? DEVONthink to Go has so many ways of interacting with other apps in iOS, especially thru Document Provider, so why treat it like an mute island that only receives messages? I don’t get the use case.

I guess I don’t see it any more dangerous than accidentally “saving over a file” in any other computer situation. I really just see it as completing the the API. Using the URL scheme, one can create a new record, get an existing record, but not yet send back changes to an existing record.

The Document Provider is a nice feature, but it’s not scriptable, often defaults to iCloud, and requires me to work backwards. I want to start in DEVONthink, find a record, open it for editing in another app, and send the changes back when finished.

Yes, for my use case, I have plain text files in mind. I use DEVONthink to store my Markdown notes. I compose my Markdown notes using Drafts (extremely customizable keyboard, scriptable workflows), and can send new notes to DEVONthink. Works awesome. But Drafts has no concept of files or filenames, so its use of Document Providers is limited and can only import text contents. However, through the use of URL schemes and custom scripts, Drafts could easily update DEVONthink records, if this URL action were added.

And I can imagine other use-cases where someone has an ongoing list in DEVONthink, which they append notes, via a Workflow. Or perhaps sending an image from DEVONthink to a workflow that resizes and compresses the file, and sends the changes back to DEVONthink to be saved.

Seems like a case.

… but

:open_mouth:

Oh sure, no more dangerous than, say, erase my data. :laughing:

True! But I put URL schemes in the same category as AppleScript or shell commands. Powerful & capable of harm, but novice users won’t even know it exists. Safe in the hands of power users. :wink:

By the way, this data loss danger already exists in DEVONthink To Go, in a way, via the roundtrip trick. For example, if sharing a text record “My File.txt” to Textastic, the filename gets appended with a code, “My File (002E).txt” or similar. I can edit the file in Textastic and then “Open In”, “Import with DEVONthink”, which overwrites the existing record. And because of its magic filename, this copy in Textastic will continue to overwrite the existing record, even if it’s an old version, or completely empty!

All that to say: record updates via URL scheme is no more dangerous than the currently existing roundtrip trick.

If I understand this request correctly, this would be awesome. Back in my Evernote days, I had a few text file lists in Evernote, such as a wish list. Sometimes I would think of an item I wanted to add to a list. I could open up the Drafts app on iOS, type the item, and with one tap of an action it would append the item to my ongoing wish list in Evernote. I do that now in DEVONthink via an indexed note I keep in Dropbox that DEVONthink Pro Office monitors, but I’d love it to be native to DEVONthink to Go.

The next feature release of DEVONthink To Go will have an update and an append URL command.

Very cool! :smiley: