@@ -3,7 +3,7 @@ | |||
**Версия документа: 2.0** | |||
**Дата изменения: 01.05.2017** | |||
**Дата изменения: 06.09.2017** | |||
Введение | |||
======== | |||
@@ -79,7 +79,7 @@ XML-ответ в обязательном порядке имеет корне | |||
Пример ответа в случае успешной обработки запроса: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<EchoResponse> | |||
<Body> | |||
<message>Test</message> | |||
@@ -867,6 +867,10 @@ bookOrder или updateTicket. Вызов этого метода означае | |||
то обработка первого должна быть отменена. | |||
Можно выполнять после создания заказа и в течении 5-30 минут | |||
после подтверждения заказа. | |||
При интеграции с сервисом GDS гарантируется, | |||
что переданные ticketId будут принадлежать одному заказу. | |||
Решение допускать ли передачу Id билетов из разных заказов остается за вокзалом, | |||
который реализует данный протокол. | |||
**URL: \[BASE\_URL\]/sales/cancelTicket** | |||
@@ -900,6 +904,11 @@ bookOrder или updateTicket. Вызов этого метода означае | |||
т.е. если было передано 2 билета, первый был обработан а при обработке второго возникла ошибка | |||
то обработка первого должна быть отменена. | |||
Билет можно вернуть только после подтверждения confirmOrder. | |||
При интеграции с сервисом GDS гарантируется, | |||
что переданные ticketId будут принадлежать одному заказу. | |||
Решение допускать ли передачу Id билетов из разных заказов остается за вокзалом, | |||
который реализует данный протокол. | |||
**URL: \[BASE\_URL\]/sales/returnTicket** | |||
@@ -12,7 +12,7 @@ | |||
</TestPlan> | |||
<hashTree> | |||
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> | |||
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | |||
<stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> | |||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> | |||
<boolProp name="LoopController.continue_forever">false</boolProp> | |||
<stringProp name="LoopController.loops">1</stringProp> | |||
@@ -28,24 +28,24 @@ | |||
<hashTree> | |||
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> | |||
<collectionProp name="Arguments.arguments"> | |||
<elementProp name="server" elementType="Argument"> | |||
<stringProp name="Argument.name">server</stringProp> | |||
<stringProp name="Argument.value"></stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
<elementProp name="user" elementType="Argument"> | |||
<stringProp name="Argument.name">user</stringProp> | |||
<stringProp name="Argument.value"></stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
<elementProp name="password" elementType="Argument"> | |||
<stringProp name="Argument.name">password</stringProp> | |||
<stringProp name="Argument.value"></stringProp> | |||
<stringProp name="Argument.value">${__P(password)}</stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
<elementProp name="date" elementType="Argument"> | |||
<stringProp name="Argument.name">date</stringProp> | |||
<stringProp name="Argument.value">2017-03-14</stringProp> | |||
<stringProp name="Argument.value">${__P(date)}</stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
<elementProp name="user" elementType="Argument"> | |||
<stringProp name="Argument.name">user</stringProp> | |||
<stringProp name="Argument.value">${__P(user)}</stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
<elementProp name="server" elementType="Argument"> | |||
<stringProp name="Argument.name">server</stringProp> | |||
<stringProp name="Argument.value">${__P(server)}</stringProp> | |||
<stringProp name="Argument.metadata">=</stringProp> | |||
</elementProp> | |||
</collectionProp> | |||
@@ -88,6 +88,11 @@ | |||
</collectionProp> | |||
</HeaderManager> | |||
<hashTree/> | |||
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> | |||
<collectionProp name="CookieManager.cookies"/> | |||
<boolProp name="CookieManager.clearEachIteration">false</boolProp> | |||
</CookieManager> | |||
<hashTree/> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="echo" enabled="true"> | |||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | |||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | |||
@@ -107,7 +112,7 @@ | |||
<stringProp name="HTTPSampler.connect_timeout"></stringProp> | |||
<stringProp name="HTTPSampler.response_timeout"></stringProp> | |||
<stringProp name="HTTPSampler.protocol"></stringProp> | |||
<stringProp name="HTTPSampler.contentEncoding"></stringProp> | |||
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> | |||
<stringProp name="HTTPSampler.path">${__V(server)}/sales/echo</stringProp> | |||
<stringProp name="HTTPSampler.method">POST</stringProp> | |||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp> | |||
@@ -118,7 +123,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Проверка ответа" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -159,7 +164,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во станций > 0" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -216,16 +221,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во станций > 0" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
<stringProp name="XPath.xpath">count(/GetArrivalStationsResponse/Body/Station)>0</stringProp> | |||
<boolProp name="XPath.validate">false</boolProp> | |||
<boolProp name="XPath.whitespace">false</boolProp> | |||
<boolProp name="XPath.tolerant">false</boolProp> | |||
<boolProp name="XPath.namespace">false</boolProp> | |||
</XPathAssertion> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить все ID станций" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -243,7 +239,7 @@ | |||
<boolProp name="ForeachController.useSeparator">true</boolProp> | |||
</ForeachController> | |||
<hashTree> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="searchTrips" enabled="true"> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="searchTrips" enabled="false"> | |||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | |||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | |||
<collectionProp name="Arguments.arguments"> | |||
@@ -276,7 +272,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить все ID рейсов" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -288,7 +284,7 @@ | |||
</XPathExtractor> | |||
<hashTree/> | |||
</hashTree> | |||
<ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="Для каждого рейса" enabled="true"> | |||
<ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="Для каждого рейса" enabled="false"> | |||
<stringProp name="ForeachController.inputVal">tripIds</stringProp> | |||
<stringProp name="ForeachController.returnVal">tripId</stringProp> | |||
<boolProp name="ForeachController.useSeparator">true</boolProp> | |||
@@ -325,7 +321,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во остановок > 0" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -369,7 +365,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во типов билетов > 0" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -422,7 +418,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во типов документов > 0" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -486,7 +482,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить все ID мест" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -497,6 +493,15 @@ | |||
<boolProp name="XPathExtractor.namespace">false</boolProp> | |||
</XPathExtractor> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Есть места" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
<stringProp name="XPath.xpath">count(/GetFreeSeatsResponse/Body/Seat)>0</stringProp> | |||
<boolProp name="XPath.validate">false</boolProp> | |||
<boolProp name="XPath.whitespace">false</boolProp> | |||
<boolProp name="XPath.tolerant">false</boolProp> | |||
<boolProp name="XPath.namespace">false</boolProp> | |||
</XPathAssertion> | |||
<hashTree/> | |||
</hashTree> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Создание договора" enabled="true"> | |||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | |||
@@ -510,7 +515,7 @@ | |||
<dispatchStationId>${dispatchStationId}</dispatchStationId>
 | |||
