Controlling Theme Components via API?

AI-generated summary

In a discussion titled ‘Controlling Theme Components via API?’, kinetiksoft asks whether it’s possible to enable or disable theme components via the Discourse API, noting that ChatGPT suggested a method that returns a 404 error. merefield initially dismisses ChatGPT’s suggestion as fabricated, explaining that components are added or removed from parent themes via a PUT /admin/themes/<id> endpoint with a parent_theme_ids payload — information gleaned from browser network inspection. kinetiksoft responds that this doesn’t seem accessible externally, despite the API key having global scope. Canapin corrects the record, confirming that ‘Enable’ and ‘Disable’ buttons exist in Discourse’s UI for theme components and that API control is indeed possible, referencing a prior post for details. merefield acknowledges the error and clarifies that while ChatGPT was wrong, the functionality is real — just not implemented as described. The consensus is that theme components can be controlled via API, but not via the endpoint or method ChatGPT suggested.

Hey everyone,

Just wondering if it’s possible to enable/disable theme components via API. It seems like there was a way to do it, but there is no mention of it in current Discourse API Documentation. The clue of such possibility was given by ChatGPT, and yeah, I certainly know this is far from a reliable source of information. I just wonder if this is achievable in any remote way, and the fairy tale ChatGPT told me sounds perfect, but doesn’t work. API returns 404 for admin users’s API credentials.

Asking ChatGPT to refer to the source of it's information on this request

ChatGPT apologizes for mistake...

My guess is ChatGPT just made it all up. :rofl:

So as you can see, we aren’t all out of a job yet. :stuck_out_tongue:

There’s no concept of “enabling” or “disabling” a Theme Component, you simply add or remove it from a parent theme. EDIT: incorrect, see @Canapin’s post below!

ChatGPT made it all up. got the wrong end point and body.

Using the browsers network tab, I can see that adding a Theme Component to a parent theme called a

PUT /admin/themes/<id>

(id of component)

With payload something like:

parent_theme_ids: [<parent_id>]

I didn’t make that up, I just looked at the Network tab on my browser :nerd_face:

You are welcome

Sounds like it.

But doesn’t seem to be accessible via external API, though…

Thank you anyway

That’s from a browser, it must be. Make sure your key has the correct authority (single user, global scope).

The concept exists and the buttons are called “Enable” and “Disable” in Discourse’s interface :slight_smile:

image

And it can be done through the API, of course:

I’m talking about both themes AND components in my post but apparently it’s a bit different for themes, so I should fix my solution.

Oh! My bad! Well done! :blush: Those buttons are too far down :wink:

But ChatGPT still got it wrong :slight_smile:

Amended my post accordingly. @kinetiksoft so sorry, see above, possible but not how ChatGPT was telling you.