Browse Source

AVS5RS v2.0

master
Ushmodin Nikolay 3 years ago
parent
commit
5cdd92e77e
3 changed files with 819 additions and 129 deletions
  1. +49
    -129
      README.md
  2. +635
    -0
      avs5rs.xsd
  3. +135
    -0
      avs5rs_transit.xsd

+ 49
- 129
README.md View File

@@ -20,7 +20,7 @@
--------------

Обмен данными в протоколе AVS5RS производится через протокол HTTP.
Передача и прием данных производится в формате XML или JSON, с использованием
Передача и прием данных производится в формате XML, с использованием
кодировки UTF-8.

Все запросы оправляются методом POST. Каждый метод протокола реализуется
@@ -37,9 +37,14 @@ HTTPS, контроля доступа по IP, передача данных ч
* Удален атрибут success. Анализ ошибки проиводится по наличию тега Error
* Изменено именования корневых тегов ответа.
* Отмена или ворзрат нескольких билетов одновременно.
* Поддержка формата JSON
* Введены коды ошибок
* Поля
* Trip
* Добавлено platform
* Seat
* Добавлено num
* Удалено name
* Удалено type
* Passenger
* Добавлено info
* Добавлено phone
@@ -118,46 +123,6 @@ XML-ответ в обязательном порядке имеет корне
</BookResponse>
```


Форматы данных JSON
-------------------

Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и
HTTP-заголовком “Content-Type”, имеющим значение “application/json; charset=UTF-8”.

JSON ответ может быть только JSON-объектом. В теле которого допустимо наличие только одного
элемента. В случае успешной обработки запроса ответ должен находиться в елементе __body__.
Если ответ пустой корневой объект должен присутствовать.
В случае если в ответ присутвует элемент __error__ то считается что во время обработки возникла ошибка.
Елемент __error__ состоит из строковых полей __code__ и __message__. Назначени полей аналогично формату XML
Пустой ответ:

```json
{}
```

Пример ответа в случае успешной обработки запроса:

```json
{
"body": {
"message": "Test"
}
}
```
Пример ответа в случае обработки запроса с ошибкой:

```json
{
"error": {
"code": "ERROR",
"message": "Место 5 занято"
}
}
```

Методы протокола
----------------

@@ -180,12 +145,6 @@ JSON ответ может быть только JSON-объектом. В те
</EchoRequest>
```

```json
{
"message": "Test"
}
```

Ответ:

```xml
@@ -198,15 +157,6 @@ JSON ответ может быть только JSON-объектом. В те
</EchoResponse>
```

```json
{
"body": {
"message": "Test"
}
}
```


### getDispatchStations

Метод получения станций отправления. Продажа происходит от станции
@@ -224,10 +174,6 @@ JSON ответ может быть только JSON-объектом. В те
</GetDispatchStationsRequest>
```

```json
{}
```

Ответ:

```xml
@@ -261,32 +207,6 @@ JSON ответ может быть только JSON-объектом. В те
</GetDispatchStationsResponse>
```

```json
{
"body": [
{
"id": "983",
"name": "ВДНХ АС",
"region": "Москва",
"okato": "45000000000"
},
{
"id": "853",
"name": "Варшавская АС",
"region": "Москва",
"okato": "45000000000"
},
{
"id": "6",
"name": "Красногвардейская АС",
"region": "Москва",
"okato": "45000000000"
}
]
}
```


### getArrivalStations

Метод получения станций назначения от станции отправления. В параметре
@@ -308,43 +228,37 @@ JSON ответ может быть только JSON-объектом. В те
</GetArrivalStationsRequest>
```

```json
{
"dispatchStationId": "983"
}
```

Ответ:

```xml
<?xml version="1.0" encoding="UTF-8"?>
{
"body": [
{
"id": "1069",
"name": "Рыбинск",
"region": "Ярославская область",
"okato": "78415000000"
},
{
"id": "1018",
"name": "Сергиев Посад",
"region": "Московская область",
"okato": "46215501000"
},
{
"id": "1084",
"name": "Углич",
"region": "Ярославская область",
"okato": "78420000000"
},
{
"id": "1078",
"name": "Утена",
"region": "Литва"
}
]
}
<GetArrivalStationsResponse>
<Body>
<Station>
<id>1069</id>
<name>Рыбинск</name>
<region>Ярославская область</region>
<okato>78415000000</okato>
</Station>
<Station>
<id>1018</id>
<name>Сергиев Посад</name>
<region>Московская область</region>
<okato>46215501000</okato>
</Station>
<Station>
<id>1084</id>
<name>Углич</name>
<region>Ярославская область</region>
<okato>78420000000</okato>
</Station>
<Station>
<id>1078</id>
<name>Утена</name>
<region>Литва</region>
</Station>
</Body>
</GetArrivalStationsResponse>
```

