<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
  attributeFormDefault="unqualified"
  elementFormDefault="unqualified"
  targetNamespace="http://www.ediel.no/schemas/public/nubix/MeteringPointIdVerificationResponse"
  xmlns:nubix="http://www.ediel.no/schemas/public/nubix/MeteringPointIdVerificationResponse"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:annotation>
		<xsd:documentation xml:lang="en">
			Copyright 2007 Statnett SF
		</xsd:documentation>
		<xsd:documentation xml:lang="en">
      Revision 11.06.2009
    </xsd:documentation>
	</xsd:annotation>

	<xsd:element name="MeteringPointIdVerificationResponse" type="nubix:MeteringPointIdVerificationResponseType" />
		
	<xsd:complexType name="MeteringPointIdVerificationResponseType">  
		<xsd:sequence>
			<xsd:element name="RequestId" type="nubix:RequestIdType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Requestor" type="nubix:RequestorType" minOccurs="1" maxOccurs="1" />
			<xsd:choice>
				<xsd:element name="OrgNo" type="nubix:OrgNoType" minOccurs="1" maxOccurs="1"/>
				<xsd:element name="BirthDate" type="xsd:date" minOccurs="1" maxOccurs="1"/>
			</xsd:choice>
			<xsd:element name="Address" type="nubix:AddressType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="FaultMessage" type="nubix:FaultMessageType" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="RequestIdType">
		<xsd:annotation>
			<xsd:documentation>
				An unique request id generated by requestor identifying a specific MeteringPointIdVerificationRequest
				This unique id must not be removed or replaced by the gridowner recieving the request.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string" />
	</xsd:simpleType>

	<xsd:complexType name="RequestorType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="GLN" type="nubix:GLNType" minOccurs="1" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="MeteringPointIdType">
		<xsd:annotation>
			<xsd:documentation>According to GSRN (GS1)</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:length value="18" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="AddressType">
		<xsd:sequence>
			<xsd:element name="Address1" type="xsd:string" minOccurs="0" maxOccurs="1" />
			<xsd:element name="Address2" type="xsd:string" minOccurs="0" maxOccurs="1" />
			<xsd:element name="ResidentialUnitId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="PostCode" type="nubix:PostCodeType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Location" type="xsd:string" minOccurs="0" maxOccurs="1" />
			<xsd:element name="CountryCode" type="xsd:NMTOKEN" minOccurs="1" maxOccurs="1" default="NO" />
			<xsd:element name="Installation" type="nubix:InstallationType" minOccurs="0" maxOccurs="1" />
			<xsd:element name="GridOwner" type="nubix:GridOwnerType" minOccurs="0" maxOccurs="1" />
			<xsd:element name="ReturnStatus" type="nubix:ReturnStatusType" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:simpleType name="GLNType">
		<xsd:annotation>
			<xsd:documentation>Global Location Number</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\d{13}" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="PostCodeType">
		<xsd:annotation>
			<xsd:documentation>Norwegian and Swedish post codes</xsd:documentation>
			<xsd:documentation>Example values: 0301 (Norway), 555 11 (Sweden)</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\d{4}|\d{3}\s\d{2}" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="InstallationType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="Description" type="xsd:string" minOccurs="0" maxOccurs="1" />
			<xsd:element name="MeteringPointId" type="nubix:MeteringPointIdType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="MeteringMethod" type="nubix:MeteringMethodType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="InstallationStatus" type="nubix:InstallationStatusType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="LastReadOffDate" type="xsd:date" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="GridOwnerType">
		<xsd:annotation>
			<xsd:documentation>
				Identifies the GridOwner who produced the response to a request.
				A GridOwner's service may include this information in its response, but it will
				be overwritten by the NUBIX-service with information from the EDIEL-portal.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="GLN" type="nubix:GLNType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="ProdatAddress" type="nubix:ProdatAddressType" minOccurs="1" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ReturnStatusType">
		<xsd:sequence>
			<xsd:element name="StatusCode" type="nubix:ReturnStatusCodeType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="FurtherExplanation" type="xsd:string" minOccurs="0" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="MeteringMethodType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Manual" />
			<xsd:enumeration value="Remote" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="InstallationStatusType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Active" />
			<xsd:enumeration value="Closed" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ProdatAddressType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="InterchangeRecipient" type="nubix:InterchangeRecipientType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Party" type="nubix:PartyType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="EDISyntax" type="nubix:EDISyntaxType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="SMTPAddress" type="xsd:string" minOccurs="1" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="ReturnStatusCodeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NoSuchCustomer" />
			<xsd:enumeration value="MeteringPointIdNotFound" />
			<xsd:enumeration value="GridOwnerNotFound" />
			<xsd:enumeration value="GridOwnerError" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="PartyType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="Id" type="nubix:IdType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Qualifier" type="nubix:PartyQualifierType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="CodeListResponsible" type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>


	<xsd:complexType name="EDISyntaxType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="CharSet" type="xsd:string" minOccurs="1" maxOccurs="1" default="UNOB" />
			<xsd:element name="SyntaxId" type="xsd:integer" minOccurs="1" maxOccurs="1" default="2" />
		</xsd:sequence>
	</xsd:complexType>


	<xsd:simpleType name="IdType">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="35"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="PartyQualifierType">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="3"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="InterchangeRecipientType">
		<xsd:sequence minOccurs="1" maxOccurs="1">
			<xsd:element name="Id" type="nubix:IdType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Qualifier" type="nubix:InterchangeRecipientQualifierType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Subaddress" type="xsd:string" minOccurs="1" maxOccurs="1" default="PRODAT" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="InterchangeRecipientQualifierType">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="4"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="OrgNoType">
		<xsd:annotation>
			<xsd:documentation>Swedish and Norwegian org.nos.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\d{6}\-?\d{4}|\d{9}" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="FaultMessageType">
		<xsd:sequence>
			<xsd:element name="Reason" type="nubix:FaultReasonType" minOccurs="1" maxOccurs="1" />
			<xsd:element name="Description" type="xsd:string" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="FaultReasonType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NullRequest" />
			<xsd:enumeration value="ValidationFailure" />
			<xsd:enumeration value="InternalError" />
			<xsd:enumeration value="AuthenticationFailure" />
			<xsd:enumeration value="BusinessRuleViolation" />
		</xsd:restriction>
	</xsd:simpleType>

</xsd:schema>

