Open APIs

 View Only
Expand all | Collapse all

Query Resources with attribute filtering from TMF630_REST_API_Design_Guidelines_Part_1_v4.2.0.pdf

  • 1.  Query Resources with attribute filtering from TMF630_REST_API_Design_Guidelines_Part_1_v4.2.0.pdf

    TM Forum Member
    Posted Nov 24, 2022 06:07

    Hi i have 3 questions about the point attribute filtering:

    4.4. Query Resources with attribute filtering
    1) Syntax für ORING [{attributeName}={attributeValue};{attributeValue}*]
    Example:
    status=acknowledged;status=rejected
    This would match the syntax
    [{attributeName}={attributeValue}(;{attributeName}={attributeValue})*]
    2) Operator Literal
    regex , *= URI Encoded %3D~
    The URI form is not equal to "*=" but "=~"
    Does regex ist not prefix with an DOT like the other literal operators ?
    3) With .gte also >= is used, but .lte has an unknown special character that maybe ≤ ?

    Gruß   Thomas Lußnig



    ------------------------------
    Thomas Lußnig
    T-Systems International Services GmbH
    ------------------------------


  • 2.  RE: Query Resources with attribute filtering from TMF630_REST_API_Design_Guidelines_Part_1_v4.2.0.pdf

    TM Forum Member
    Posted Nov 28, 2022 02:23
    Hi Thomas,

      Thank you very much for the valuable feedback.
      The issues have already been addressed and are going in the next release.
      The ORing example was rectified and clarified:

    Attribute values ORING is supported and is achieved by providing a filtering expression where the same attribute name is duplicated a number of times [{attributeName}={attributeValue}&*] different values.
    
    Alternatively the following expression [{attributeName}={attributeValue},\{ attributeValue }*] is also supported. 
    ORING can also be explicit by using " ; " many time [{attributeName}={attributeValue};{attributeValue}*]
    
    The "OR" behavior can also be achieved by providing a filtering expression using one of the following expressions.
    
    For example:
    
    GET /api/troubleTicket?status=acknowledged;rejected
    
    GET /api/troubleTicket?status=acknowledged;rejected&type=BillDispute
    
    GET /api/troubleTicket?status=acknowledged,rejected
    
    GET /api/troubleTicket?status=acknowledged,rejected&type=BillDispute​

    The "regexp" operators has also been clarified:

    .regex=
    
    Regexp expression 
    
    Note: all regexp special characters must be encoded
    
    Example: Consider a regexp expression to search for the words Compliant and Bill:
    
    ~^.?\bCompliant\b.?\bbill\b.*?$ 
    
    (delimiter is ~)
    
    which URI encoded is equivalent with:
    
    ~%5E.%2A%3F%5CbCompliant%5Cb.%2A%3F%5Cbbill%5Cb.%2A%3F%24
    
    GET /api/troubleTicket?description.regex=~%5E.%2A%3F%5CbCompliant%5Cb.%2A%3F%5Cbbill%5Cb.%2A%3F%24​

     
     And all the other operators including .lte have additional clarifications. Now in regards to .lte the special character is just an editor error, converting the characters < = into

    .lte <=
    
    less than or equal to (<=)
    
    Return results where the search criteria field is equal or less than
    
    Example:
    
    GET /api/troubleTicket?expectedResolutionDate.lte=2017-04-20
    
    or
    
    GET /api/troubleTicket?expectedResolutionDate%3C%3D=2017-04-20


    Thank you,
    Florin



    ------------------------------
    Florin Tene
    CityFibre
    ------------------------------