<arrivalStationId>${arrivalStationId}</arrivalStationId> 
 | |||
<Sale>
 | |||
<seatId>${seatId}</seatId>
 | |||
<seatId>${__V(seatId_${__Random(1,${seatId_matchNr})})}</seatId>
 | |||
<ticketTypeId>${ticketTypeIds_1}</ticketTypeId>
 | |||
<Passenger>
 | |||
<firstName>${__RandomString(10,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)}</firstName>
 | |||
@@ -545,7 +550,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить ID договора" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -587,7 +592,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -667,7 +672,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
</hashTree> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Подтверждение оплаты" enabled="true"> | |||
@@ -700,7 +705,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -760,7 +765,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -816,7 +821,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить все ID мест" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -827,6 +832,15 @@ | |||
<boolProp name="XPathExtractor.namespace">false</boolProp> | |||
</XPathExtractor> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Есть места" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
<stringProp name="XPath.xpath">count(/GetFreeSeatsResponse/Body/Seat)>1</stringProp> | |||
<boolProp name="XPath.validate">false</boolProp> | |||
<boolProp name="XPath.whitespace">false</boolProp> | |||
<boolProp name="XPath.tolerant">false</boolProp> | |||
<boolProp name="XPath.namespace">false</boolProp> | |||
</XPathAssertion> | |||
<hashTree/> | |||
</hashTree> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Создание договора" enabled="true"> | |||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | |||
@@ -840,7 +854,7 @@ | |||
<dispatchStationId>${dispatchStationId}</dispatchStationId>
 | |||
<arrivalStationId>${arrivalStationId}</arrivalStationId> 
 | |||
<Sale>
 | |||
<seatId>${seatId}</seatId>
 | |||
<seatId>${__V(seatId_${__Random(1,${seatId_matchNr})})}</seatId>
 | |||
<ticketTypeId>${ticketTypeIds_1}</ticketTypeId>
 | |||
<Passenger>
 | |||
<firstName>${__RandomString(10,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)}</firstName>
 | |||
