Приложение № 5. Перечень входных объектов для задания параметров поиска
1. В схеме данных для задания параметров поиска должны быть описаны входные объекты (Input Objects) на языке GraphQL для каждого пользовательского типа, имеющего хотя бы одно поле базового типа или связанного с другим пользовательским типом, имеющим хотя бы одно поле базового типа.
2. Каждый входной объект для базового типа должен содержать поля "and", "or" и "not", соответствующим логическим функциям "И", "ИЛИ" и "НЕ", а также может содержать поля для функций, приведенных в таблице № 1 настоящего приложения к Требованиям к ПТС. В случае если числовая функция применяется к строкам, то на множестве строк подразумевается лексикографический порядок.
Таблица № 1
| № п/п | Функция | Описание | |
| 1. | Операции сравнения | lt | Меньше, чем |
| 2. | Операции сравнения | le | Меньше либо равно |
| 3. | Операции сравнения | eq | Равно |
| 4. | Операции сравнения | in | В [списке] |
| 5. | Операции сравнения | between | Между значениями min и max |
| 6. | Операции сравнения | ge | Больше либо равно |
| 7. | Операции сравнения | gt | Больше |
| 8. | Регулярные выражения | regexp | Регулярное выражение в формате POSIX Basic Regular Expression |
| 9. | Поиск по тексту | allofterms | Соответствие строкам, содержащим все указанные термины в произвольном порядке, без учета регистра |
| 10. | Поиск по тексту | anyofterms | Соответствие строкам, содержащим любой из указанных терминов в произвольном порядке, без учета регистра |
| 11. | Поиск по тексту | alloftext | Полнотекстовый поиск по всему полю |
| 12. | Поиск по тексту | anyoftext | Полнотекстовый поиск по любой части поля |
| 13. | Геопоиск | near | Соответствие объектам, предикат которых находится не более, чем на расстоянии "distance" метров от точки "point" |
| 14. | Геопоиск | within | Соответствие объектам, предикат которых находится в пределах полигона, заданного в качестве аргумента |
| 15. | Геопоиск | contains | Соответствует объектам, предикат которых содержит указанные точку или полигон |
| 16. | Геопоиск | intersects | Соответствует объектам, предикат которых имеет непустое пересечение с указанным полигоном или мультиполигоном |
| 17. | Геопоиск (для геотрека) | nearTime | Соответствие объектам, предикат которых находится не более, чем на расстоянии "distance" от точки "point", при этом время, в которое предикат находился в данной области, ограничено фильтром по времени |
| 18. | withinTime | Соответствие объектам, предикат которых находится в пределах полигона, заданного в качестве аргумента, при этом время, в которое предикат находился в данной области, ограничено фильтром по времени | |
| 19. | intersectsTime | Соответствует объектам, предикат которых имеет непустое пересечение с заданным полигоном или мультиполигоном, при этом время, в которое предикат находился в данной области, ограничено фильтром по времени | |
3. Для описания входных объектов, соответствующих пользовательским типам, должны использоваться входные объекты для базовых типов, приведенные в таблице № 2 настоящего приложения к Требованиям к ПТС.
Таблица № 2.
| № п/п | Базовый тип и (или) скалярный тип | Входные объекты для задания параметров поиска |
| 1. | type ImsiBase | """ Входной объект для базового типа идентификатора мобильного абонента """ input ImsiBaseFilter { """ Фильтр для идентификатора мобильного абонента """ imsi: StringFilter and: [ImsiBaseFilter] or: [ImsiBaseFilter] not: ImsiBaseFilter } |
| 2. | type ImeiBase | """ Входной объект для базового типа идентификатора мобильной станции """ input ImeiBaseFilter { """ Фильтр для идентификатора мобильной станции """ imei: StringFilter and: [ImeiBaseFilter] or: [ImeiBaseFilter] not: ImeiBaseFilter } |
| 3. | type MsisdnBase | """ Входной объект для базового типа номера абонента сети сотовой связи """ input MsisdnBaseFilter { """ Фильтр для номера абонента сети сотовой связи """ msisdn: StringFilter and: [MsisdnBaseFilter] or: [MsisdnBaseFilter] not: MsisdnBaseFilter } |
| 4. | type MccBase | """ Входной объект для базового типа кода страны, в которой находится оператор связи """ input MccBaseFilter { """ Фильтр для кода страны, в которой находится оператор связи """ mcc: IntFilter and: [MccBaseFilter] or: [MccBaseFilter] not: MccBaseFilter } |
| 5. | type MncBase | """ Входной объект для базового типа кода оператора связи """ input MncBaseFilter { """ Фильтр для кода оператора связи """ mnc: IntFilter and: [MncBaseFilter] or: [MncBaseFilter] not: MncBaseFilter } |
| 6. | type LacBase | """ Входной объект для базового типа кода географической зоны, обслуживаемой одним контроллером базовых станций """ input LacBaseFilter { """ Фильтр для кода географической зоны, обслуживаемой одним контроллером базовых станций """ lac: IntFilter and: [LacBaseFilter] or: [LacBaseFilter] not: LacBaseFilter } |
| 7. | type CellBase | """ Входной объект для базового типа идентификатора сектора базовой станции """ input CellBaseFilter { """ Фильтр для идентификатора сектора базовой станции """ cell: IntFilter and: [CellBaseFilter] or: [CellBaseFilter] not: CellBaseFilter } |
| 8. | type EmailBase | """ Входной объект для базового типа адреса электронной почты """ input EmailBaseFilter { """ Фильтр для адреса электронной почты """ email: StringFilter and: [EmailBaseFilter] or: [EmailBaseFilter] not: EmailBaseFilter } |
| 9. | type AddressBase | """ Входной объект для базового типа структурированных адресных данных """ input AddressBaseFilter { """ Фильтр для неструктурированного адреса """ address: StringFilter """ Фильтр для почтового индекса, zip-кода """ zip: StringFilter """ Фильтр для страны """ country: StringFilter """ Фильтр для области """ region: StringFilter """ Фильтр для района, муниципального округа """ zone: StringFilter """ Фильтр для города, поселка, деревни """ city: StringFilter """ Фильтр для улицы """ streetStringFilter """ Фильтр для дома, строения """ building: StringFilter """ Фильтр для корпуса """ buildsect: StringFilter """ Фильтр для квартиры, офиса """ apartment: StringFilter and: [AddressBaseFilter] or: [AddressBaseFilter] not: AddressBaseFilter } |
| 10. | type PassportBase | """ Входной объект для базового типа паспортных данных """ input PassportBaseFilter { """ Фильтр для номера паспорта """ number: StringFilter """ Фильтр для серии паспорта """ series: StringFilter and: [PassportBaseFilter] or: [PassportBaseFilter] not: PassportBaseFilter } |
| 11. | type PersonBase | """ Входной объект для базового типа фамилии, имени, отчества (при наличии) """ input PersonBaseFilter { """ Фильтр для неструктурированной информации о фамилии, имени, отчестве (при наличии) """ fullName: StringFilter """ Фильтр для имени """ name: StringFilter """ Фильтр для отчества (при наличии) """ middleName: StringFilter """ Фильтр для фамилии """ lastName: StringFilter and: [PersonBaseFilter] or: [PersonBaseFilter] not: PersonBaseFilter } |
| 12. | type DrivingLicenseNumberBase | """ Входной объект для базового типа номера водительского удостоверения """ input DrivingLicenseNumberBaseFilter { """ Фильтр для номера водительского удостоверения """ drivingLicenseNumber: StringFilter and: [DrivingLicenseNumberBaseFilter] or: [DrivingLicenseNumberBaseFilter] not: DrivingLicenseNumberBaseFilter } |
| 13. | type VehicleGosNumberBase | """ Входной объект для базового типа государственного регистрационного номера транспортного средства """ input VehicleGosNumberBaseFilter { """ Фильтр для государственного регистрационного номера транспортного средства """ vehicleGosNumber: StringFilter and: [VehicleGosNumberBaseFilter] or: [VehicleGosNumberBaseFilter] not: VehicleGosNumberBaseFilter } |
| 14. | type InnBase | """ Входной объект для базового типа идентификационного номера налогоплательщика """ input InnBaseFilter { """ Фильтр для значения идентификационного номера налогоплательщика """ inn: StringFilter and: [InnBaseFilter] or: [InnBaseFilter] not: InnBaseFilter } |
| 15 | type DateTimeBase | """ Входной объект для базового типа информации о дате и времени """ input DateTimeBaseFilter { """ Фильтр для информации о дате и времени в расширенном формате местного времени с разницей со Всемирным координированным временем (UTC) YYYY-MM-DDThh:mm:ss±hh:mm """ utc: DateTimeStringFilter and: [DateTimeBaseFilter] or: [DateTimeBaseFilter] not: DateTimeBaseFilter } """ Входной объект: используемые операции сравнения для информации о дате и времени """ input DateTimeStringFilter { eq: String in: [String] le: String lt: String ge: String gt: String between: DateTimeRange } """ Входной объект: информация о временном промежутке для использования в операциях сравнения """ input DateTimeRange { min: String! max: String! } |
| 16. | type PointBase | """ Входной объект для базового типа пространственной информации: точки """ input PointBaseFilter { """ Фильтр для точек в пространстве: нахождение около аргумента фильтра в заданных пределах """ near: NearFilter """ Фильтр для точек в пространстве: нахождение внутри заданного полигона """ within: WithinFilter and: [PointBaseFilter] or: [PointBaseFilter] not: PointBaseFilter } """ Входной объект: пространственный фильтр нахождения около заданной точки в указанных пределах """ input NearFilter { """ Дистанция в метрах до используемой точки в пространстве в фильтре """ distance: Float! """ Точка в пространстве, по дистанции до которой происходит фильтрация """ point: PointRef! } """ Входной объект: пространственный фильтр нахождения внутри заданного полигона """ input WithinFilter { """ Полигон в пространстве, по нахождению в котором происходит фильтрация """ polygon: PolygonRef! } """ Входной объект: точка в пространстве для использования в фильтрах """ input PointRef { """ Долгота в градусах """ longitude: Float! """ Широта в градусах """ latitude: Float! } |
| 17. | type LineBase | """ Входной объект для базового типа пространственной информации: последовательности точек (линии) """ input LineBaseFilter { """ Фильтр для последовательности точек в пространстве: нахождение около аргумента фильтра в заданных пределах """ near: NearFilter """ Фильтр для последовательности точек в пространстве: нахождение внутри заданного полигона """ within: WithinFilter """ Фильтр для последовательности точек в пространстве: пересечение с заданным полигоном """ intersects: IntersectsFilter and: [LineBaseFilter] or: [LineBaseFilter] not: LineBaseFilter } """ Входной объект: пространственный фильтр пересечения с заданным полигоном """ input IntersectsFilter { """ Полигон в пространстве, по пересечению с которым происходит фильтрация """ polygon: PolygonRef } """ Входной объект: последовательность точек в пространстве для использования в фильтрах """ input LineRef { points: [PointRef!]! } |
| 18 | type PointTimeBase | """ Входной объект для базового типа пространственно-временной информации: точки в пространстве с привязкой к дате и времени """ input PointTimeBaseFilter { """ Фильтр для пространственной информации """ point: PointBaseFilter """ Фильтр для временной информации """ time: DateTimeBaseFilter and: [PointTimeBaseFilter] or: [PointTimeBaseFilter] not: PointTimeBaseFilter } """ Входной объект: точки в пространстве с привязкой к дате и времени для использования в фильтрах """ input PointTimeRef { point: PointRef! time: String! } |
| 19. | type PolygonBase | """ Входной объект для базового типа пространственной информации: полигона """ input PolygonBaseFilter { """ Фильтр для полигона: нахождение около аргумента фильтра в заданных пределах """ near: NearFilter """ Фильтр для полигона: нахождение внутри заданного полигона """ within: WithinFilter """ Фильтр для полигона: содержание заданных точки или полигона """ contains: ContainsFilter """ Фильтр для полигона: пересечение с заданным полигоном """ intersects: IntersectsFilter and: [PolygonBaseFilter] or: [PolygonBaseFilter] not: PolygonBaseFilter } """ Входной объект: пространственный фильтр включения заданной точки или полигона """ input ContainsFilter { """ Точка в пространстве, по включению которой в исходный полигон происходит фильтрация """ point: PointRef """ Полигон в пространстве, по включению которого в исходный полигон происходит фильтрация """ polygon: PolygonRef } """ Входной объект: полигон в пространстве для использования в фильтрах """ input PolygonRef { lines: [LineRef!]! } |
| 20. | type MultiPolygonBase | """ Входной объект для базового типа пространственной информации: мультиполигона """ input MultiPolygonBaseFilter { """ Фильтр для мультиполигона: нахождение около аргумента фильтра в заданных пределах """ near: NearFilter """ Фильтр для мультиполигона: нахождение внутри заданного полигона """ within: WithinFilter """ Фильтр для мультиполигона: содержание заданных точек или полигона """ contains: ContainsFiIter """ Фильтр для мультиполигона: пересечение с заданным полигоном """ intersects: IntersectsFilter and: [MultiPolygonBaseFilter] or: [MultiPolygonBaseFilter] not: MultiPolygonBaseFilter } |
| 21. | type GeoTrackBase | """ Входной объект для базового типа пространственно-временной информации: трек """ input GeoTrackBaseFilter { """ Фильтр для временной информации: прохождение маршрута в указанное время """ time: DateTimeBaseFilter """ Фильтр для пространственной информации: нахождение около аргумента фильтра в заданных пределах """ near: NearFilter! """ Фильтр для пространственно-временной информации: нахождение около аргумента фильтра в заданных пределах в указанное время """ nearTime: NearTimeFilter! """ Фильтр для пространственной информации: нахождение внутри заданного полигона """ within: WithinFilter! """ Фильтр для пространственно-временной информации: нахождение внутри заданного полигона в указанное время """ withinTime: WithinTimeFilter! """ Фильтр для пространственной информации: пересечение с заданным полигоном """ intersects: IntersectsFilter! """ Фильтр для пространственно-временной информации: пересечение с заданным полигоном в указанное время """ intersectsTime: IntersectsTimeFilter! """ Фильтр для пространственно-временной информации: пересечение с заданным треком в указанных промежутках времени и расстояния """ intersectsTrack: IntersectsTrackFilter! and: [GeoTrackBaseFilter] or: [GeoTrackBaseFilter] not: GeoTrackBaseFilter } """ Входной объект: пространственно-временной фильтр нахождения около заданной точки в указанных пределах в заданное время """ input NearTimeFilter { distance: Float! point: PointRef! time: DateTimeBaseFilter! } """ Входной объект: пространственно-временной фильтр нахождения внутри заданного полигона в указанное время """ input WithinTimeFilter { polygon: PolygonRef! time: DateTimeBaseFilter! } """ Входной объект: пространственно-временной фильтр пересечения с заданным полигоном в указанное время """ input IntersectsTimeFilter { polygon: PolygonRef time: DateTimeBaseFilter! } """ Входной объект: пространственно-временной фильтр пересечения с заданным треком в указанных интервалах расстояния и времени """ input IntersectsTrackFilter { geotrack: GeoTrackRef! deltaTime: DeltaTimeRef! distance: Float! } """ Входной объект: период времени в секундах """ input DeltaTimeRef { second: Int! } """ Входной объект: трек для использования в фильтрах """ input GeoTrackRef { pointsInTime: [PointTimeRef]! } |
| 22. | type BankAccountlnfoBase | """ Входной объект для базового типа банковских данных """ input BankAccountlnfoBaseFilter { """ Фильтр для имени банка """ bankName: StringFilter """ Фильтр для номера счета """ account: StringFilter """ Фильтр для номера корреспондентского счета """ corrAccount: StringFilter """ Фильтр для номера карты """ cardNumber: StringFilter """ Фильтр для банковского идентификационного кода """ rcbic: StringFilter """ Фильтр для КПП """ kpp: StringFilter and: [BankAccountlnfoBaseFilter] or: [BankAccountlnfoBaseFilter] not: BankAccountlnfoBaseFilter } |
| 23. | type BankTransferlnfoBase | """ Входной объект для базового типа банковских переводов """ input BankTransferlnfoBaseFilter { """ Фильтр для отправителя """ from: BankAccountlnfoBaseFilter """ Фильтр для получателя """ to: BankAccountlnfoBaseFilter """ Фильтр для суммы перевода """ amount: FloatFilter """ Фильтр для даты и времени перевода """ date: DateTimeBaseFilter and: [BankTransferlnfoBaseFilter] or: [BankTransferlnfoBaseFilter] not: BankTransferlnfoBaseFilter } |
| 24. | type OrganizationlnfoBase | """ Входной объект для базового типа сведений о юридических лицах и индивидуальных предпринимателях """ input OrganizationlnfoBaseFilter { """ Фильтр для полного наименования организации """ nameFull: StringFilter """ Фильтр для сокращенного наименования организации (при наличии) """ nameSmall: StringFilter """ Фильтр для ОГРН организации """ grn: GRNBaseFilter """ Фильтр для ИНН организации """ inn: InnBaseFilter """ Фильтр для ИНН иностранный организации """ vat: StringFilter """ Фильтр для банковских данных организации """ bankInfo: BankAccountlnfoBaseFilter """ Фильтр для номера телефона организации """ msisdn: MsisdnBaseFilter """ Фильтр для сайта организации (при наличии) """ webSite: URLBaseFilter """ Фильтр для электронной почты организации (при наличии) """ email: EmailBaseFilter """ Фильтр для даты регистрации организации """ dataRegistration: DateTimeBaseFilter """ Фильтр для неструктурированного адреса организации """ address: AddressBaseFilter """ Фильтр для представителя организации """ representative: OrganizationRepresentativeBaseFilter """ Фильтр для ОКВЭД организации """ okved: StringFilter """ Фильтр для ЕГРЮЛ """ egrul: StringFilter """ Фильтр для ЕГРИП """ egrip: StringFilter and: [OrganizationlnfoBaseFilter] or: [OrganizationlnfoBaseFilter] not: OrganizationlnfoBaseFilter } """ Входной объект для базового типа ОГРН или ОГРНИП """ input GRNBaseFilter { """ Фильтр для ОГРН или ОГРНИП """ grn: StringFilter and: [GRNBaseFilter] or: [GRNBaseFilter] not: GRNBaseFilter } |
| 25. | type OrganizationRepresentativeBase | """ Входной объект для базового типа сведений об учредителях (участниках) юридического лица, лицах, имеющих право без доверенности действовать от имени юридического лица """ input OrganizationRepresentativeBaseFilter { """ Фильтр для должности """ position: StringFilter """ Фильтр для ИНН лица """ inn: InnBaseFilter """ Фильтр для фамилии, имени, отчества (при наличии) """ name: PersonBaseFilter and: [OrganizationRepresentativeBaseFilter] or: [OrganizationRepresentativeBaseFilter] not: OrganizationRepresentativeBaseFilter } |
| 26. | type IpAddressBase | """ Входной объект для базового типа IP-адреса """ input IpAddressBaseFilter { """ Фильтр подсетей, которые входят в искомую подсеть Для указания подсети используется CIDR-нотация (10.10.10.0/24) При отсутствии явного указания маски подсети принимается значение 32 (для IPv4) и 128 (для IPv6) """ inSubnet: String } """ Входной объект для базового типа IP-адреса (поиск подсетей) """ input IpSubnetBaseFilter { """ Фильтр подсетей, которые входят в искомую подсеть Для указания подсети используется CIDR-нотация (10.10.10.0/24) При отсутствии явного указания маски подсети принимается значение 32 (для IPv4) и 128 (для IPv6) """ inSubnet: String """ Фильтр подсетей, в которые входит искомая подсеть Для указания подсети используется CIDR-нотация При отсутствии явного указания маски подсети принимается значение 32 (для IPv4) и 128 (для IPv6) """ outSubnet: String } |
| 27. | type NetworkPeerBase | """ Входной объект для базового типа информации об участнике сетевого соединения """ input NetworkPeerBaseFilter { """ Фильтр для IP-адреса """ ip: IpAddressBaseFilter """ Фильтр для порта """ port: IntFilter """ Фильтр для номера протокола """ protocolNumber: IntFilter and: [NetworkPeerBaseFilter] or: [NetworkPeerBaseFilter] not: NetworkPeerBaseFilter } |
| 28. | type URLBase | """ Входной объект для базового типа URL-адреса """ input URLBaseFilter { """ Фильтр для URL-адреса """ url: StringFilter and: [URLBaseFilter] or: [URLBaseFilter] not: URLBaseFilter } |
| 29. | type DomainNameBase | """ Входной объект для базового типа доменного имени """ input DomainNameBaseFilter { """ Фильтр для доменного имени """ domainName: StringFilter and: [DomainNameBaseFilter] or: [DomainNameBaseFilter] not: DomainNameBaseFilter } |
| 30. | type LoginBase | """ Входной объект для базового типа имени и (или) идентификатора пользователя """ input LoginBaseFilter { """ Фильтр для имени и (или) идентификатора пользователя """ login: StringFilter and: [LoginBaseFilter] or: [LoginBaseFilter] not: LoginBaseFilter } |
| 31. | scalar Int | """ Входной объект: используемые функции для фильтрации значений типа Int """ input IntFilter { """ Равно """ eq: Int """ В [списке] """ in: [Int] """ Меньше либо равно """ le: Int Меньше, чем """ lt: Int """ Больше либо равно """ ge: Int """ Больше, чем """ gt: Int """ В промежутке """ between: IntRange } """ Входной объект: промежуток типа Int для использования в фильтрах """ input IntRange { min: Int! max: Int! } """ Входной объект: используемые функции для фильтрации значений типа Int по полному совпадению """ input IntExactFilter { """ Равно """ eq: Int } |
| 32. | scalar Float | """ Входной объект: используемые функции для фильтрации значений типа "Float" """ input FloatFilter { """ Равно """ eq: Float """ В [списке] """ in: [Float] """ Меньше либо равно """ le: Float """ Меньше, чем """ It: Float """ Больше либо равно """ ge: Float """ Больше, чем """ gt: Float """ В промежутке """ between: FloatRange } """ Входной объект: промежуток типа Float для использования в фильтрах """ input FloatRange { min: Float! max: Float! } |
| 33. | scalar String | """ Входной объект: используемые функции для фильтрации значений типа String """ input StringFilter { """ Равно """ eq: String """ В [списке] """ in: [String] """ Регулярное выражение в формате POSIX Basic Regular Expression """ regexp: String } """ Входной объект: используемые функции для фильтрации значений типа String по полному совпадению """ input StringExactFilter { """ Равно """ eq: String } |
4. Посредством использования ПТС должна быть обеспечена функциональная возможность поиска информации об IP-подсетях в рамках атрибута с типом "IpAddressBase" с использованием входного типа "IpSubnetBaseFilter". В случаях соответствия маски подсети числам 32 или 128 допустимо использование входного типа "IpAddressBaseFilter". В атрибутах входных типов "IpAddressBaseFilter" и "IpSubnetBaseFilter" IP-подсети должны указываться с использованием CIDR-нотации.