Refactor client classes

This commit is contained in:
2025-08-24 18:20:57 +09:00
parent 1f025dd62e
commit a76d283936
55 changed files with 10900 additions and 0 deletions

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api
{
public abstract class ApiBase(ClientBase client)
{
protected ClientBase client = client;
}
}

View File

@ -0,0 +1,32 @@
using Hcs.Client.Api.Request.Exception;
using Hcs.Client.Api.Request.Nsi;
using Hcs.Service.Async.Nsi;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Hcs.Client.Api
{
// http://open-gkh.ru/NsiService/
public class NsiApi(ClientBase client) : ApiBase(client)
{
/// <summary>
/// Возвращает данные справочника поставщика информации
/// </summary>
/// <param name="registryNumber">Реестровый номер справочника</param>
/// <param name="token">Токен отмены</param>
/// <returns>Данные справочника</returns>
public async Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItem(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default)
{
try
{
var request = new ExportDataProviderNsiItemRequest(client);
return await request.ExecuteAsync(registryNumber, token);
}
catch (NoResultsRemoteException)
{
return [];
}
}
}
}

View File

@ -0,0 +1,9 @@
namespace Hcs.Client.Api.Request
{
public interface IAck
{
string MessageGUID { get; set; }
string RequesterMessageGUID { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using System.Threading.Tasks;
namespace Hcs.Client.Api.Request.Adapter
{
public interface IAsyncClient<TRequestHeader> where TRequestHeader : class
{
Task<IGetStateResponse> GetStateAsync(TRequestHeader header, IGetStateRequest request);
}
}

View File

@ -0,0 +1,9 @@
namespace Hcs.Client.Api.Request
{
public interface IErrorMessage
{
string ErrorCode { get; }
string Description { get; }
}
}

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api.Request
{
public interface IGetStateRequest
{
string MessageGUID { get; set; }
}
}

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api.Request.Adapter
{
public interface IGetStateResponse
{
IGetStateResult GetStateResult { get; }
}
}

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api.Request.Adapter
{
public interface IGetStateResult
{
sbyte RequestState { get; }
}
}

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api.Request.Adapter
{
public interface IGetStateResultMany : IGetStateResult
{
object[] Items { get; }
}
}

View File

@ -0,0 +1,7 @@
namespace Hcs.Client.Api.Request.Adapter
{
public interface IGetStateResultOne : IGetStateResult
{
object Item { get; }
}
}

View File

@ -0,0 +1,9 @@
namespace Hcs.Client.Api.Request
{
internal enum AsyncRequestStateType
{
Received = 1,
InProgress,
Ready
}
}

View File

@ -0,0 +1,16 @@
namespace Hcs.Client.Api.Request
{
internal enum EndPoint
{
BillsAsync,
DebtRequestsAsync,
DeviceMeteringAsync,
HomeManagementAsync,
LicensesAsync,
NsiAsync,
NsiCommonAsync,
OrgRegistryAsync,
OrgRegistryCommonAsync,
PaymentsAsync
}
}

View File

@ -0,0 +1,30 @@
using System.Collections.Generic;
namespace Hcs.Client.Api.Request
{
internal class EndPointLocator
{
private static readonly Dictionary<EndPoint, string> endPoints;
static EndPointLocator()
{
endPoints ??= [];
endPoints.Add(EndPoint.BillsAsync, "ext-bus-bills-service/services/BillsAsync");
endPoints.Add(EndPoint.DebtRequestsAsync, "ext-bus-debtreq-service/services/DebtRequestsAsync");
endPoints.Add(EndPoint.DeviceMeteringAsync, "ext-bus-device-metering-service/services/DeviceMeteringAsync");
endPoints.Add(EndPoint.HomeManagementAsync, "ext-bus-home-management-service/services/HomeManagementAsync");
endPoints.Add(EndPoint.LicensesAsync, "ext-bus-licenses-service/services/LicensesAsync");
endPoints.Add(EndPoint.NsiAsync, "ext-bus-nsi-service/services/NsiAsync");
endPoints.Add(EndPoint.NsiCommonAsync, "ext-bus-nsi-common-service/services/NsiCommonAsync");
endPoints.Add(EndPoint.OrgRegistryAsync, "ext-bus-org-registry-service/services/OrgRegistryAsync");
endPoints.Add(EndPoint.OrgRegistryCommonAsync, "ext-bus-org-registry-common-service/services/OrgRegistryCommonAsync");
endPoints.Add(EndPoint.PaymentsAsync, "ext-bus-payment-service/services/PaymentAsync");
}
internal static string GetPath(EndPoint endPoint)
{
return endPoints[endPoint];
}
}
}

View File

@ -0,0 +1,17 @@
namespace Hcs.Client.Api.Request.Exception
{
/// <summary>
/// Исключение указывает на то, что сервер обнаружил что у
/// него нет объектов для выдачи по условию
/// </summary>
internal class NoResultsRemoteException : RemoteException
{
public NoResultsRemoteException(string description) : base(NO_OBJECTS_FOR_EXPORT, description) { }
public NoResultsRemoteException(string errorCode, string description) :
base(errorCode, description) { }
public NoResultsRemoteException(string errorCode, string description, System.Exception nested) :
base(errorCode, description, nested) { }
}
}

View File

@ -0,0 +1,65 @@
using Hcs.Client.Internal;
using System;
using System.Linq;
namespace Hcs.Client.Api.Request.Exception
{
internal class RemoteException : System.Exception
{
internal const string NO_OBJECTS_FOR_EXPORT = "INT002012";
internal const string MISSING_IN_REGISTRY = "INT002000";
internal const string ACCESS_DENIED = "AUT011003";
internal string ErrorCode { get; private set; }
internal string Description { get; private set; }
public RemoteException(string errorCode, string description)
: base(Combine(errorCode, description))
{
ErrorCode = errorCode;
Description = description;
}
public RemoteException(string errorCode, string description, System.Exception nestedException)
: base(Combine(errorCode, description), nestedException)
{
ErrorCode = errorCode;
Description = description;
}
private static string Combine(string errorCode, string description)
{
return $"Remote server returned an error: [{errorCode}] {description}";
}
internal static RemoteException CreateNew(string errorCode, string description, System.Exception nested = null)
{
if (string.Compare(errorCode, NO_OBJECTS_FOR_EXPORT) == 0)
{
return new NoResultsRemoteException(errorCode, description, nested);
}
return new RemoteException(errorCode, description);
}
internal static RemoteException CreateNew(RemoteException nested)
{
if (nested == null)
{
throw new ArgumentNullException(nameof(nested));
}
return CreateNew(nested.ErrorCode, nested.Description, nested);
}
/// <summary>
/// Возвращает true, если ошибка @e или ее вложенные ошибки содержат @errorCode
/// </summary>
internal static bool ContainsErrorCode(SystemException e, string errorCode)
{
if (e == null)
{
return false;
}
return Util.EnumerateInnerExceptions(e).OfType<RemoteException>().Where(x => x.ErrorCode == errorCode).Any();
}
}
}

View File

@ -0,0 +1,9 @@
namespace Hcs.Client.Api.Request.Exception
{
internal class RestartTimeoutException : System.Exception
{
public RestartTimeoutException(string message) : base(message) { }
public RestartTimeoutException(string message, System.Exception innerException) : base(message, innerException) { }
}
}

View File

@ -0,0 +1,23 @@
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
namespace Hcs.Client.Api.Request
{
internal class GostSigningEndpointBehavior(ClientBase client) : IEndpointBehavior
{
private readonly ClientBase client = client;
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) { }
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(
new GostSigningMessageInspector(client));
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) { }
public void Validate(ServiceEndpoint endpoint) { }
}
}

View File

@ -0,0 +1,116 @@
using Hcs.Client.Internal;
using Hcs.GostXades;
using System.IO;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;
using System.Text;
using System.Xml;
namespace Hcs.Client.Api.Request
{
/// <summary>
/// Фильтр сообщений добавляет в XML-сообщение электронную подпись XADES/GOST
/// </summary>
internal class GostSigningMessageInspector(ClientBase client) : IClientMessageInspector
{
private readonly ClientBase client = client;
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
try
{
var filterHeader = "[Message Inspector] ";
PurgeDebuggerHeaders(ref request);
var messageBody = GetMessageBodyString(ref request, Encoding.UTF8);
if (!messageBody.Contains(Constants.SIGNED_XML_ELEMENT_ID))
{
client.TryCaptureMessage(true, messageBody);
}
else
{
var certInfo = X509Tools.GetFullnameWithExpirationDateStr(client.Certificate);
client.TryLog($"{filterHeader} signing message with key [{certInfo}]...");
var stopwatch = System.Diagnostics.Stopwatch.StartNew();
var service = new GostXadesBesService(client.CryptoProviderType);
var signedXml = service.Sign(messageBody,
Constants.SIGNED_XML_ELEMENT_ID,
client.CertificateThumbprint,
client.CertificatePassword);
stopwatch.Stop();
client.TryLog($"{filterHeader} message signed in {stopwatch.ElapsedMilliseconds} ms");
client.TryCaptureMessage(true, signedXml);
request = Message.CreateMessage(
XmlReaderFromString(signedXml), int.MaxValue, request.Version);
}
}
catch (System.Exception ex)
{
throw new System.Exception($"Exception occured in {GetType().Name}", ex);
}
return null;
}
private void PurgeDebuggerHeaders(ref Message request)
{
var limit = request.Headers.Count;
for (var i = 0; i < limit; ++i)
{
if (request.Headers[i].Name.Equals("VsDebuggerCausalityData"))
{
request.Headers.RemoveAt(i);
break;
}
}
}
private string GetMessageBodyString(ref Message request, Encoding encoding)
{
var mb = request.CreateBufferedCopy(int.MaxValue);
request = mb.CreateMessage();
var s = new MemoryStream();
var xw = XmlWriter.Create(s);
mb.CreateMessage().WriteMessage(xw);
xw.Flush();
s.Position = 0;
var bXML = new byte[s.Length];
s.Read(bXML, 0, (int)s.Length);
if (bXML[0] != (byte)'<')
{
return encoding.GetString(bXML, 3, bXML.Length - 3);
}
else
{
return encoding.GetString(bXML, 0, bXML.Length);
}
}
private XmlReader XmlReaderFromString(string xml)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(xml);
writer.Flush();
stream.Position = 0;
return XmlReader.Create(stream);
}
public void AfterReceiveReply(ref Message reply, object correlationState)
{
client.TryCaptureMessage(false, reply.ToString());
}
}
}

View File

@ -0,0 +1,31 @@
using Hcs.Client.Internal;
using Hcs.Service.Async.Nsi;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace Hcs.Client.Api.Request.Nsi
{
internal class ExportDataProviderNsiItemRequest(ClientBase client) : NsiRequestBase(client)
{
internal async Task<IEnumerable<NsiItemType>> ExecuteAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token)
{
// http://open-gkh.ru/Nsi/exportDataProviderNsiItemRequest.html
var request = new exportDataProviderNsiItemRequest
{
Id = Constants.SIGNED_XML_ELEMENT_ID,
version = "10.0.1.2",
RegistryNumber = registryNumber,
};
var stateResult = await SendAndWaitResultAsync(request, async(portClient) =>
{
var response = await portClient.exportDataProviderNsiItemAsync(CreateRequestHeader(), request);
return response.AckRequest.Ack;
}, token);
return stateResult.Items.OfType<NsiItemType>();
}
}
}

View File

@ -0,0 +1,49 @@
using Hcs.Client.Api.Request;
using Hcs.Client.Api.Request.Adapter;
using Hcs.Service.Async.Nsi;
using System.Threading.Tasks;
namespace Hcs.Service.Async.Nsi
{
public partial class getStateResult : IGetStateResultMany { }
public partial class NsiPortsTypeAsyncClient : IAsyncClient<RequestHeader>
{
public async Task<IGetStateResponse> GetStateAsync(RequestHeader header, IGetStateRequest request)
{
return await getStateAsync(header, (getStateRequest)request);
}
}
public partial class getStateResponse : IGetStateResponse
{
public IGetStateResult GetStateResult => getStateResult;
}
public partial class AckRequestAck : IAck { }
public partial class ErrorMessageType : IErrorMessage { }
public partial class getStateRequest : IGetStateRequest { }
}
namespace Hcs.Client.Api.Request.Nsi
{
internal class NsiRequestBase(ClientBase client) :
RequestBase<getStateResult,
NsiPortsTypeAsyncClient,
NsiPortsTypeAsync,
RequestHeader,
AckRequestAck,
ErrorMessageType,
getStateRequest>(client)
{
protected override EndPoint EndPoint => EndPoint.NsiAsync;
protected override bool EnableMinimalResponseWaitDelay => true;
protected override bool CanBeRestarted => true;
protected override int RestartTimeoutMinutes => 20;
}
}

View File

