이 페이지에서는 계정 필터링에 사용해야 하는 구문을 설명합니다.
문법
정수를 제외한 모든 값은 큰따옴표 (")로 묶어야 합니다. 특정 필드가 허용하는 값을 알아보려면 해당 필드의 참조 문서를 확인하세요.
AND
를 사용하여 동일한 쿼리의 여러 필드를 필터링할 수 있습니다. AND
를 사용하여 여러 relationship(...)
및 service(...)
필터를 결합할 수도 있습니다.
다음은 여러 relationship(...)
및 service(...)
필터를 결합하는 예입니다.
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
이 예에서는 다음 계정을 반환합니다.
다른 계정과 계정 관리 관계가 있고 수락 대기 중인 추가 관계인 모든 계정
다른 계정과 관계가 있는 표시 이름이
"store"
인 모든 계정
AND
를 사용하여 동일한 필드의 여러 값을 필터링할 수 없습니다. 예를 들어 accountName = "*A*" AND accountName = "*B*"
는 사용할 수 없습니다.
OR
를 사용하여 동일한 쿼리의 두 필드를 필터링할 수 있습니다. OR
연산자의 양쪽에 필터 기준을 괄호로 묶습니다. 예를 들면 (accountName = "storeA") OR (accountName = "storeB")
입니다.
두 필드를 결합하는 데는 OR
만 사용할 수 있습니다. 예를 들어 (accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
는 사용할 수 없습니다.
AND
및 OR
연산자와 함께, 그리고 함수 호출(예: relationship(...)
, service(...)
)에서 괄호는 허용되지 않습니다.
accountName
및 accountIdAlias
과 같은 문자열 필드의 경우 특정 단어 또는 문자 시퀀스를 별표로 묶어 값을 필터링할 수 있습니다(*
). 예를 들어 accountName = "*foo*"
는 foo
가 포함된 accountName
가 있는 모든 계정을 반환합니다(예: 'storeFoo').
!=
및 *
를 사용하여 특정 시퀀스가 포함되지 않은 값을 필터링할 수 있습니다. 예를 들어 accountName != "*foo*"
는 foo
가 포함되지 않은 accountName
가 있는 모든 계정을 반환합니다.
추가 공백은 무시됩니다. 예를 들어 foo AND bar
는 foo
AND bar
와 동일합니다.
사양
필터는 AIP 필터 사양의 하위 집합과 공식 EBNF 문법을 따릅니다.
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
: " = " | " != "
;