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

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