Search code examples
apirestopenproject

How to filter with "_links" properties params on API.v3 in openproject


I just learned to use "hypermedia rest API" on openproject

I want to use "filter" param with "_links" properties on API but not know-how

Example:

http:/<my_domain>/target/api/v3/projects/design/work_packages?filters=[{"updatedAt":{"operator":"<>d","values":["2017-06-10T22:00:00Z","2017-07-05T22:00:00Z"]}, "_links":{"type":{"title":{"operator":"=","values":["Box"]}}}]

==> My Question:

  1. i not known use to "_links":{"type":{"title":{"operator":"=","values":["Box"]} params filter. Now, result is not filter for "_links"
  2. And show me books name to learn API for to beginner

Help me, please!

Thanks!

Image for my api


Solution

  • What I understood you wanting to achieve is getting all work packages in the project "design" that have been updated last within a certain time interval and that are of the type "Box".

    The filters in OpenProject do not differentiate between native properties (like updatedAt) and linked resources (like type) when it comes to the structure of the filters. The syntax is always

    {"<name of the filter>": {"operator": "<operator>": "values": [<list of values>]}}
    

    When it comes to the filter values however, there is a difference. For linked resource the client is expected to use the id whereas native value like an integer, string or date is required for the native properties.

    For your request the above requires the client to issue the following query:

    GET http://domain/target/api/v3/projects/design/work_packages?filters=[{"updatedAt":{"operator":"<>d","values":["2017-06-10T22:00:00Z","2017-07-05T22:00:00Z"]}}, {"type":{"operator":"=", "values":["10"]}}]
    

    I took the id of 10 for the type "Box" out of the screenshot you provided.

    To get the filter values of all available filter you can call

    POST http://domain/target/api/v3/queries/form
    

    with a body of

    {"name":"default","_links":{"project":{"href":"/api/v3/projects/design"}}}
    

    The response will list all available filters in the _embedded/schema/_embedded/filtersSchema array.