Problem/Motivation
I am pretty sure this is a duplicate of another issue, but neither me nor @bbrala can find that issue.
In core, we have the REST module, which provides some specialist endpoints like user login/register etc., and also GET/POST etc. endpoints for individual entities.
We also have the JSON:API module which provides GET/POST etc. endpoints for individual entities.
JSON:API is recommended for dealing with entities, so while REST is older, it's duplicating functionality elsewhere.
It's also a lot of code and test coverage in core.
Steps to reproduce
Proposed resolution
Move the rest module and all core integrations to contrib.
In a separate issue, discuss if we want to add any additional special endpoints to core's JSON:API support (user registration, password resets etc.).
Comments
Comment #2
catchComment #3
catch@longwave pointed out in slack that while #3530640: Disable the user.login.http route by default and move to REST is due to be in REST module, it's actually not, which means that REST is only providing entity resources anyway.
There are some core resources added on, like UserRegistrationResource, but they could be moved to the rest module and then moved to contrib same as we do for other core integrations for removed modules.
There are already JSON:API equivalents in https://www.drupal.org/project/jsonapi_user_resources which we could separately discuss adding to core - not clear to me how many sites using JSON:API actually need those - the contrib module only has ~180 users but people might also enable REST module to get that functionality.
Comment #4
longwaveFWIW in the Drupal 12 module evaluation spreadsheet REST module was flagged as "keep but revisit", with ~70% of respondents saying it was foundational and strategic, but only 30% considering it maintainable (everyone else voted "maybe" in all three categories).
As of September 2025 REST module install stats for core versions (via #3158669: [policy, no patch] By default deprecate non-experimental modules that are used by less 5% of sites before the next major version) was as follows:
Drupal 8: 20.2%
Drupal 9: 30.4%
Drupal 10: 41.2%
Drupal 11: 21.3%
(compared to JSON:API with 5.5%, 11.1%, 18.1%, 7.5%)
Comment #5
longwaveDiscussed with @catch and we realised the install stats are perhaps inflated because Views Data Export is quite common and that module depends on REST (although it's not really always used, from what I remember).
Comment #6
catchhttps://www.drupal.org/project/views_data_export depends on rest module and as 105k users which explains the high usage.
I haven't used that module for a while, so not sure how baked in the rest dependency actually is there, either way that explains the discrepancy.
edit: had a quick look, it inherits from the views rest display plugin that rest module provides, rather than directly integrating with rest module - so theoretically it would be copying a small amount of code from that then it wouldn't have a rest dependency at all.
Comment #7
catch