### searchTrips
@@ -436,6 +350,15 @@ JSON ответ может быть только JSON-объектом. В те
<seatCount>49</seatCount>
<!-- Кол-во мест, доступных для продажи. Обязателен.-->
<freeSeatCount>49</freeSeatCount>
<!-- Ключ маршрута. Не обязателен. Используется при транзитных продажах -->
<RouteKey>
<!-- Uid станции формирования -->
<dispatchStationUid>d13945a8-7017-46ab-b1e6-ede1e89317ad</dispatchStationUid>
<!-- Uid конечной станции -->
<arrivalStationUid>279e7c39-2570-44e0-83e6-d1f473d50e0f</dispatchStationUid>
<!-- время выход с точки формирования -->
<dispatchTime>10:00:00</dispatchTime>
</RouteKey>
</Trip>
<Trip>
<id>570105</id>
@@ -494,19 +417,15 @@ JSON ответ может быть только JSON-объектом. В те
<!-- Идентификатор места. Обязателен. Может совпадать с названием.-->
<id>17926</id>
<!-- Название места. Обязателен. Отображается в интерфейсе пользователя. -->
<name>Место 1</name>
<!-- Тип места. Не обязателен -->
<type>Сидячее</type>
<num>1</num>
</Seat>
<Seat>
<id>17927</id>
<name>Место 2</name>
<type>Сидячее</type>
<num>2</num>
</Seat>
<Seat>
<id>17928</id>
<name>Место 3</name>
<type>Сидячее</type>
<num>3</num>
</Seat>
</Body>
</GetFreeSeatsResponse>
@@ -551,6 +470,7 @@ JSON ответ может быть только JSON-объектом. В те
Класс билета. Обязателен.
PASSENGER Пассажирский билет, с выделением места
BAGGAGE Багажный билет, без выделения места
WITHOUT_SEAT Пассажирский билет, без выделением места
-->
<ticketClass>PASSENGER</ticketClass>
</TicketType>
@@ -619,7 +539,7 @@ JSON ответ может быть только JSON-объектом. В те
<id>4</id>
<name>Свидетельство о рождении</name>
</DocumentType>
/Body>
</Body>
</GetDocumentTypesResponse>
```

@@ -898,7 +818,7 @@ RETURNED Выполнен возврат билета. Данный статус
<!-- Станция назначения. Обязателен. -->
<arrivalStation>Углич</arrivalStation>
<!-- Название места. Обязателен. -->
<seatName>Место 1</seatName>
<seatNum>1</seatNum>
<!-- Информация о пассажире. -->
<Passenger>
<lastName>Ckayuukvgn</lastName>


+ 635
- 0
avs5rs.xsd View File

@@ -0,0 +1,635 @@
<?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>

+ 135
- 0
avs5rs_transit.xsd View File

@@ -0,0 +1,135 @@
<?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="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:simpleType name="InnType">
<xs:restriction base="xs:string">
<xs:maxLength value="12"/>
<xs:minLength value="10"/>
</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: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="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:element name="SetStationUidRequest">
<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="SetStationUidResponse">
<xs:complexType>
<xs:complexContent>
<xs:restriction base="AbstractResponse"/>
</xs:complexContent>
</xs:complexType>
</xs:element>

<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="seatsCount" type="xs:integer"/>
<xs:element name="Agent" type="Agent" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="TransitSeat">
<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 name="TransitBookResponse">
<xs:complexType>
<xs:complexContent>
<xs:extension base="AbstractResponse">
<xs:sequence>
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element name="TransitSeat" type="TransitSeat" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>

<xs:element name="TransitConfirmRequest">
<xs:complexType>
<xs:sequence>
<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="TransitConfirmResponse">
<xs:complexType>
<xs:complexContent>
<xs:restriction base="AbstractResponse"/>
</xs:complexContent>
</xs:complexType>
</xs:element>

</xs:schema>

Loading…
Cancel
Save