Return only specific fields from the API GET response

Continuing the discussion from Discourse API Documentation:

Hi

I couldn’t find an answer to this, please. Does anyone know if it’s possible to specify that the Discourse API response to a GET request returns only the requested field?

For example, the GET request to List group members (https://{defaultHost}/groups/{id}/members.json) returns:

 {
   "members": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "owners": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "meta": {
     "total": 0,
     "limit": 0,
     "offset": 0
   }
 }

Is there a way to make the response return only a specific field/? For example, to return only the member’s usernames?

{
  "members": [
    {
       "username": "string"
    }
  ]
}

I know it’s possible to retrieve the whole response and then use coding to filter the JSON and the arrays in order to get a specific value; however, I want the request to return the specific value instead. Is this possible?

Thank you!

1 Like

Great question, but no this is not an option. There is not anything in the core app that is listening for params to filter by.

I think you will be best off just filtering out the results either with a tool like jq on the command line or using whatever programming language you are using to make the api requests.

If this is indeed a must have requirement two options do exist though. You could use the data explorer plugin with a query that returns only the data you need and then make an api request to that query. Another alternative would be to create a custom plugin that you create a new route and controller for that returns only the data you need.

1 Like

Amazing! I think this will help a lot. :pray: Thank you so much!

1 Like