[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: draft 9/24 of DSML v2
The following summarizes the changes to the attached draft of the DSML v2 specification: 1) McGarvey on RequestID - I left the definition as string since we ought to discuss whether there is any reason to limit the RequestID to the values that are used "on the wire" for LDAP or whether we can simply leave it up to the provider implementation to map to an LDAP request id value if that is appropriate. Added the proposed text to section 4 just before the sub-section "Syntax Errors". 2) updated section 5.2 to agree with schema. Documented in footnote 7 the use of OID 1.1 to signal no attributes to be returned. 3) updated schema and text of spec to uniformly use "name" rather than "desc". - per telecon 09/20 4) McGarvey on errorResponse - added "malformedRequest", "gatewayInternalError", "authenticationFailed" 5) McGarvey on DsmlRequest - deleted my comment in section 4 "Syntax Errors" asking whether partial syntax errors are reasonable 6) McGarvey on asynchronous notifications - since we're not specifying an API perhaps the best we can say is that "A provider implementation should incorporate a means for the client to detect the occurrence of an asynchronous notification" This could be by polling or by a call-back or some other means. 7) Changed all mentions of ExtensionTypeID to NumericOID - per telecon 09/20 8) reworked section 6 SOAP binding to conform to the baseline proposal usage of soap-fault 9) added "Values" section just prior to section 5.1 to describe usage case for URI type of DsmlValue 10) reworked Batch.xsd schema to indicate that only SearchResponse is allowed in a BatchResponse - per telecon 9/20 Per the telecon of 9/20 the following is a brief rationale for separating the schema into DSMLv2.xsd and Batch.xsd: The DSMLv2.xsd contains the essential elements that must be used in any enveloping definition associated with a transport binding. The Batch.xsd defines a specific enveloping that is used in the definition of the 'standard' DSML v2 SOAP transport binding and File transport binding. ciao, Christine
<xsd:schema targetNamespace="urn:oasis:names:tc:DSML:2:0:core" xmlns="urn:oasis:names:tc:DSML:2:0:core" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- DSML Requests --> <xsd:group name="DSMLRequest"> <xsd:choice> <xsd:element name="bindRequest" type="BindRequest"/> <xsd:element name="searchRequest" type="SearchRequest"/> <xsd:element name="modifyRequest" type="ModifyRequest"/> <xsd:element name="addRequest" type="AddRequest"/> <xsd:element name="delRequest" type="DelRequest"/> <xsd:element name="modDNRequest" type="ModifyDNRequest"/> <xsd:element name="compareRequest" type="CompareRequest"/> <xsd:element name="abandonRequest" type="AbandonRequest"/> <xsd:element name="extendedReq" type="ExtendedRequest"/> </xsd:choice> </xsd:group> <!-- DSML Responses --> <xsd:group name="DSMLResponse"> <xsd:choice> <xsd:element name="bindResponse" type="LDAPResult"/> <xsd:element name="searchResultEntry" type="SearchResultEntry"/> <xsd:element name="searchResultReference" type="SearchResultReference"/> <xsd:element name="searchResultDone" type="LDAPResult"/> <xsd:element name="modifyResponse" type="LDAPResult"/> <xsd:element name="addResponse" type="LDAPResult"/> <xsd:element name="delResponse" type="LDAPResult"/> <xsd:element name="modDNResponse" type="LDAPResult"/> <xsd:element name="compareResponse" type="LDAPResult"/> <xsd:element name="extendedResp" type="ExtendedResponse"/> <xsd:element name="errorResponse" type="ErrorResponse"/> </xsd:choice> </xsd:group> <!-- ***** DsmlDN ***** --> <xsd:simpleType name="DsmlDN"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <!-- ***** DsmlRDN ***** --> <xsd:simpleType name="DsmlRDN"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <!-- ***** Request ID ***** --> <xsd:simpleType name="RequestID"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <!-- ***** OID ***** --> <xsd:simpleType name="OID"> <xsd:union memberTypes="NumericOID xsd:NMTOKEN"/> </xsd:simpleType> <xsd:simpleType name="NumericOID"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-2]\.[0-9]+(\.[0-9]+)*"/> </xsd:restriction> </xsd:simpleType> <!-- ***** ExtensionTypeID ***** --> <xsd:simpleType name="ExtensionTypeID"> <xsd:union memberTypes="NumericOID xsd:anyURI"/> </xsd:simpleType> <!-- ***** MAX Integer ***** --> <xsd:simpleType name="MAXINT"> <xsd:restriction base="xsd:unsignedInt"> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> <!-- **** DSML Value **** --> <xsd:simpleType name="DsmlValue"> <xsd:union memberTypes="xsd:string xsd:base64Binary xsd:anyURI"/> </xsd:simpleType> <!-- **** DSML Any external XML structure **** --> <xsd:complexType name="DsmlANY"> <xsd:sequence> <xsd:any/> </xsd:sequence> </xsd:complexType> <!-- **** DSML Control **** --> <xsd:complexType name="Control"> <xsd:sequence> <xsd:element name="controlValue" type="DsmlANY" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="type" type="NumericOID" use="required"/> <xsd:attribute name="criticality" type="xsd:boolean" use="optional" default="false"/> </xsd:complexType> <!-- **** DSML Filter **** --> <xsd:complexType name="Filter"> <xsd:group ref="FilterGroup"/> </xsd:complexType> <xsd:group name="FilterGroup"> <xsd:sequence> <xsd:choice> <xsd:element name="and" type="FilterSet"/> <xsd:element name="or" type="FilterSet"/> <xsd:element name="not" type="Filter"/> <xsd:element name="equalityMatch" type="AttributeValueAssertion"/> <xsd:element name="substrings" type="SubstringFilter"/> <xsd:element name="greaterOrEqual" type="AttributeValueAssertion"/> <xsd:element name="lessOrEqual" type="AttributeValueAssertion"/> <xsd:element name="present" type="AttributeDescription"/> <xsd:element name="approxMatch" type="AttributeValueAssertion"/> <xsd:element name="extensibleMatch" type="MatchingRuleAssertion"/> </xsd:choice> </xsd:sequence> </xsd:group> <xsd:complexType name="FilterSet"> <xsd:sequence> <xsd:group ref="FilterGroup" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AttributeValueAssertion"> <xsd:sequence> <xsd:element name="value" type="DsmlValue"/> </xsd:sequence> <xsd:attribute name="name" type="OID"/> </xsd:complexType> <xsd:complexType name="AttributeDescription"> <xsd:attribute name="name" type="OID"/> </xsd:complexType> <xsd:complexType name="SubstringFilter"> <xsd:sequence> <xsd:element name="initial" type="DsmlValue" minOccurs="0"/> <xsd:element name="any" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="final" type="DsmlValue" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="name" type="OID"/> </xsd:complexType> <xsd:complexType name="MatchingRuleAssertion"> <xsd:sequence> <xsd:element name="value" type="DsmlValue"/> </xsd:sequence> <xsd:attribute name="dnAttributes" type="xsd:boolean" use="optional" default="false"/> <xsd:attribute name="matchingRule" type="OID" use="optional"/> <xsd:attribute name="name" type="OID" use="optional"/> </xsd:complexType> <!-- *************** DSML MESSAGE ******************** --> <xsd:complexType name="DsmlMessage"> <xsd:sequence> <xsd:element name="control" type="Control" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="requestID" type="RequestID" use="optional"/> </xsd:complexType> <!-- *************** LDAP RESULT ********************* --> <xsd:simpleType name="LDAPErrorCode"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="success"/> <xsd:enumeration value="operationsError"/> <xsd:enumeration value="protocolError"/> <xsd:enumeration value="timeLimitExceeded"/> <xsd:enumeration value="sizeLimitExceeded"/> <xsd:enumeration value="compareFalse"/> <xsd:enumeration value="compareTrue"/> <xsd:enumeration value="authMethodNotSupported"/> <xsd:enumeration value="strongAuthRequired"/> <xsd:enumeration value="referral"/> <xsd:enumeration value="adminLimitExceeded"/> <xsd:enumeration value="unavailableCriticalExtension"/> <xsd:enumeration value="confidentialityRequired"/> <xsd:enumeration value="saslBindInProgress"/> <xsd:enumeration value="noSuchAttribute"/> <xsd:enumeration value="undefinedAttributeType"/> <xsd:enumeration value="inappropriateMatching"/> <xsd:enumeration value="constraintViolation"/> <xsd:enumeration value="attributeOrValueExists"/> <xsd:enumeration value="invalidAttributeSyntax"/> <xsd:enumeration value="noSuchObject"/> <xsd:enumeration value="aliasProblem"/> <xsd:enumeration value="invalidDNSyntax"/> <xsd:enumeration value="aliasDerefencingProblem"/> <xsd:enumeration value="inappropriateAuthentication"/> <xsd:enumeration value="invalidCredentials"/> <xsd:enumeration value="insufficientAccessRights"/> <xsd:enumeration value="busy"/> <xsd:enumeration value="unavailable"/> <xsd:enumeration value="unwillingToPerform"/> <xsd:enumeration value="loopDetect"/> <xsd:enumeration value="namingViolation"/> <xsd:enumeration value="objectClassViolation"/> <xsd:enumeration value="notAllowedOnNonLeaf"/> <xsd:enumeration value="notAllowedOnRDN"/> <xsd:enumeration value="entryAlreadyExists"/> <xsd:enumeration value="objectClassModsProhibited"/> <xsd:enumeration value="affectMultipleDSAs"/> <xsd:enumeration value="other"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="ResultCode"> <xsd:attribute name="code" type="xsd:int"/> <xsd:attribute name="descr" type="LDAPErrorCode" use="optional"/> </xsd:complexType> <xsd:complexType name="LDAPResult"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="resultCode" type="ResultCode"/> <xsd:element name="errorMessage" type="xsd:string" minOccurs="0"/> <xsd:element name="referral" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="matchedDN" type="DsmlDN" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ErrorResponse"> <xsd:sequence> <xsd:element name="message" type="xsd:string" minOccurs="0"/> <xsd:element name="detail" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:any/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="requestID" type="RequestID" use="optional"/> <xsd:attribute name="type"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="notAttempted"/> <xsd:enumeration value="couldNotConnect"/> <xsd:enumeration value="connectionClosed"/> <xsd:enumeration value="malformedRequest"/> <xsd:enumeration value="gatewayInternalError"/> <xsd:enumeration value="authenticationFailed"/> <xsd:enumeration value="other"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <!-- *************** Bind ********************* --> <xsd:complexType name="BindRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:attribute name="principal" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- *************** Search ********************* --> <xsd:complexType name="AttributeDescriptions"> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element name="attribute" type="AttributeDescription"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SearchRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="filter" type="Filter"/> <xsd:element name="attributes" type="AttributeDescriptions" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="dn" type="DsmlDN" use="required"/> <xsd:attribute name="scope" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="baseObject"/> <xsd:enumeration value="singleLevel"/> <xsd:enumeration value="wholeSubtree"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="derefAliases" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="neverDerefAliases"/> <xsd:enumeration value="derefInSearching"/> <xsd:enumeration value="derefFindingBaseObj"/> <xsd:enumeration value="derefAlways"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="sizeLimit" type="MAXINT" use="optional" default="0"/> <xsd:attribute name="timeLimit" type="MAXINT" use="optional" default="0"/> <xsd:attribute name="typesOnly" type="xsd:boolean" use="optional" default="false"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ***** Search Result Entry ***** --> <xsd:complexType name="SearchResultEntry"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="attr" type="DsmlAttr" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="dn" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DsmlAttr"> <xsd:sequence> <xsd:element name="value" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="OID" use="required"/> </xsd:complexType> <xsd:complexType name="DsmlModification"> <xsd:sequence> <xsd:element name="value" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="OID" use="required"/> <xsd:attribute name="operation" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="add"/> <xsd:enumeration value="delete"/> <xsd:enumeration value="replace"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <!-- ***** Search Result Reference ***** --> <xsd:complexType name="SearchResultReference"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="ref" type="xsd:anyURI" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ************* MODIFY ******************** --> <xsd:complexType name="ModifyRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="attr" type="DsmlModification" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="dn" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- *************** ADD ********************* --> <xsd:complexType name="AddRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="attr" type="DsmlAttr" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="dn" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- *************** DELETE ********************* --> <xsd:complexType name="DelRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:attribute name="dn" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- *************** MODIFY DN ********************* --> <xsd:complexType name="ModifyDNRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:attribute name="dn" type="DsmlDN" use="required"/> <xsd:attribute name="newrdn" type="DsmlRDN" use="required"/> <xsd:attribute name="deleteoldrdn" type="xsd:boolean" use="optional" default="true"/> <xsd:attribute name="newSuperior" type="DsmlDN" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ************* COMPARE ******************** --> <xsd:complexType name="CompareRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="attr" type="AttributeValueAssertion"/> </xsd:sequence> <xsd:attribute name="dn" type="DsmlDN" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ***** ABANDON ***** --> <xsd:complexType name="AbandonRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:attribute name="abandonID" type="RequestID" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ************* EXTENDED OPERATION ******************** --> <xsd:complexType name="ExtendedRequest"> <xsd:complexContent> <xsd:extension base="DsmlMessage"> <xsd:sequence> <xsd:element name="requestName" type="NumericOID"/> <xsd:element name="requestValue" type="DsmlANY" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ExtendedResponse"> <xsd:complexContent> <xsd:extension base="LDAPResult"> <xsd:sequence> <xsd:element name="responseName" type="NumericOID" minOccurs="0"/> <xsd:element name="response" type="DsmlANY" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- ********************END base SCHEMA ********************* --> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="urn:oasis:names:tc:DSML:2:0:batch" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core" xmlns="urn:oasis:names:tc:DSML:2:0:batch" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:import namespace="urn:oasis:names:tc:DSML:2:0:core" schemaLocation="DSMLv2.xsd"/> <!-- *************** DSMLv2.0 Batch Envelopes ********************* --> <xsd:element name="request" type="BatchRequest"/> <xsd:element name="response" type="BatchResponse"/> <xsd:element name="searchResponse" type="SearchResponse"/> <!-- **** DSML Batch Request Envelope **** --> <xsd:complexType name="BatchRequest"> <xsd:sequence> <xsd:element name="requestID" type="xsd:string" minOccurs="0"/> <xsd:group ref="dsml:DSMLRequest" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="processing" use="optional" default="sequential"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="sequential"/> <xsd:enumeration value="parallel"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="onError" use="optional" default="exit"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="resume"/> <xsd:enumeration value="exit"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <!-- **** DSML Batch Response Envelope **** --> <xsd:complexType name="BatchResponse"> <xsd:sequence> <xsd:element name="requestID" type="xsd:string" minOccurs="0"/> <xsd:group ref="DSMLBatchResponses" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <!-- **** DSML Batch Responses **** --> <xsd:group name="DSMLBatchResponses"> <xsd:choice> <xsd:element name="searchResponse" type="SearchResponse"/> <xsd:element name="bindResponse" type="dsml:LDAPResult"/> <xsd:element name="modifyResponse" type="dsml:LDAPResult"/> <xsd:element name="addResponse" type="dsml:LDAPResult"/> <xsd:element name="delResponse" type="dsml:LDAPResult"/> <xsd:element name="modDNResponse" type="dsml:LDAPResult"/> <xsd:element name="compareResponse" type="dsml:LDAPResult"/> <xsd:element name="extendedResp" type="dsml:ExtendedResponse"/> <xsd:element name="errorResponse" type="dsml:ErrorResponse"/> </xsd:choice> </xsd:group> <!-- **** DSML Batch Response Envelope **** --> <xsd:complexType name="SearchResponse"> <xsd:sequence> <xsd:element name="searchResultEntry" type="dsml:SearchResultEntry" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="searchResultReference" type="dsml:SearchResultReference" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="searchResultDone" type="dsml:LDAPResult"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC