rest: RESTful style for an API

I am considering two variants of a RESTful API call. The basic idea is that I want to consult a database and get a report that should be sent to the interface in JSON format.

The first option would be a GET query + parameters such as:

FE                                 BE
 | GET /report/type?from=...&to=...|
 |-------------------------------->|
 |                                 * query DB and return data
 | 200 OK + content in body        |
 |<--------------------------------|

The second option would be a POST with some encapsulated JSON body kind, from Y to fields that create a temporary resource and then a subsequent GET on the resource to get its content:

FE                                 BE
 | POST /report + JSON body        |
 |-------------------------------->|
 |                                 |
 | 201 CREATED + new URI in body   |
 |<--------------------------------|
 |                                 * query DB and return data
 |                                 |
 | GET /newURI                     |
 |-------------------------------->|
 | 200 OK + content in body        |
 |<--------------------------------|

What is the most "in style" option. I personally tend to favor the second one because:

  • The POST message has a creational semantics

  • The created entity can be cached and I can read pages in it

  • I do not like to send parameters in URIs as query strings, since the data sent can be confidential and complex (filters).

However, my opinion was countered with the following arguments:

  • There is no creation involved, so a GET would be enough

  • Having query parameters is as efficient as a JSON payload

  • URI does not describe itself, as there is a single endpoint for multiple reports

I am interested in hearing other arguments that support any option. I have read some documents, but I could not find solid supporting arguments for either.