pageSize |
integer
Opcjonalnie. Maksymalna liczba kont do zwrócenia. Usługa może zwrócić mniej niż ta wartość. Jeśli nie określono inaczej, zwrócony zostanie maksymalnie 250 kont. Maksymalna wartość to 500. Wartości powyżej 500 zostaną zmienione na 500.
|
pageToken |
string
Opcjonalnie. Token strony otrzymany z poprzedniego wywołania funkcji accounts.list . Podaj go, aby pobrać kolejną stronę. Podczas dzielenia na strony wszystkie pozostałe parametry podane w narzędziu accounts.list muszą być zgodne z wywołaniem, które dostarczyło token strony.
|
filter |
string
Opcjonalnie. Opcjonalny filtr, który zwraca tylko te konta, które pasują do filtra. Oto kilka przykładów prawidłowych filtrów:
accountName = "*store*" AND relationship(providerId = 123)
relationship(providerId = 123 AND
service(type = "ACCOUNT_AGGREGATION"))
(accountName = "storeA") OR (accountName = "storeB")
relationship(service(
handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
relationship(callerHasAccessToProvider()
AND externalAccountId = "extAcctId" AND accountIdAlias = "alias")
(relationship(service(type = "ACCOUNT_MANAGEMENT")
AND service(handshakeState = "PENDING")))
OR (accountName = "store" AND relationship(...))
Filtry na poziomie konta mają taką semantykę:
accountName Dotyczy to pola accountName na koncie.
relationship(...) Wskazuje relację konta z innym kontem. W ramach funkcji tę relację można dodatkowo określić.
Filtry na poziomie relacji mają taką semantykę:
providerId Jest to numeryczny identyfikator konta, które jest drugą częścią relacji. Jeśli np. filtr powinien ograniczać się do kont powiązanych z kontem accounts/name/123 , pole providerId powinno zostać odfiltrowane jako providerId = 123 .
callerHasAccessToProvider() Spowoduje to ograniczenie powstałych kont do takich kont, które są powiązane z innym kontem, gdzie użytkownik dzwoniący ma też dostęp do drugiego elementu relacji (lub dostawcy).
externalAccountId Odnosi się do identyfikatora konta zewnętrznego skonfigurowanego na potrzeby relacji.
accountIdAlias Odnosi się to do aliasu identyfikatora konta skonfigurowanego dla relacji.
service(...) Dotyczy to usługi świadczonej w ramach relacji. Uwaga: relacja między dwoma kontami może obejmować wiele usług.
Filtry na poziomie usługi mają taką semantykę:
handshakeState Odnosi się do stanu uzgadniania połączenia usługi. Po ustanowieniu usługi musi ona czasem zostać najpierw zatwierdzona przez innych lub obu członków relacji. Dlatego usługa może mieć stan PENDING lub APPROVED .
type . Odnosi się do typu usługi. Możliwe wartości:
ACCOUNT_MANAGEMENT Dostawca zarządza kontem.
ACCOUNT_AGGREGATION Dostawca to pośrednik w zakresie konta.
Filtr jest zgodny z podzbiorem specyfikacji filtra AIP i z jego formalną gramatyką EBNF. Gramatyka tego filtra jest bardziej restrykcyjna i precyzyjna.
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: accountNameFilter | relationshipFn
;
accountNameFilter
: "accountName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProvider()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;
Dodatkowo obowiązują te zasady:
- Każde pole w kontekście może się pojawić tylko raz (np. filtr można filtrować według kolumny
accountName tylko raz na poziomie konta lub tylko raz na każdym poziomie relacji można użyć wartości providerId ).
- W przypadku pól ciągu znaków (takich jak
accountName lub accountIdAlias ) można wyrazić operator CONTAINS , umieszczając zapytanie w elemencie * . Na przykład funkcja accountName = "*foo*" zwróci wszystkie konta z parametrem accountName zawierającym foo . Operator NOT_CONTAINS można wyrażać ortogonalnie przy użyciu != . Na przykład funkcja accountName != "*foo*" zwróci wszystkie konta z parametrem accountName , który nie zawiera foo . Uwaga: można wyszukiwać konta, których atrybut accountName zawiera gwiazdkę * i pozwala na wyszukiwanie za pomocą funkcji *** .
- Dodatkowe spacje są ignorowane.
- Wszystkie wartości, oprócz wartości liczbowych, muszą być ujęte w cudzysłów podwójny.
- W przypadku rozdzielenia spójności po każdej stronie muszą używać nawiasów, nawet jeśli spójnik zawiera tylko jedno wyrażenie. Nawiasy nie są dozwolone nigdzie indziej, z wyjątkiem wywołań funkcji (takich jak
relationship lub service ). W ten sposób wyraźnie widać, że spójniki wiążą się silniej niż dysocjacje logiczne.
|