# Query Parameters

Laravel Orion allows consumers of your API to use query parameters for interaction with soft deletable resources, including other related resources (defined as relations on a particular model) together in response, aggregating relations and/or fields, and specifying how many resources to return in response (pagination limit).

# Soft Deletes

# Returning trashed resources

The with_trashed query parameter allows you to return all resources, even the deleted ones.

The only_trashed query parameters instructs the API to return only soft deleted resources.

These parameters are accepted on index, search, and show endpoints of both standard and relation resources.

(GET) https://myapp.com/api/posts?with_trashed=true

# Force deleting

The last, but not least, force query parameter allows you to permanently delete a resource. The parameter is accepted on the destroy endpoint of both standard and relation resources.

(DELETE) https://myapp.com/api/posts/5?force=true

# Pagination Limit

By default, 15 entities are returned per page from the index or search endpoints. To customize that, use limit method:


namespace App\Http\Controllers\Api;

use Orion\Http\Controllers\Controller;

class PostsController extends Controller
{
    ...

    /**
    * Default pagination limit.
    *
    * @return int
    */
    public function limit() : int
    {
        return 20;
    }

    ...
}

To instruct the API to return a specific number of entities per page, url needs to contain limit query parameter.

(GET) https://myapp.com/api/posts?limit=30

NOTE

Value specified in the limit query parameter always overwrites the value specified in the limit method on a controller, but it can never exceed the value specified in the maxLimit method.

# Max Pagination Limit

By default, there is no limit on how many entities could be requested from API. To customize that, use maxLimit method:


namespace App\Http\Controllers\Api;

use Orion\Http\Controllers\Controller;

class PostsController extends Controller
{
    ...

    /**
    * Max pagination limit.
    *
    * @return int
    */
    public function maxLimit() : int
    {
        return 100;
    }

    ...
}

# Aggregating

First, relations and fields used for aggregation need to be whitelisted.

To instruct the API to return aggregates, url needs to contain a specific query parameter with a comma separated list of relations or fields.

(GET) https://myapp.com/api/posts?with_count=user,meta
(GET) https://myapp.com/api/posts?with_exists=user,meta
(GET) https://myapp.com/api/users?with_avg=posts.stars
(GET) https://myapp.com/api/users?with_sum=posts.stars
(GET) https://myapp.com/api/users?with_min=posts.stars
(GET) https://myapp.com/api/users?with_max=posts.stars

# Including Relations

First, relations need to be whitelisted.

To instruct the API to return relations, url needs to contain include query parameter with a comma separated list of relations.

(GET) https://myapp.com/api/posts?include=user,meta
Last Updated: 2/24/2024, 10:37:01 AM