Admin API filters

According to documentation, resources can be filtered in API calls using this format:
GET /api/v1/products/?criteria[{nameOfCriterion}][type]={searchOption}&criteria[{nameOfCriterion}][value]={searchPhrase}’

But I am getting an empty response if searchOption is not ‘contains’.

¿Is there any way to filter fields using other options?
For example, filter a date field using between expression.

If nameOfCriterion = search and searchPhrase = shirt then the criteria will be criteria[search][type]=contains&criteria[search][value]=shirt.
In JS you can define it like this:

const criteria = {
    search: {
        type: "contains",
        value: "shirt"
    }
};

If you add a date filter, it will be like criteria[date][from][date]=2020-09-01&criteria[date][to][date]=2020-09-23, which in JS is (also added time):

const criteria = {
    date: {
        from: {
            date: "2020-09-01"
            time: "00:00:00"
        },
        to: {
            date: "2020-09-23"
            time: "23:59:59"
        },
    }
};

You can see examples in filters specs: https://github.com/Sylius/SyliusGridBundle/tree/master/src/Component/spec/Filter

Thanks for your reply.

That filter works properly for some API calls, for example, I can get orders placed from a date using:
/api/v1/orders?criteria[date][from][date]=2020-09-01

But the same format isn’t working if I try to get orders for a specific customer:
/api/v1/customers/1/orders?criteria[date][from][date]=2020-09-01

¿Is this the expected behavior?

Yes, this is expected, because that grid does not have such filter: https://github.com/Sylius/Sylius/blob/master/src/Sylius/Bundle/AdminBundle/Resources/config/grids/customer_order.yml
You can read here how to customize grids and add filters: https://docs.sylius.com/en/latest/customization/grid.html