Na tej stronie opisujemy składnię, której należy użyć do filtrowania kont.
Składnia
Wszystkie wartości inne niż liczby całkowite muszą być ujęte w cudzysłów ("). Do akceptowane przez określone pole znajdziesz w dokumentacji dokumentacji dla tego pola.
Za pomocą funkcji AND
możesz filtrować wiele pól w ramach tego samego zapytania. Możesz też
użyj AND
, aby połączyć kilka filtrów relationship(...)
i service(...)
.
Oto przykład, który łączy w sobie wartości relationship(...)
i service(...)
filtry:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
Ten przykład zwraca te konta:
wszystkich kont powiązanych z zarządzaniem innym kontem, i kolejnej relacji, która oczekuje na akceptację.
Wszystkie konta o wyświetlanej nazwie
"store"
, które są powiązane z innymi kontami.
Nie możesz używać filtra AND
do filtrowania wielu wartości w tym samym polu. Dla:
na przykład nie można używać accountName = "*A*" AND accountName = "*B*"
.
Za pomocą funkcji OR
możesz filtrować 2 pola w tym samym zapytaniu. Zamknij filtr
po każdej stronie operatora OR
za pomocą nawiasów. Przykład:
(accountName = "storeA") OR (accountName = "storeB")
Do połączenia 2 pól możesz użyć tylko pola OR
. Na przykład nie można użyć atrybutu
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
Nawiasy są niedozwolone poza operatorami AND
i OR
oraz w
wywołania funkcji, np. relationship(...)
i service(...)
.
W przypadku pól z ciągami znaków, takich jak accountName
i accountIdAlias
, możesz filtrować
zawierające określone słowo lub sekwencję znaków, umieszczając tag
w sekwencji gwiazdek (*
). Na przykład accountName = "*foo*"
zwraca wszystkie
na kontach z wartością accountName
zawierającą foo
, np. „storeFoo”.
Aby odfiltrować wartości, które nie zawierają określonej sekwencji, możesz użyć funkcji !=
i *
. Na przykład funkcja accountName != "*foo*"
zwraca wszystkie konta z parametrem
accountName
, które nie zawierają foo
.
Dodatkowe spacje są ignorowane. Na przykład foo AND bar
to to samo co foo
AND bar
.
Specyfikacja
Filtry są zgodne z podzbiorem filtra AIP. i jej formalnej wartości EBNF gramatyka:
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: displayNameFilter | relationshipFn
;
displayNameFilter
: "displayName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProviderFilter()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;