Issue #3615466: Make search_api an explicit optional integration
MyrestResourceBase asked for the search_api_index storage in its constructor, which throws when the entity type is not installed - so on a site without search_api every resource of the module failed at construction, not only the ones that query an index. The same applied to the redirect storage. Both now resolve through optionalStorage().
Nine list resources load their index through loadSearchIndex() and answer 503 when there is none, and declare myrest_requires_module so the alter hook leaves them unregistered when the module is absent. Nine call sites in MyrestHelper dereferenced a getter documented to return NULL and now degrade to an empty result.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Closes #3615466