필터 구문

이 페이지에서는 계정을 필터링하는 데 사용해야 하는 구문을 설명합니다.

구문

정수 이외의 모든 값은 큰따옴표(")로 묶어야 합니다. 받는사람 특정 필드에서 허용하는 값을 알아보려면 참조 문서를 참조하세요.

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")

괄호는 ANDOR 연산자와 함께 사용할 때와 함수 호출(예: relationship(...)service(...))

accountNameaccountIdAlias와 같은 문자열 필드의 경우 다음을 필터링할 수 있습니다. 특정 단어 또는 일련의 문자를 포함하는 값을 (*) 시퀀스 예를 들어 accountName = "*foo*"는 'storeFoo'와 같은 foo가 포함된 accountName가 있는 계정

!=를 사용하여 특정 시퀀스가 포함되지 않은 값을 필터링할 수 있습니다. 및 * 예를 들어 accountName != "*foo*"foo를 포함하지 않는 accountName입니다.

추가 공백은 무시됩니다. 예를 들어 foo AND barfoo 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
    : " = " | " != "
    ;