Discourse-user-notes API

I want to get all the user notes for a user using the Discourse API. The notes are applied with discourse-user-notes.

Using Get a user by id, I can see the user_note_count filed. However, I can’t seem to find the contents of the user note.

I want to attach information to a user such as the body of an email or main points of a video conference that staff have had with the user. I’m hoping to use the Discourse PostgreSQL data instead of creating a duplicate database with fields for notes.

I’m hoping to use the existing discourse-user-notes as it’s already built.

I have a separate desktop application for staff that uses the Discourse API and is written in Dart/Flutter using http requests to talk to Discourse.

I have no experience with Ruby.

Is there a way I can get information from this file that might be exposed as a HTTP API?

https://github.com/discourse/discourse-user-notes/blob/main/plugin.rb

2 Likes

I recommend that you use the data explorer plugin and Run Data Explorer queries with the Discourse API; it sort-of allows you to generate your own API endpoint (to retrieve data explorer data).

Are you requesting as a user that can read those notes?

1 Like

Thank you for your help. What is the query I need to run to see the content of the user notes?

Is there some way I can see the fields that the note is stored in from the source code of the plug-in? Maybe I can show a custom_field for the user somehow?

discourse-user-notes/plugin.rb at main · discourse/discourse-user-notes · GitHub

I do not know how to ready Ruby, but maybe there is a field called user_notes in Discourse some place that I can search for with the user.id and then there is an object notes with a field of raw?

I’m just guessing. I may just pull the users and store the notes in a separate database, not Discourse. However, I would like to use the data in Discourse if possible as it will be easier to attach the note to a specific user and post.

      notes = notes_for(user.id)
      record = {
        id: SecureRandom.hex(16),
        user_id: user.id,
        raw: raw,
        created_by: created_by,
        created_at: Time.now
      }.merge(opts)

      notes << record
      ::PluginStore.set("user_notes", key_for(user.id), notes)

      user.custom_fields[COUNT_FIELD] = notes.size
      user.save_custom_fields

I am pulling the list of users as admin to see which users have notes applied to them. After I identify the list of users with notes, I want to display the notes in a table so that staff can respond to questions more easily with the background information for the user.


I’m trying to use /user_notes.json?user_id=2

image

1 Like

Thanks to @Falco , I am able to get the user_notes.

curl https://community.domain.com/admin/reports/user_notes.json \
  -H 'Api-Key: abcdefghijklmnop' \
  -H 'Api-Username: system'
4 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.