<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../ver20/util/onvif-wsdl-viewer.xsl"?>
<!--
Copyright (c) 2010-2018 by ONVIF: Open Network Video Interface Forum. All rights reserved.

Recipients of this document may copy, distribute, publish, or display this
document so long as this copyright notice, license and disclaimer are
retained with all copies of the document.

THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND
THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS,
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE
FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS
DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES
WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
DISTRIBUTION OF THIS DOCUMENT.
THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO,
INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS
AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN
CERTAIN WRITTEN POLICIES OF THE CORPORATION.
-->
<wsdl:definitions
		xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:tcr="http://www.onvif.org/ver10/credential/wsdl" name="CredentialService"
		targetNamespace="http://www.onvif.org/ver10/credential/wsdl">
	<!-- The data types definition for the 'Credential Service' -->
	<wsdl:types>
		<xs:schema targetNamespace="http://www.onvif.org/ver10/credential/wsdl"
				   xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pt="http://www.onvif.org/ver10/pacs"
				   xmlns:tcr="http://www.onvif.org/ver10/credential/wsdl" elementFormDefault="qualified" version="18.12">
			<xs:import namespace="http://www.onvif.org/ver10/pacs" schemaLocation="http://www.onvif.org/ver10/pacs/types.xsd"/>
			<!--ServiceCapabilities definitions-->
			<xs:complexType name="ServiceCapabilities">
				<xs:annotation>
					<xs:documentation>
						The service capabilities reflect optional functionality of a service. The information is static
						and does not change during device operation. The following capabilities are available:
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="SupportedIdentifierType" type="pt:Name" minOccurs="1" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>
								A list of identifier types that the device supports. Identifiers types starting with
								the prefix pt: are reserved to define ONVIF specific types. For custom defined identifier types 
                shall all share the "pt:&lt;Name&gt;" syntax.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="tcr:ServiceCapabilitiesExtension" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="MaxLimit" type="pt:PositiveInteger" use="required">
					<xs:annotation>
						<xs:documentation>
							The maximum number of entries returned by a single Get&lt;Entity&gt;List or Get&lt;Entity&gt;
							request. The device shall never return more than this number of entities in a single response.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="CredentialValiditySupported" type="xs:boolean" use="required">
					<xs:annotation>
						<xs:documentation>
							Indicates that the device supports credential validity.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="CredentialAccessProfileValiditySupported" type="xs:boolean" use="required">
					<xs:annotation>
						<xs:documentation>
							Indicates that the device supports validity on the association between a credential and an
							access profile.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="ValiditySupportsTimeValue" type="xs:boolean" use="required">
					<xs:annotation>
						<xs:documentation>
							Indicates that the device supports both date and time value for validity. If set to false,
							then the time value is ignored.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="MaxCredentials" type="pt:PositiveInteger" use="required">
					<xs:annotation>
						<xs:documentation>
							The maximum number of credential supported by the device.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="MaxAccessProfilesPerCredential" type="pt:PositiveInteger" use="required">
					<xs:annotation>
						<xs:documentation>
							The maximum number of access profiles for a credential.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="ResetAntipassbackSupported" type="xs:boolean" use="required">
					<xs:annotation>
						<xs:documentation>
							Indicates the device supports resetting of anti-passback violations and notifying on
							anti-passback violations.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="ClientSuppliedTokenSupported" type="xs:boolean" default="false">
					<xs:annotation>
						<xs:documentation>
							Indicates that the client is allowed to supply the token when creating credentials. 
							To enable the use of the command SetCredential, the value must be set to true.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="DefaultCredentialSuspensionDuration" type="xs:duration" default="PT5M">
					<xs:annotation>
						<xs:documentation>
							The default time period that the credential will temporary be suspended (e.g. by using
							the wrong PIN a predetermined number of times).
							The time period is defined as an [ISO 8601] duration string (e.g. “PT5M”).
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
      <xs:complexType name="ServiceCapabilitiesExtension">
        <xs:sequence>
          <xs:element name="SupportedExemptionType" type="pt:Name" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>
                A list of exemptions that the device supports. Supported exemptions starting with the
                prefix pt: are reserved to define ONVIF specific exemption types and these reserved
                exemption types shall all share "pt:&lt;Name&gt;" syntax.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
        </xs:sequence>
      </xs:complexType>
			<xs:element name="Capabilities" type="tcr:ServiceCapabilities"/>
			<!-- End of definition -->
			<!--CredentialInfo definitions-->
			<xs:complexType name="CredentialInfo">
				<xs:annotation>
					<xs:documentation>
						The CredentialInfo type represents the credential as a logical object. The structure contains
						the basic information of a specific credential instance. The device shall provide the following
						fields for each credential.
					</xs:documentation>
				</xs:annotation>
				<xs:complexContent>
					<xs:extension base="pt:DataEntity">
						<xs:sequence>
							<xs:element name="Description" type="pt:Description" minOccurs="0">
								<xs:annotation>
									<xs:documentation>
										User readable description for the credential. It shall be up to 1024 characters.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="CredentialHolderReference">
								<xs:annotation>
									<xs:documentation>An external reference to a person holding this credential. The
										reference is a username or used ID in an external system, such as a directory
										service.
									</xs:documentation>
								</xs:annotation>
								<xs:simpleType base="xs:string">
									<xs:annotation>
										<xs:documentation></xs:documentation>
									</xs:annotation>
									<xs:restriction base="xs:string">
										<xs:maxLength value="64"/>
										<xs:minLength value="0"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="ValidFrom" type="xs:dateTime" minOccurs="0">
								<xs:annotation>
									<xs:documentation>The start date/time validity of the credential. If the
										ValiditySupportsTimeValue capability is set to false, then only date is
										supported (time is ignored).
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="ValidTo" type="xs:dateTime" minOccurs="0">
								<xs:annotation>
									<xs:documentation>The expiration date/time validity of the credential. If the
										ValiditySupportsTimeValue capability is set to false, then only date is
										supported (time is ignored).
									</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:anyAttribute processContents="lax"/>
					</xs:extension>
				</xs:complexContent>
			</xs:complexType>
			<!-- End of definition -->
			<!--Credential definitions-->
			<xs:complexType name="Credential">
				<xs:annotation>
					<xs:documentation>
						A Credential is a physical/tangible object, a piece of knowledge, or a facet of a person's
						physical being, that enables an individual access to a given physical facility or computer-based
						information system. A credential holds one or more credential identifiers. To gain access one or
						more identifiers may be required.
					</xs:documentation>
				</xs:annotation>
				<xs:complexContent>
					<xs:extension base="tcr:CredentialInfo">
						<xs:sequence>
							<xs:element name="CredentialIdentifier" type="tcr:CredentialIdentifier" minOccurs="1"
										maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>A list of credential identifier structures. At least one
										credential identifier is required. Maximum one credential identifier structure
										per type is allowed.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="CredentialAccessProfile" type="tcr:CredentialAccessProfile" minOccurs="0"
										maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>A list of credential access profile structures.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="ExtendedGrantTime" type="xs:boolean" default="false" minOccurs="0">
								<xs:annotation>
									<xs:documentation>
										A boolean indicating that the credential holder needs extra time to get through the door. 
										ExtendedReleaseTime will be added to ReleaseTime, and ExtendedOpenTime will be added to OpenTime 
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Attribute" type="pt:Attribute" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>A list of credential attributes as name value pairs. Key names
										starting with the prefix pt: are reserved to define PACS specific attributes
										following the "pt:&lt;Name&gt;" syntax.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Extension" type="tcr:CredentialExtension" minOccurs="0"/>
						</xs:sequence>
						<xs:anyAttribute processContents="lax"/>
					</xs:extension>
				</xs:complexContent>
			</xs:complexType>
			<xs:complexType name="CredentialExtension">
				<xs:sequence>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>
			<!-- End of data types definition -->
			<!--CredentialIdentifier definitions-->
			<xs:complexType name="CredentialIdentifier">
				<xs:annotation>
					<xs:documentation>A credential identifier is a card number, unique card information, PIN or
						biometric information such as fingerprint, iris, vein, face recognition, that can be validated
						in an access point.
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="Type" type="tcr:CredentialIdentifierType">
						<xs:annotation>
							<xs:documentation>Contains the details of the credential identifier type. Is of type
								CredentialIdentifierType.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ExemptedFromAuthentication" type="xs:boolean">
						<xs:annotation>
							<xs:documentation>If set to true, this credential identifier is not considered for 
              authentication. For example if the access point requests Card plus PIN, and the credential 
              identifier of type PIN is exempted from authentication, then the access point will not prompt 
              for the PIN.
              </xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Value" type="xs:hexBinary">
						<xs:annotation>
							<xs:documentation>The value of the identifier in hexadecimal representation.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<xs:complexType name="CredentialIdentifierType">
				<xs:annotation>
					<xs:documentation>Specifies the name of credential identifier type and its format for the credential
						value.
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="Name" type="pt:Name">
						<xs:annotation>
							<xs:documentation>The name of the credential identifier type, such as pt:Card, pt:PIN,
								etc.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="FormatType" type="xs:string">
						<xs:annotation>
							<xs:documentation>Specifies the format of the credential value for the specified identifier
								type name.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>			
			<!-- End of definition -->
			<!--CredentialAccessProfile definitions-->
			<xs:complexType name="CredentialAccessProfile">
				<xs:annotation>
					<xs:documentation>
						The association between a credential and an access profile.
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="AccessProfileToken" type="pt:ReferenceToken">
						<xs:annotation>
							<xs:documentation>The reference token of the associated access profile.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ValidFrom" type="xs:dateTime" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The start date/time of the validity for the association between the
								credential and the access profile. If the ValiditySupportsTimeValue capability is set to
								false, then only date is supported (time is ignored).
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ValidTo" type="xs:dateTime" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The end date/time of the validity for the association between the
								credential and the access profile. If the ValiditySupportsTimeValue capability is set to
								false, then only date is supported (time is ignored).
							</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:complexType>
			<!-- End of definition -->
			<!--CredentialState definitions-->
			<xs:complexType name="CredentialState">
				<xs:annotation>
					<xs:documentation>
						The CredentialState structure contains information about the state of the credential and
						optionally the reason of why the credential was disabled.
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="Enabled" type="xs:boolean">
						<xs:annotation>
							<xs:documentation>True if the credential is enabled or false if the credential is
								disabled.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Reason" type="pt:Name" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Predefined ONVIF reasons as mentioned in the section 5.4.2.7 
								of credential service specification document. For any other reason, free
								text can be used.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="AntipassbackState" type="tcr:AntipassbackState" minOccurs="0">
						<xs:annotation>
							<xs:documentation>A structure indicating the anti-passback state. This field shall be
								supported if the ResetAntipassbackSupported capability is set to true.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="tcr:CredentialStateExtension" minOccurs="0"/>
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<xs:complexType name="CredentialStateExtension">
				<xs:sequence>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>
			<!-- End of definition -->
			<!--AntipassbackState definitions-->
			<xs:complexType name="AntipassbackState">
				<xs:annotation>
					<xs:documentation>
						A structure containing anti-passback related state information.
					</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="AntipassbackViolated" type="xs:boolean">
						<xs:annotation>
							<xs:documentation>Indicates if anti-passback is violated for the credential.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<!-- End of definition -->
			<!-- CredentialIdentifierFormatTypeInfo definitions-->
			<xs:complexType name="CredentialIdentifierFormatTypeInfo">
				<xs:annotation>
					<xs:documentation>Contains information about a format type.</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="FormatType" type="xs:string">
						<xs:annotation>
							<xs:documentation>A format type supported by the device. A list of supported format types is
								provided in [ISO 16484-5:2014-09 Annex P]. The BACnet type "CUSTOM" is not used in this
								specification. Instead device manufacturers can define their own format types.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Description" type="pt:Description">
						<xs:annotation>
							<xs:documentation>User readable description of the credential identifier format type. It
								shall be up to 1024 characters. For custom types, it is recommended to describe how the
								octet string is encoded (following the structure in column Authentication Factor Value
								Encoding of [ISO 16484-5:2014-09 Annex P]).
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="tcr:CredentialIdentifierFormatTypeInfoExtension" minOccurs="0"/>
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<xs:complexType name="CredentialIdentifierFormatTypeInfoExtension">
				<xs:sequence>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>
			<!-- End of definition -->
			<!-- CredentialData definitions-->
			<xs:complexType name="CredentialData">
				<xs:annotation>
					<xs:documentation>Contains information about a format type.</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="Credential" type="tcr:Credential">
						<xs:annotation>
							<xs:documentation>A format type supported by the device. A list of supported format types is
								provided in [ISO 16484-5:2014-09 Annex P]. The BACnet type "CUSTOM" is not used in this
								specification. Instead device manufacturers can define their own format types.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="CredentialState" type="tcr:CredentialState">
						<xs:annotation>
							<xs:documentation>User readable description of the credential identifier format type. It
								shall be up to 1024 characters. For custom types, it is recommended to describe how the
								octet string is encoded (following the structure in column Authentication Factor Value
								Encoding of [ISO 16484-5:2014-09 Annex P]).
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="tcr:CredentialDataExtension" minOccurs="0"/>
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<xs:complexType name="CredentialDataExtension">
				<xs:sequence>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>
			<!-- End of definition -->
			
			<!-- CredentialData definitions-->
			<xs:complexType name="FaultResponse">
				<xs:annotation>
					<xs:documentation>Contains information about a format type.</xs:documentation>
				</xs:annotation>
				<xs:sequence>
					<xs:element name="Token" type="pt:ReferenceToken">
						<xs:annotation>
							<xs:documentation>A format type supported by the device. A list of supported format types is
								provided in [ISO 16484-5:2014-09 Annex P]. The BACnet type "CUSTOM" is not used in this
								specification. Instead device manufacturers can define their own format types.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Fault" type="xs:string">
						<xs:annotation>
							<xs:documentation>User readable description of the credential identifier format type. It
								shall be up to 1024 characters. For custom types, it is recommended to describe how the
								octet string is encoded (following the structure in column Authentication Factor Value
								Encoding of [ISO 16484-5:2014-09 Annex P]).
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="tcr:FaultResponseExtension" minOccurs="0"/>
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
			<xs:complexType name="FaultResponseExtension">
				<xs:sequence>
					<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>   <!-- first ONVIF then Vendor -->
				</xs:sequence>
			</xs:complexType>
			<!-- End of definition -->
			<!-- #################-->
			<!-- Message request / response elements-->
			<xs:element name="GetServiceCapabilities">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetServiceCapabilitiesResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Capabilities" type="tcr:ServiceCapabilities">
							<xs:annotation>
								<xs:documentation>The capability response message contains the requested credential
									service capabilities using a hierarchical XML capability structure.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetSupportedFormatTypes">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialIdentifierTypeName" type="xs:string">
							<xs:annotation>
								<xs:documentation>Name of the credential identifier type</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetSupportedFormatTypesResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="FormatTypeInfo" type="tcr:CredentialIdentifierFormatTypeInfo" minOccurs="1"
									maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Identifier format type</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialInfo">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken" minOccurs="1" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Tokens of CredentialInfo items to get.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialInfoResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialInfo" type="tcr:CredentialInfo" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>List of CredentialInfo items.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialInfoList">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Limit" type="xs:int" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Maximum number of entries to return. If not specified, less than one
									or higher than what the device supports, the number of items is determined by the
									device.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="StartReference" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Start returning entries from this start reference. If not specified,
									entries shall start from the beginning of the dataset.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialInfoListResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>StartReference to use in next call to get the following items. If
									absent, no more items to get.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="CredentialInfo" type="tcr:CredentialInfo" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>List of CredentialInfo items.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentials">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken" minOccurs="1" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Token of Credentials to get</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialsResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Credential" type="tcr:Credential" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>List of Credential items.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialList">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Limit" type="xs:int" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Maximum number of entries to return. If not specified, less than one
									or higher than what the device supports, the number of items is determined by the
									device.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="StartReference" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Start returning entries from this start reference. If not specified,
									entries shall start from the beginning of the dataset.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialListResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>StartReference to use in next call to get the following items. If
									absent, no more items to get.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Credential" type="tcr:Credential" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>List of Credential items.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="CreateCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Credential" type="tcr:Credential">
							<xs:annotation>
								<xs:documentation>The credential to create.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="State" type="tcr:CredentialState">
							<xs:annotation>
								<xs:documentation>The state of the credential.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="CreateCredentialResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>The token of the created credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="ModifyCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Credential" type="tcr:Credential">
							<xs:annotation>
								<xs:documentation>Details of the credential.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="ModifyCredentialResponse">
				<xs:complexType>
					<xs:sequence>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialData" type="tcr:CredentialData">
							<xs:annotation>
								<xs:documentation>Details of the credential.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredentialResponse">
				<xs:complexType>
					<xs:sequence>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>The token of the credential to delete.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredentialResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialState">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialStateResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="State" type="tcr:CredentialState">
							<xs:annotation>
								<xs:documentation>State of the credential.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="EnableCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>The token of the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Reason" type="pt:Name" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Reason for enabling the credential.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="EnableCredentialResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DisableCredential">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Token" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Reason" type="pt:Name" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Reason for disabling the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DisableCredentialResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="ResetAntipassbackViolation">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="ResetAntipassbackViolationResponse">
				<xs:complexType>
					<xs:sequence>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialIdentifiers">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialIdentifiersResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialIdentifier" type="tcr:CredentialIdentifier" minOccurs="0"
									maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Identifier of the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredentialIdentifier">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="CredentialIdentifier" type="tcr:CredentialIdentifier">
							<xs:annotation>
								<xs:documentation>Identifier of the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredentialIdentifierResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredentialIdentifier">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="CredentialIdentifierTypeName" type="pt:Name">
							<xs:annotation>
								<xs:documentation>Identifier type name of a credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredentialIdentifierResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialAccessProfiles">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="GetCredentialAccessProfilesResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialAccessProfile" type="tcr:CredentialAccessProfile" minOccurs="0"
									maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Access Profiles of the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredentialAccessProfiles">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="CredentialAccessProfile" type="tcr:CredentialAccessProfile" minOccurs="1"
									maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Access Profiles of the credential</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="SetCredentialAccessProfilesResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredentialAccessProfiles">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CredentialToken" type="pt:ReferenceToken">
							<xs:annotation>
								<xs:documentation>Token of the Credential</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="AccessProfileToken" type="pt:ReferenceToken" minOccurs="1"
									maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Tokens of Access Profiles</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<!--===============================-->
			<xs:element name="DeleteCredentialAccessProfilesResponse">
				<xs:complexType>
					<xs:sequence/>
				</xs:complexType>
			</xs:element>
			<!-- #################-->
		</xs:schema>
	</wsdl:types>
	<!--Definition of 'GetServiceCapabilities' message-->
	<wsdl:message name="GetServiceCapabilitiesRequest">
		<wsdl:part name="parameters" element="tcr:GetServiceCapabilities"/>
	</wsdl:message>
	<wsdl:message name="GetServiceCapabilitiesResponse">
		<wsdl:part name="parameters" element="tcr:GetServiceCapabilitiesResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetSupportedFormatTypes' message-->
	<wsdl:message name="GetSupportedFormatTypesRequest">
		<wsdl:part name="parameters" element="tcr:GetSupportedFormatTypes"/>
	</wsdl:message>
	<wsdl:message name="GetSupportedFormatTypesResponse">
		<wsdl:part name="parameters" element="tcr:GetSupportedFormatTypesResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialInfo' message-->
	<wsdl:message name="GetCredentialInfoRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialInfo"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialInfoResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialInfoResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialInfoList' message-->
	<wsdl:message name="GetCredentialInfoListRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialInfoList"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialInfoListResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialInfoListResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentials' message-->
	<wsdl:message name="GetCredentialsRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentials"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialsResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialsResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialList' message-->
	<wsdl:message name="GetCredentialListRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialList"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialListResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialListResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'CreateCredential' message-->
	<wsdl:message name="CreateCredentialRequest">
		<wsdl:part name="parameters" element="tcr:CreateCredential"/>
	</wsdl:message>
	<wsdl:message name="CreateCredentialResponse">
		<wsdl:part name="parameters" element="tcr:CreateCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'ModifyCredential' message-->
	<wsdl:message name="ModifyCredentialRequest">
		<wsdl:part name="parameters" element="tcr:ModifyCredential"/>
	</wsdl:message>
	<wsdl:message name="ModifyCredentialResponse">
		<wsdl:part name="parameters" element="tcr:ModifyCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'SetCredential' message-->
	<wsdl:message name="SetCredentialRequest">
		<wsdl:part name="parameters" element="tcr:SetCredential"/>
	</wsdl:message>
	<wsdl:message name="SetCredentialResponse">
		<wsdl:part name="parameters" element="tcr:SetCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'DeleteCredential' message-->
	<wsdl:message name="DeleteCredentialRequest">
		<wsdl:part name="parameters" element="tcr:DeleteCredential"/>
	</wsdl:message>
	<wsdl:message name="DeleteCredentialResponse">
		<wsdl:part name="parameters" element="tcr:DeleteCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialState' message-->
	<wsdl:message name="GetCredentialStateRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialState"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialStateResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialStateResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'EnableCredential' message-->
	<wsdl:message name="EnableCredentialRequest">
		<wsdl:part name="parameters" element="tcr:EnableCredential"/>
	</wsdl:message>
	<wsdl:message name="EnableCredentialResponse">
		<wsdl:part name="parameters" element="tcr:EnableCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'DisableCredential' message-->
	<wsdl:message name="DisableCredentialRequest">
		<wsdl:part name="parameters" element="tcr:DisableCredential"/>
	</wsdl:message>
	<wsdl:message name="DisableCredentialResponse">
		<wsdl:part name="parameters" element="tcr:DisableCredentialResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'ResetAntipassbackViolation' message-->
	<wsdl:message name="ResetAntipassbackViolationRequest">
		<wsdl:part name="parameters" element="tcr:ResetAntipassbackViolation"/>
	</wsdl:message>
	<wsdl:message name="ResetAntipassbackViolationResponse">
		<wsdl:part name="parameters" element="tcr:ResetAntipassbackViolationResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialIdentifiers' message-->
	<wsdl:message name="GetCredentialIdentifiersRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialIdentifiers"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialIdentifiersResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialIdentifiersResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'SetCredentialIdentifier' message-->
	<wsdl:message name="SetCredentialIdentifierRequest">
		<wsdl:part name="parameters" element="tcr:SetCredentialIdentifier"/>
	</wsdl:message>
	<wsdl:message name="SetCredentialIdentifierResponse">
		<wsdl:part name="parameters" element="tcr:SetCredentialIdentifierResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'DeleteCredentialIdentifier' message-->
	<wsdl:message name="DeleteCredentialIdentifierRequest">
		<wsdl:part name="parameters" element="tcr:DeleteCredentialIdentifier"/>
	</wsdl:message>
	<wsdl:message name="DeleteCredentialIdentifierResponse">
		<wsdl:part name="parameters" element="tcr:DeleteCredentialIdentifierResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'GetCredentialAccessProfiles' message-->
	<wsdl:message name="GetCredentialAccessProfilesRequest">
		<wsdl:part name="parameters" element="tcr:GetCredentialAccessProfiles"/>
	</wsdl:message>
	<wsdl:message name="GetCredentialAccessProfilesResponse">
		<wsdl:part name="parameters" element="tcr:GetCredentialAccessProfilesResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'SetCredentialAccessProfiles' message-->
	<wsdl:message name="SetCredentialAccessProfilesRequest">
		<wsdl:part name="parameters" element="tcr:SetCredentialAccessProfiles"/>
	</wsdl:message>
	<wsdl:message name="SetCredentialAccessProfilesResponse">
		<wsdl:part name="parameters" element="tcr:SetCredentialAccessProfilesResponse"/>
	</wsdl:message>
	<!--===============================-->
	<!--Definition of 'DeleteCredentialAccessProfiles' message-->
	<wsdl:message name="DeleteCredentialAccessProfilesRequest">
		<wsdl:part name="parameters" element="tcr:DeleteCredentialAccessProfiles"/>
	</wsdl:message>
	<wsdl:message name="DeleteCredentialAccessProfilesResponse">
		<wsdl:part name="parameters" element="tcr:DeleteCredentialAccessProfilesResponse"/>
	</wsdl:message>
	<!--===============================-->
	<wsdl:portType name="CredentialPort">
		<wsdl:operation name="GetServiceCapabilities">
			<wsdl:documentation>This operation returns the capabilities of the credential service.</wsdl:documentation>
			<wsdl:input message="tcr:GetServiceCapabilitiesRequest"/>
			<wsdl:output message="tcr:GetServiceCapabilitiesResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetSupportedFormatTypes">
			<wsdl:documentation>
				This method returns all the supported format types of a specified identifier type that is supported by
				the device.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetSupportedFormatTypesRequest"/>
			<wsdl:output message="tcr:GetSupportedFormatTypesResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialInfo">
			<wsdl:documentation>
        This operation requests a list of CredentialInfo items matching the given tokens.
        The device shall ignore tokens it cannot resolve and shall return an empty list if there are no 
        items matching the specified tokens. The device shall not return a fault in this case.
        If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned.
      </wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialInfoRequest"/>
			<wsdl:output message="tcr:GetCredentialInfoResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialInfoList">
			<wsdl:documentation>
        This operation requests a list of all CredentialInfo items provided by the device.
        A call to this method shall return a StartReference when not all data is returned and more data is available.
        The reference shall be valid for retrieving the next set of data. Please refer to section 4.8.3 in 
        [ONVIF Access Control Service Specification] for more details.
        The number of items returned shall not be greater than the Limit parameter.
      </wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialInfoListRequest"/>
			<wsdl:output message="tcr:GetCredentialInfoListResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentials">
			<wsdl:documentation>
				This operation returns the specified credential items matching the given tokens.
				The device shall ignore tokens it cannot resolve and shall return an empty list if there are no items
				matching specified tokens. The device shall not return a fault in this case.
				If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialsRequest"/>
			<wsdl:output message="tcr:GetCredentialsResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialList">
			<wsdl:documentation>
				This operation requests a list of all credential items provided by the device.
				A call to this method shall return a StartReference when not all data is returned and more data is
				available. The reference shall be valid for retrieving the next set of data. Please refer section 4.8.3
				in [Access Control Service Specification] for more details. The number of items returned shall not be
				greater the Limit parameter.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialListRequest"/>
			<wsdl:output message="tcr:GetCredentialListResponse"/>
		</wsdl:operation>
		<wsdl:operation name="CreateCredential">
			<wsdl:documentation>
				This operation creates a credential. A call to this method takes a credential structure and a credential
				state structure as input parameters. The credential state can be created in disabled or enabled state.
				The token field of the credential shall be empty, the device shall allocate a token for the credential.
				The allocated token shall be returned in the response. If the client sends any value in the token field,
				the device shall return InvalidArgVal as generic fault code.
			</wsdl:documentation>
			<wsdl:input message="tcr:CreateCredentialRequest"/>
			<wsdl:output message="tcr:CreateCredentialResponse"/>
		</wsdl:operation>
		<wsdl:operation name="SetCredential">
			<wsdl:documentation>
				This method is used to synchronize a credential in a client with the device.
			</wsdl:documentation>
			<wsdl:input message="tcr:SetCredentialRequest"/>
			<wsdl:output message="tcr:SetCredentialResponse"/>
		</wsdl:operation>			
    <wsdl:operation name="ModifyCredential">
			<wsdl:documentation>
        This operation modifies the specified credential.
        The token of the credential to modify is specified in the token field of the Credential structure and 
        shall not be empty. All other fields in the structure shall overwrite the fields in the specified credential.
        When an existing credential is modified, the state is not modified explicitly. The only way for a client to 
        change the state of a credential is to explicitly call the EnableCredential, DisableCredential or 
        ResetAntipassback command.
        All existing credential identifiers and credential access profiles are removed and replaced with the 
        specified entities.
      </wsdl:documentation>
			<wsdl:input message="tcr:ModifyCredentialRequest"/>
			<wsdl:output message="tcr:ModifyCredentialResponse"/>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredential">
			<wsdl:documentation>
        This method deletes the specified credential.
        If it is associated with one or more entities some devices may not be able to delete the credential, 
        and consequently a ReferenceInUse fault shall be generated.
      </wsdl:documentation>
			<wsdl:input message="tcr:DeleteCredentialRequest"/>
			<wsdl:output message="tcr:DeleteCredentialResponse"/>
		</wsdl:operation>
    <wsdl:operation name="GetCredentialState">
			<wsdl:documentation>
				This method returns the state for the specified credential.
				If the capability ResetAntipassbackSupported is set to true, then the device shall supply the
				anti-passback state in the returned credential state structure.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialStateRequest"/>
			<wsdl:output message="tcr:GetCredentialStateResponse"/>
		</wsdl:operation>
		<wsdl:operation name="EnableCredential">
			<wsdl:documentation>
				This method is used to enable a credential.
			</wsdl:documentation>
			<wsdl:input message="tcr:EnableCredentialRequest"/>
			<wsdl:output message="tcr:EnableCredentialResponse"/>
		</wsdl:operation>
		<wsdl:operation name="DisableCredential">
			<wsdl:documentation>
				This method is used to disable a credential.
			</wsdl:documentation>
			<wsdl:input message="tcr:DisableCredentialRequest"/>
			<wsdl:output message="tcr:DisableCredentialResponse"/>
		</wsdl:operation>
		<wsdl:operation name="ResetAntipassbackViolation">
			<wsdl:documentation>
				This method is used to reset anti-passback violations for a specified credential.
			</wsdl:documentation>
			<wsdl:input message="tcr:ResetAntipassbackViolationRequest"/>
			<wsdl:output message="tcr:ResetAntipassbackViolationResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialIdentifiers">
			<wsdl:documentation>
				This method returns all the credential identifiers for a credential.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialIdentifiersRequest"/>
			<wsdl:output message="tcr:GetCredentialIdentifiersResponse"/>
		</wsdl:operation>
		<wsdl:operation name="SetCredentialIdentifier">
			<wsdl:documentation>
				This operation creates or updates a credential identifier for a credential.
				If the type of specified credential identifier already exists, the current credential identifier of that
				type is replaced. Otherwise the credential identifier is added.
			</wsdl:documentation>
			<wsdl:input message="tcr:SetCredentialIdentifierRequest"/>
			<wsdl:output message="tcr:SetCredentialIdentifierResponse"/>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredentialIdentifier">
			<wsdl:documentation>
				This method deletes all the identifier values for the specified type. However, if the identifier type
				name doesn’t exist in the device, it will be silently ignored without any response.
			</wsdl:documentation>
			<wsdl:input message="tcr:DeleteCredentialIdentifierRequest"/>
			<wsdl:output message="tcr:DeleteCredentialIdentifierResponse"/>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialAccessProfiles">
			<wsdl:documentation>
				This method returns all the credential access profiles for a credential.
			</wsdl:documentation>
			<wsdl:input message="tcr:GetCredentialAccessProfilesRequest"/>
			<wsdl:output message="tcr:GetCredentialAccessProfilesResponse"/>
		</wsdl:operation>
		<wsdl:operation name="SetCredentialAccessProfiles">
			<wsdl:documentation>
				This operation add or updates the credential access profiles for a credential.
				The device shall update the credential access profile if the access profile token in the specified
				credential access profile matches. Otherwise the credential access profile is added.
			</wsdl:documentation>
			<wsdl:input message="tcr:SetCredentialAccessProfilesRequest"/>
			<wsdl:output message="tcr:SetCredentialAccessProfilesResponse"/>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredentialAccessProfiles">
			<wsdl:documentation>
				This method deletes all the credential access profiles for the specified tokens.
				However, if no matching credential access profiles are found, the corresponding access profile tokens
				are silently ignored without any response.
			</wsdl:documentation>
			<wsdl:input message="tcr:DeleteCredentialAccessProfilesRequest"/>
			<wsdl:output message="tcr:DeleteCredentialAccessProfilesResponse"/>
		</wsdl:operation>
	</wsdl:portType>
	<!--Protocol & data format for the operations and messages for the port type 'credentialPort'-->
	<wsdl:binding name="CredentialBinding" type="tcr:CredentialPort">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="GetServiceCapabilities">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetServiceCapabilities"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetSupportedFormatTypes">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetSupportedFormatTypes"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialInfo">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialInfo"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialInfoList">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialInfoList"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentials">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentials"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialList">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialList"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="CreateCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/CreateCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="SetCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/SetCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="ModifyCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/ModifyCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/DeleteCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialState">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialState"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="EnableCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/EnableCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DisableCredential">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/DisableCredential"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="ResetAntipassbackViolation">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/ResetAntipassbackViolation"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialIdentifiers">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialIdentifiers"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="SetCredentialIdentifier">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/SetCredentialIdentifier"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredentialIdentifier">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/DeleteCredentialIdentifier"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCredentialAccessProfiles">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/GetCredentialAccessProfiles"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="SetCredentialAccessProfiles">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/SetCredentialAccessProfiles"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DeleteCredentialAccessProfiles">
			<soap:operation soapAction="http://www.onvif.org/ver10/credential/wsdl/DeleteCredentialAccessProfiles"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>  
	</wsdl:binding>
</wsdl:definitions>
