разработчикам

Портал открытых данных поддерживает возможность получения данных по протоколу Odata v4 по средствам API портала.

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

GET: http://od.krasnodar.ru/api/odata/

Результат:

{
    "@odata.context":"http://od.krasnodar.ru/api/odata/$metadata","value":[
     {
        "name":"Sets","kind":"EntitySet","url":"Sets"
     },{
        "name":"Types","kind":"EntitySet","url":"Types"
     },{
        "name":"TypeProperties","kind":"EntitySet","url":"TypeProperties"
     },{
        "name":"Attributes","kind":"EntitySet","url":"Attributes"
     },{
        "name":"Constructors","kind":"EntitySet","url":"Constructors"
     },{
        "name":"NamedProperties","kind":"EntitySet","url":"NamedProperties"
     },{
        "name":"SetContent","kind":"EntitySet","url":"SetContent"
     }
  ]
}

Состав структур и метаинформацию по ним можно получить через следующий запрос:

GET http://od.krasnodar.ru/api/odata/$metadata

Описание структур

Структура Set

Структура Sets служит для описания набора данных, находящегося на портале.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Хранит значение идентефикатора набора на портале
Name Edm.String Наименование набора данных на портале
Description Edm.String Описание набора

Содержит следующие навигационные поля:

Поле Структура Описание
Type Type Содержит древовидное описание структуры данных набора
Rows Collection(SetContent) Содержит коллекцию значений полей набора

Структура Type

Структура Type служит для описания типа данных хранящихся в наборе в виде дерава свойств объекта и атрибутов.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Уникалиный идентефикатор типа данных набора
Name Edm.String Наименование типа данных
Alias Edm.String Текстовое описание типа данных

Содержит следующие навигационные поля:

Поле Структура Описание
Properties Collection(Property) Содержит описание свойств типа
Attributes Collection(Attribute) Содержит описание аттрибутов типа

Структура Property

Структура Properties служит для описания свойств типа данных.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Уникалиный идентефикатор
Name Edm.String Наименование

Содержит следующие навигационные поля:

Поле Структура Описание
Type Type Содержит описание типа данных свойства
Attributes Collection(Attribute) Содержит описание аттрибутов свойства

Структура Attribute

Структура Attribute описывает аттрибуты типов данных и свойств типов данных.

Состоит из следующих полей:

Поле Структура Тип данных
Id Edm.Guid Уникалиный идентефикатор

Содержит следующие навигационные поля:

Поле Структура Описание
Type Type Содержит описание типа данных аттрибута
NamedProperties Collection(NamedProperty) Коллекция свойств аттрибута
Constructors Collection(Constructor) Описание конструкторов аттрибута

Структура Constructor

Структура Constructor определяет набор значений параметров атрибута.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Уникалиный идентефикатор
Value Edm.String Строковое значние параметра атрибута
TypeGUID Edm.Guid Идентефикатор типа значения

Структура NamedProperty

Структура NamedProperty определяет набор свойств аттрибута.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Уникалиный идентефикатор
Name Edm.String Строковое значние параметра атрибута
Value Edm.String Значение параметра аттрибута

Структура SetContent

Структура SetContent служит для описания содержимого набора данных.

Состоит из следующих полей:

Поле Тип данных Описание
Id Edm.Guid Уникалиный идентефикатор
IsRow Edm.Boolean Определяет, относится ли значение к строке
IsComplex Edm.Boolean Орпеделяет, является ли значение сложных типом
PropertyName Edm.String Имя свойства для которого предоставляется значение
Value Edm.String Строковое представление значения

Содержит следующие навигационные поля:

Поле Структура Описание
Values Collection(SetContent) Содержит значение отдельных полей значение родительского элемента

Формирование запросов

Все возможные запросы можно получить через запрос:

GET: http://od.krasnodar.ru/api/odata/

Результат:

{
    "@odata.context":"http://od.krasnodar.ru/api/odata/$metadata","value":[
     {
        "name":"Sets","kind":"EntitySet","url":"Sets"
     },{
        "name":"Types","kind":"EntitySet","url":"Types"
     },{
        "name":"TypeProperties","kind":"EntitySet","url":"TypeProperties"
     },{
        "name":"Attributes","kind":"EntitySet","url":"Attributes"
     },{
        "name":"Constructors","kind":"EntitySet","url":"Constructors"
     },{
        "name":"NamedProperties","kind":"EntitySet","url":"NamedProperties"
     },{
        "name":"SetContent","kind":"EntitySet","url":"SetContent"
     }
  ]
}

Все запросы к данным можно разделить на две категории:

  1. Получение всех значений структур
  2. Получение значения определенной структуры

Получени всех значений структур можно произвести выполнив запрос к структурам по URL, получаемому из данных результата GET: http://od.krasnodar.ru/api/odata/ , например:

Получение всех наборов данных, расположенных на портале:

GET: http://od.krasnodar.ru/api/odata/sets

Получение конкретного значения структуры можно выполнить отправив запрос к структурам с параметром идентефикатора значения структуры, например:

GET: http://od.krasnodar.ru/api/odata/sets(360cdf1d-4168-4b35-b175-013eb9fb239a)

Так же, для всех структур данных, имеющих поля навигаций, данные поля можно разворачивать, применяя к запросам параметр $expand=<nav_field> , где <nav_field> - имя поля навигации.

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

GET: http://od.krasnodar.ru/api/odata/sets(360cdf1d-4168-4b35-b175-013eb9fb239a)?$expand=type

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

GET: http://od.krasnodar.ru/api/odata/sets(360cdf1d-4168-4b35-b175-013eb9fb239a)/rows

Все запросы поддерживают следующие параметры:

Параметр запроса Тип данных Назначение
$expand Edm.string Разворачивает значение навигационных полей структуры
$top Edm.integer Возвратит первые N элементов
$orderby Edm.strng Сортировка результата выборки по параметру
$skip Edm.Integer Пропустить N записей выборки
$select Edm.string Отобразить только значения указанные в параметре
$filter Edm.string Произвести выборку по условию

Вложенность параметров запросов не ограничена и их комбинаций не ограничена.