@ -0,0 +1,407 @@
using Hcs.Client.Api.Request.Adapter;
using Hcs.Client.Api.Request.Exception;
using Hcs.Client.Internal;
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Hcs.Client.Api.Request
{
internal abstract class RequestBase<TResult, TAsyncClient, TChannel, TRequestHeader, TAck, TErrorMessage, TGetStateRequest>
where TResult : IGetStateResult
where TAsyncClient : ClientBase<TChannel>, TChannel, IAsyncClient<TRequestHeader>
where TChannel : class
where TRequestHeader : class
where TAck : IAck
where TErrorMessage : IErrorMessage
where TGetStateRequest : IGetStateRequest, new()
{
private const int RESPONSE_WAIT_DELAY_MIN = 2;
private const int RESPONSE_WAIT_DELAY_MAX = 5;
// "[EXP001000] Произошла ошибка при передаче данных. Попробуйте осуществить передачу данных повторно".
// Видимо, эту ошибку нельзя включать здесь. Предположительно это маркер DDOS защиты и если отправлять
// точно такой же пакет повторно, то ошибка входит в бесконечный цикл - необходимо заново
// собирать пакет с новыми кодами и временем и новой подписью. Такую ошибку надо обнаруживать
// на более высоком уровне и заново отправлять запрос новым пакетом.
private static readonly string[] ignorableSystemErrorMarkers = [
"Истекло время ожидания шлюза",
"Базовое соединение закрыто: Соединение, которое должно было работать, было разорвано сервером",
"Попробуйте осуществить передачу данных повторно",
"(502) Недопустимый шлюз",
"(503) Сервер не доступен"
];
protected ClientBase client;
protected CustomBinding binding;
protected abstract EndPoint EndPoint { get; }
/// <summary>
/// Для запросов, возвращающих мало данных, можно попробовать сократить
/// начальный период ожидания подготовки ответа
/// </summary>
protected abstract bool EnableMinimalResponseWaitDelay { get; }
/// <summary>
/// Указывает на то, что можно ли этот метод перезапускать в случае зависания
/// ожидания или в случае сбоя на сервере
/// </summary>
protected abstract bool CanBeRestarted { get; }
/// <summary>
/// Для противодействия зависанию ожидания вводится предел ожидания в минутах
/// для запросов, которые можно перезапустить заново с теми же параметрами
/// </summary>
protected abstract int RestartTimeoutMinutes { get; }
private EndpointAddress RemoteAddress => new(client.ComposeEndpointUri(EndPointLocator.GetPath(EndPoint)));
private string ThreadIdText => $"(Thread #{ThreadId})";
/// <summary>
/// Возвращает идентификатор текущего исполняемого потока
/// </summary>
private int ThreadId => Environment.CurrentManagedThreadId;
public RequestBase(ClientBase client)
{
this.client = client;
ConfigureBinding();
}
private void ConfigureBinding()
{
binding = new CustomBinding
{
CloseTimeout = TimeSpan.FromSeconds(180),
OpenTimeout = TimeSpan.FromSeconds(180),
ReceiveTimeout = TimeSpan.FromSeconds(180),
SendTimeout = TimeSpan.FromSeconds(180)
};
binding.Elements.Add(new TextMessageEncodingBindingElement
{
MessageVersion = MessageVersion.Soap11,
WriteEncoding = Encoding.UTF8
});
if (client.UseTunnel)
{
if (!System.Diagnostics.Process.GetProcessesByName("stunnel").Any())
{
throw new System.Exception("stunnel is not running");
}
binding.Elements.Add(new HttpTransportBindingElement
{
AuthenticationScheme = (client.IsPPAK ? System.Net.AuthenticationSchemes.Digest : System.Net.AuthenticationSchemes.Basic),
MaxReceivedMessageSize = int.MaxValue,
UseDefaultWebProxy = false
});
}
else
{
binding.Elements.Add(new HttpsTransportBindingElement
{
AuthenticationScheme = (client.IsPPAK ? System.Net.AuthenticationSchemes.Digest : System.Net.AuthenticationSchemes.Basic),
MaxReceivedMessageSize = int.MaxValue,
RequireClientCertificate = true,
UseDefaultWebProxy = false
});
}
}
protected async Task<TResult> SendAndWaitResultAsync(
object request,
Func<TAsyncClient, Task<TAck>> sender,
CancellationToken token)
{
token.ThrowIfCancellationRequested();
while (true)
{
try
{
if (request == null)
{
throw new ArgumentNullException(nameof(request));
}
var version = RequestHelper.GetRequestVersionString(request);
client.TryLog($"Executing request {RemoteAddress.Uri}/{request.GetType().Name} of version {version}...");
TAck ack;
var stopWatch = System.Diagnostics.Stopwatch.StartNew();
using (var asyncClient = CreateAsyncClient())
{
ack = await sender(asyncClient);
}
stopWatch.Stop();
client.TryLog($"Request executed in {stopWatch.ElapsedMilliseconds} ms, result GUID is {ack.MessageGUID}");
var result = await WaitForResultAsync(ack, true, token);
if (result is IQueryable queryableResult)
{
queryableResult.OfType<TErrorMessage>().ToList().ForEach(x =>
{
throw RemoteException.CreateNew(x.ErrorCode, x.Description);
});
}
else if (result is TErrorMessage x)
{
throw RemoteException.CreateNew(x.ErrorCode, x.Description);
}
return result;
}
catch (RestartTimeoutException e)
{
if (!CanBeRestarted)
{
throw new System.Exception("Cannot restart request execution on timeout", e);
}
client.TryLog($"Restarting {request.GetType().Name} request execution...");
}
}
}
private TAsyncClient CreateAsyncClient()
{
var asyncClient = (TAsyncClient)Activator.CreateInstance(typeof(TAsyncClient), binding, RemoteAddress);
ConfigureEndpointCredentials(asyncClient.Endpoint, asyncClient.ClientCredentials);
return asyncClient;
}
private void ConfigureEndpointCredentials(
ServiceEndpoint serviceEndpoint, ClientCredentials clientCredentials)
{
serviceEndpoint.EndpointBehaviors.Add(new GostSigningEndpointBehavior(client));
if (!client.IsPPAK)
{
clientCredentials.UserName.UserName = Constants.NAME_SIT;
clientCredentials.UserName.Password = Constants.PASSWORD_SIT;
}
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (
object sender, X509Certificate serverCertificate, X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
};
if (!client.UseTunnel)
{
clientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.My,
X509FindType.FindByThumbprint,
client.CertificateThumbprint);
}
}
/// <summary>
/// Основной алгоритм ожидания ответа на асинхронный запрос.
/// Из документации ГИС ЖКХ:
/// Также рекомендуем придерживаться следующего алгоритма отправки запросов на получение статуса обработки пакета в случае использования асинхронных сервисов ГИС ЖКХ (в рамках одного MessageGUID):
/// - первый запрос getState направлять не ранее чем через 10 секунд, после получения квитанции о приеме пакета с бизнес-данными от сервиса ГИС КЖХ;
/// - в случае, если на первый запрос getSate получен результат с RequestState равным "1" или "2", то следующий запрос getState необходимо направлять не ранее чем через 60 секунд после отправки предыдущего запроса;
/// - в случае, если на второй запрос getSate получен результат с RequestState равным "1" или "2", то следующий запрос getState необходимо направлять не ранее чем через 300 секунд после отправки предыдущего запроса;
/// - в случае, если на третий запрос getSate получен результат с RequestState равным "1" или "2", то следующий запрос getState необходимо направлять не ранее чем через 900 секунд после отправки предыдущего запроса;
/// - в случае, если на четвертый(и все последующие запросы) getState получен результат с RequestState равным "1" или "2", то следующий запрос getState необходимо направлять не ранее чем через 1800 секунд после отправки предыдущего запроса.
/// </summary>
private async Task<TResult> WaitForResultAsync(
TAck ack, bool withInitialDelay, CancellationToken token)
{
TResult result;
var startTime = DateTime.Now;
for (var attempts = 1; ; attempts++)
{
token.ThrowIfCancellationRequested();
var delaySec = EnableMinimalResponseWaitDelay ? RESPONSE_WAIT_DELAY_MIN : RESPONSE_WAIT_DELAY_MAX;
if (attempts >= 2)
{
delaySec = RESPONSE_WAIT_DELAY_MAX;
}
if (attempts >= 3)
{
delaySec = RESPONSE_WAIT_DELAY_MAX * 2;
}
if (attempts >= 5)
{
delaySec = RESPONSE_WAIT_DELAY_MAX * 4;
}
if (attempts >= 7)
{
delaySec = RESPONSE_WAIT_DELAY_MAX * 8;
}
if (attempts >= 9)
{
delaySec = RESPONSE_WAIT_DELAY_MAX * 16;
}
if (attempts >= 12)
{
delaySec = RESPONSE_WAIT_DELAY_MAX * 60;
}
if (attempts > 1 || withInitialDelay)
{
var minutesElapsed = (int)(DateTime.Now - startTime).TotalMinutes;
if (CanBeRestarted && minutesElapsed > RestartTimeoutMinutes)
{
throw new RestartTimeoutException($"{RestartTimeoutMinutes} minute(s) wait time exceeded");
}
client.TryLog($"Waiting {delaySec} sec for attempt #{attempts}" +
$" to get response ({minutesElapsed} minute(s) elapsed)...");
await Task.Delay(delaySec * 1000, token);
}
client.TryLog($"Requesting response, attempt #{attempts} in {ThreadIdText}...");
result = await TryGetResultAsync(ack);
if (result != null)
{
break;
}
}
client.TryLog($"Response received!");
return result;
}
/// <summary>
/// Выполняет однократную проверку наличия результата.
/// Возвращает default если результата еще нет.
/// </summary>
private async Task<TResult> TryGetResultAsync(TAck ack)
{
using var asyncClient = CreateAsyncClient();
var requestHeader = RequestHelper.CreateHeader<TRequestHeader>(client);
var requestBody = new TGetStateRequest
{
MessageGUID = ack.MessageGUID
};
var response = await asyncClient.GetStateAsync(requestHeader, requestBody);
var result = response.GetStateResult;
if (result.RequestState == (int)AsyncRequestStateType.Ready)
{
return (TResult)result;
}
return default;
}
protected TRequestHeader CreateRequestHeader()
{
return RequestHelper.CreateHeader<TRequestHeader>(client);
}
/// <summary>
/// Исполнение повторяемой операции некоторое допустимое число ошибок
/// </summary>
protected async Task<TRepeatableResult> RunRepeatableTaskAsync<TRepeatableResult>(
Func<Task<TRepeatableResult>> taskFunc, Func<System.Exception, bool> canIgnoreFunc, int maxAttempts)
{
for (var attempts = 1; ; attempts++)
{
try
{
return await taskFunc();
}
catch (System.Exception e)
{
if (canIgnoreFunc(e))
{
if (attempts < maxAttempts)
{
client.TryLog($"Ignoring error of attempt #{attempts} of {maxAttempts} attempts");
continue;
}
throw new System.Exception("Too much attempts with error");
}
throw e;
}
}
}
/// <summary>
/// Для запросов к серверу которые можно направлять несколько раз, разрешаем
/// серверу аномально отказаться. Предполагается, что здесь мы игнорируем
/// только жесткие отказы серверной инфраструктуры, которые указывают
/// что запрос даже не был принят в обработку. Также все запросы на
/// чтение можно повторять в случае их серверных системных ошибок.
/// </summary>
protected async Task<TRepeatableResult> RunRepeatableTaskInsistentlyAsync<TRepeatableResult>(
Func<Task<TRepeatableResult>> func, CancellationToken token)
{
var afterErrorDelaySec = 120;
for (var attempt = 1; ; attempt++)
{
try
{
return await func();
}
catch (System.Exception e)
{
if (CanIgnoreSuchException(e, out string marker))
{
client.TryLog($"Ignoring error of attempt #{attempt} with type [{marker}]");
client.TryLog($"Waiting {afterErrorDelaySec} sec until next attempt...");
await Task.Delay(afterErrorDelaySec * 1000, token);
continue;
}
if (e is RestartTimeoutException)
{
throw e;
}
if (e is RemoteException)
{
throw RemoteException.CreateNew(e as RemoteException);
}
throw new System.Exception("Cannot ignore this exception", e);
}
}
}
private bool CanIgnoreSuchException(System.Exception e, out string resultMarker)
{
foreach (var marker in ignorableSystemErrorMarkers)
{
var found = Util.EnumerateInnerExceptions(e).Find(
x => x.Message != null && x.Message.Contains(marker));
if (found != null)
{
resultMarker = marker;
return true;
}
}
resultMarker = null;
return false;
}
}
}

View File

@ -0,0 +1,101 @@
using System;
using System.Linq;
namespace Hcs.Client.Api.Request
{
internal static class RequestHelper
{
/// <summary>
/// Подготовка заголовка сообщения отправляемого в ГИС ЖКХ с обязательными атрибутами.
/// Заголовки могут быть разного типа для разных типов сообщений, но имена полей одинаковые.
/// </summary>
internal static THeader CreateHeader<THeader>(ClientBase client) where THeader : class
{
try
{
var instance = Activator.CreateInstance(typeof(THeader));
foreach (var prop in instance.GetType().GetProperties())
{
switch (prop.Name)
{
case "Item":
prop.SetValue(instance, client.OrgPPAGUID);
break;
case "ItemElementName":
prop.SetValue(instance, Enum.Parse(prop.PropertyType, "orgPPAGUID"));
break;
case "MessageGUID":
prop.SetValue(instance, Guid.NewGuid().ToString());
break;
case "Date":
prop.SetValue(instance, DateTime.Now);
break;
case "IsOperatorSignatureSpecified":
if (client.Role == OrganizationRole.RC || client.Role == OrganizationRole.RSO)
{
prop.SetValue(instance, true);
}
break;
case "IsOperatorSignature":
if (client.Role == OrganizationRole.RC || client.Role == OrganizationRole.RSO)
{
prop.SetValue(instance, true);
}
break;
}
}
return instance as THeader;
}
catch (ArgumentNullException e)
{
throw new ApplicationException($"Error occured while building request header: {e.Message}");
}
catch (SystemException e)
{
throw new ApplicationException($"Error occured while building request header: {e.GetBaseException().Message}");
}
}
/// <summary>
/// Для объекта запроса возвращает значение строки свойства version
/// </summary>
internal static string GetRequestVersionString(object requestObject)
{
if (requestObject == null)
{
return null;
}
var versionHost = requestObject;
if (versionHost != null)
{
var versionProperty = versionHost.GetType().GetProperties().FirstOrDefault(x => x.Name == "version");
if (versionProperty != null)
{
return versionProperty.GetValue(versionHost) as string;
}
}
foreach (var field in requestObject.GetType().GetFields())
{
versionHost = field.GetValue(requestObject);
if (versionHost != null)
{
var versionProperty = versionHost.GetType().GetProperties().FirstOrDefault(x => x.Name == "version");
if (versionProperty != null)
{
return versionProperty.GetValue(versionHost) as string;
}
}
}
return null;
}
}
}

