﻿<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0.0"
           xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.eFinanceira.gov.br/schemas/retornoSolicitacaoConsultaAssincrona/v1_0_0"
           targetNamespace="http://www.eFinanceira.gov.br/schemas/retornoSolicitacaoConsultaAssincrona/v1_0_0"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
  <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../comum/xmldsig-core-schema.xsd"/>

  <xs:element name="eFinanceira">

    <xs:complexType>
      <xs:sequence>
        <xs:element name="retornoSolicitacaoConsultaAssincrona">
          <xs:annotation>
            <xs:documentation>Retorno da solicitação de consulta em modo assíncrono</xs:documentation>
          </xs:annotation>

          <xs:complexType>
            <xs:sequence>

              <xs:element name="status" type="TStatusConsulta" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Status atual da consulta</xs:documentation>
                </xs:annotation>
              </xs:element>

              <xs:element name="dadosSolicitacaoConsulta" type="TDadosSolicitacaoConsulta"  minOccurs="0" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Dados da solicitação da consulta</xs:documentation>
                </xs:annotation>
              </xs:element>

              <xs:element name="xmlResultadoConsulta" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>Contém o XML de resultado da consulta. O XML segue o XSD de retorno da consulta especifica que foi solicitada</xs:documentation>
                </xs:annotation>
              </xs:element>

            </xs:sequence>

            <xs:attribute name="id" use="required" type="xs:ID">
              <xs:annotation>
                <xs:documentation>ID unico do retorno da solicitacao</xs:documentation>
              </xs:annotation>
            </xs:attribute>

          </xs:complexType>

        </xs:element>

        <xs:element ref="ds:Signature"/>

      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <xs:complexType name="TStatusConsulta">

    <xs:sequence>
      <xs:element name="cdResposta" type="xs:int">
        <xs:annotation>
          <xs:documentation>Código de resposta da solicitação de consulta</xs:documentation>
        </xs:annotation>
      </xs:element>

      <xs:element name="descResposta">
        <xs:annotation>
          <xs:documentation>Contém a descrição correspondente ao código de resposta</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="2048" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>

      <xs:element name="ocorrencias" type="TOcorrencias" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Contém as ocorrências encontradas durante a validação da solicitação de consulta</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>

  </xs:complexType>

  <xs:complexType name="TOcorrencias">

    <xs:sequence>
      <xs:element name="ocorrencia" minOccurs="1" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>

            <xs:element name="codigo" type="xs:string">
              <xs:annotation>
                <xs:documentation>Código da ocorrência</xs:documentation>
              </xs:annotation>
            </xs:element>

            <xs:element name="descricao">
              <xs:annotation>
                <xs:documentation>Descrição da ocorrência</xs:documentation>
              </xs:annotation>

              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:maxLength value="2048" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>

            <xs:element name="tipo" type="xs:unsignedByte">
              <xs:annotation>
                <xs:documentation>Contém o tipo da ocorrência: 1 - Erro, 2 - Advertência.</xs:documentation>
              </xs:annotation>
            </xs:element>

          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>

  </xs:complexType>

  <xs:complexType name="TDadosSolicitacaoConsulta">

    <xs:sequence>
      <xs:element name="dhSolicitacaoConsulta" type="xs:dateTime">
        <xs:annotation>
          <xs:documentation>Data/Hora da Solicitação</xs:documentation>
        </xs:annotation>
      </xs:element>

      <xs:element name="consultaSolicitada">
        <xs:annotation>
          <xs:documentation>Descricao da consulta solicitada</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="50" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>

      <xs:element name="protocoloConsulta">
        <xs:annotation>
          <xs:documentation>
            Protocolo da solicitação da consulta
          </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="30" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>

  </xs:complexType>


</xs:schema>