<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://minameddelanden.gov.se/schema/Message" xmlns:notification="http://minameddelanden.gov.se/schema/Notification" xmlns:recipient="http://minameddelanden.gov.se/schema/Recipient" xmlns:sender="http://minameddelanden.gov.se/schema/Sender" xmlns:receipt="http://minameddelanden.gov.se/schema/Receipt" xmlns:reply="http://minameddelanden.gov.se/schema/Reply" xmlns:sig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://minameddelanden.gov.se/schema/Message" elementFormDefault="qualified">
    <import namespace="http://minameddelanden.gov.se/schema/Recipient" schemaLocation="Recipient.xsd"/>
    <import namespace="http://minameddelanden.gov.se/schema/Notification" schemaLocation="Notification.xsd"/>
    <import namespace="http://minameddelanden.gov.se/schema/Sender" schemaLocation="Sender.xsd"/>
    <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
    <import namespace="http://minameddelanden.gov.se/schema/Receipt" schemaLocation="Receipt.xsd"/>
    <import namespace="http://minameddelanden.gov.se/schema/Reply" schemaLocation="Reply.xsd"/>
    <complexType name="DistributionStatus">
        <sequence>
            <element name="RecipientId" type="recipient:RecipientId" minOccurs="1" maxOccurs="1"/>
            <element name="Type" type="msg:DistributionTypes" minOccurs="1" maxOccurs="1"/>
            <element name="DeliveryStatus" type="msg:DeliveryStatus" minOccurs="0" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="MessageStatus">
        <sequence>
            <element name="RecipientId" type="recipient:RecipientId" minOccurs="1" maxOccurs="1"/>
            <element name="MessagetypeId" type="string" minOccurs="0" maxOccurs="1"/>
            <element name="Status" type="msg:DistributionTypes" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <simpleType name="DistributionTypes">
        <restriction base="string">
            <enumeration value="Digital"/>
            <enumeration value="Paper"/>
            <enumeration value="Not"/>
        </restriction>
    </simpleType>
    <complexType name="Message"/>
    <complexType name="DeliveryHeader">
        <sequence>
            <element name="Sender" type="sender:Sender" minOccurs="1" maxOccurs="1"/>
            <element name="Recipient" type="recipient:RecipientId" minOccurs="1" maxOccurs="1000"/>
            <element name="Reference" type="string" minOccurs="0" maxOccurs="1"/>
            <element name="CorrelationId" type="string" minOccurs="0" maxOccurs="1"/>
            <element name="Attention" type="string" minOccurs="0" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="SecureDelivery">
        <sequence>
            <element name="Header" type="msg:DeliveryHeader" minOccurs="1" maxOccurs="1"/>
            <element name="Message" type="msg:SecureMessage" minOccurs="1" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
    <complexType name="SimpleDelivery">
        <sequence>
            <element name="Header" type="msg:DeliveryHeader" minOccurs="1" maxOccurs="1"/>
            <element name="Message" type="msg:SimpleMessage" minOccurs="1" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
    <complexType name="SignedDelivery">
        <sequence>
            <element name="Delivery" type="msg:SecureDelivery" minOccurs="1" maxOccurs="1"/>
            <element ref="sig:Signature" minOccurs="1" maxOccurs="1"/>
        </sequence>
        <attribute name="Id" type="ID" use="optional"/>
    </complexType>
    <complexType name="ForwardDelivery">
        <sequence>
            <element name="Header" type="msg:DeliveryHeader" minOccurs="1" maxOccurs="1"/>
            <element name="Message" type="msg:ForwardMessage" minOccurs="1" maxOccurs="1"/>
            <element name="OrginalDelivery" type="msg:SealedDelivery" minOccurs="1" maxOccurs="1"/>
            <element name="MessageIdToForward" type="string" minOccurs="0" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="SealedDelivery">
        <sequence>
            <element name="SignedDelivery" type="msg:SignedDelivery" minOccurs="1" maxOccurs="1"/>
            <element name="Seal" type="msg:Seal" minOccurs="1" maxOccurs="1"/>
            <element ref="sig:Signature" minOccurs="1" maxOccurs="1"/>
        </sequence>
        <attribute name="Id" type="ID" use="optional"/>
    </complexType>
    <complexType name="MessageHeader">
        <sequence>
            <element name="Id" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Subject" minOccurs="1" maxOccurs="1">
                <simpleType>
                    <restriction base="string">
                        <maxLength value="255"/>
                    </restriction>
                </simpleType>
            </element>
            <element name="Supportinfo" type="msg:SupportInfo" minOccurs="1" maxOccurs="1"/>
            <element name="Metadata" type="msg:MetaData" minOccurs="0" maxOccurs="unbounded"/>
            <element name="Language" type="language" minOccurs="1" maxOccurs="1"/>
            <element name="Reply" type="reply:ReplyOptions" minOccurs="0" maxOccurs="1"/>
            <element name="ReceiptRequest" type="receipt:ReceiptOptions" minOccurs="0" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="MessageBody">
        <sequence>
            <element name="ContentType" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Body" type="base64Binary" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="Attachment">
        <sequence>
            <element name="ContentType" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Body" type="base64Binary" minOccurs="1" maxOccurs="1"/>
            <element name="Checksum" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Filename" type="string" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="ForwardMessage">
        <sequence>
            <element name="Subject" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Body" type="msg:MessageBody" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="SecureMessage">
        <sequence>
            <element name="Header" type="msg:MessageHeader" minOccurs="1" maxOccurs="1"/>
            <element name="Body" type="msg:MessageBody" minOccurs="1" maxOccurs="1"/>
            <element name="Attachment" type="msg:Attachment" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
    <complexType name="SimpleMessage">
        <sequence>
            <element name="Header" type="msg:MessageHeader" minOccurs="1" maxOccurs="1"/>
            <element name="Body" type="notification:NotificationMessage" minOccurs="1" maxOccurs="2"/>
        </sequence>
    </complexType>
    <complexType name="Seal">
        <sequence>
            <element name="ReceivedTime" type="date" minOccurs="1" maxOccurs="1"/>
            <element name="SignaturesOK" type="boolean" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="SupportInfo">
        <sequence>
            <element name="Text" minOccurs="1" maxOccurs="1">
                <simpleType>
                    <restriction base="string">
                        <maxLength value="1024"/>
                    </restriction>
                </simpleType>
            </element>
            <element name="Logo" minOccurs="0" maxOccurs="1">
                <simpleType>
                    <restriction base="anyURI">
                        <maxLength value="255"/>
                    </restriction>
                </simpleType>
            </element>
            <element name="URL" minOccurs="0" maxOccurs="1">
                <simpleType>
                    <restriction base="anyURI">
                        <maxLength value="255"/>
                    </restriction>
                </simpleType>
            </element>
            <element name="PhoneNumber" minOccurs="0" maxOccurs="1">
                <simpleType>
                    <restriction base="string">
                        <maxLength value="255"/>
                    </restriction>
                </simpleType>
            </element>
            <element name="EmailAdress" type="recipient:EMailAdress" minOccurs="0" maxOccurs="1"/>
        </sequence>
    </complexType>
    <complexType name="MetaData">
        <sequence>
            <element name="Tag" type="string" minOccurs="1" maxOccurs="1"/>
            <element name="Value" type="string" minOccurs="1" maxOccurs="1"/>
        </sequence>
    </complexType>
    <simpleType name="DeliveryStatus">
        <restriction base="string">
            <enumeration value="Delivered"/>
            <enumeration value="Pending"/>
            <enumeration value="DeliveryFailed"/>
        </restriction>
    </simpleType>
</schema>