View File

@ -0,0 +1,172 @@
using Org.BouncyCastle.Asn1;
using System;
using System.Security.Cryptography.X509Certificates;
using System.Text;
namespace Hcs.Client.Api.Request
{
internal class X509Tools
{
private const string PRIVATE_KEY_USAGE_PERIOD = "2.5.29.16";
public static string GetFullnameWithExpirationDateStr(X509Certificate2 x509cert)
{
var (фамилия, имя, отчество) = GetFullname(x509cert);
return фамилия + " " + имя + " " + отчество +
" до " + GetNotAfterDate(x509cert).ToString("dd.MM.yyyy");
}
/// <summary>
/// Возвращает массив из трех строк, содержащих соответственно Фамилию, Имя и Отчество
/// полученных из данных сертификата. Если сертификат не содержит ФИО, то возвращается массив
/// из трех пустых строк. Это не точный метод определять имя, он предполагает, что
/// поля SN, G, CN содержат ФИО в определенном порядке, что правдоподобно но не обязательно.
/// </summary>
private static (string Фамилия, string Имя, string Отчество) GetFullname(X509Certificate2 x509cert)
{
string фам = "", имя = "", отч = "";
// Сначала ищем поля surname (SN) и given-name (G)
var sn = DecodeSubjectField(x509cert, "SN");
var g = DecodeSubjectField(x509cert, "G");
if (!string.IsNullOrEmpty(sn) && !string.IsNullOrEmpty(g))
{
фам = sn;
var gParts = g.Split(' ');
if (gParts != null && gParts.Length >= 1)
{
имя = gParts[0];
}
if (gParts != null && gParts.Length >= 2)
{
отч = gParts[1];
}
}
else
{
// Иначе берем три первых слова из common name (CN), игнорируя кавычки
var cn = DecodeSubjectField(x509cert, "CN");
if (!string.IsNullOrEmpty(cn))
{
cn = new StringBuilder(cn).Replace("\"", "").ToString();
char[] separators = [' ', ';'];
var cnParts = cn.Split(separators);
if (cnParts != null && cnParts.Length >= 1)
{
фам = cnParts[0];
}
if (cnParts != null && cnParts.Length >= 2)
{
имя = cnParts[1];
}
if (cnParts != null && cnParts.Length >= 3)
{
отч = cnParts[2];
}
}
}
return (фам, имя, отч);
}
/// <summary>
/// Возвращает значение поля с именем @subName включенного в различимое имя Subject
/// </summary>
private static string DecodeSubjectField(X509Certificate2 x509cert, string subName)
{
// Чтобы посмотреть все поля сертификата
//System.Diagnostics.Trace.WriteLine("x509decode = " + x509cert.SubjectName.Decode(
//X500DistinguishedNameFlags.UseNewLines));
// Декодируем различимое имя на отдельные строки через переводы строк для надежности разбора
var decoded = x509cert.SubjectName.Decode(X500DistinguishedNameFlags.UseNewLines);
char[] separators = ['\n', '\r'];
var parts = decoded.Split(separators, StringSplitOptions.RemoveEmptyEntries);
if (parts == null)
{
return null;
}
// Каждая часть начинается с имени и отделяется от значения символом равно
foreach (var part in parts)
{
if (part.Length <= subName.Length + 1)
{
continue;
}
if (part.StartsWith(subName) && part[subName.Length] == '=')
{
return part.Substring(subName.Length + 1);
}
}
return null;
}
/// <summary>
/// Возвращает дату окончания действия сертификата
/// </summary>
private static DateTime GetNotAfterDate(X509Certificate2 x509cert)
{
// Сначала пытаемся определить срок первичного ключа, а затем уже самого сертификата
var датаОкончания = GetPrivateKeyUsageEndDate(x509cert);
if (датаОкончания != null)
{
return (DateTime)датаОкончания;
}
return x509cert.NotAfter;
}
private static DateTime? GetPrivateKeyUsageEndDate(X509Certificate2 x509cert)
{
foreach (var ext in x509cert.Extensions)
{
if (ext.Oid.Value == PRIVATE_KEY_USAGE_PERIOD)
{
// Дата начала с индексом 0, дата окончания с индексом 1
return ParseAsn1Datetime(ext, 1);
}
}
return null;
}
/// <summary>
/// Разбирает значение типа дата из серии значений ASN1 присоединенных к расширению
/// </summary>
private static DateTime? ParseAsn1Datetime(X509Extension ext, int valueIndex)
{
try
{
var asnObject = (new Asn1InputStream(ext.RawData)).ReadObject();
if (asnObject == null)
{
return null;
}
var asnSequence = Asn1Sequence.GetInstance(asnObject);
if (asnSequence.Count <= valueIndex)
{
return null;
}
var asn = (Asn1TaggedObject)asnSequence[valueIndex];
var asnStr = Asn1OctetString.GetInstance(asn, false);
var s = Encoding.UTF8.GetString(asnStr.GetOctets());
var year = int.Parse(s.Substring(0, 4));
var month = int.Parse(s.Substring(4, 2));
var day = int.Parse(s.Substring(6, 2));
var hour = int.Parse(s.Substring(8, 2));
var minute = int.Parse(s.Substring(10, 2));
var second = int.Parse(s.Substring(12, 2));
return new DateTime(year, month, day, hour, minute, second);
}
catch (System.Exception)
{
return null;
}
}
}
}

View File

@ -0,0 +1,97 @@
using Hcs.Client.Internal;
using Hcs.Client.Logger;
using Hcs.Client.MessageCapturer;
using System.Security.Cryptography.X509Certificates;
namespace Hcs.Client
{
public abstract class ClientBase
{
/// <summary>
/// Идентификатор поставщика данных ГИС ЖКХ
/// </summary>
public string OrgPPAGUID { get; set; }
/// <summary>
/// Исполнитель/сотрудник ГИС ЖКХ, от которого будут регистрироваться ответы
/// </summary>
public string ExecutorGUID { get; set; }
/// <summary>
/// Признак, указывающий на то, что используется ли внешний туннель (stunnel)
/// </summary>
public bool UseTunnel { get; set; }
/// <summary>
/// Если true, то запросы будут выполняться на промышленном стенде, иначе - на тестовом
/// </summary>
public bool IsPPAK { get; set; }
/// <summary>
/// Роль
/// </summary>
public OrganizationRole Role { get; set; }
/// <summary>
/// Устанавливаемый пользователем приемник отладочных сообщений
/// </summary>
public ILogger Logger { get; set; }
/// <summary>
/// Устанавливаемый пользователем механизм перехвата содержимого отправляемых
/// и принимаемых пакетов
/// </summary>
public IMessageCapturer MessageCapturer { get; set; }
/// <summary>
/// Сертификат клиента для применения при формировании запросов
/// </summary>
internal X509Certificate2 Certificate { get; set; }
/// <summary>
/// Тип криптопровайдера, полученный из сертификата
/// </summary>
internal GostXades.CryptoProviderTypeEnum CryptoProviderType { get; set; }
internal GostCryptography.Base.ProviderType GostCryptoProviderType =>
(GostCryptography.Base.ProviderType)CryptoProviderType;
/// <summary>
/// Отпечаток сертификата
/// </summary>
internal string CertificateThumbprint { get; set; }
/// <summary>
/// Пароль доступа к сертификату
/// </summary>
internal string CertificatePassword { get; set; }
internal string ComposeEndpointUri(string endpointName)
{
if (UseTunnel)
{
return $"http://{Constants.URI_TUNNEL}/{endpointName}";
}
return IsPPAK
? $"https://{Constants.URI_PPAK}/{endpointName}"
: $"https://{Constants.URI_SIT_02}/{endpointName}";
}
/// <summary>
/// Пробует вывести сообщение в установленный приемник отладочных сообщений
/// </summary>
internal void TryLog(string message)
{
Logger?.WriteLine(message);
}
/// <summary>
/// Пробует отправить тело сообщения в установленный перехватчик
/// </summary>
internal void TryCaptureMessage(bool sent, string messageBody)
{
MessageCapturer?.CaptureMessage(sent, messageBody);
}
}
}

View File

@ -0,0 +1,81 @@
using GostCryptography.Base;
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
namespace Hcs.Client.Internal
{
internal static class CertificateHelper
{
internal static bool IsGostPrivateKey(this X509Certificate2 certificate)
{
try
{
if (certificate.HasPrivateKey)
{
var cspInfo = certificate.GetPrivateKeyInfo();
if (cspInfo.ProviderType == (int)ProviderType.CryptoPro ||
cspInfo.ProviderType == (int)ProviderType.VipNet ||
cspInfo.ProviderType == (int)ProviderType.CryptoPro_2012_512 ||
cspInfo.ProviderType == (int)ProviderType.CryptoPro_2012_1024)
{
return true;
}
else
{
return false;
}
}
return false;
}
catch
{
return false;
}
}
internal static GostXades.CryptoProviderTypeEnum GetProviderType(this X509Certificate2 certificate)
{
return (GostXades.CryptoProviderTypeEnum)GetProviderInfo(certificate).Item1;
}
internal static Tuple<int, string> GetProviderInfo(this X509Certificate2 certificate)
{
if (certificate.HasPrivateKey)
{
var cspInfo = certificate.GetPrivateKeyInfo();
return new Tuple<int, string>(cspInfo.ProviderType, cspInfo.ProviderName);
}
else
{
throw new Exception("Certificate has no private key");
}
}
internal static X509Certificate2 FindCertificate(Func<X509Certificate2, bool> predicate)
{
if (predicate == null)
{
throw new ArgumentException("Null subject predicate");
}
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
try
{
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
var collection = store.Certificates
.OfType<X509Certificate2>()
.Where(x => x.HasPrivateKey && x.IsGostPrivateKey());
var now = DateTime.Now;
return collection.First(
x => now >= x.NotBefore && now <= x.NotAfter && predicate(x));
}
finally
{
store.Close();
}
}
}
}

View File

@ -0,0 +1,25 @@
namespace Hcs.Client.Internal
{
internal static class Constants
{
/// <summary>
/// Имя XML-элемента в сообщении, которое будет подписываться в фильтре
/// отправки подписывающем XML
/// </summary>
internal const string SIGNED_XML_ELEMENT_ID = "signed-data-container";
/// <summary>
/// Если PIN сертификата не указан пользователем, применяется это значение
/// по умолчанию для сертификатов RuToken
/// </summary>
internal const string DEFAULT_CERTIFICATE_PIN = "12345678";
internal const string URI_PPAK = "api.dom.gosuslugi.ru";
internal const string URI_SIT_01 = "sit01.dom.test.gosuslugi.ru:10081";
internal const string URI_SIT_02 = "sit02.dom.test.gosuslugi.ru:10081";
internal const string URI_TUNNEL = "127.0.0.1:8080";
internal const string NAME_SIT = "sit";
internal const string PASSWORD_SIT = "xw{p&&Ee3b9r8?amJv*]";
}
}

View File

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Hcs.Client.Internal
{
internal static class Util
{
/// <summary>
/// Возвращает список все вложенных исключений для данного исключения
/// </summary>
internal static List<Exception> EnumerateInnerExceptions(Exception e)
{
var list = new List<Exception>();
WalkInnerExceptionsRecurse(e, list);
return list;
}
private static void WalkInnerExceptionsRecurse(Exception e, List<Exception> list)
{
if (e == null || list.Contains(e))
{
return;
}
list.Add(e);
WalkInnerExceptionsRecurse(e.InnerException, list);
if (e is AggregateException)
{
var aggregate = e as AggregateException;
foreach (var inner in aggregate.InnerExceptions)
{
WalkInnerExceptionsRecurse(inner, list);
}
}
}
internal static string FormatDate(DateTime date)
{
return date.ToString("yyyyMMdd");
}
internal static string FormatDate(DateTime? date)
{
return (date == null) ? string.Empty : FormatDate((DateTime)date);
}
/// <summary>
/// Преобразует массиб байтов в строку в формате binhex
/// </summary>
internal static string ConvertToHexString(byte[] ba)
{
var buf = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
{
buf.AppendFormat("{0:x2}", b);
}
return buf.ToString();
}
}
}

View File

@ -0,0 +1,10 @@
namespace Hcs.Client.Logger
{
/// <summary>
/// Интерфейс для механизма вывода отладочных сообщений для обработки вызывающей системой
/// </summary>
public interface ILogger
{
internal void WriteLine(string message);
}
}

View File

@ -0,0 +1,11 @@
namespace Hcs.Client.MessageCapturer
{
/// <summary>
/// Интерфейс для механизма захвата отправляемых и принимаемых
/// SOAP сообщений в ходе коммуникации с ГИС ЖКХ
/// </summary>
public interface IMessageCapturer
{
internal void CaptureMessage(bool sentOrReceived, string messageBody);
}
}

View File

@ -0,0 +1,20 @@
namespace Hcs.Client
{
public enum OrganizationRole
{
/// <summary>
/// УК/ТСЖ/ЖСК
/// </summary>
UK,
/// <summary>
/// Ресурсоснабжающая организация
/// </summary>
RSO,
/// <summary>
/// Расчетный центр
/// </summary>
RC
}
}

