<!--
		SIF Infrastructure Specification 3.7

		(January 21, 2025)
		
		Infrastructure Version: 3.7
		
		license: 
		    name: Apache  2.0
        identifier: Apache-2.0
        url: 'https://home.a4l.org/legal/'
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sifassociation.org/infrastructure/3.7" targetNamespace="http://www.sifassociation.org/infrastructure/3.7" elementFormDefault="qualified" version="3.7">
  <xs:complexType name="providerType">
    <xs:annotation>
      <xs:appinfo>
        <sifChar />
        <privacyRating />
      </xs:appinfo>
      <xs:documentation>All potentially accessible Services have an entry in the Providers Registry (including the Providers Registry Utility Service itself), although full or even partial Consumer access to that Service is determined by the access rights currently granted in the Consumer's Environment object, and is not guaranteed.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="serviceType" type="serviceTypeType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>The generic type of Service being provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="serviceName" type="xs:token">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>The name of the Service or the Service Path being provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="contextId" type="xs:token">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>The name of the Service Context being provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="zoneId" type="xs:token">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>The Zone in which the Service Context is being provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="providerName" type="xs:token">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>The name of the Service Provider as it would be referred to by the administrator of the Zone (ex: RamseySIS).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="querySupport" type="querySupportType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="mimeTypes" minOccurs="0" type="mediaTypesType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="endPoint" minOccurs="0" type="protocolType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>C</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation>In a Brokered Environment, this element contains the URL where all requests for this Service Provider should be re-invoked by the Connector</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="supportedRequestTypes" minOccurs="0" type="supportedRequestsType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating />
          </xs:appinfo>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType">
      <xs:annotation>
        <xs:appinfo>
          <sifChar>O</sifChar>
          <privacyRating />
        </xs:appinfo>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="provider" type="providerType">
    <xs:key name="providerKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="providerCollectionType">
    <xs:sequence>
      <xs:element name="provider" type="providerType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="providers" type="providerCollectionType" />

</xs:schema>