Документ не вступил в силу. Подробнее см. Справку

Приложение N 2

к Требованиям к сетям и средствам

связи собственников или иных владельцев

технологических сетей связи, имеющих

уникальный идентификатор совокупности

средств связи и иных технических средств

в информационно-телекоммуникационной

сети "Интернет", для проведения

уполномоченными государственными

органами, осуществляющими

оперативно-разыскную деятельность

или обеспечение безопасности

Российской Федерации, в случаях,

установленных федеральными законами,

мероприятий в целях реализации

возложенных на них задач,

утвержденным приказом

Минцифры России

от 16 декабря 2025 г. N 1174

ТРЕБОВАНИЯ
К ПРОГРАММНЫМ И ТЕХНИЧЕСКИМ СРЕДСТВАМ, ИСПОЛЬЗУЕМЫМ
СОБСТВЕННИКАМИ ИЛИ ИНЫМИ ВЛАДЕЛЬЦАМИ ТЕХНОЛОГИЧЕСКИХ
СЕТЕЙ СВЯЗИ, ИМЕЮЩИМИ УНИКАЛЬНЫЙ ИДЕНТИФИКАТОР
СОВОКУПНОСТИ СРЕДСТВ СВЯЗИ И ИНЫХ ТЕХНИЧЕСКИХ СРЕДСТВ
В ИНФОРМАЦИОННО-ТЕЛЕКОММУНИКАЦИОННОЙ СЕТИ "ИНТЕРНЕТ",
В ЧАСТИ ПРЕДОСТАВЛЕНИЯ ИНФОРМАЦИИ, ХРАНЯЩЕЙСЯ В СХЕМЕ
ДАННЫХ, ПРИ ВЫПОЛНЕНИИ ЗАПРОСОВ ОТ ПУНКТОВ УПРАВЛЕНИЯ
УПОЛНОМОЧЕННЫХ ГОСУДАРСТВЕННЫХ ОРГАНОВ, ОСУЩЕСТВЛЯЮЩИХ
ОПЕРАТИВНО-РАЗЫСКНУЮ ДЕЯТЕЛЬНОСТЬ ИЛИ ОБЕСПЕЧЕНИЕ
БЕЗОПАСНОСТИ РОССИЙСКОЙ ФЕДЕРАЦИИ

1. Данные, хранящиеся в ИС, должны быть описаны с помощью схемы данных на языке SDL GraphQL (далее - схема данных).

2. Произвольный тип данных "A" в схеме данных должен иметь связь с произвольным типом данных "B", если произвольный тип данных "A" содержит поле произвольного типа данных "B" или поле, являющееся списком типа данных "B".

3. Произвольный тип данных "C" в схеме данных должен иметь двухстороннюю связь с произвольным типом данных "D", если произвольный тип данных "C" связан с произвольным типом данных "D" и произвольный тип данных "D" связан с произвольным типом данных "C".

4. Для схемы данных разработчиком ПТС должен быть определен перечень базовых типов данных на языке GraphQL, содержащих информацию, которая должна быть доступна для поиска в ПТС по запросам ПУ. Перечень базовых типов данных (приложение N 3 к Требованиям к ПТС) должен содержать параметры идентифицирующих признаков объектов физического мира.

5. Для схемы данных разработчиком ПТС определяется перечень сервисных типов на языке GraphQL, отражающих информацию о схеме данных, или описывающих HTTP URI для неформатированных данных, или предназначенных для получения статуса отложенных поисковых запросов или сигналов о функционировании ПТС. Посредством использования ПТС должен поддерживаться перечень сервисных типов, приведенный в приложении N 4 к Требованиям к ПТС.

6. Пользовательский тип данных на языке GraphQL, не являющийся базовым сервисным типом или встроенным типом языка GraphQL, должен содержать идентифицирующий признак объекта физического мира. Пользовательские типы используются для описания данных, содержащихся в ИС и отличных от данных, описываемых базовыми типами. Требования к пользовательским типам должны соответствовать пункту 6 настоящего приложения к Требованиям к ПТС.