View File

@ -0,0 +1,47 @@
using GostCryptography.Gost_R3411;
using Hcs.Client.Api;
using Hcs.Client.Internal;
using System;
using System.Security.Cryptography.X509Certificates;
namespace Hcs.Client
{
/// <summary>
/// Универсальный клиент для вызова всех реализованных функций интеграции с ГИС ЖКХ
/// </summary>
public class UniClient : ClientBase
{
public NsiApi Nsi => new(this);
public void SetSigningCertificate(X509Certificate2 cert, string pin = null)
{
pin ??= Constants.DEFAULT_CERTIFICATE_PIN;
Certificate = cert ?? throw new ArgumentNullException("Certificate not specified");
CryptoProviderType = cert.GetProviderType();
CertificateThumbprint = cert.Thumbprint;
CertificatePassword = pin;
}
public X509Certificate2 FindCertificate(Func<X509Certificate2, bool> predicate)
{
return CertificateHelper.FindCertificate(predicate);
}
/// <summary>
/// Производит для потока хэш по алгоритму "ГОСТ Р 34.11-94" в строке binhex
/// </summary>
public string ComputeGost94Hash(System.IO.Stream stream)
{
// API HouseManagement указывает, что файлы приложенные к договору должны размещаться
// с AttachmentHASH по стандарту ГОСТ. Оказывается, ГИС ЖКХ требует применения устаревшего
// алгоритма ГОСТ Р 34.11-94 (соответствует `rhash --gost94-cryptopro file` в linux).
using var algorithm = new Gost_R3411_94_HashAlgorithm(GostCryptoProviderType);
var savedPosition = stream.Position;
stream.Position = 0;
var hashValue = Util.ConvertToHexString(algorithm.ComputeHash(stream));
stream.Position = savedPosition;
return hashValue;
}
}
}

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="AckRequest" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.AckRequest, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="ResultHeader" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.ResultHeader, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="exportDataProviderNsiItemResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.exportDataProviderNsiItemResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="exportDataProviderPagingNsiItemResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.exportDataProviderPagingNsiItemResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="getStateResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.getStateResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="getStateResult" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.getStateResult, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importAdditionalServicesResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importAdditionalServicesResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importBaseDecisionMSPResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importBaseDecisionMSPResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importCapitalRepairWorkResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importCapitalRepairWorkResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importCommunalInfrastructureSystemResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importCommunalInfrastructureSystemResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importGeneralNeedsMunicipalResourceResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importGeneralNeedsMunicipalResourceResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importMunicipalServicesResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importMunicipalServicesResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="importOrganizationWorksResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Hcs.Service.Async.Nsi.importOrganizationWorksResponse, Connected Services.Service.Async.Nsi.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<ReferenceGroup xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="f4a21708-33b4-4f0c-9c03-e28beb32f844" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
<ClientOptions>
<GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
<GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
<EnableDataBinding>true</EnableDataBinding>
<ExcludedTypes />
<ImportXmlTypes>false</ImportXmlTypes>
<GenerateInternalTypes>false</GenerateInternalTypes>
<GenerateMessageContracts>false</GenerateMessageContracts>
<NamespaceMappings />
<CollectionMappings />
<GenerateSerializableTypes>true</GenerateSerializableTypes>
<Serializer>Auto</Serializer>
<UseSerializerForFaults>true</UseSerializerForFaults>
<ReferenceAllAssemblies>true</ReferenceAllAssemblies>
<ReferencedAssemblies />
<ReferencedDataContractTypes />
<ServiceContractMappings />
</ClientOptions>
<MetadataSources>
<MetadataSource Address="C:\Users\kshkulev\Documents\hcs\Hcs.Client\HcsWsdlSources\wsdl_xsd_v.15.7.0.1\nsi\hcs-nsi-service-async.wsdl" Protocol="file" SourceId="1" />
</MetadataSources>
<Metadata>
<MetadataFile FileName="hcs-nsi-base.xsd" MetadataType="Schema" ID="691d44ed-7873-4bc4-b587-a9e3e01929f3" SourceId="1" SourceUrl="file:///C:/Users/kshkulev/Documents/hcs/Hcs.Client/HcsWsdlSources/wsdl_xsd_v.15.7.0.1/lib/hcs-nsi-base.xsd" />
<MetadataFile FileName="hcs-nsi-types.xsd" MetadataType="Schema" ID="59168c81-3173-48a6-aee7-d0649b246359" SourceId="1" SourceUrl="file:///C:/Users/kshkulev/Documents/hcs/Hcs.Client/HcsWsdlSources/wsdl_xsd_v.15.7.0.1/nsi/hcs-nsi-types.xsd" />
<MetadataFile FileName="hcs-base.xsd" MetadataType="Schema" ID="ddfc8524-4d67-431e-adaf-3ecf996cfde0" SourceId="1" SourceUrl="file:///C:/Users/kshkulev/Documents/hcs/Hcs.Client/HcsWsdlSources/wsdl_xsd_v.15.7.0.1/lib/hcs-base.xsd" />
<MetadataFile FileName="xmldsig-core-schema.xsd" MetadataType="Schema" ID="266ba34a-bf44-464f-8c41-c9428d8f408a" SourceId="1" SourceUrl="file:///C:/Users/kshkulev/Documents/hcs/Hcs.Client/HcsWsdlSources/wsdl_xsd_v.15.7.0.1/lib/xmldsig-core-schema.xsd" />
<MetadataFile FileName="hcs-nsi-service-async.wsdl" MetadataType="Wsdl" ID="a4fdf5e2-5239-47a1-abce-2e72b53db702" SourceId="1" SourceUrl="file:///C:/Users/kshkulev/Documents/hcs/Hcs.Client/HcsWsdlSources/wsdl_xsd_v.15.7.0.1/nsi/hcs-nsi-service-async.wsdl" />
</Metadata>
<Extensions>
<ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
<ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
</Extensions>
</ReferenceGroup>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configurationSnapshot xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
<behaviors />
<bindings>
<binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;NsiBindingAsync3&quot;&gt;&lt;security mode=&quot;Transport&quot; /&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="NsiBindingAsync3" />
<binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;NsiBindingAsync4&quot; /&gt;" bindingType="basicHttpBinding" name="NsiBindingAsync4" />
</bindings>
<endpoints>
<endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;NsiBindingAsync3&quot; contract=&quot;Service.Async.Nsi.NsiPortsTypeAsync&quot; name=&quot;NsiPortAsync2&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;NsiBindingAsync3&quot; contract=&quot;Service.Async.Nsi.NsiPortsTypeAsync&quot; name=&quot;NsiPortAsync2&quot; /&gt;" contractName="Service.Async.Nsi.NsiPortsTypeAsync" name="NsiPortAsync2" />
</endpoints>
</configurationSnapshot>

View File

@ -0,0 +1,310 @@
<?xml version="1.0" encoding="utf-8"?>
<SavedWcfConfigurationInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="9.1" CheckSum="FwtXbdalfBwooGTo247tGuhVgJ8qxJk8dSLVNR8CryE=">
<bindingConfigurations>
<bindingConfiguration bindingType="basicHttpBinding" name="NsiBindingAsync3">
<properties>
<property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>NsiBindingAsync3</serializedValue>
</property>
<property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>StrongWildcard</serializedValue>
</property>
<property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>65536</serializedValue>
</property>
<property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
</property>
<property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.Text.UTF8Encoding</serializedValue>
</property>
<property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Buffered</serializedValue>
</property>
<property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Text</serializedValue>
</property>
<property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
</property>
<property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Transport</serializedValue>
</property>
<property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
</property>
<property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>None</serializedValue>
</property>
<property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>None</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Never</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>TransportSelected</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>(Коллекция)</serializedValue>
</property>
<property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
</property>
<property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>UserName</serializedValue>
</property>
<property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Default</serializedValue>
</property>
</properties>
</bindingConfiguration>
<bindingConfiguration bindingType="basicHttpBinding" name="NsiBindingAsync4">
<properties>
<property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>NsiBindingAsync4</serializedValue>
</property>
<property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>StrongWildcard</serializedValue>
</property>
<property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>65536</serializedValue>
</property>
<property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
</property>
<property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>0</serializedValue>
</property>
<property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.Text.UTF8Encoding</serializedValue>
</property>
<property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Buffered</serializedValue>
</property>
<property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Text</serializedValue>
</property>
<property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
</property>
<property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>None</serializedValue>
</property>
<property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
</property>
<property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>None</serializedValue>
</property>
<property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>None</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Never</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>TransportSelected</serializedValue>
</property>
<property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>(Коллекция)</serializedValue>
</property>
<property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
</property>
<property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>UserName</serializedValue>
</property>
<property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Default</serializedValue>
</property>
</properties>
</bindingConfiguration>
</bindingConfigurations>
<endpoints>
<endpoint name="NsiPortAsync2" contract="Service.Async.Nsi.NsiPortsTypeAsync" bindingType="basicHttpBinding" address="https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync" bindingConfiguration="NsiBindingAsync3">
<properties>
<property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync</serializedValue>
</property>
<property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>basicHttpBinding</serializedValue>
</property>
<property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>NsiBindingAsync3</serializedValue>
</property>
<property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>Service.Async.Nsi.NsiPortsTypeAsync</serializedValue>
</property>
<property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
</property>
<property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>&lt;Header /&gt;</serializedValue>
</property>
<property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
</property>
<property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
</property>
<property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
</property>
<property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
</property>
<property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
</property>
<property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
</property>
<property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
</property>
<property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>My</serializedValue>
</property>
<property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>LocalMachine</serializedValue>
</property>
<property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>FindBySubjectDistinguishedName</serializedValue>
</property>
<property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>False</serializedValue>
</property>
<property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue>NsiPortAsync2</serializedValue>
</property>
<property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
<property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<serializedValue />
</property>
</properties>
</endpoint>
</endpoints>
</SavedWcfConfigurationInformation>

View File

