<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

	<xs:simpleType name="companyCodeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="lei" />
			<xs:enumeration value="eic" />
			<xs:enumeration value="acer" />
			<xs:enumeration value="customer" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="creditAction">
		<xs:restriction base="xs:string">
			<xs:enumeration value="B" />
			<xs:enumeration value="S" />
			<xs:enumeration value="BS" />
			<xs:enumeration value="-" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="preferredSleeveAction">
		<xs:restriction base="xs:string">
			<xs:enumeration value="B" />
			<xs:enumeration value="S" />
			<xs:enumeration value="PB" />
			<xs:enumeration value="PS" />
			<xs:enumeration value="-" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="companyType">
	  <xs:simpleContent>
		<xs:extension base="xs:string">
			<xs:attribute name="codeType" type="companyCodeType" use="required"/>
			<xs:attribute name="description" type="xs:string"/>
			<xs:attribute name="dma" type="xs:integer"/>
		</xs:extension>
	  </xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="creditType">
		<xs:sequence>
			<xs:element name="credit" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="startDate" type="xs:date"/>
					<xs:attribute name="endDate" type="xs:date"/>
					<xs:attribute name="action" type="creditAction"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="preferredSleeveType">
		<xs:sequence>
			<xs:element name="preferredSleeve" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="startDate" type="xs:date"/>
					<xs:attribute name="endDate" type="xs:date"/>
					<xs:attribute name="action" type="preferredSleeveAction"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:element name="creditDefinition">				
		<xs:complexType>
			<xs:sequence>			
				<xs:element name="header">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="company" type="companyType"/>
							<xs:element name="generationTime" type="xs:dateTime" minOccurs="0"/>
							<xs:element name="instrumentGroupIdentifier" type="xs:string" minOccurs="0"/>
							<xs:element name="contactDetails" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="name" type="xs:string"/>
										<xs:element name="email" type="xs:string" minOccurs="0"/>
										<xs:element name="telephone" type="xs:string" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>								
				<xs:element name="creditRecords">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="creditRecord" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>									
										<xs:element name="fromCompanies" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="fromCompany" type="companyType" maxOccurs="unbounded"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="toCompanies">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="toCompany" type="companyType" maxOccurs="unbounded"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="instruments" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="instrument" type="xs:string" maxOccurs="unbounded"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>										
										<xs:choice>
											<xs:sequence>
												<xs:element name="credits" type="creditType"/>
												<xs:element name="preferredSleeves" type="preferredSleeveType" minOccurs="0"/>
											</xs:sequence>
											<xs:element name="preferredSleeves" type="preferredSleeveType"/>
										</xs:choice>
									</xs:sequence>
									<xs:attribute name="id" type="xs:integer" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

