Le paramètre $filter

Le paramètre $filter correspond au plus puissant paramètre OData. Il compte de nombreux opérateurs.

Il s'agit d'opérateurs logiques et mathématiques intégrés, utilisés en combinaison avec des propriétés dans un ensemble de résultats. Ils peuvent être utilisés pour créer des expressions de filtre. Certaines conventions doivent être respectées pour utiliser correctement les expressions $filter. Les propriétés sont les champs inclus dans la réponse API. Voici quelques lignes directrices :
  • Afin de savoir quelles propriétés vous sont disponibles dans un certain appel d'API, consultez le modèle de la classe Response.
  • Les chaînes doivent être encadrées par des apostrophes, mais ce n'est pas le cas pour les propriétés, opérateurs et mots-clés :
    $filter=Name eq 'Altoro'
  • Parfois, la propriété que vous souhaitez utiliser dans votre expression est imbriquée dans une autre propriété. Par exemple, la propriété Examiner l'objet JSON renvoyée dans l'appel Get /api/v4/Scans contient un objet JSON imbriqué dans sa propriété LatestExecution. Pour utiliser ce champ imbriqué, utilisez une barre oblique. Par exemple, pour renvoyer uniquement les examens dans lesquels le statut de la dernière exécution de l'examen est Prête, utilisez une barre oblique :
    $filter=LatestExecution/Status eq 'Ready'
    Cela peut également être utilisé dans d'autres paramètres OData, tels que :
    $orderby=LatestExecution/ScanEndTime desc
  • Si les dates sont utilisées dans des comparaisons, la date doit être au format EDM (par exemple, 2018-06-26T09:13:28z). Ainsi, pour obtenir des examens créés après une certaine date, vous pouvez comparer le champ CreatedAt avec une certaine date, en convertissant la chaîne de date EDM en objet DateTime :
    $filter=CreatedAt gt 2018-07-31T07:30:00z

Opérateurs

Les exemples ci-dessus utilisent des opérateurs tels que eq pour « égal à » et gt pour « supérieur à ». Voici certains opérateurs logiques/mathématique communs. Pour une liste plus complète des opérateurs OData, consultez les spécifications OData v3 dans les références.
Tableau 1. Opérateurs
Groupe Opérateur Signification
Relationnel gt supérieur à
ge supérieur ou égal à
lt moins de
le inférieur ou égal à
isof test du type
Egalité eq égal à
ne différent de
ET conditionnel and ET logique
OU conditionnel or OU logique

Opérateurs lambda

Les opérateurs lambda offrent un filtrage plus avancé des expressions. Il existe deux opérateurs lambda : any et all. Ils sont utilisés dans les champs contenant des matrices de valeurs sur lesquelles vous devez travailler. any est considéré comme « True » si au moins un résultat est considéré comme « True » dans son expression. Tous les résultats doivent être considérés comme « True » par l'opérateur all pour qu'il soit lui aussi « True ».
Par exemple, pour /api/v4/Apps API, chaque application est renvoyée comme une matrice de ComplianceStatuses, une pour chaque stratégie associée à l'application.
  • Pour renvoyer toutes les applications qui n'ont pas une règle ayant échoué :
    $filter=ComplianceStatuses/all(d:d/Compliant eq true)
  • Pour renvoyer toutes les applications qui ont au moins une règle ayant échoué :
    $filter=ComplianceStatuses/any(d:d/Compliant eq false)

Opérateurs de chaîne

Les opérateurs de chaîne peuvent être utiles, car la plupart des cas d'utilisation n'impliquent pas des chaînes étant exactement égales. En règle générale, vous avez besoin de fonctions de chaîne telles que substring ou endswith. Ces fonctions sont incluses dans OData. La liste suivante provient des spécifications OData.
Tableau 2. Opérateurs de chaîne
fonctions des chaînes de caractères Exemple Signification
contains contains(Name,'Altoro') Renvoie "True" si la chaîne contient la sous-chaîne.
endswith endswith(Name,'Mutual') Renvoie "True" si la chaîne termine par la sous-chaîne.
startswith startswith(Name,'Altoro') Renvoie "True" si la chaîne commence par la sous-chaîne.
length length(Name) gt 10 Renvoie la longueur de la chaîne (ou du tableau)
indexof indexof(Name,'Altoro') eq 1 Renvoie l'index du début de la sous-chaîne
substring substring(Name,1) eq 'toro Mutual' Renvoie la chaîne commençant au niveau de l'index.
tolower tolower(Name) eq 'altoro mutual' Convertit la chaîne en caractère minuscule.
toupper toupper(Name) eq 'ALTORO MUTUAL' Convertit la chaîne en caractère majuscule.
trim trim(Name) eq 'Altoro Mutual' Supprime les espaces en début et fin de chaîne.
concat concat(Name,' Financial') eq 'Altoro Mutual Financial' Concatène deux chaînes.

Fonctions de date spécifiques

Ces fonctions renvoient principalement des parties spécifiques de dates, telles que le jour du mois d'un objet de date.
Tableau 3. Fonctions de date
Fonction de date Exemple
year year(ScanEndTime) eq 2024
month month(ScanEndTime) eq 12
day day(ScanEndTime) eq 8
hour hour(ScanEndTime) eq 1
minute minute(ScanEndTime) eq 0
second second(ScanEndTime) eq 0

Fonctions mathématiques

Tableau 4. Fonctions mathématiques
Fonctions mathématiques Signification
round Arrondi à l'entier le plus proche
floor Arrondi à l'entier inférieur le plus proche
ceiling Arrondi à l'entier supérieur le plus proche