@ -0,0 +1,862 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="http://dom.gosuslugi.ru/schema/integration/base/" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://dom.gosuslugi.ru/schema/integration/base/" version="13.1.10.2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#" />
<xs:simpleType name="String2000Type">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????? 2000 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="2000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String1500Type">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????? 1500 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="1500" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String300Type">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????? 300 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="300" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String255Type">
<xs:annotation>
<xs:documentation>?????????????????? ??????. ???????????? ???? ?????????? 255 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="255" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String100Type">
<xs:annotation>
<xs:documentation>?????????????????? ??????. ???????????? ???? ?????????? 100 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String250Type">
<xs:annotation>
<xs:documentation>?????????????????? ??????. ???????????? ???? ?????????? 250 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String500Type">
<xs:annotation>
<xs:documentation>?????????????????? ??????. ???????????? ???? ?????????? 500 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="String60Type">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????? 60 ????????????????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="60" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LongTextType">
<xs:annotation>
<xs:documentation>?????????????????? ???????? 2000</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="2000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonEmptyStringType">
<xs:annotation>
<xs:documentation>???????????????? ????????????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BaseType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ????????????-?????????????????? ?? ????????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" ref="ds:Signature" />
</xs:sequence>
<xs:attribute name="Id" />
</xs:complexType>
<xs:element name="RequestHeader">
<xs:annotation>
<xs:documentation>?????????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:HeaderType">
<xs:sequence>
<xs:choice>
<xs:element name="SenderID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ???????????????????? ????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="orgPPAGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ???????????????????????????????????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Citizen">
<xs:annotation>
<xs:documentation>???????????????????? ?? ???????????????????? ????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="CitizenPPAGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????? ????????, ?????????????????????????????????????? ?? ?????? ?????? </xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element minOccurs="0" name="SNILS">
<xs:annotation>
<xs:documentation>??????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{11}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="Document">
<xs:annotation>
<xs:documentation>????????????????, ???????????????????????????? ????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="DocumentType">
<xs:annotation>
<xs:documentation>?????? ??????????????????, ?????????????????????????????? ???????????????? (?????? ???95)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Code">
<xs:annotation>
<xs:documentation>?????? ???????????? ??????????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
<xs:pattern value="(A{0,1}\d{1,4}(\.)?)+" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="GUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ???????????? ?? ?????????????????????????????? ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="Name">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="tns:LongTextType">
<xs:maxLength value="1200" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Series">
<xs:annotation>
<xs:documentation>?????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="45" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Number">
<xs:annotation>
<xs:documentation>?????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="45" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element minOccurs="0" fixed="true" name="IsOperatorSignature" type="xs:boolean">
<xs:annotation>
<xs:documentation>???????????????????????? ?????????????? ?????????????????? ????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:ISCreator">
<xs:annotation>
<xs:documentation>???????????????? ???? ???????? ????, ?? ???????????????????????????? ?????????????? ???????? ???????????????????????? ???????????????????? (589/944/,??.164). ???????????? ?????? ???????????????? ???????????????????? ????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ISRequestHeader">
<xs:annotation>
<xs:documentation>?????????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:HeaderType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:ISCreator" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ResultHeader">
<xs:annotation>
<xs:documentation>?????????????????? ????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:HeaderType" />
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="ResultType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ???????????? ???? ???????????? ????????????????, ????????????????????????????, ???????????????? </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element name="TransportGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>???????????????????????? ??????????????????????????, ???????????????????????? ???????????????????? ????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="UpdateGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????? ?? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:sequence>
<xs:element name="GUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????? ?? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="UpdateDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="UniqueNumber" type="xs:string">
<xs:annotation>
<xs:documentation>???????????????????? ?????????? </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element maxOccurs="unbounded" name="CreateOrUpdateError" type="tns:ErrorMessageType" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HeaderType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Date" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ???????????????? ????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MessageGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="Attachment">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="AttachmentGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ???????????????????????? ????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="AttachmentType">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name">
<xs:annotation>
<xs:documentation>???????????????????????? ????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1024" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Description">
<xs:annotation>
<xs:documentation>???????????????? ????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="tns:Attachment" />
<xs:element minOccurs="0" name="AttachmentHASH">
<xs:annotation>
<xs:documentation>??????-?????? ???????????????? ???? ?????????????????? ???????? ?? binhex.
?????????????? ???????????????????? ?? ???????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AttachmentWODescriptionType">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name">
<xs:annotation>
<xs:documentation>???????????????????????? ????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1024" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="Description">
<xs:annotation>
<xs:documentation>???????????????? ????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
<xs:minLength value="0" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="tns:Attachment" />
<xs:element minOccurs="0" name="AttachmentHASH">
<xs:annotation>
<xs:documentation>??????-?????? ???????????????? ???? ?????????????????? ???????? ?? binhex</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SignedAttachmentType">
<xs:annotation>
<xs:documentation>?????????????? ??????, ?????????????????????? ???????????????? ?? ?????????????????????????? (detached) ??????????????????. ?? ???????????????? ?????? ??????, ?????????????????????? ?????? SignedAttachmentType, ?????????? ???????? ???????????????? ?????????????????????? ???? ???????????????????????? ?????????????????? ?????????????????? ?? ?????????? Signature (????. ???????????????? INT002039). </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Attachment" type="tns:AttachmentType">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" name="Signature" type="tns:AttachmentWODescriptionType">
<xs:annotation>
<xs:documentation>???????????????????????? (detached) ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="Fault">
<xs:annotation>
<xs:documentation>?????????????? Fault (?????? ?????????????????? Fault ?? ????????????????)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:annotation>
<xs:documentation>?????????????? ?????? ?????? fault-????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ErrorCode" type="xs:string" />
<xs:element minOccurs="0" name="ErrorMessage" type="xs:string" />
<xs:element minOccurs="0" name="StackTrace" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ErrorMessage" type="tns:ErrorMessageType">
<xs:annotation>
<xs:documentation>???????????????? ???????????? ?????????????????? ?????? ????????????-????????????????. ?????????????? ???? ??????????????????????. ???????????????? ?????? ??????????????????????????
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ErrorMessageType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ???????????? ???????????????? ?????? ????????????-????????????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ErrorCode" type="xs:string">
<xs:annotation>
<xs:documentation>?????? ????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Description" type="xs:string">
<xs:annotation>
<xs:documentation>???????????????? ????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="StackTrace" type="xs:string">
<xs:annotation>
<xs:documentation>StackTrace ?? ???????????? ?????????????????????????? ????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:attribute name="version" type="xs:string">
<xs:annotation>
<xs:documentation>???????????? ????????????????, ?????????????? ?? ?????????????? ???????????????????????????? ??????????????????????????</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:element name="AckRequest">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????? ???????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Ack">
<xs:annotation>
<xs:documentation>??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MessageGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????, ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequesterMessageGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????, ?????????????????????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStateRequest">
<xs:annotation>
<xs:documentation>???????????? ?????????????? ?????????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MessageGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????, ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRequestsStateRequest">
<xs:annotation>
<xs:documentation>???????????? ???????????? ???????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="10000" name="MessageGUIDList" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>???????????? ?????????????????????????????? ??????????????????, ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRequestsStateResult">
<xs:annotation>
<xs:documentation>?????????? ???? ???????????? ???????????? ???????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:BaseType">
<xs:sequence>
<xs:element maxOccurs="10000" name="MessageGUIDList" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>???????????? ?????????????????????????????? ??????????????????, ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="BaseAsyncResponseType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ???????????? ???? ???????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:BaseType">
<xs:sequence>
<xs:element name="RequestState" type="tns:AsyncRequestStateType">
<xs:annotation>
<xs:documentation>???????????? ??????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MessageGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????, ?????????????????????? ?????? ??????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="CommonResultType">
<xs:annotation>
<xs:documentation>?????????????????? ???????????????????? C_UD</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" name="GUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ??????????????????????/???????????????????? ????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="1" name="TransportGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>???????????????????????? ??????????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:sequence>
<xs:annotation>
<xs:documentation>???????????????? ?????????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:element minOccurs="0" name="UniqueNumber" type="xs:string">
<xs:annotation>
<xs:documentation>???????????????????? ???????????????????? ??????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="UpdateDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element maxOccurs="unbounded" name="Error">
<xs:annotation>
<xs:documentation>???????????????? ????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:ErrorMessageType" />
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AsyncRequestStateType">
<xs:annotation>
<xs:documentation>???????????? ?????????????????? ?????????????????? ?? ?????????????????????? ???????????? (1- ????????????????; 2 - ?? ??????????????????; 3- ????????????????????)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:byte">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
</xs:restriction>
</xs:simpleType>
<xs:element name="TransportGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>???????????????????????? ??????????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:simpleType name="GUIDType">
<xs:annotation>
<xs:documentation>GUID-??????.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}" />
</xs:restriction>
</xs:simpleType>
<xs:element name="ModificationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ?????????????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:simpleType name="YearType">
<xs:annotation>
<xs:documentation>??????, ?????????????????????? ??????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:short">
<xs:minInclusive value="1600" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MonthType">
<xs:annotation>
<xs:documentation>??????, ?????????????????????? ??????????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:int">
<xs:maxInclusive value="12" />
<xs:minInclusive value="1" />
</xs:restriction>
</xs:simpleType>
<xs:element name="Month" type="tns:MonthType">
<xs:annotation>
<xs:documentation>??????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Year">
<xs:annotation>
<xs:documentation>??????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:short">
<xs:minInclusive value="1920" />
<xs:maxInclusive value="2050" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:complexType name="YearMonth">
<xs:annotation>
<xs:documentation>???????????????????????? ?????????? ?????????????????????????? ????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:Year" />
<xs:element ref="tns:Month" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Period">
<xs:annotation>
<xs:documentation>?????????????????? ???????????? (?????? ???????? ??????????????????????)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="startDate" type="xs:date">
<xs:annotation>
<xs:documentation>???????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="endDate" type="xs:date">
<xs:annotation>
<xs:documentation>?????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PeriodOpen">
<xs:annotation>
<xs:documentation>???????????????? ?????????????????? ???????????? (???????? ??????????????????????????)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" name="startDate" type="xs:date">
<xs:annotation>
<xs:documentation>???????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="endDate" type="xs:date">
<xs:annotation>
<xs:documentation>?????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="VolumeType">
<xs:annotation>
<xs:documentation>?????? ????????????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="3" />
<xs:minInclusive value="0" />
<xs:totalDigits value="11" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RegionType">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????????? ???? (????????)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="code">
<xs:annotation>
<xs:documentation>?????? ?????????????? (????????)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="name">
<xs:annotation>
<xs:documentation>???????????? ????????????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="OKTMORefType">
<xs:annotation>
<xs:documentation>???????????? ???? ??????????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="code">
<xs:annotation>
<xs:documentation>?????? ???? ??????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="11" />
<xs:pattern value="\d{11}|\d{8}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="name">
<xs:annotation>
<xs:documentation>???????????? ????????????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OKEIType">
<xs:restriction base="xs:string">
<xs:pattern value="A{0,1}\d{3,4}" />
</xs:restriction>
</xs:simpleType>
<xs:element name="OKEI" type="tns:OKEIType">
<xs:annotation>
<xs:documentation>?????? ????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="orgPPAGUID" type="tns:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ???????????????????????????????????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="DocumentPortalType">
<xs:annotation>
<xs:documentation>?????????????? ?????? ?????????????????? ????</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name">
<xs:annotation>
<xs:documentation>???????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="DocNumber">
<xs:annotation>
<xs:documentation>?????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ApproveDate" type="xs:date">
<xs:annotation>
<xs:documentation>???????? ???????????????? ?????????????????? ?????????????? ????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Attachment" type="tns:AttachmentType">
<xs:annotation>
<xs:documentation>????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="ISCreator">
<xs:annotation>
<xs:documentation>???????????????? ???? ???????? ????, ?? ???????????????????????????? ?????????????? ???????? ???????????????????????? ???????????????????? (589/944/,??.164)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ISName" type="tns:String255Type">
<xs:annotation>
<xs:documentation>???????????????????????? ????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ISOperatorName" type="tns:String255Type">
<xs:annotation>
<xs:documentation>???????????????????????? ?????????????????? ????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="OKTMOType">
<xs:annotation>
<xs:documentation>?????? ???? ??????????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="11" />
<xs:pattern value="\d{11}|\d{8}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OKTMOImportType">
<xs:annotation>
<xs:documentation>?????? ???? ??????????</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="8" />
<xs:pattern value="\d{8}" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,427 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:base="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:tns="http://dom.gosuslugi.ru/schema/integration/nsi-base/" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://dom.gosuslugi.ru/schema/integration/nsi-base/" version="11.2.1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="hcs-base.xsd" namespace="http://dom.gosuslugi.ru/schema/integration/base/" />
<xs:simpleType name="nsiCodeType">
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
<xs:pattern value="(A{0,1}\d{1,4}(\.)?)+" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="nsiRef">
<xs:annotation>
<xs:documentation>Ссылка на справочник</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Code" type="tns:nsiCodeType">
<xs:annotation>
<xs:documentation>Код записи справочника</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GUID" type="base:GUIDType">
<xs:annotation>
<xs:documentation>Идентификатор записи в соответствующем справочнике ГИС ЖКХ</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="Name">
<xs:annotation>
<xs:documentation>Значение</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="base:LongTextType">
<xs:maxLength value="1200" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="NsiItemNameType">
<xs:annotation>
<xs:documentation>Скалярный тип. Наименование справочника. Строка не более 200 символов.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="2500" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NsiItemRegistryNumberType">
<xs:annotation>
<xs:documentation>Скалярный тип. Реестровый номер справочника. Код не более 10 символов.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="10" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="NsiItemInfoType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование, дата и время последнего изменения справочника.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="RegistryNumber" type="tns:NsiItemRegistryNumberType">
<xs:annotation>
<xs:documentation>Реестровый номер справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Name" type="tns:NsiItemNameType">
<xs:annotation>
<xs:documentation>Наименование справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Modified" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата и время последнего изменения справочника.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NsiListType">
<xs:annotation>
<xs:documentation>Перечень справочников с датой последнего изменения каждого из них.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Created" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата и время формирования перечня справочников.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" name="NsiItemInfo" type="tns:NsiItemInfoType">
<xs:annotation>
<xs:documentation>Наименование, дата и время последнего изменения справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="tns:ListGroup" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NsiItemType">
<xs:annotation>
<xs:documentation>Данные справочника.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="NsiItemRegistryNumber" type="tns:NsiItemRegistryNumberType">
<xs:annotation>
<xs:documentation>Реестровый номер справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Created" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата и время формирования данных справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" name="NsiElement" type="tns:NsiElementType">
<xs:annotation>
<xs:documentation>Элемент справочника верхнего уровня.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NsiElementType">
<xs:annotation>
<xs:documentation>Составной тип. Элемент справочника.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Code" type="tns:nsiCodeType">
<xs:annotation>
<xs:documentation>Код элемента справочника, уникальный в пределах справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GUID" type="base:GUIDType">
<xs:annotation>
<xs:documentation>Глобально-уникальный идентификатор элемента справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element name="Modified" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата и время последнего изменения элемента справочника (в том числе создания).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="StartDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата начала действия значения</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="EndDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Дата окончания действия значения</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:choice>
<xs:element name="IsActual" type="xs:boolean">
<xs:annotation>
<xs:documentation>Признак актуальности элемента справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="NsiElementField" type="tns:NsiElementFieldType">
<xs:annotation>
<xs:documentation>Наименование и значение поля для элемента справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ChildElement" type="tns:NsiElementType">
<xs:annotation>
<xs:documentation>Дочерний элемент.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NsiElementFieldType" abstract="true">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля для элемента справочника. Абстрактный тип.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name" type="tns:FieldNameType">
<xs:annotation>
<xs:documentation>Наименование поля элемента справочника.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NsiElementStringFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Строка" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Value" type="xs:string">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Строка".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementBooleanFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Да/Нет" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Value" type="xs:boolean">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Да/Нет".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementFloatFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Вещественное" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Value" type="xs:float">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Вещественное".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementDateFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Дата" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Value" type="xs:date">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Дата".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementIntegerFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Целое число" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Value" type="xs:integer">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Целое число".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementEnumFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Перечислимый" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Position">
<xs:annotation>
<xs:documentation>Запись элемента справочника типа "Перечислимый".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="GUID">
<xs:annotation>
<xs:documentation>Код поля элемента справочника типа "Перечислимый".</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Value" type="xs:string">
<xs:annotation>
<xs:documentation>Значение поля элемента справочника типа "Перечислимый".</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementNsiFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Ссылка на справочник" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="NsiRef">
<xs:annotation>
<xs:documentation>Ссылка на справочник.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="NsiItemRegistryNumber" type="tns:NsiItemRegistryNumberType">
<xs:annotation>
<xs:documentation>Реестровый номер справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="tns:ListGroup" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementNsiRefFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Ссылка на элемент внутреннего справочника" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="NsiRef">
<xs:annotation>
<xs:documentation>Ссылка на элемент внутреннего справочника.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="NsiItemRegistryNumber" type="tns:NsiItemRegistryNumberType">
<xs:annotation>
<xs:documentation>Реестровый номер справочника.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Ref" type="tns:nsiRef">
<xs:annotation>
<xs:documentation>Ссылка на элемент справочника.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementOkeiRefFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Ссылка на элемент справочника ОКЕИ" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="Code" type="tns:nsiCodeType">
<xs:annotation>
<xs:documentation>Код единицы измерения по справочнику ОКЕИ.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementFiasAddressRefFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля типа "Ссылка на элемент справочника ФИАС" для элемента справочника.</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element minOccurs="0" name="NsiRef">
<xs:annotation>
<xs:documentation>Ссылка на элемент справочника ФИАС.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Guid" type="xs:string">
<xs:annotation>
<xs:documentation>Идентификационный код позиции в справочнике ФИАС.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="aoGuid" type="xs:string">
<xs:annotation>
<xs:documentation>Глобально-уникальный идентификатор адресного объекта в справочнике ФИАС.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NsiElementAttachmentFieldType">
<xs:annotation>
<xs:documentation>Составной тип. Наименование и значение поля "Вложение"</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="false">
<xs:extension base="tns:NsiElementFieldType">
<xs:sequence>
<xs:element name="Document" type="base:AttachmentType">
<xs:annotation>
<xs:documentation>Документ</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="FieldNameType">
<xs:annotation>
<xs:documentation>Скалярный тип. Наименование поля элемента справочника. Строка не более 200 символов.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="200" />
</xs:restriction>
</xs:simpleType>
<xs:element name="ListGroup">
<xs:annotation>
<xs:documentation>Группа справочника:
NSI - (по умолчанию) общесистемный
NSIRAO - ОЖФ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="NSI" />
<xs:enumeration value="NSIRAO" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:nsi="http://dom.gosuslugi.ru/schema/integration/nsi/" xmlns:ns="http://www.w3.org/2000/09/xmldsig#" xmlns:base="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://dom.gosuslugi.ru/schema/integration/nsi-base/" xmlns:tns="http://dom.gosuslugi.ru/schema/integration/nsi-service-async/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dom.gosuslugi.ru/schema/integration/nsi-service-async/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="12.2.2.1">
<xs:import schemaLocation="../lib/hcs-base.xsd" namespace="http://dom.gosuslugi.ru/schema/integration/base/" />
<xs:import schemaLocation="hcs-nsi-types.xsd" namespace="http://dom.gosuslugi.ru/schema/integration/nsi/" />
</xs:schema>
</wsdl:types>
<wsdl:message name="Fault">
<wsdl:part name="Fault" element="base:Fault" />
</wsdl:message>
<wsdl:message name="importAdditionalServicesRequest">
<wsdl:part name="importAdditionalServicesRequest" element="nsi:importAdditionalServicesRequest" />
</wsdl:message>
<wsdl:message name="importAdditionalServicesResult">
<wsdl:part name="importAdditionalServicesResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importMunicipalServicesRequest">
<wsdl:part name="importMunicipalServicesRequest" element="nsi:importMunicipalServicesRequest" />
</wsdl:message>
<wsdl:message name="importMunicipalServicesResult">
<wsdl:part name="importMunicipalServicesResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importOrganizationWorksRequest">
<wsdl:part name="importOrganizationWorksRequest" element="nsi:importOrganizationWorksRequest" />
</wsdl:message>
<wsdl:message name="importOrganizationWorksResult">
<wsdl:part name="importOrganizationWorksResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importCommunalInfrastructureSystemRequest">
<wsdl:part name="importCommunalInfrastructureSystemRequest" element="nsi:importCommunalInfrastructureSystemRequest" />
</wsdl:message>
<wsdl:message name="importCommunalInfrastructureSystemResult">
<wsdl:part name="importCommunalInfrastructureRequest" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="RequestHeader">
<wsdl:part name="Header" element="base:RequestHeader" />
</wsdl:message>
<wsdl:message name="ResultHeader">
<wsdl:part name="Header" element="base:ResultHeader" />
</wsdl:message>
<wsdl:message name="getStateRequest">
<wsdl:part name="getStateRequest" element="base:getStateRequest" />
</wsdl:message>
<wsdl:message name="getStateResult">
<wsdl:part name="getStateResult" element="nsi:getStateResult" />
</wsdl:message>
<wsdl:message name="exportDataProviderNsiItemRequest">
<wsdl:part name="exportDataProviderNsiItemRequest" element="nsi:exportDataProviderNsiItemRequest" />
</wsdl:message>
<wsdl:message name="exportDataProviderNsiItemResult">
<wsdl:part name="AckRequest" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="exportDataProviderNsiPagingItemRequest">
<wsdl:part name="exportDataProviderNsiPagingItemRequest" element="nsi:exportDataProviderNsiPagingItemRequest" />
</wsdl:message>
<wsdl:message name="exportDataProviderNsiPagingItemResult">
<wsdl:part name="AckRequest" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importCapitalRepairWorkRequest">
<wsdl:part name="importCapitalRepairWorkRequest" element="nsi:importCapitalRepairWorkRequest" />
</wsdl:message>
<wsdl:message name="importCapitalRepairWorkResult">
<wsdl:part name="importCapitalRepairWorkResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importBaseDecisionMSPRequest">
<wsdl:part name="importBaseDecisionMSPRequest" element="nsi:importBaseDecisionMSPRequest" />
</wsdl:message>
<wsdl:message name="importBaseDecisionMSPResult">
<wsdl:part name="importBaseDecisionMSPResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:message name="importGeneralNeedsMunicipalResourceRequest">
<wsdl:part name="importGeneralNeedsMunicipalResourceRequest" element="nsi:importGeneralNeedsMunicipalResourceRequest" />
</wsdl:message>
<wsdl:message name="importGeneralNeedsMunicipalResourceResult">
<wsdl:part name="importGeneralNeedsMunicipalResourceResult" element="base:AckRequest" />
</wsdl:message>
<wsdl:portType name="NsiPortsTypeAsync">
<wsdl:operation name="importAdditionalServices">
<wsdl:documentation>ВИ_НСИ_ИДС_1. Импортировать данные справочника 1 "Дополнительные услуги".</wsdl:documentation>
<wsdl:input message="tns:importAdditionalServicesRequest" />
<wsdl:output message="tns:importAdditionalServicesResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importMunicipalServices">
<wsdl:documentation>ВИ_НСИ_ИДС_51. Импортировать данные справочника 51 "Коммунальные услуги".</wsdl:documentation>
<wsdl:input message="tns:importMunicipalServicesRequest" />
<wsdl:output message="tns:importMunicipalServicesResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importOrganizationWorks">
<wsdl:documentation>ВИ_НСИ_ИДС_59. Импортировать данные справочника 59 "Работы и услуги организации".</wsdl:documentation>
<wsdl:input message="tns:importOrganizationWorksRequest" />
<wsdl:output message="tns:importOrganizationWorksResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importCommunalInfrastructureSystem">
<wsdl:documentation>ВИ_НСИ_ИДС_272. Импортировать данные справочника 272 "Система коммунальной инфраструктуры".</wsdl:documentation>
<wsdl:input message="tns:importCommunalInfrastructureSystemRequest" />
<wsdl:output message="tns:importCommunalInfrastructureSystemResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="getState">
<wsdl:input message="tns:getStateRequest" />
<wsdl:output message="tns:getStateResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="exportDataProviderNsiItem">
<wsdl:documentation>Экспортировать данные справочников поставщика информации </wsdl:documentation>
<wsdl:input message="tns:exportDataProviderNsiItemRequest" />
<wsdl:output message="tns:exportDataProviderNsiItemResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="exportDataProviderPagingNsiItem">
<wsdl:documentation>Экспортировать данные справочников поставщика информации постранично </wsdl:documentation>
<wsdl:input message="tns:exportDataProviderNsiPagingItemRequest" />
<wsdl:output message="tns:exportDataProviderNsiPagingItemResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importCapitalRepairWork">
<wsdl:documentation>ВИ_НСИ_ИДС_219. Импортировать данные справочника 219 "Вид работ капитального ремонта".</wsdl:documentation>
<wsdl:input message="tns:importCapitalRepairWorkRequest" />
<wsdl:output message="tns:importCapitalRepairWorkResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importBaseDecisionMSP">
<wsdl:documentation>ВИ_НСИ_ИДС_302. Импортировать данные справочника 302 "Основание принятия решения о мерах социальной поддержки гражданина"</wsdl:documentation>
<wsdl:input message="tns:importBaseDecisionMSPRequest" />
<wsdl:output message="tns:importBaseDecisionMSPResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
<wsdl:operation name="importGeneralNeedsMunicipalResource">
<wsdl:documentation>Импортировать данные справочника 337 "Коммунальные ресурсы, потребляемые при использовании и содержании общего имущества в многоквартирном доме"</wsdl:documentation>
<wsdl:input message="tns:importGeneralNeedsMunicipalResourceRequest" />
<wsdl:output message="tns:importGeneralNeedsMunicipalResourceResult" />
<wsdl:fault name="InvalidRequest" message="tns:Fault" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="NsiBindingAsync" type="tns:NsiPortsTypeAsync">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="importAdditionalServices">
<wsdl:documentation>ВИ_НСИ_ИДС_1. Импортировать данные справочника 1 "Дополнительные услуги".</wsdl:documentation>
<soap:operation soapAction="urn:importAdditionalServices" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importMunicipalServices">
<wsdl:documentation>ВИ_НСИ_ИДС_51. Импортировать данные справочника 51 "Коммунальные услуги".</wsdl:documentation>
<soap:operation soapAction="urn:importMunicipalServices" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importOrganizationWorks">
<wsdl:documentation>ВИ_НСИ_ИДС_59. Импортировать данные справочника 59 "Работы и услуги организации".</wsdl:documentation>
<soap:operation soapAction="urn:importOrganizationWorks" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importCommunalInfrastructureSystem">
<wsdl:documentation>ВИ_НСИ_ИДС_272. Импортировать данные справочника 272 "Система коммунальной инфраструктуры".</wsdl:documentation>
<soap:operation soapAction="urn:importCommunalInfrastructureSystem" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getState">
<soap:operation soapAction="urn:getState" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="exportDataProviderNsiItem">
<soap:operation soapAction="urn:exportDataProviderNsiItem" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="exportDataProviderPagingNsiItem">
<soap:operation soapAction="urn:exportDataProviderPagingNsiItem" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importCapitalRepairWork">
<wsdl:documentation>ВИ_НСИ_ИДС_219. Импортировать данные справочника 219 "Вид работ капитального ремонта".</wsdl:documentation>
<soap:operation soapAction="urn:importCapitalRepairWork" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importBaseDecisionMSP">
<wsdl:documentation>ВИ_НСИ_ИДС_302. Импортировать данные справочника 302 "Основание принятия решения о мерах социальной поддержки гражданина"</wsdl:documentation>
<soap:operation soapAction="urn:importBaseDecisionMSP" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="importGeneralNeedsMunicipalResource">
<soap:operation soapAction="urn:importGeneralNeedsMunicipalResource" />
<wsdl:input>
<soap:body use="literal" />
<soap:header message="tns:RequestHeader" part="Header" use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:ResultHeader" part="Header" use="literal" />
</wsdl:output>
<wsdl:fault name="InvalidRequest">
<soap:fault use="literal" name="InvalidRequest" namespace="" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="NsiServiceAsync">
<wsdl:documentation>Асинхронный сервис экспорта общих справочников подсистемы НСИ</wsdl:documentation>
<wsdl:port name="NsiPortAsync" binding="tns:NsiBindingAsync">
<soap:address location="https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -0,0 +1,854 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:nsi-base="http://dom.gosuslugi.ru/schema/integration/nsi-base/" xmlns:tns="http://dom.gosuslugi.ru/schema/integration/nsi/" xmlns:base="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://dom.gosuslugi.ru/schema/integration/nsi/" version="13.0.0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="../lib/hcs-base.xsd" namespace="http://dom.gosuslugi.ru/schema/integration/base/" />
<xs:import schemaLocation="../lib/hcs-nsi-base.xsd" namespace="http://dom.gosuslugi.ru/schema/integration/nsi-base/" />
<xs:element name="importAdditionalServicesRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 1 "???????????????????????????? ????????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportAdditionalServiceType">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????? ???????????????????????????? ????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="AdditionalServiceTypeName" type="base:String100Type">
<xs:annotation>
<xs:documentation>???????????????????????? ???????? ???????????????????????????? ????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element ref="base:OKEI">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????? ???? ?????????????????????? ????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="StringDimensionUnit">
<xs:annotation>
<xs:documentation>(???????????????? ?????????? ???? ????????????????????????????)
???????????? ?????????????? ??????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="base:String100Type">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverAdditionalServiceType">
<xs:annotation>
<xs:documentation>???????????????????????????? ???????? ???????????????????????????? ????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????? ?????????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteAdditionalServiceType">
<xs:annotation>
<xs:documentation>???????????????? ???????? ???????????????????????????? ????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="10.0.1.2" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="importAdditionalServicesRequest_TransportGUIDKey">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="importAdditionalServicesRequest_ElementGuidKey">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:element name="importMunicipalServicesRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 51 "???????????????????????? ????????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportMainMunicipalService">
<xs:annotation>
<xs:documentation>?????????????? 2. ????????????????/?????????????????? ?????????????? ???????????????????????? ????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="MunicipalServiceRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "?????? ???????????????????????? ????????????" (???????????????????? ?????????? 3).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" fixed="true" name="GeneralNeeds" type="xs:boolean">
<xs:annotation>
<xs:documentation>(???? ????????????????????????) ?????????????? "???????????? ?????????????????????????????? ???? ?????????????????????? ??????????"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="SelfProduced" type="xs:boolean">
<xs:annotation>
<xs:documentation>(???? ????????????????????????) ?????????????? "?????????????????????????????? ???????????????????????? ???????????????????????? ????????????"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MainMunicipalServiceName" type="base:String100Type">
<xs:annotation>
<xs:documentation>???????????????????????? ?????????????? ???????????????????????? ????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" name="MunicipalResourceRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "?????? ?????????????????????????? ??????????????" (???????????????????? ?????????? 2)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" ref="base:OKEI">
<xs:annotation>
<xs:documentation>(???? ????????????????????????)
???????????????? ?????????????????? ???? ?????????????????????? ????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element name="SortOrder">
<xs:annotation>
<xs:documentation>?????????????? ????????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="3" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element fixed="true" name="SortOrderNotDefined" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????? ???????????????????? ???? ??????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverMainMunicipalService">
<xs:annotation>
<xs:documentation>?????????????? 2. ???????????????????????????? ?????????????? ???????????????????????? ???????????? (??????????).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????? ?????????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" fixed="true" name="HierarchyRecover" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????? ???????????????????????????? ???????? ???????????????? ??????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteMainMunicipalService">
<xs:annotation>
<xs:documentation>?????????????? 2. ???????????????? ?????????????? ???????????????????????? ???????????? (??????????).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="11.0.0.4" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="importMunicipalServicesRequest_TransportGUIDKey">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="importMunicipalServicesRequest_ElementGuidKey">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:element name="importGeneralNeedsMunicipalResourceRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 337 "???????????????????????? ??????????????, ???????????????????????? ?????? ?????????????????????????? ?? ???????????????????? ???????????? ?????????????????? ?? ?????????????????????????????? ????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:choice>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="TopLevelMunicipalResource">
<xs:annotation>
<xs:documentation>?????? ?????????????? 2-???? ???????????? ???????????????? ?????????????? ???? ?????????????????????? ????????????. ?????????????????? ???????????? 1-???? ???????????? ???????????????? ?????????????????????? ???????? ?????????????????????? ?? ???? ?????????????????????? ????????????????/??????????????, ???????????? ?????? ???????????????????????? ???????????????????? ?????????????? ???????????? ???? ?????????????????????? "?????? ?????????????????????????? ??????????????" (???? ???????????????? ParentCode). ?? ???????????? ???? ???????????? ???????????? ?? ?????????????????? TransportGuid ???????????????????????? GUID ????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ParentCode">
<xs:annotation>
<xs:documentation>?????? ???????????????????????? ???????????? ???????????????? ????????????. ?????????? ????????:
1 - ???????????????? ????????
2 - ?????????????? ????????
3 - ?????????????????????????? ??????????????
8 - ?????????????? ????????</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="8" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" maxOccurs="1000" name="ImportGeneralMunicipalResource">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????????????? ?????????????????????????? ?????????????? (??????????)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tns:importGeneralNeedsMunicipalResourceType" />
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverGeneralMunicipalResource">
<xs:annotation>
<xs:documentation>???????????????????????????? ???????????????? ?????????????????????????? ?????????????? (??????????).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????? ?????????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteGeneralMunicipalResource">
<xs:annotation>
<xs:documentation>???????????????? ???????????????? ?????????????????????????? ?????????????? (??????????).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:choice>
<xs:attribute fixed="12.2.2.1" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="importGeneralNeedsMunicipalResourceRequest_TransportGUIDKey">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="importGeneralNeedsMunicipalResourceRequest_ElementGuidKey">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:complexType name="importGeneralNeedsMunicipalResourceType">
<xs:annotation>
<xs:documentation>?????? ?????????????? ?????????????????????? 337 "???????????????????????? ??????????????, ???????????????????????? ?????? ?????????????????????????? ?? ???????????????????? ???????????? ?????????????????? ?? ?????????????????????????????? ????????".</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ?????????????????????? 2-???? ???????????? ???????????????? ?? ????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GeneralMunicipalResourceName" type="base:String255Type">
<xs:annotation>
<xs:documentation>???????????????????????? ???????????????? ?????????????????????????? ??????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MunicipalResourceRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>?????? ?????????????????????????? ?????????????? (?????? ???2 "?????? ?????????????????????????? ??????????????").</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="base:OKEI">
<xs:annotation>
<xs:documentation>(???? ????????????????????????)
???????????????? ?????????????????? ???? ?????????????????????? ????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element name="SortOrder">
<xs:annotation>
<xs:documentation>?????????????? ????????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="3" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element fixed="true" name="SortOrderNotDefined" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????? ???????????????????? ???? ??????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="importOrganizationWorksRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 59 "???????????? ?? ???????????? ??????????????????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportOrganizationWork" type="tns:ImportOrganizationWorkType">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????????????? ?????????????????????? ?????????? ?? ??????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverOrganizationWork">
<xs:annotation>
<xs:documentation>???????????????????????????? ?????????????? (??????????) ?????????????????????? ?????????? ?? ?????????? ??????????????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????? ?????????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" fixed="true" name="HierarchyRecover" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????? ???????????????????????????? ???????? ???????????????? ??????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteOrganizationWork">
<xs:annotation>
<xs:documentation>???????????????? ???????????????? (??????????) ?????????????????????? ?????????? ?? ?????????? ??????????????????????.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="10.0.1.2" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="importOrganizationWorksRequest_TransportGUIDKey">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="importOrganizationWorksRequest_ElementGuidKey">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:complexType name="ImportOrganizationWorkType">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????????? ?????????? ?? ?????????? ??????????????????????.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:choice minOccurs="0">
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element fixed="true" name="InsertInCopiedWorks" type="xs:boolean">
<xs:annotation>
<xs:documentation>???????????????? ?? ???????????? ?????????? 0 - "???????????? (????????????), ?????????????????????????? ???? ?????????????????????? ???????????? ??????????????????????", ?????????????????????? ?????? ????????????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:element name="WorkName" type="base:String500Type">
<xs:annotation>
<xs:documentation>???????????????? ????????????/????????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceTypeRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "?????? ??????????" (???????????????????? ?????????? 56).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" name="RequiredServiceRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "???????????????????????? ????????????, ???????????????????????????? ???????????????????? ???????????????????? ??????" (???????????????????? ?????????? 67).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element ref="base:OKEI">
<xs:annotation>
<xs:documentation>???????????????? ?????????????????? ???? ?????????????????????? ????????.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="StringDimensionUnit" type="base:String100Type">
<xs:annotation>
<xs:documentation>?????????????? ???? ?????????????????????????? ????????????????????????. ???????????? ???????? ?????????????? ???????????????????????? ?????????????? base:OKEI</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportOrganizationWork" type="tns:ImportOrganizationWorkType">
<xs:annotation>
<xs:documentation>???????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="importCapitalRepairWorkRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 219 "?????? ?????????? ???????????????????????? ??????????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportCapitalRepairWork" type="tns:ImportCapitalRepairWorkType">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????????????? ?????????????????????? ???????? ?????????? ???????????????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverCapitalRepairWork">
<xs:annotation>
<xs:documentation>???????????????????????????? ???????????????? ?????????????????????? ???????? ?????????? ???????????????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteCapitalRepairWork">
<xs:annotation>
<xs:documentation>???????????????? ???????????????? ?????????????????????? ???????? ?????????? ???????????????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="11.1.0.5" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="ElementGuid_CR_Unique">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
<xs:key name="TransportGUID_Unique">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:complexType name="ImportCapitalRepairWorkType">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????????? ???????? ?????????? ???????????????????????? ??????????????.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="ServiceName" type="base:String500Type">
<xs:annotation>
<xs:documentation>???????????????????????? ???????? ??????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="WorkGroupRef" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "???????????? ??????????" (???????????????????? ?????????? 218).</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="importCommunalInfrastructureSystemRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 272 "?????????????? ???????????????????????? ????????????????????????????"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportCommunalInfrastructureSystem" type="tns:importCommunalInfrastructureSystemType">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????????????? ?????????????????????? ???????????????????????? ????????????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverCommunalInfrastructureSystem">
<xs:annotation>
<xs:documentation>???????????????????????????? ???????????????? ?????????????????????? ???????????????????????? ????????????????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteCommunalInfrastructureSystem">
<xs:annotation>
<xs:documentation>???????????????? ???????????????? ?????????????????????? ???????????????????????? ????????????????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="11.5.0.2" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="TransportGuid_CIS_Unique">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="ElementGuid_CIS_Unique">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:complexType name="importCommunalInfrastructureSystemType">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????????? "?????????????? ???????????????????????? ????????????????????????????"</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="SystemName" type="base:String500Type">
<xs:annotation>
<xs:documentation>???????????????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CommunalSystemInfrastructureType" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? 42
?????? ?????????????? ???????????????????????? ????????????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="importBaseDecisionMSPRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ???????????? ???????????? ?????????????????????? 302 "?????????????????? ???????????????? ?????????????? ?? ?????????? ???????????????????? ?????????????????? ????????????????????".</xs:documentation>
<xs:documentation>?????????? ???????????????? ?????????????? ?? ?????????? ???????????????????? ?????????????????? ????????????????????".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="ImportBaseDecisionMSP" type="tns:importBaseDecisionMSPType">
<xs:annotation>
<xs:documentation>????????????????/?????????????????? ???????????????? ?????????????????????? ?????????????????? ???????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="RecoverBaseDecisionMSP">
<xs:annotation>
<xs:documentation>???????????????????????????? ???????????????? ?????????????????????? ?????????????????? ???????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1000" name="DeleteBaseDecisionMSP">
<xs:annotation>
<xs:documentation>???????????????? ???????????????? ?????????????????????? ?????????????????? ???????????????? ??????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="11.1.0.5" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:key name="TransportGuid_Unique">
<xs:selector xpath=".//base:TransportGUID" />
<xs:field xpath="." />
</xs:key>
<xs:key name="ElementGuid_BDMS_Unique">
<xs:selector xpath=".//tns:ElementGuid" />
<xs:field xpath="." />
</xs:key>
</xs:element>
<xs:complexType name="importBaseDecisionMSPType">
<xs:annotation>
<xs:documentation>?????????????? ?????????????????????? ?????????????????? ???????????????? ??????????????.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:sequence>
<xs:element ref="base:TransportGUID" />
<xs:element minOccurs="0" name="ElementGuid" type="base:GUIDType">
<xs:annotation>
<xs:documentation>?????????????????????????? ?????????????????????????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="DecisionName" type="base:String500Type">
<xs:annotation>
<xs:documentation>???????????????????????? ?????????????????? ???????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DecisionType" type="nsi-base:nsiRef">
<xs:annotation>
<xs:documentation>???????????? ???? ?????? "?????? ?????????????? ?? ?????????? ???????????????????? ?????????????????? ????????????????????" (???????????????????? ?????????? 301)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IsAppliedToSubsidiaries" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????????????? ?????? ????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IsAppliedToRefundOfCharges" type="xs:boolean">
<xs:annotation>
<xs:documentation>?????????????????????? ?????? ?????????????????????? ????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="exportDataProviderNsiItemRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????????????? ???????????? ?????????????????????? ????????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element name="RegistryNumber">
<xs:annotation>
<xs:documentation>???????????????????? ?????????? ??????????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="nsi-base:NsiItemRegistryNumberType">
<xs:enumeration value="1" />
<xs:enumeration value="51" />
<xs:enumeration value="59" />
<xs:enumeration value="219" />
<xs:enumeration value="272" />
<xs:enumeration value="302" />
<xs:enumeration value="337" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="ModifiedAfter" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ?? ??????????, ???????????????????? ?????????? ?????????????? ???????????????? ?????????????????????? ???????????? ???????? ???????????????????? ?? ????????????. ???????? ???? ??????????????, ???????????????????????? ?????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute fixed="10.0.1.2" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="exportDataProviderNsiPagingItemRequest">
<xs:annotation>
<xs:documentation>???????????? ???? ?????????????????? ???????????? ?????????????????????? ???????????????????? ??????????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseType">
<xs:sequence>
<xs:element name="RegistryNumber">
<xs:annotation>
<xs:documentation>???????????????????? ?????????? ??????????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="nsi-base:NsiItemRegistryNumberType">
<xs:enumeration value="1" />
<xs:enumeration value="51" />
<xs:enumeration value="59" />
<xs:enumeration value="219" />
<xs:enumeration value="302" />
<xs:enumeration value="337" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Page">
<xs:annotation>
<xs:documentation>???????????????? ??????????????. ???????????????????????? ???? 1000 ??????????????????.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="ModifiedAfter" type="xs:dateTime">
<xs:annotation>
<xs:documentation>???????? ?? ??????????, ???????????????????? ?????????? ?????????????? ???????????????? ?????????????????????? ???????????? ???????? ???????????????????? ?? ????????????. ???????? ???? ??????????????, ???????????????????????? ?????? ???????????????? ??????????????????????.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute fixed="11.1.0.5" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="getStateResult">
<xs:annotation>
<xs:documentation>?????????????? ?????????????? ?????????????????????????? ??????????????????</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="base:BaseAsyncResponseType">
<xs:choice minOccurs="0">
<xs:element ref="base:ErrorMessage" />
<xs:element maxOccurs="unbounded" name="ImportResult" type="base:CommonResultType" />
<xs:element name="NsiItem" type="nsi-base:NsiItemType" />
<xs:element name="NsiPagingItem">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="nsi-base:NsiItemType">
<xs:sequence>
<xs:element name="TotalItemsCount" type="xs:int">
<xs:annotation>
<xs:documentation>???????????????????? ?????????????? ?? ??????????????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TotalPages" type="xs:int">
<xs:annotation>
<xs:documentation>???????????????????? ??????????????</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CurrentPage">
<xs:annotation>
<xs:documentation>?????????? ?????????????? ????????????????</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="NsiList" type="nsi-base:NsiListType" />
</xs:choice>
<xs:attribute fixed="10.0.1.2" ref="base:version" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" xmlns="http://www.w3.org/2001/XMLSchema">
<simpleType name="CryptoBinary">
<restriction base="base64Binary" />
</simpleType>
<element name="Signature" type="ds:SignatureType" />
<complexType name="SignatureType">
<sequence>
<element ref="ds:SignedInfo" />
<element ref="ds:SignatureValue" />
<element minOccurs="0" ref="ds:KeyInfo" />
<element minOccurs="0" maxOccurs="unbounded" ref="ds:Object" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureValue" type="ds:SignatureValueType" />
<complexType name="SignatureValueType">
<simpleContent>
<extension base="base64Binary">
<attribute name="Id" type="ID" use="optional" />
</extension>
</simpleContent>
</complexType>
<element name="SignedInfo" type="ds:SignedInfoType" />
<complexType name="SignedInfoType">
<sequence>
<element ref="ds:CanonicalizationMethod" />
<element ref="ds:SignatureMethod" />
<element maxOccurs="unbounded" ref="ds:Reference" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType" />
<complexType name="CanonicalizationMethodType" mixed="true">
<sequence>
<any minOccurs="0" maxOccurs="unbounded" namespace="##any" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="SignatureMethod" type="ds:SignatureMethodType" />
<complexType name="SignatureMethodType" mixed="true">
<sequence>
<element minOccurs="0" name="HMACOutputLength" type="ds:HMACOutputLengthType" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="Reference" type="ds:ReferenceType" />
<complexType name="ReferenceType">
<sequence>
<element minOccurs="0" ref="ds:Transforms" />
<element ref="ds:DigestMethod" />
<element ref="ds:DigestValue" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
<attribute name="URI" type="anyURI" use="optional" />
<attribute name="Type" type="anyURI" use="optional" />
</complexType>
<element name="Transforms" type="ds:TransformsType" />
<complexType name="TransformsType">
<sequence>
<element maxOccurs="unbounded" ref="ds:Transform" />
</sequence>
</complexType>
<element name="Transform" type="ds:TransformType" />
<complexType name="TransformType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax" />
<element name="XPath" type="string" />
</choice>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="DigestMethod" type="ds:DigestMethodType" />
<complexType name="DigestMethodType" mixed="true">
<sequence>
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
<attribute name="Algorithm" type="anyURI" use="required" />
</complexType>
<element name="DigestValue" type="ds:DigestValueType" />
<simpleType name="DigestValueType">
<restriction base="base64Binary" />
</simpleType>
<element name="KeyInfo" type="ds:KeyInfoType" />
<complexType name="KeyInfoType" mixed="true">
<choice maxOccurs="unbounded">
<element ref="ds:KeyName" />
<element ref="ds:KeyValue" />
<element ref="ds:RetrievalMethod" />
<element ref="ds:X509Data" />
<element ref="ds:PGPData" />
<element ref="ds:SPKIData" />
<element ref="ds:MgmtData" />
<any namespace="##other" processContents="lax" />
</choice>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="KeyName" type="string" />
<element name="MgmtData" type="string" />
<element name="KeyValue" type="ds:KeyValueType" />
<complexType name="KeyValueType" mixed="true">
<choice>
<element ref="ds:DSAKeyValue" />
<element ref="ds:RSAKeyValue" />
<any namespace="##other" processContents="lax" />
</choice>
</complexType>
<element name="RetrievalMethod" type="ds:RetrievalMethodType" />
<complexType name="RetrievalMethodType">
<sequence>
<element minOccurs="0" ref="ds:Transforms" />
</sequence>
<attribute name="URI" type="anyURI" />
<attribute name="Type" type="anyURI" use="optional" />
</complexType>
<element name="X509Data" type="ds:X509DataType" />
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType" />
<element name="X509SKI" type="base64Binary" />
<element name="X509SubjectName" type="string" />
<element name="X509Certificate" type="base64Binary" />
<element name="X509CRL" type="base64Binary" />
<any namespace="##other" processContents="lax" />
</choice>
</sequence>
</complexType>
<complexType name="X509IssuerSerialType">
<sequence>
<element name="X509IssuerName" type="string" />
<element name="X509SerialNumber" type="integer" />
</sequence>
</complexType>
<element name="PGPData" type="ds:PGPDataType" />
<complexType name="PGPDataType">
<choice>
<sequence>
<element name="PGPKeyID" type="base64Binary" />
<element minOccurs="0" name="PGPKeyPacket" type="base64Binary" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
<sequence>
<element name="PGPKeyPacket" type="base64Binary" />
<any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</sequence>
</choice>
</complexType>
<element name="SPKIData" type="ds:SPKIDataType" />
<complexType name="SPKIDataType">
<sequence maxOccurs="unbounded">
<element name="SPKISexp" type="base64Binary" />
<any minOccurs="0" namespace="##other" processContents="lax" />
</sequence>
</complexType>
<element name="Object" type="ds:ObjectType" />
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
<attribute name="MimeType" type="string" use="optional" />
<attribute name="Encoding" type="anyURI" use="optional" />
</complexType>
<element name="Manifest" type="ds:ManifestType" />
<complexType name="ManifestType">
<sequence>
<element maxOccurs="unbounded" ref="ds:Reference" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureProperties" type="ds:SignaturePropertiesType" />
<complexType name="SignaturePropertiesType">
<sequence>
<element maxOccurs="unbounded" ref="ds:SignatureProperty" />
</sequence>
<attribute name="Id" type="ID" use="optional" />
</complexType>
<element name="SignatureProperty" type="ds:SignaturePropertyType" />
<complexType name="SignaturePropertyType" mixed="true">
<choice maxOccurs="unbounded">
<any namespace="##other" processContents="lax" />
</choice>
<attribute name="Target" type="anyURI" use="required" />
<attribute name="Id" type="ID" use="optional" />
</complexType>
<simpleType name="HMACOutputLengthType">
<restriction base="integer" />
</simpleType>
<element name="DSAKeyValue" type="ds:DSAKeyValueType" />
<complexType name="DSAKeyValueType">
<sequence>
<sequence minOccurs="0">
<element name="P" type="ds:CryptoBinary" />
<element name="Q" type="ds:CryptoBinary" />
</sequence>
<element minOccurs="0" name="G" type="ds:CryptoBinary" />
<element name="Y" type="ds:CryptoBinary" />
<element minOccurs="0" name="J" type="ds:CryptoBinary" />
<sequence minOccurs="0">
<element name="Seed" type="ds:CryptoBinary" />
<element name="PgenCounter" type="ds:CryptoBinary" />
</sequence>
</sequence>
</complexType>
<element name="RSAKeyValue" type="ds:RSAKeyValueType" />
<complexType name="RSAKeyValueType">
<sequence>
<element name="Modulus" type="ds:CryptoBinary" />
<element name="Exponent" type="ds:CryptoBinary" />
</sequence>
</complexType>
</schema>

