There could be two approaches to this, in my opinion. The first could be that you've already got a suitable resource that represents all products that you want to search. A GET request with URL parameters indicating the filtering you want to apply would allow the search criteria to be passed through the GET request and limit the values being returned. I've often used the OpenSocial specifications as a source of inspiration in the past so have a look at their
. The other bit of OpenSocial/OpenSearch I've used in the past is I like the startIndex, itemsPerPage and totalResults fields when serving back paged sets of data.
The alternative would be more like your workaround.
OpenSearch defines a POST-able query with search criteria where the response contains the results. This would save you the need to do a subsequent GET provided your results are returnable in a timely fashion. However it would involve creating a search resource which might not feel as pure as modelling separate search features per resource but you'll know what kind of searching you want to support.
Your point about adhering to Level 3 of RMM is down to the implementation. You could indicate that a resource is searchable by adopting the OpenSearch suggestion of adding link elements that have a suggested format of something like
This would allow those clients wanting to search to know how to navigate to an end point that supports queries. Whether you provide a central search point or searching per resource is up to you. I've not implemented this in any live service yet but thought I'd mention it in case it was of use.
Hope any of this is food for thought and useful
Cheers,
Jonathan