When I use the API to get the Discourse user object, it works fine, but I don’t see the external_id included in there. If I have a Discourse user ID or username, how can I get the external_id from that?
Aha - I was calling
/admin) which also returns a user object, but without
Hey, why is it that the
/users/ endpoint will take (only?) a username, but if you want to get a user by their Discourse ID, then it’s
/admin/users/:id.json? Just quirks of the API design?
Further weirdness: if I retrieve a user by their external_id, calling
/users/by-external/:id.json, then I don’t get the
So the API has some quirks… sometimes a user object has the
single_sign_on_record properties, sometimes it doesn’t
By design the admin endpoint will return more data than the non-admin endpoint. Yes, they are both fetching “user” records, but it would be super bad if the
/user/... endpoint that regular users can call returned the same thing as
Aha, I didn’t realize the
/user endpoint would be available to individual users. I forgot that there is such a thing as User API keys.
I keep getting thrown by inconsistencies. Right now, if I want
single_sign_on_record, I have to know the Discourse user ID (
/admin/users/:username.json doesn’t work)… but most other API calls seem to require the username (like
And then there are separate API endoints that are very similar and seem almost identical but return different results, i.e.
/admin/users gives me
single_sign_on_record data for the user, but calling just
/users/ does not.
None of this is a big deal, I’m figuring it out as I go… once I get further along, I might see if I can tweak the docs a bit and make some of this more clear.
The distinction here comes from the fact that the endpoints return the data needed to render the pages in the UI. Take a look here:
Sure, I totally get it-- and I’ve been using that trick to monitor all those XHR requests. It’s all good. It’s just… inconsistent. But I am endlessly grateful that Discourse has such a strong API!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.