View File

@ -64,6 +64,30 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Client\Api\ApiBase.cs" />
<Compile Include="Client\Api\NsiApi.cs" />
<Compile Include="Client\Api\Request\Adapter\IGetStateResult.cs" />
<Compile Include="Client\Api\Request\Adapter\IGetStateResultMany.cs" />
<Compile Include="Client\Api\Request\Adapter\IGetStateResultOne.cs" />
<Compile Include="Client\Api\Request\Exception\NoResultsRemoteException.cs" />
<Compile Include="Client\Api\Request\GostSigningEndpointBehavior.cs" />
<Compile Include="Client\Api\Request\GostSigningMessageInspector.cs" />
<Compile Include="Client\Api\Request\Adapter\IAck.cs" />
<Compile Include="Client\Api\Request\Exception\RemoteException.cs" />
<Compile Include="Client\Api\Request\Adapter\IAsyncClient.cs" />
<Compile Include="Client\Api\Request\Adapter\IErrorMessage.cs" />
<Compile Include="Client\Api\Request\Adapter\IGetStateRequest.cs" />
<Compile Include="Client\Api\Request\Adapter\IGetStateResponse.cs" />
<Compile Include="Client\Api\Request\Nsi\NsiRequestBase.cs" />
<Compile Include="Client\Api\Request\RequestBase.cs" />
<Compile Include="Client\Api\Request\Nsi\ExportDataProviderNsiItemRequest.cs" />
<Compile Include="Client\Api\Request\AsyncRequestStateType.cs" />
<Compile Include="Client\Api\Request\Exception\RestartTimeoutException.cs" />
<Compile Include="Client\Api\Request\RequestHelper.cs" />
<Compile Include="Client\Api\Request\X509Tools.cs" />
<Compile Include="Client\Internal\CertificateHelper.cs" />
<Compile Include="Client\UniClient.cs" />
<Compile Include="Client\ClientBase.cs" />
<Compile Include="ClientApi\DataTypes\ГисАдресныйОбъект.cs" />
<Compile Include="ClientApi\DataTypes\ГисДоговор.cs" />
<Compile Include="ClientApi\DataTypes\ГисДоговорыИПриборы.cs" />
@ -144,6 +168,13 @@
<Compile Include="ClientApi\RemoteCaller\IHcsHeaderType.cs" />
<Compile Include="ClientApi\RemoteCaller\GostSigningMessageInspector.cs" />
<Compile Include="ClientApi\HcsX509Tools.cs" />
<Compile Include="Client\Internal\Constants.cs" />
<Compile Include="Client\Api\Request\EndPointLocator.cs" />
<Compile Include="Client\Api\Request\EndPoint.cs" />
<Compile Include="Client\OrganizationRole.cs" />
<Compile Include="Client\Internal\Util.cs" />
<Compile Include="Client\Logger\ILogger.cs" />
<Compile Include="Client\MessageCapturer\IMessageCapturer.cs" />
<Compile Include="Connected Services\Service.Async.DebtRequests.v15_7_0_1\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
@ -169,6 +200,11 @@
<DesignTime>True</DesignTime>
<DependentUpon>Reference.svcmap</DependentUpon>
</Compile>
<Compile Include="Connected Services\Service.Async.Nsi\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.svcmap</DependentUpon>
</Compile>
<Compile Include="Connected Services\Service.Async.OrgRegistryCommon.v15_7_0_1\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
@ -826,6 +862,58 @@
<None Include="Connected Services\Service.Async.NsiCommon.v15_7_0_1\xmldsig-core-schema.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\Service.Async.Nsi\hcs-base.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\Service.Async.Nsi\hcs-nsi-base.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\Service.Async.Nsi\hcs-nsi-service-async.wsdl" />
<None Include="Connected Services\Service.Async.Nsi\hcs-nsi-types.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.AckRequest.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.exportDataProviderNsiItemResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.exportDataProviderPagingNsiItemResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.getStateResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.getStateResult.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importAdditionalServicesResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importBaseDecisionMSPResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importCapitalRepairWorkResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importCommunalInfrastructureSystemResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importGeneralNeedsMunicipalResourceResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importMunicipalServicesResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.importOrganizationWorksResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\Hcs.Service.Async.Nsi.ResultHeader.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\Service.Async.Nsi\xmldsig-core-schema.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\Service.Async.OrgRegistryCommon.v15_7_0_1\hcs-base.xsd">
<SubType>Designer</SubType>
</None>
@ -1026,6 +1114,7 @@
<WCFMetadataStorage Include="Connected Services\Service.Async.HouseManagement.v15_7_0_1\" />
<WCFMetadataStorage Include="Connected Services\Service.Async.Nsi.v15_7_0_1\" />
<WCFMetadataStorage Include="Connected Services\Service.Async.NsiCommon.v15_7_0_1\" />
<WCFMetadataStorage Include="Connected Services\Service.Async.Nsi\" />
<WCFMetadataStorage Include="Connected Services\Service.Async.OrgRegistryCommon.v15_7_0_1\" />
</ItemGroup>
<ItemGroup>
@ -1065,6 +1154,12 @@
<Generator>WCF Proxy Generator</Generator>
<LastGenOutput>Reference.cs</LastGenOutput>
</None>
<None Include="Connected Services\Service.Async.Nsi\configuration91.svcinfo" />
<None Include="Connected Services\Service.Async.Nsi\configuration.svcinfo" />
<None Include="Connected Services\Service.Async.Nsi\Reference.svcmap">
<Generator>WCF Proxy Generator</Generator>
<LastGenOutput>Reference.cs</LastGenOutput>
</None>
<Content Include="HcsWsdlSources\wsdl_xsd_v.15.7.0.1\changelog.txt" />
<Content Include="HcsWsdlSources\how-to-generate-cs-from-wsdl.txt" />
</ItemGroup>

View File

@ -22,6 +22,10 @@
<security mode="Transport" />
</binding>
<binding name="NsiBindingAsync2" />
<binding name="NsiBindingAsync3">
<security mode="Transport" />
</binding>
<binding name="NsiBindingAsync4" />
</basicHttpBinding>
</bindings>
<client>
@ -48,6 +52,9 @@
binding="basicHttpBinding" bindingConfiguration="NsiBindingAsync1"
contract="Service.Async.NsiCommon.v15_7_0_1.NsiPortsTypeAsync"
name="NsiPortAsync1" />
<endpoint address="https://api.dom.gosuslugi.ru/ext-bus-nsi-service/services/NsiAsync"
binding="basicHttpBinding" bindingConfiguration="NsiBindingAsync3"
contract="Service.Async.Nsi.NsiPortsTypeAsync" name="NsiPortAsync2" />
</client>
</system.serviceModel>
</configuration>