7. Схема данных в части базовых, пользовательских и сервисных типов должна соответствовать следующим требованиям:

1) каждое поле пользовательского типа, которое отражает идентифицирующий признак объекта физического мира и будет доступно в качестве критерия поиска в ПТС по запросам ПУ, должно представляться базовым типом (или его списком);

2) поля пользовательского типа, которые содержат ссылки (HTTP URI) на неформатированные данные (файлы), должны представляться сервисным типом "Media";

3) остальные поля пользовательских типов должны представляться в том числе встроенными типами языка GraphQL;

4) для каждого пользовательского типа, имеющего хотя бы одно поле базового типа или связанного с другим пользовательским типом, имеющим хотя бы одно поле базового типа, должны быть определены следующие объекты языка GraphQL: тип для представления результатов выполнения поисковых запросов и входной объект для задания параметров поиска (далее - входной объект);

5) тип для представления результатов выполнения поисковых запросов должен иметь следующую структуру:

Имя поля

Тип поля

Назначение поля

cursor

String

значение курсора для последнего элемента списка (поле "result") с результатами выполнения поискового запроса для данного пользовательского типа

hasNextPage

Boolean

признак наличия следующей страницы с результатами выполнения поискового запроса для данного пользовательского типа (может использоваться с любым видом постраничного получения результатов выполнения запроса)

result

список пользовательского типа

результат выполнения поискового запроса для данного пользовательского типа

Программный код (тип поля представления результатов) выполнения поисковых запросов:

type {{UserTypeResult}} {

cursor: String

hasNextPage: Boolean

result: [{{UserType}}!]

},

в котором:

{{UserTypeResult}} - произвольное имя типа для представления результатов выполнения поисковых запросов,

{{UserType}} - имя пользовательского типа, для которого определен тип {{UserTypeResult}};

6) каждый входной объект для пользовательского типа должен иметь следующую структуру:

Имя поля

Тип поля

Назначение поля

and

список исходных входных объектов

для задания параметров поиска с логической функцией "И"

or

список исходных входных объектов

для задания параметров поиска с логической функцией "ИЛИ"

not

исходный входной объект

для задания параметров поиска с логической функцией "НЕ"

все имена полей пользовательского типа, представленные базовыми типами

входные объекты для базовых типов, определенные в приложении N 5 к Требованиям к ПТС

для задания параметров поиска конкретных полей пользовательского типа, представленных базовыми типами

Программный код входного объекта для пользовательского типа должен иметь следующую структуру:

input {{UserTypeFilterInput}} {

and: [{{UserTypeFilterInput}}]

or: [{{UserTypeFilterInput}}]

not: {{UserTypeFilterInput}}

{{base Field1}}: {{BaseFilterInput1}}

...

{{baseFieldN}}: {{BaseFilterlnputN}}},

в котором:

{{UserTypeFilterInput}} - произвольное имя входного объекта для пользовательского типа,

{{baseFieldl}...{{baseFieldN}} - поля пользовательского типа, представленные одним из базовых типов,

{{baseFilterInputl}}...{{baseFilterInputN}} - входные объекты для базовых типов, определенные в приложении N 5 к Требованиям к ПТС;

7) все пользовательские типы, их поля и аргументы должны иметь описание на русском языке;

8) связь между двумя произвольными пользовательскими типами должна быть двухсторонней, за исключением случаев, если один из пользовательских типов не имеет ни одного поля базового типа;

9) схема данных должна содержать все сервисные типы из перечня, определенного в приложении N 4 к Требованиям к ПТС.

8. Схема данных в части стандартных типов "Query", "Subscription" языка GraphQL должна соответствовать следующим требованиям:

1) тип "Query" должен иметь поле "request" для задания поисковых запросов:

"request: Query Message!"

2) тип "QueryMessage" должен иметь следующую структуру:

Имя поля

Тип поля

Назначение поля

requestID

String

идентификатор запроса

offline

Boolean

признак выполнения запроса в отложенном режиме

maxPageSize

Int

максимальное количество элементов в списке с результатами выполнения поискового запроса для одной страницы

все имена пользовательских типов, имеющие хотя бы одно поле базового типа

