Feature request/discussion: Custom API metadata


since Joplin now has a shiny new API that seems pretty cool, I'm tempted to integrate it into my workflows. (That's something I've always wanted to do, but didn't really have a good editor to do it in. :slight_smile: )

I sync data from various systems to my blog (some were automated, most manual). That kinda sorta works when I just create a new note, but to automate updates, I'd need to be able to find and identify a note to update - ideally by storing an ID used by the external system. (E. g. when I sync something from Airtable or Goodreads, I might want to store an Airtable or Goodreads ID to find the note by.)

So getting to the point, my question: would it perhaps be viable to add a new field, something along the lines of 'additional data', to the notes' metadata? From Joplin's point of view it could be a plain string that it doesn't process in any way, just lets me get, set or search it via the API.

I've already noted the benefits this would have for me; I could, for instance, store a json that says 'this note is from system A where it has the ID XYZ'. I could then find and update this note whenever necessary.

When it comes to drawbacks, there are the usual obvious ones: it would need to be implemented, and I'm not sure how many users would actually benefit from it/want to use this feature.
Other than that, noting comes to mind; seems to me this should be pretty orthogonal to all the other existing features and should not cause conflicts or require much upkeep. (But I might be wrong here, I don't know the internals that well.)



While reading the API docs, I’ve noticed this:

Resources larger than 10 MB are not currently supported on mobile. They will crash the application so it is recommended not to attach such resources at the moment. The issue is being looked at.

If I understand it correctly, this is no longer the case? I’m not sure and have no way to test RN.

Could you perhaps use tags for this, or would the number of them become unwieldy?

You mean one tag per note? That would be unwieldy indeed, and also a completely wrong use for tags.

Bumping up this thread - any plugin or future interest in a custom metadata feature?

Any plugin can already associate metadata with a note if needed. The metadata can be stored by the plugin in their own JSON file, SQLite database, etc.

I haven't been able to quickly find an answer in the docs: if I use a JSON file, SQLite database, etc, I assume they will stay local and will not be fixed?

So presumably the best solution still is having a custom JSON file, but keeping it in a note to ensure syncing? (I've been doing it like this in my Ghoplin tool ever since this thread started, which I now see has been 2 years ago already =-o )

Thank you - can you point me to an example of such a plugin and/or the documentation of how to do this?

How would I integrate the custom metadata with the main Joplin interface so I can enter this field while editing/viewing a note rather than only via the API?

Right, if you need the metadata to be synced you'd need to save it to the note itself. If it was really needed, I guess we could add a "userdata" field to notes which could be set by plugins and external apps, and it would be synced. I don't know if many plugins would need this though.


You could add an extra panel or have a dialog using joplin.views.panels

1 Like

This will open up many possibilities.

For example,

I'm currently maintaining my book reviews using a custom template. It has 2 custom fields for rating and relevant notes.

Now consider that, If I want to use the Note Overview plugin to create a dashboard for all reviews. I can't get the review data in the table because it's just part of a body.

With an additional userdata/metadata field, plugins can add metadata (ideally namespaced, in JSON.) and other plugins can run queries on that.

1 Like