the following ASN.1 encoding:
LDAPJoin ::= SEQUENCE { joinRule JoinRule, baseObject CHOICE { useSearchBaseDN [0] NULL, useSourceEntryDN [1] NULL, useCustomBaseDN [2] LDAPDN, ... }, scope [0] ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2), subordinateSubtree (3), ... } OPTIONAL, derefAliases [1] ENUMERATED { neverDerefAliases (0), derefInSearching (1), derefFindingBaseObj (2), derefAlways (3), ... } OPTIONAL, sizeLimit [2] INTEGER (0 .. maxInt) OPTIONAL, filter [3] Filter OPTIONAL, attributes [4] AttributeSelection OPTIONAL, requireMatch [5] BOOLEAN DEFAULT FALSE, nestedJoin [6] LDAPJoin OPTIONAL, ... } JoinRule ::= CHOICE { and [0] SET (1 .. MAX) of JoinRule, or [1] SET (1 .. MAX) of JoinRule, dnJoin [2] AttributeDescription, equalityJoin [3] JoinRuleAssertion, containsJoin [4] JoinRuleAssertion, reverseDNJoin [5] AttributeDescription, ... } JoinRuleAssertion ::= SEQUENCE { sourceAttribute AttributeDescription, targetAttribute AttributeDescription, matchAll BOOLEAN DEFAULT FALSE }Most of the fields of the join request should be familiar because they’re similar to the fields of an ordinary search request. Also note that the Javadoc for the JoinRequestControl, JoinRequestValue, JoinRule, and JoinBaseDN classes in the UnboundID LDAP SDK For Java may provide additional information.