<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:fos="https://forestosglobal.com/ns/fgis-lk/observation/1.0"
           targetNamespace="https://forestosglobal.com/ns/fgis-lk/observation/1.0"
           elementFormDefault="qualified">
  <xs:simpleType name="Sha256Type">
    <xs:restriction base="xs:string"><xs:pattern value="[0-9a-f]{64}"/></xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DatasetType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ndvi"/><xs:enumeration value="lst"/>
      <xs:enumeration value="soil_moisture"/><xs:enumeration value="active_fire"/>
      <xs:enumeration value="burn_history"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="observationBatch">
    <xs:complexType><xs:sequence>
      <xs:element name="header">
        <xs:complexType><xs:sequence>
          <xs:element name="schemaProfile" type="xs:string"/>
          <xs:element name="batchId" type="xs:string"/>
          <xs:element name="createdAt" type="xs:dateTime"/>
          <xs:element name="producer" type="xs:string"/>
          <xs:element name="legalStatus" type="xs:string"/>
          <xs:element name="coordinateReferenceSystem" type="xs:string"/>
          <xs:element name="spatialIndex" type="xs:string"/>
          <xs:element name="sourceSnapshotSha256" type="fos:Sha256Type"/>
          <xs:element name="sourceGeneratedAt" type="xs:string"/>
          <xs:element name="sourceStatus" type="xs:string"/>
          <xs:element name="truncated" type="xs:boolean"/>
        </xs:sequence></xs:complexType>
      </xs:element>
      <xs:element name="statistics">
        <xs:complexType><xs:sequence>
          <xs:element name="datasetStatistics" maxOccurs="unbounded">
            <xs:complexType>
              <xs:attribute name="dataset" type="fos:DatasetType" use="required"/>
              <xs:attribute name="records" type="xs:nonNegativeInteger" use="required"/>
              <xs:attribute name="missing" type="xs:nonNegativeInteger" use="required"/>
              <xs:attribute name="invalid" type="xs:nonNegativeInteger" use="required"/>
              <xs:attribute name="omittedDueLimit" type="xs:nonNegativeInteger" use="required"/>
            </xs:complexType>
          </xs:element>
        </xs:sequence></xs:complexType>
      </xs:element>
      <xs:element name="observations">
        <xs:complexType><xs:sequence>
          <xs:element name="observation" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType><xs:sequence>
              <xs:element name="observationId" type="xs:string"/>
              <xs:element name="dataset" type="fos:DatasetType"/>
              <xs:element name="observedAt" type="xs:string"/>
              <xs:element name="value" type="xs:decimal"/>
              <xs:element name="unit" type="xs:string"/>
              <xs:element name="location">
                <xs:complexType><xs:sequence>
                  <xs:element name="latitude" type="xs:decimal"/>
                  <xs:element name="longitude" type="xs:decimal"/>
                  <xs:element name="h3" type="xs:string" minOccurs="0"/>
                </xs:sequence></xs:complexType>
              </xs:element>
              <xs:element name="sourceId" type="xs:string"/>
              <xs:element name="sourceProduct" type="xs:string"/>
              <xs:element name="qualityStatus" type="xs:string"/>
              <xs:element name="legalStatus" type="xs:string"/>
              <xs:element name="metadata" minOccurs="0">
                <xs:complexType><xs:sequence>
                  <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType mixed="true"><xs:attribute name="key" type="xs:string" use="required"/></xs:complexType>
                  </xs:element>
                </xs:sequence></xs:complexType>
              </xs:element>
            </xs:sequence></xs:complexType>
          </xs:element>
        </xs:sequence></xs:complexType>
      </xs:element>
    </xs:sequence></xs:complexType>
  </xs:element>
</xs:schema>