тип для представления результатов выполнения поисковых запросов, соответствующий пользовательскому типу

задание параметров поиска и постраничной передачи результатов поиска для пользовательского типа

Поле типа "QueryMessage", содержащее все имена пользовательских типов, имеющее хотя бы одно поле базового типа, заданное списком пользовательского типа, должно иметь следующие аргументы:

"filter" - задает параметры поиска и представляется входным объектом для данного пользовательского типа;

"offset" - задает начальное смещение для постраничной передачи результатов;

"limit" - задает максимальное количество элементов на одной странице при постраничной передаче результатов, но не более значения maxPageSize;

"cursor" - значение курсора при использовании курсорной постраничной передачи результатов.

Аргументы "offset" и "limit" должны использоваться для постраничной передачи результатов со смещением, аргументы "limit" и "cursor" - для курсорной постраничной передачи результатов.

Программный код типа QueryMessage должен иметь следующую структуру:

type QueryMessage {

requestID: String!

offline: Boolean!

maxPageSize: Int

{{userTypel}}(filter: {{UserTypeFilterInputl}}!, offset: Int, limit: Int, cursor: String):

{{UserTypeResultl}}!

...

{{userTypeN}}(filter: {{UserTypeFilterInputN}}!, offset: Int, limit: Int, cursor: String):

{{UserTypeResultN}}!

},

в котором:

{{userTypel}}...{{userTypeN}} - имена пользовательских типов, имеющих хотя бы одно поле базового типа;

{{UserTypeResultl}}...{{UserTypeResultN}} - имена типов для представления результатов выполнения поисковых запросов, соответствующие пользовательским типам;

{{UserTypeFilterInputl}}...{{UserTypeFilterInputN}} - входные объекты, соответствующие пользовательским типам;

3) тип "Subscription" должен содержать следующие поля для задания запросов постановки объектов на контроль:

Имя поля

Тип поля

Назначение поля

все имена пользовательских типов, имеющие хотя бы одно поле базового типа

список пользовательского типа

задание параметров постановки объектов на контроль для пользовательского типа

Каждое поле в типе "Subscription", представленное списком пользовательского типа, должно иметь аргумент "filter" для задания параметров постановки объектов на контроль и представляться входным объектом для данного пользовательского типа.

Программный код типа "Subscription" должен иметь следующую структуру:

type Subscription {

{{userTypel}}(filter: {{UserTypeFilterInputl}}!): [{{UserTypel}}!]

...

{{userTypeN}}(filter: {{UserTypeFilterInputN}}!): [{{UserTypeN}}]!

},

в котором:

{{userTypel}}...{{userTypeN}} - имена пользовательских типов, имеющих хотя бы одно поле базового типа,

{{UserTypeFilterInputl}}...{{UserTypeFilterInputN}} - входные объекты, соответствующие пользовательским типам.

4) типы "Query" и "Subscription" должны содержать все запросы, соответствующие сервисным типам, которые приведены в приложении N 4 к Требованиям к ПТС.

9. В ПТС должны поддерживаться переменные типа "variables" языка GraphQL в поисковых запросах и запросах постановки объектов на контроль, получаемых от ПУ. В ПТС должна обеспечиваться возможность использования актуальных перечней базовых, сервисных типов и входных объектов для поиска.

10. Использование базовых, сервисных типов и входных объектов для задания параметров поиска, не предусмотренными Требованиями к ПТС, должно согласовываться во время внедрения ПТС с уполномоченными государственными органами, осуществляющими оперативно-разыскные мероприятия или обеспечение безопасности Российской Федерации.

11. Наименование пользовательского типа и его полей должно соответствовать следующим требованиям:

использование символа подчеркивания "_" в именах типов и их полей не допускается;

имена пользовательских типов пишутся с заглавной буквы и могут состоять из нескольких слов, написанных слитно без пробелов, каждое слово должно быть написано с заглавной буквы;

имена полей пользовательских типов пишутся со строчной буквы и могут состоять из нескольких слов, написанных слитно без пробелов, каждое слово, кроме первого слова, должно быть написано с заглавной буквы.