Обмен информацией между демонстратором фильма и ЕАИС
Порядок обмена информацией между демонстратором фильма и оператором единой федеральной автоматизированной системы сведений о показах фильмов в кинозалах, включая формы ее запроса и предоставл
I. Общие положения
1. Порядок обмена информацией между демонстратором фильма и оператором единой информационной системы сведений о показах фильмов в кинозалах (далее соответственно - Порядок, ЕИС) определяет состав информации, формы и форматы документов, которыми обмениваются участники информационного обмена.
2. Участниками информационного обмена являются оператор ЕИС и демонстраторы фильмов. Пользователи ЕИС получают информацию, содержащуюся в ЕИС, на условиях, установленных постановлением Правительства Российской Федерации от 18 октября 2010 года № 837 "О функционировании единой федеральной автоматизированной информационной системы сведений о показе фильмов в кинозалах" (Собрание законодательства Российской Федерации, 2010, № 43, ст. 5508).
II. Обмен информацией между демонстратором фильмов и оператором ЕИС
3. Обмен информацией между демонстратором фильмов и оператором ЕИС происходит в автоматическом режиме с использованием информационно-телекоммуникационных сетей, программно-аппаратных средств в электронном виде в формате XML-документов.
4. XML-документ, сформированный демонстратором фильма для передачи в ЕИС, должен содержать информацию о количестве реализованных билетов на один киносеанс в конкретные дату и время киносеанса и определенном кинозале. В рамках одного сеанса связи может быть передано несколько XML-документов, если к моменту передачи данных у демонстратора фильмов реализована продажа билетов на два и более киносеанса.
5. Структура XML-документа состоит из единственного корневого элемента seans, который имеет свои атрибуты и содержит необходимое количество дочерних элементов документа film (сведения о фильме) и form (бланки билетов) со своими атрибутами. Название фильма должно точно соответствовать прокатному удостоверению.
6. Обмен данными в формате XML-документа описан в приложении № 1 к настоящему Порядку.
7. В случае необходимости удаления или замены данных по реализованным билетам, демонстратор фильмов направляет в ЕИС XML-документ, содержащий сведения об удаляемых билетах, идентичные переданным по этим билетам первоначально, за исключением цены и скидки, которые должны быть указаны со знаком "-" (минус). Скорректированные сведения направляются демонстратором фильмов в соответствии с пунктами 5-7 настоящего Порядка. Первоначально переданные сведения из ЕИС не удаляются, а получают статус неактуальных и не учитываются в статистических данных по кассовым сборам.
8. XML-документы, подготовленные демонстратором фильмов к передаче в ЕИС, именуются: <префикс>_<идентификатор>_<дата>_<время>.<тип>, где:
1) <префикс> - всегда "ekb";
2) <идентификатор> уникальный идентификатор, получаемый демонстратором фильмов от оператора ЕИС при регистрации;
3) <дата> - дата создания документа в формате ГГГТММДД: ГГГГ - год, ММ - месяц (01-12), ДД - день (01-31);
4) <время> - время создания документа в формате ЧЧММССННН: ЧЧ - часы (00-24), ММ - минуты (00-59), СС - секунды (00-59), ННН - миллисекунды (000-999);
5) <тип> - "xml" или "zip", если XML-документы передаются в упакованном виде.
Пример:
ekb_305_20100511 100845768.xml или ekb_1677_20100511_185526897.zip
9. XML-документы упаковываются (архивируются) в формате zip по одному файлу либо в пакет, содержащий несколько файлов.
10. Если файл-архив содержит XML-документы только одного демонстратора фильмов, то в имени файла-архива указывается код демонстратора фильмов. Если в нем содержатся XML-документы по нескольким демонстраторам фильмов, то в имени файла-архива должен указываться код киносети.
11. Код в имени XML-документа всегда должен совпадать с атрибутом "org_id" внутри файла.
12. Если XML-документы отправляются от имени киносети, то необходимо использовать пару ИМЯ ПОЛЬЗОВАТЕЛЯ/ПАРОЛЬ киносети.
13. Передача в ЕИС одноимённых XML-документов не допускается.
14. Для обеспечения информационного обмена при регистрации в ЕИС каждому демонстратору фильмов присваивается уникальный идентификационный номер ID, который будет использоваться в XML-документе, для чего генерируется ИМЯ ПОЛЬЗОВАТЕЛЯ и строка-ПАРОЛЬ (длиной не менее 8 символов). Пара ИМЯ ПОЛЬЗОВАТЕЛЯ/ПАРОЛЬ автоматически, скрыто от оператора ЕИС, отправляется на электронный адрес демонстратора фильмов, указанный в регистрационной карте.
15. Передача данных в ЕИС осуществляется демонстратором фильмов по следующему адресу в сети Интернет: https://ekinobilet.ru/ekbs/upload.aspx
16. XML-документ передается на сервер ЕИС информационно-телекоммуникационными средствами демонстратора фильмов или киносети по HTTPS протоколу. Метод запроса: POST, MIME-тип: multipart/form-data в соответствии с RFC 1867 (http://www.ietf.org/rfc/rfcl867.txt). Запрос должен содержать три параметра:
1) login (строка, ИМЯ ПОЛЬЗОВАТЕЛЯ);
2) password (строка, ПАРОЛЬ);
3) XMLfile (файл, XML-документ).
Значения полей 1) и 2) демонстратор фильмов получает от оператора ЕИС при регистрации в ЕИС, поле 3) - файл. Тип разрешенных на прием файлов: *.zip, *.xml.
17. В случае несоответствия XML-документа пункту 17 настоящего Порядка XML-документ не принимается ЕИС, а на запрос отправляется ответ в формате XML:
<?xml version="1.0" encoding="utf-8"?>
<files zip="ekb_000_20100429_l 10656_28740_ok.zip">
<result filename="ekb_000_20100429_l 10656_28740.xml" errcount="1" > <error code="5"><! [СDАТА[Ошибка!!! ".]]></error>
</result>
<result filename="ekb_000_20100429_l 10656_28741.xml" errcount="0" /> </files>
- для пакета из нескольких документов, или
<?xml version="1.0" encoding="utf-8"?> <files>
<result filename=Mekb_000_20100429_l 10656_28741.xml" errcount="l" >
<еrrоr соdе="5"><![СDАТА[Ошибка!!! ".]]></error> </result> </files>.
- для одного документа.
18. Принятый (загруженный) в ЕИС XML-документ подлежит автоматической обработке, а демонстратору фильмов направляется сообщение в формате XML:
<?xml version=@1/0" encoding="utf-8"?>
<files zip="ekb_000_20100429_l10656_28740_ok.zip"> <result filename="ekb_000_20100429_l 10656_28740.xml" errcount="0" /> <result filename="ekb_000_20100429_l 10656_28741.xml" errcount="0" />
</files>
- для пакета из нескольких документов, или
<?xml version="1.0" encoding="utf-8"?> <files>
<result filename="ekb_000_20100429_l 10656_28741.xml" errcount="07> </files>.
- для одного документа.
Описание ответа приведено в приложении № 2 к настоящему Порядку.
19. Если демонстратором фильмов в результате загрузки XML-документа не получено ответа, указанного в пункте 19 настоящего Порядка, то необходимо повторно отправить (загрузить) на сервер ЕИС XML-документ.
20. Принятый (загруженный) в ЕИС XML-документ проверяется и загружается в центральную базу данных, в результате чего автоматически создается файл протокола по каждому XML-документу. Протоколы загрузки формируются в папке "исходящие" для каждого демонстратора фильмов.
21. Описание протокола загрузки приведено в приложении № 3 к настоящему Порядку.
22. Если в результате обработки и загрузки XML-документа не было обнаружено ошибок, то содержимое протокола загрузки будет иметь следующий вид:
<?xml version="1.0" encoding="UTF-8"?> <result errcount="0"/>.
23. В случае обнаружения ошибки содержимое протокола загрузки будет иметь следующий вид:
<?xml version="1.0" encoding="UTF-8"?>
<result errcount="3">
<error соdе"1>Ошибка l</error>
<error соdе="2">Ошибка 2</error>
<error соdе="3">Ошибка 3</error>
</result>
24. Имя файла протокола формируется следующим образом: {имя обработанного XML-документа} (res).xml.
Пример: для XML-документа ekb_305_20100511_100845768.xml будет сформирован файл протокола с именем: ekb_305_2010051 l_100845768(res).xml.
25. Для загрузки содержимого папки "исходящие" с сервера ЕИС демонстратор фильмов направляет запрос по адресу в сети Интернет: https://ekinobilet.ru/ekbs/upload.aspx по HTTPS протоколу, метод: POST MIME-тип: multipart/form-data в соответствии с RFC 1867 (http://www.ietf.org/rfc/rfcl867.txt). Запрос должен содержать три параметра:
1) login (строка, ИМЯ ПОЛЬЗОВАТЕЛЯ);
2) password (строка, ПАРОЛЬ);
3) get (list I all: <file_name>,<file_name>,... ).
Значения 1) и 2) демонстратор фильмов получает при регистрации в системе, параметр 3) get может принимать следующие значения:
"get=list" - при этом сервер ЕИС возвращает список XML-документов, которые находятся в папке "исходящие" для данного демонстратора фильмов, в формате XML;
"get=all" - при этом сервер ЕИС вернет zip-файл, в котором будут содержаться все файлы папки "исходящие";
"get=<file_name>,<file_name>,..." - при этом сервер ЕИС вернет zip-файл, в котором будут содержаться все файлы запрошенные командой "get".
26. Описание ответа сервера ЕИС на запрос демонстратора фильмов "list" приводится в приложении № 4 к настоящему Порядку.
III. Предоставление информации, содержащейся в ЕИС, пользователям
27. С целью получения информации, содержащейся в ЕИС, в полном объеме и в отношении конкретного фильма, пользователь оформляет у оператора ЕИС регистрационную карту на бумажном носителе, после чего получает от оператора ЕИС идентификационный номер (ID пользователя), а также необходимые атрибуты для входа в эту систему (логин, пароль).
28. Пользователь оформляет запрос на предоставление информации по форме, представленной в приложении № 5 к настоящему Порядку.
29. Оператор ЕИС оформляет запрашиваемую пользователем информацию по форме, представленной в приложении № 6 к настоящему Порядку.
Приложение № 1 к Порядку
Схема бланка XML-документа обмена данными
<?xml version-"1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/200 l/XMLSchema">
<!-- types -->
<xs:simpleType name="datetime_min">
<xs:annotation>
<xs:documentation>дата и время в формате: "ГГГГММДД ЧЧ:HH"</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="14"/>
<xs:pattern value="[12][0-9] {3} [01 ][0-9][0123][0-9] [ ] [012] [0-9][:][0-5][0-9]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="datetime_sec">
<xs:annotation>
<xs:documentation>дата и время в формате:"ГГГГММДД ЧЧ:HH:CC"</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="17"/>
<xs:pattern value="[12][0-9]{3}[01][0-9][0123][0-9][ ][012][0-9][:][0-5][0-9][:][0-5][0-9]7>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="money">
<xs:restriction base="xs:double">
<xs:pattern value="([-])?([0-9])+([.] {1} [0-9] {1,2} )?"/>
</xs:restriction>
</xs:simpleType>
<!-- form -->
<xs:element name="form">
<xs:annotation>
<xs:documentation>бланк билeтa</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="place_x" use="required">
<xs:annotation>
<xs:documentation>мecтo</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="place_y" use="required">
<xs:annotation>
<xs:documentation>ряд</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="section" use="optional">
<xs:annotation>
<xs:documentation>Ceкция (балкон, ложа,...), если есть деление зала на секции</хs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="price" type="money" use="required">
<xs:annotation>
<xs:documentation>цена продажи билета (с учетом скидки, в руб.коп., в случае возврата - цена отрицательная)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="discount" type="money" use="required">
<xs:annotation>
<xs:documentation>скидка на стоимость билета (в руб.коп., в случае возврата - скидка отрицательная)</хs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ticket_type" use="required">
<xs:annotation>
<xs:documentation>тип билета(VIР, студенческий, детский,. ..)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="sale_date" type="datetime_sec" use="required">
<xs:annotation>
<xs:documentation>дата и время продажи в формате: "ГГГГММДД ЧЧ:НН:СС". Например: "20080708 12:56:43"</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- film -->
<xs:element name="film">
<xs:annotation>
<xs:documentation>Элемент описывает один из фильмов данного сеанса. Т.е. если в течение сеанса демонстрируется несколько фильмов, тогда их надо описывать данными элементами. Содержимое элемента - название фильма, соответствующее прокатному yдостоверению.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="pu_number" use="required">
<xs:annotation>
<xs:documentation>номep прокатного удостоверения (в случае отсутствия передается 0)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<!-- seans -->
<xs:element name="seans">
<xs:annotation>
<xs:documentation>элемент описывает совокупность данных зал-сеанс. Сеанс однозначно определяется набором из 3-х полей: org_id, showroom, seans_date</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="film" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Элемент описывает один из фильмов данного сеанса. Т.е. если в течение сеанса демонстрируется несколько фильмов, тогда их надо описывать данными элементами. Содержимое элемента - название фильма, соответствующее прокатному удостоверению </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="form" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>элемент описывает совокупность данных по бланку билeтa</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="org_id" use="required">
<xs:annotation>
<xs:documentation>уникальный идентификатор Демонстратора фильмов, получаемый при peгистрации</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:unsignedInt"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="showroom" use="required">
<xs:annotation>
<xs:documentation>название зала</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="seans_date" type="datetime_min" use="required">
<xs:annotation>
<xs:documentation>дата и время начала сеанса в формате: "ГГГГММДД ЧЧ:НН". Например: "20080708 12:56"</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="seans_title">
<xs:annotation>
<xs:documentation>название сеанса (заполняется для сеансов, в которых демонстрируется несколько фильмов)<хs: documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Приложение № 2 к Порядку
Схема ответа на POST-запрос загрузки файла
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://vvww.w3.org/2001/XMLSchema">
<xs:element name="result">
<xs:annotation>
<xs:documentation>Протокол обработки ekb-файла</xs:documentation>
</xs:annotation>
<xs:complехТуре>
<xs:sequence>
<xs:element name="error" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>ошибка при загрузке. Таких ошибок может быть несколько и разных типов.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="code" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Koд ошибки</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="fllename" type="xs:string">
<xs:annotation>
<xs:documentation>Имя файла в котором обнаружены ошибки. Присутствует если это протокол проверки файла на корректность в синхронном режиме.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="errcount" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Kоличество ошибок всего. Если 0 значит файл обработан и загружен без ошибок.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="files">
<xs:complexType>
<xs:sequence>
<xs:element ref="result" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="zip" type="xs:string">
<xs:annotation>
<xs:documentation>Имя файла zip-apxива</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Приложение № 3 к Порядку
Схема протокола загрузки
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/200l/XMLSchema">
<xs:element name="result">
<xs:annotation>
<xs:documentation>Протокол обработки ekb-файла</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="error" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Ошибка при загрузке. Таких ошибок может быть несколько и разных типов.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="code" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Код ошибки</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="filename" type="xs:string">
<xs:annotation>
<xs:documentation>Имя файла в котором обнаружены ошибки. Присутствует если это протокол проверки файла на корректность в синхронном режиме. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="errcount" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Количество ошибок всего. Если 0 значит файл обработан и загружен без ошибок.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Приложение № 4 к Порядку
Схема ответа "list"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:annotation>
<xs:documentation>Список файлов в папке "исходящие"</хs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="file" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Файл</xs:documentation>
</xs:armotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Имя файла</xs:documentation>
</xs:armotation>
</xs:attribute>
<xs:attribute name="size" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Размер файла в байтax</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="count" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Общее кол-во файлов</xs:documentation>
</xs:armotation>
</xs:attribute>
<xs:attribute name="size" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Общий размер файлов в байтax</xs:documentation>
</xs:armotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>