@@ -875,7 +889,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Получить ID договора" enabled="true"> | |||
<stringProp name="XPathExtractor.default"></stringProp> | |||
@@ -917,7 +931,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -997,7 +1011,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
</hashTree> | |||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Подтверждение оплаты" enabled="true"> | |||
@@ -1030,7 +1044,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -1090,7 +1104,7 @@ | |||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp> | |||
</HTTPSamplerProxy> | |||
<hashTree> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="true"/> | |||
<XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="Это XML?" enabled="false"/> | |||
<hashTree/> | |||
<XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="Кол-во билетов = 1" enabled="true"> | |||
<boolProp name="XPath.negate">false</boolProp> | |||
@@ -1154,6 +1168,72 @@ | |||
<stringProp name="filename"></stringProp> | |||
</ResultCollector> | |||
<hashTree/> | |||
<ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true"> | |||
<boolProp name="ResultCollector.error_logging">false</boolProp> | |||
<objProp> | |||
<name>saveConfig</name> | |||
<value class="SampleSaveConfiguration"> | |||
<time>true</time> | |||
<latency>true</latency> | |||
<timestamp>true</timestamp> | |||
<success>true</success> | |||
<label>true</label> | |||
<code>true</code> | |||
<message>true</message> | |||
<threadName>true</threadName> | |||
<dataType>true</dataType> | |||
<encoding>false</encoding> | |||
<assertions>true</assertions> | |||
<subresults>true</subresults> | |||
<responseData>false</responseData> | |||
<samplerData>false</samplerData> | |||
<xml>false</xml> | |||
<fieldNames>false</fieldNames> | |||
<responseHeaders>false</responseHeaders> | |||
<requestHeaders>false</requestHeaders> | |||
<responseDataOnError>false</responseDataOnError> | |||
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> | |||
<assertionsResultsToSave>0</assertionsResultsToSave> | |||
<bytes>true</bytes> | |||
<threadCounts>true</threadCounts> | |||
</value> | |||
</objProp> | |||
<stringProp name="filename"></stringProp> | |||
</ResultCollector> | |||
<hashTree/> | |||
<ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true"> | |||
<boolProp name="ResultCollector.error_logging">false</boolProp> | |||
<objProp> | |||
<name>saveConfig</name> | |||
<value class="SampleSaveConfiguration"> | |||
<time>true</time> | |||
<latency>true</latency> | |||
<timestamp>true</timestamp> | |||
<success>true</success> | |||
<label>true</label> | |||
<code>true</code> | |||
<message>true</message> | |||
<threadName>true</threadName> | |||
<dataType>true</dataType> | |||
<encoding>false</encoding> | |||
<assertions>true</assertions> | |||
<subresults>true</subresults> | |||
<responseData>false</responseData> | |||
<samplerData>false</samplerData> | |||
<xml>false</xml> | |||
<fieldNames>false</fieldNames> | |||
<responseHeaders>false</responseHeaders> | |||
<requestHeaders>false</requestHeaders> | |||
<responseDataOnError>false</responseDataOnError> | |||
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> | |||
<assertionsResultsToSave>0</assertionsResultsToSave> | |||
<bytes>true</bytes> | |||
<threadCounts>true</threadCounts> | |||
</value> | |||
</objProp> | |||
<stringProp name="filename"></stringProp> | |||
</ResultCollector> | |||
<hashTree/> | |||
</hashTree> | |||
</hashTree> | |||
</hashTree> | |||
@@ -1,635 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
elementFormDefault="qualified" | |||
attributeFormDefault="qualified"> | |||
<xs:simpleType name="IDType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="36"/> | |||
<xs:minLength value="1"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="NameType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="100"/> | |||
<xs:minLength value="1"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="OkatoType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:length value="11"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="InnType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="12"/> | |||
<xs:minLength value="10"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="SimpleStringType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="100"/> | |||
<xs:minLength value="0"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:complexType name="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Error" minOccurs="0"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="code" type="xs:string" minOccurs="1"/> | |||
<xs:element name="message" type="xs:string" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Station"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="name" type="NameType" minOccurs="1"/> | |||
<xs:element name="okato" type="OkatoType" minOccurs="0"/> | |||
<xs:element name="region" type="SimpleStringType" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:simpleType name="TripType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="INTERNATIONAL"/> | |||
<xs:enumeration value="INTERREGIONAL"/> | |||
<xs:enumeration value="ADJACENT_INTERREGIONAL"/> | |||
<xs:enumeration value="INTERMUNICIPAL"/> | |||
<xs:enumeration value="MUNICIPAL"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="TripStatus"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="ON_SALE"/> | |||
<xs:enumeration value="SUSPENDED"/> | |||
<xs:enumeration value="CANCELED"/> | |||
<xs:enumeration value="DISPATCHED"/> | |||
<xs:enumeration value="UNKNOWN"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="TripClass"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="REGULAR"/> | |||
<xs:enumeration value="CUSTOM"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="TicketClass"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="PASSENGER"/> | |||
<xs:enumeration value="BAGGAGE"/> | |||
<xs:enumeration value="WITHOUT_SEAT"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="GenderType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="MALE"/> | |||
<xs:enumeration value="FEMALE"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="ErrorCode"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="INTERNAL"/> | |||
<xs:enumeration value="NOT_FOUND"/> | |||
<xs:enumeration value="SEAT_OCCUPIED"/> | |||
<xs:enumeration value="PERSONAL_DATA_INCORRECT"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="TicketStatus"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="RESERVED"/> | |||
<xs:enumeration value="SOLD"/> | |||
<xs:enumeration value="CANCELED"/> | |||
<xs:enumeration value="RETURNED"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="UidType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:length value="36"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:complexType name="RouteKey"> | |||
<xs:sequence> | |||
<xs:element name="dispatchStationUid" type="UidType"/> | |||
<xs:element name="arrivalStationUid" type="UidType"/> | |||
<xs:element name="dispatchTime" type="xs:time"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Trip"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="name" type="NameType" minOccurs="1"/> | |||
<xs:element name="num" type="xs:string" minOccurs="0"/> | |||
<xs:element name="dispatchDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="arrivalDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationName" type="NameType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationName" type="NameType" minOccurs="1"/> | |||
<xs:element name="price" type="xs:decimal" minOccurs="1"/> | |||
<xs:element name="carrierName" type="NameType" minOccurs="0"/> | |||
<xs:element name="carrierInn" type="InnType" minOccurs="1"/> | |||
<xs:element name="busInfo" type="xs:string" minOccurs="1"/> | |||
<xs:element name="platform" type="xs:string" minOccurs="0"/> | |||
<xs:element name="type" type="TripType" minOccurs="1"/> | |||
<xs:element name="status" type="TripStatus" minOccurs="1"/> | |||
<xs:element name="tripClass" type="TripClass" minOccurs="0"/> | |||
<xs:element name="seatCount" type="xs:int" minOccurs="1"/> | |||
<xs:element name="freeSeatCount" type="xs:int" minOccurs="1"/> | |||
<xs:element name="routeKey" type="RouteKey" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Seat"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="num" type="xs:int" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Passenger"> | |||
<xs:sequence> | |||
<xs:element name="firstName" type="xs:string" minOccurs="1"/> | |||
<xs:element name="lastName" type="xs:string" minOccurs="1"/> | |||
<xs:element name="middleName" type="xs:string" minOccurs="0"/> | |||
<xs:element name="docNum" type="xs:string" minOccurs="0"/> | |||
<xs:element name="docSeries" type="xs:string" minOccurs="0"/> | |||
<xs:element name="docTypeId" type="IDType" minOccurs="1"/> | |||
<xs:element name="birthday" type="xs:date" minOccurs="0"/> | |||
<xs:element name="citizenshipISO2" minOccurs="0"> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:string"> | |||
<xs:length value="2"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:element> | |||
<xs:element name="gender" type="GenderType" minOccurs="0"/> | |||
<xs:element name="phone" type="xs:string" minOccurs="0"/> | |||
<xs:element name="info" type="xs:string" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Sale"> | |||
<xs:sequence> | |||
<xs:element name="seatId" type="IDType" minOccurs="0"/> | |||
<xs:element name="ticketTypeId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Passenger" type="Passenger" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="TripStop"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="name" type="NameType" minOccurs="1"/> | |||
<xs:element name="regionName" type="NameType" minOccurs="0"/> | |||
<xs:element name="dispatchDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="arrivalDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="stopTime" type="xs:int" minOccurs="0"/> | |||
<xs:element name="distance" type="xs:int" minOccurs="0"/> | |||
<xs:element name="price" type="xs:decimal" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="TicketType"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="name" type="NameType" minOccurs="1"/> | |||
<xs:element name="price" type="xs:decimal" minOccurs="1"/> | |||
<xs:element name="ticketClass" type="TicketClass" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="DocumentType"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="name" type="NameType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Agent"> | |||
<xs:sequence> | |||
<xs:element name="name" type="NameType" minOccurs="0"/> | |||
<xs:element name="inn" type="InnType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Ticket"> | |||
<xs:sequence> | |||
<xs:element name="id" type="IDType" minOccurs="1"/> | |||
<xs:element name="number" type="xs:string" minOccurs="0"/> | |||
<xs:element name="series" type="xs:string" minOccurs="0"/> | |||
<xs:element name="created" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="returned" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="status" type="TicketStatus" minOccurs="1"/> | |||
<xs:element name="ticketClass" type="TicketClass" minOccurs="1"/> | |||
<xs:element name="typeId" type="IDType" minOccurs="1"/> | |||
<xs:element name="routeNum" type="xs:string" minOccurs="0"/> | |||
<xs:element name="routeName" type="NameType" minOccurs="1"/> | |||
<xs:element name="busInfo" type="xs:string" minOccurs="1"/> | |||
<xs:element name="carrierName" type="xs:string" minOccurs="0"/> | |||
<xs:element name="carrierInn" type="InnType" minOccurs="1"/> | |||
<xs:element name="platform" type="xs:string" minOccurs="0"/> | |||
<xs:element name="dispatchDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="arrivalDate" type="xs:dateTime" minOccurs="1"/> | |||
<xs:element name="dispatchStation" type="xs:string" minOccurs="1"/> | |||
<xs:element name="arrivalStation" type="xs:string" minOccurs="1"/> | |||
<xs:element name="seatNum" type="xs:int" minOccurs="1"/> | |||
<xs:element name="Passenger" type="Passenger" minOccurs="0"/> | |||
<xs:element name="fare" type="xs:decimal" minOccurs="1"/> | |||
<xs:element name="fees" type="xs:decimal" minOccurs="1"/> | |||
<xs:element name="repayment" type="xs:decimal" minOccurs="0"/> | |||
<xs:element name="insuranceInfo" type="xs:string" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:element name="EchoRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="message" type="xs:string" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="EchoResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="message" minOccurs="1" type="xs:string"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetDispatchStationsRequest"> | |||
<xs:complexType> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetDispatchStationsResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Station" type="Station" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetArrivalStationsRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetArrivalStationsResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Station" type="Station" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="SearchTripsRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="date" type="xs:date" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="SearchTripsResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Trip" type="Trip" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetFreeSeatsRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetFreeSeatsResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Seat" type="Seat" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetTicketTypesRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetTicketTypesResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="TicketType" type="TicketType" maxOccurs="unbounded" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetDocumentTypesRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetDocumentTypesResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="DocumentType" type="DocumentType" maxOccurs="unbounded" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetTripStopsRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetTripStopsResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Stop" type="TripStop" maxOccurs="unbounded" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="BookOrderRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Sale" type="Sale" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="BookOrderResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="lifetime" type="xs:int" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetOrderRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GetOrderResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Ticket" type="Ticket" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="ConfirmOrderRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Agent" type="Agent" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="ConfirmOrderResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Ticket" type="Ticket" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="CancelTicketRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="unbounded"/> | |||
<xs:element name="Agent" type="Agent" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="CancelTicketResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Ticket" type="Ticket" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="ReturnTicketRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="unbounded"/> | |||
<xs:element name="Agent" type="Agent" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="ReturnTicketResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="orderId" type="IDType" minOccurs="1"/> | |||
<xs:element name="Ticket" type="Ticket" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="UpdateTicketRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="unbounded"/> | |||
<xs:element name="Passenger" type="Passenger" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="UpdateTicketResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:restriction base="AbstractResponse"/> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> |
@@ -1,76 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
elementFormDefault="qualified" | |||
attributeFormDefault="qualified"> | |||
<xs:simpleType name="IDType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="36"/> | |||
<xs:minLength value="1"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="NameType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="100"/> | |||
<xs:minLength value="1"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="OkatoType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:length value="11"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="InnType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="12"/> | |||
<xs:minLength value="10"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="SimpleStringType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="100"/> | |||
<xs:minLength value="0"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:complexType name="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Error" minOccurs="0"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="code" type="xs:string" minOccurs="1"/> | |||
<xs:element name="message" type="xs:string" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:simpleType name="UidType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:length value="36"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:complexType name="RouteKey"> | |||
<xs:sequence> | |||
<xs:element name="dispatchStationUid" type="UidType"/> | |||
<xs:element name="arrivalStationUid" type="UidType"/> | |||
<xs:element name="dispatchTime" type="xs:time"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:complexType name="Agent"> | |||
<xs:sequence> | |||
<xs:element name="name" type="NameType" minOccurs="0"/> | |||
<xs:element name="inn" type="InnType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:schema> |
@@ -366,11 +366,19 @@ | |||
<xs:element name="GetFreeSeatsRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
<xs:choice> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
<xs:element name="date" type="xs:date"/> | |||
<xs:element name="dispatchStationUid" type="UidType"/> | |||
<xs:element name="arrivalStationUid" type="UidType"/> | |||
</xs:sequence> | |||
<xs:sequence> | |||
<xs:element name="tripId" type="IDType" minOccurs="1"/> | |||
<xs:element name="dispatchStationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="arrivalStationId" type="IDType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:choice> | |||
</xs:complexType> | |||
</xs:element> | |||
@@ -381,9 +389,10 @@ | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:choice> | |||
<xs:element name="Seat" type="Seat" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
<xs:element name="TransitSeat" type="TransitSeat" maxOccurs="unbounded"/> | |||
</xs:choice> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
@@ -631,4 +640,219 @@ | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="SetStationInfoRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="stationId" type="IDType" minOccurs="1"/> | |||
<xs:element name="uid" type="UidType" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="SetStationInfoResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:restriction base="AbstractResponse"/> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:complexType name="TransitSeat"> | |||
<xs:sequence> | |||
<xs:element name="seatId" type="IDType" minOccurs="1"/> | |||
<xs:element name="seatNum" type="xs:int" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:element name="TransitBookRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
<xs:element name="dispatchStationUid" type="UidType"/> | |||
<xs:element name="arrivalStationUid" type="UidType"/> | |||
<xs:element name="date" type="xs:date"/> | |||
<xs:element name="seatId" type="IDType" maxOccurs="unbounded" minOccurs="1"/> | |||
<xs:element name="Agent" type="Agent" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TransitBookResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="TransitTicket" minOccurs="1" maxOccurs="unbounded"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1"/> | |||
<xs:element name="seatNum" type="xs:int" minOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:simpleType name="RelationType"> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value="OWN"/> | |||
<xs:enumeration value="AGENT"/> | |||
<xs:enumeration value="ATP"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:element name="TransitConfirmRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="unbounded"/> | |||
<xs:element name="Ticket" maxOccurs="unbounded" minOccurs="1"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="1"/> | |||
<xs:element name="Passenger" type="Passenger" minOccurs="0"/> | |||
<xs:element name="ticketSeries" type="xs:string" minOccurs="1" maxOccurs="1"/> | |||
<xs:element name="ticketNumber" type="xs:string" minOccurs="1" maxOccurs="1"/> | |||
<xs:element name="price" type="xs:decimal" minOccurs="1" maxOccurs="1"/> | |||
<xs:element name="relation" type="RelationType" minOccurs="0" maxOccurs="1"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Agent" type="Agent" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TransitConfirmResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:restriction base="AbstractResponse"/> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TransitCancelRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1" maxOccurs="unbounded"/> | |||
<xs:element name="Agent" type="Agent" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TransitCancelResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:restriction base="AbstractResponse"/> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:complexType name="CarrierType"> | |||
<xs:sequence> | |||
<xs:element name="name" type="SimpleStringType" minOccurs="0"/> | |||
<xs:element name="inn" type="InnType" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:element name="TransitTripInfoRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
<xs:element name="date" type="xs:date"/> | |||
<xs:element name="dispatchStationUid" type="UidType" minOccurs="0"/> | |||
<xs:element name="arrivalStationUid" type="UidType" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:complexType name="TransitTicket"> | |||
<xs:sequence> | |||
<xs:element name="dispatchStationUid" type="UidType"/> | |||
<xs:element name="dispatchStationName" type="SimpleStringType"/> | |||
<xs:element name="arrivalStationUid" type="UidType"/> | |||
<xs:element name="arrivalStationName" type="SimpleStringType"/> | |||
<xs:element name="Passenger" type="Passenger"/> | |||
<xs:element name="ticketId" type="IDType" minOccurs="1"/> | |||
<xs:element name="ticketSeries" type="xs:string" minOccurs="0" maxOccurs="1"/> | |||
<xs:element name="ticketNumber" type="xs:string" minOccurs="1" maxOccurs="1"/> | |||
<xs:element name="seatNum" type="xs:int" minOccurs="1"/> | |||
<xs:element name="Agent" type="Agent"/> | |||
<xs:element name="price" type="xs:decimal"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:element name="TransitTripInfoResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Ticket" type="TransitTicket" maxOccurs="unbounded"/> | |||
<xs:element name="maxSeats" type="xs:int"/> | |||
<xs:element name="freeSeats" type="xs:int"/> | |||
<xs:element name="Carrier" type="CarrierType" minOccurs="0"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TransitRouteInfoRequest"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="RouteKey" type="RouteKey"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:complexType name="RouteItem"> | |||
<xs:sequence> | |||
<xs:element name="order" type="xs:int"/> | |||
<xs:element name="stationName" type="SimpleStringType"/> | |||
<xs:element name="stationUid" type="UidType"/> | |||
<xs:element name="distance" type="xs:integer"/> | |||
<xs:element name="arrivalTime" type="xs:time"/> | |||
<xs:element name="dispatchTime" type="xs:time"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
<xs:element name="TransitRouteInfoResponse"> | |||
<xs:complexType> | |||
<xs:complexContent> | |||
<xs:extension base="AbstractResponse"> | |||
<xs:sequence> | |||
<xs:element name="Body"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="name" type="SimpleStringType"/> | |||
<xs:element name="RouteItem" type="RouteItem" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> |
@@ -0,0 +1,474 @@ | |||
Спецификация на протокол AVS5RS взаимной продажи билетов на транзиные рейсы | |||
=========================================================================== | |||
**Версия документа: 1.0** | |||
**Дата изменения: 06.09.2017** | |||
Введение | |||
======== | |||
Данный документ содержит спецификацию протокола AVS5RS, предназначенного | |||
для организации взаимной продажи билетов меджу автовокзалами на транзитные рейсы. | |||
Для унификации в протоколе используются термины UID остановочного пункта и ключ маршрута. | |||
UID остановочного пункта это ID станции одинаковый на всех вокзалах. | |||
Ключ маршрута это структура состоящая из: | |||
* UID начальной станции | |||
* UID конечной станции | |||
* время выхода из начальной станции | |||
Описание протокола | |||
================== | |||
Общие сведения | |||
-------------- | |||
Обмен данными в протоколе AVS5RS производится через протокол HTTP. | |||
Передача и прием данных производится в формате XML, с использованием | |||
кодировки UTF-8. | |||
Все запросы оправляются методом POST. Каждый метод протокола реализуется | |||
через отдельный URL, который строится относительно базового адреса | |||
сервиса, далее обозначаемого как \[BASE\_URL\]. | |||
Доступ к веб-сервису, реализующему протокол AVS5RS, должен быть закрыт с | |||
применением Basic-аутентификации. Допускается использование протокола | |||
HTTPS, контроля доступа по IP, передача данных через VPN-соединение. | |||
Общие форматы данных: | |||
--------------------- | |||
Формат даты: `yyyy-MM-dd`, формат даты и времени: | |||
`yyyy-MM-dd'T'HH:mm:ss`. Пример: | |||
2016-09-07T13:10:00 (символ T латинский, обязательный) (секунды | |||
обязательны). Время указано в часовом поясе сервера который | |||
предоставляет контент. | |||
Числа с плавающий точко в качестве разделителя используют точку. | |||
Дробная часть не обязательна и не более 2 знаков. | |||
Все идентификаторы сущностей (id и uid) это строки, произвольного формата, длинной до 36 символов. | |||
Разрешенные символы: цифры, латинские буквы в любом регистре, и символы -={}[]$ | |||
Могут быть как искусственными (sequence) так и реальными значениями (номер билета, номер места и.т.д.) | |||
Форматы данных XML | |||
------------------ | |||
Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и | |||
HTTP-заголовком “Content-Type”, имеющим значение “application/xml; charset=UTF-8”. | |||
Тело XML- ответа должно начинаться с объявления | |||
`<?xml version="1.0" encoding="UTF-8"?>`. Регистр | |||
названий тегов и атрибутов должен совпадать с регистром из примеров. | |||
XML-ответ в обязательном порядке имеет корневой тег, название которого | |||
должно соответствовать формату "<НазваниеМетодаResponse>" (например EchoResponse, SearchTripsResponse) | |||
Если ответ корректный, то данные ответа содержатся во вложенном теге <Body>. | |||
Если ответ не корректный, информация об ошибке должна находиться во | |||
вложенном теге <Error>, который состоит из кода ошибки в теге | |||
<code> и описания ошибки в теге <message>. Код ошибок в приложении. | |||
Описание - это произвольные текст на русском языке, | |||
поясняющий причину ошибки. Некоторые методы допускают пустой ответ. | |||
Пустой ответ содержит только корневой тег. | |||
Пустой ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<UpdateTicketResponse> | |||
</UpdateTicketResponse> | |||
``` | |||
Пример ответа в случае успешной обработки запроса: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<EchoResponse> | |||
<Body> | |||
<message>Test</message> | |||
</Body> | |||
</EchoResponse> | |||
``` | |||
Пример ответа в случае обработки запроса с ошибкой: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<BookResponse> | |||
<Error> | |||
<code>ERROR</code> | |||
<message>Место 5 занято</message> | |||
</Error> | |||
</BookResponse> | |||
``` | |||
Методы протокола | |||
---------------- | |||
### getFreeSeats | |||
Получение списка свободных мест для рейса между указанными станциями. В параметре принимает ключ рейса, дату и UIDы станции отправления и назначения | |||
**URL: \[BASE\_URL\]/transit/getFreeSeats** | |||
Запрос: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<GetFreeSeatsRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
<!-- Дата отправления рейса со станции посадки поссажира --> | |||
<date>2017-08-11</date> | |||
<!-- UID станции посадки пассажира --> | |||
<dispatchStationUid>hhwrl23kjhjj434kjljkshakjlk2j3l2</dispatchStationUid> | |||
<!-- UID станции высадки пассажира --> | |||
<arrivalStationUid>34l5klk435l435j34jjjk345jjk344CC</arrivalStationUid> | |||
</GetFreeSeatsRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<GetFreeSeatsResponse> | |||
<Body> | |||
<TransitSeat> | |||
<!-- ID места. Обязателен --> | |||
<seatId>26</seatId> | |||
<!-- Номер места места. Обязателен --> | |||
<seatNum>26</seatNum> | |||
</TransitSeat> | |||
<TransitSeat> | |||
<seatId>29</seatId> | |||
<seatNum>29</seatNum> | |||
</TransitSeat> | |||
.............. | |||
<TransitSeat> | |||
<seatId>47</seatId> | |||
<seatNum>47</seatNum> | |||
</TransitSeat> | |||
</Body> | |||
</GetFreeSeatsResponse> | |||
``` | |||
### book | |||
Бронирование заказа. Бронь должна сохраняться в течение ограниченного времени, | |||
от 20 до 60 минут. Если в указанный период времени не поступает | |||
подтверждение оплаты через метод confirmOrder(), то система реализующая протокол | |||
обязана отменить бронь. Допускается бронирование нескольких билетов в рамках одного | |||
заказа. В параметрах запроса передаются ключ рейса, дата рейса | |||
идентификатор станции отправления, идентификатор станции назначения, | |||
информацию об агенте совершивший эту операцию. | |||
**URL: \[BASE\_URL\]/transit/bookOrder** | |||
Запрос: | |||
```xml | |||
<?xml version="1.0"?> | |||
<TransitBookRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
<!-- Дата отправления рейса со станции посадки поссажира --> | |||
<date>2017-08-11</date> | |||
<!-- UID станции посадки пассажира --> | |||
<dispatchStationUid>hhwrl23kjhjj434kjljkshakjlk2j3l2</dispatchStationUid> | |||
<!-- UID станции высадки пассажира --> | |||
<arrivalStationUid>34l5klk435l435j34jjjk345jjk344CC</arrivalStationUid> | |||
<Agent> | |||
<!-- Имя агента. Не обязателен.--> | |||
<name>ИП Твои билеты</name> | |||
<!-- ИНН агента. Не обязателен.--> | |||
<inn>2225555777</inn> | |||
</Agent> | |||
</TransitBookRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitBookResponse> | |||
<Body> | |||
<TransitTicket> | |||
<!-- ID билета на мастер сервере --> | |||
<ticketId>25074373</ticketId> | |||
<!-- Номер места --> | |||
<seatNum>48</seatNum> | |||
</TransitTicket> | |||
</Body> | |||
</TransitBookResponse> | |||
``` | |||
### confirm | |||
**URL: \[BASE\_URL\]/transit/confirm** | |||
Подтверждение оплаты заказа. Переводит временную бронь созданную после операции book в постоянную. | |||
Запрос: | |||
```xml | |||
<?xml version="1.0"?> | |||
<TransitConfirmRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
<Ticket> | |||
<!-- ID билета. Обязательно --> | |||
<ticketId>21326881</ticketId> | |||
<Passenger> | |||
<!-- Имя пассажира. Необязательно --> | |||
<firstName>Ivan</firstName> | |||
<!-- Фамилия пассажира. Необязательно --> | |||
<lastName>Ivanov</lastName> | |||
<!-- Отчество пассажира. Необязательно --> | |||
<middleName>Ivanovich</middleName> | |||
<!-- ID типа документа. Из справочника МИНТРАС. Необязательно --> | |||
<docTypeId>0</docTypeId> | |||
<!-- Номер документа. Необязательно --> | |||
<docNum>0101</docNum> | |||
<!-- Серия документа. Необязательно --> | |||
<docSeries>010101</docSeries> | |||
<!-- Дата рождения. Необязательно --> | |||
<birthday>2000-01-01</birthday> | |||
<!-- Пол. MALE FEMALE. Необязательно --> | |||
<gender>MALE</gender> | |||
</Passenger> | |||
<!-- Серия билета. Необязательно --> | |||
<ticketSeries>1232344</ticketSeries> | |||
<!-- Номер билета. Необязательно --> | |||
<ticketNumber>3432423423</ticketNumber> | |||
<!-- Итоговая цена по которой продан билет. Необязательно --> | |||
<price>1000</price> | |||
<!-- Отношения между продовцом и поставщиком контента. OWN AGENT ATP. Необязательно --> | |||
<relation>AGENT</relation> | |||
</Ticket> | |||
<Agent> | |||
<!-- Имя агента. Не обязателен.--> | |||
<name>ИП Твои билеты</name> | |||
<!-- ИНН агента. Не обязателен.--> | |||
<inn>2225555777</inn> | |||
</Agent> | |||
</TransitConfirmRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitConfirmResponse/> | |||
``` | |||
### cancel | |||
Отмена ранее забронированного места. Отмена билета допускается после оперций book и confirm. | |||
**URL: \[BASE\_URL\]/transit/cancel** | |||
Запрос: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitCancelRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
<!-- ID билета. Обязательно --> | |||
<ticketId>4561143</ticketId> | |||
</TransitCancelRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitCancelResponse/> | |||
``` | |||
### getTripInfo | |||
Возвращет информацию о пассажирах на указанном рейсе. | |||
**URL: \[BASE\_URL\]/transit/getTripInfo** | |||
Запрос: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitTripInfoRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
<!-- Дата отправления рейса со станции посадки поссажира --> | |||
<date>2017-08-11</date> | |||
<!-- UID станции посадки пассажира. Не обязательный. Если не указан, то равен станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID станции высадки пассажира. Не обязательный. Если не указан, то равен конечной станции рейса --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
</TransitTripInfoRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitTripInfoResponse> | |||
<Body> | |||
<Ticket> | |||
<!-- UID станции посадки пассажира. --> | |||
<dispatchStationUid>E19A767A4C4C43F3855E10DA31CD3749</dispatchStationUid> | |||
<!-- UID станции высадки пассажира. --> | |||
<arrivalStationUid>AE751908D644441298AEBD4001871311</arrivalStationUid> | |||
<!-- ID билета. --> | |||
<ticketId>4562182</ticketId> | |||
<!-- серия билета. --> | |||
<ticketSeries>2202022202</ticketSeries> | |||
<!-- номер билета. --> | |||
<ticketNumber>2457677</ticketNumber> | |||
<!-- место билета. --> | |||
<seatNum>3</seatNum> | |||
<!-- цена билета. --> | |||
<price>470</price> | |||
</Ticket> | |||
<Ticket> | |||
<dispatchStationUid>AE751908D644441298AEBD4001871311</dispatchStationUid> | |||
<arrivalStationUid>25CBF1CE4E224C0A85C4CCEAD3E4C537</arrivalStationUid> | |||
<ticketId>4562669</ticketId> | |||
<seatNum>3</seatNum> | |||
</Ticket> | |||
<Ticket> | |||
<dispatchStationUid>E19A767A4C4C43F3855E10DA31CD3749</dispatchStationUid> | |||
<arrivalStationUid>88184B22DA28440590D6202D2014E5F3</arrivalStationUid> | |||
<Passenger> | |||
<!-- Имя пассажира. Необязательно --> | |||
<firstName>Ivan</firstName> | |||
<!-- Фамилия пассажира. Необязательно --> | |||
<lastName>Ivanov</lastName> | |||
<!-- Отчество пассажира. Необязательно --> | |||
<middleName>Ivanovich</middleName> | |||
<!-- ID типа документа. Из справочника МИНТРАС. Необязательно --> | |||
<docTypeId>0</docTypeId> | |||
<!-- Номер документа. Необязательно --> | |||
<docNum>0101</docNum> | |||
<!-- Серия документа. Необязательно --> | |||
<docSeries>010101</docSeries> | |||
<!-- Дата рождения. Необязательно --> | |||
<birthday>2000-01-01</birthday> | |||
<!-- Пол. MALE FEMALE. Необязательно --> | |||
<gender>MALE</gender> | |||
</Passenger> | |||
<ticketId>4553771</ticketId> | |||
<ticketSeries>2202982202</ticketSeries> | |||
<ticketNumber>41159</ticketNumber> | |||
<seatNum>4</seatNum> | |||
<price>167</price> | |||
</Ticket> | |||
<!-- Вместимость автобуса --> | |||
<maxSeats>43</maxSeats> | |||
<!-- Количество свободных мест между указанными станциями --> | |||
<freeSeats>22</freeSeats> | |||
<Carrier> | |||
<!-- Имя перевозчика --> | |||
<name>ПАП города N</name> | |||
<!-- ИНН перевозчика --> | |||
<inn>4534995945</inn> | |||
</Carrier> | |||
</Body> | |||
</TransitTripInfoResponse> | |||
``` | |||
### getRouteInfo | |||
Возвращает информацию по маршруту. | |||
**URL: \[BASE\_URL\]/transit/getRouteInfo** | |||
Запрос: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitRouteInfoRequest> | |||
<!-- Ключ рейса --> | |||
<RouteKey> | |||
<!-- UID станции отправления рейса --> | |||
<dispatchStationUid>523243243209840293840293849895781093</dispatchStationUid> | |||
<!-- UID конечной станции --> | |||
<arrivalStationUid>90929359890589203498093209904288</arrivalStationUid> | |||
<!-- время отправления со станции отпраления. в часовом поясе станции отправления. --> | |||
<dispatchTime>10:00:00</dispatchTime> | |||
</RouteKey> | |||
</TransitRouteInfoRequest> | |||
``` | |||
Ответ: | |||
```xml | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |||
<TransitRouteInfoResponse> | |||
<Body> | |||
<!-- Название маршрута. Обязательно --> | |||
<name>Белокуриха - Рубцовск</name> | |||
<RouteItem> | |||
<!-- порядок остановочного пункта. Обязательно --> | |||
<order>1</order> | |||
<!-- Название остановочного пункта. Обязательно --> | |||
<stationName>Белокуриха</stationName> | |||
<!-- UID остановочного пункта. Обязательно --> | |||
<stationUid>E19A767A4C4C43F3855E10DA31CD3749</stationUid> | |||
<!-- Расстояние. Необязательно --> | |||
<distance>0</distance> | |||
</RouteItem> | |||
<RouteItem> | |||
<order>2</order> | |||
<stationName>Быканов Мост</stationName> | |||
<stationUid>0ae247cb-b7b3-41df-8814-04065f7867fc</stationUid> | |||
<distance>10</distance> | |||
</RouteItem> | |||
......... | |||
<RouteItem> | |||
<order>17</order> | |||
<stationName>Рубцовск</stationName> | |||
<stationUid>25CBF1CE4E224C0A85C4CCEAD3E4C537</stationUid> | |||
<distance>559</distance> | |||
</RouteItem> | |||
</Body> | |||
</TransitRouteInfoResponse> | |||
``` |