Хотим выразить большую благодарность таким проектам как PHP, Yii Framework, MySQL, Memcached, Sphinx Search благодаря им появилась Factopedia.
Если вы как и мы хотите сделать Factopedia лучше тогда присоединяйтесь к нам. Прямо сейчас вы можете помочь нам перевести Factopedia на ваш родной язык, или наполнить энциклопедию необходимым контентом. Для того что бы добавлять объекты в базу из вашего скрипта, используйте наше RESTful API, которое доступно по адресу https://api.factopedia.org. Если вы хотите участвовать в разработке Factopedia, пожалуйста свяжитесь с нами.
Accept: application/json; q=1.0, */*; q=0.1
Данные будут возвращены в JSON формате, иначе в XML
expand: получить дополнительную информацию;
filter: отфильтровать, сделать поиск *;
sort: отсортировать объекты в определённом порядке *;
* работает только на конечных точках которые возвращают перечень объектов
возможные значения параметра expand для каждой конечной точки будут свои, они будут указываться в описании к конечно точке.
filter в общем имеет следующий формат
filter[name]{[operator]}=value
{} operator необязательная часть
sort в общем имеет следующий формат
sort=name
name - это название поля. По умолчанию сортировка ASC, от меньшего к большему, если вы хотите отсортировать в обратном порядке используйте знак "-" перед полем,то есть sort=-name
GET /objects: перечень всех объектов страница за страницей;
POST /objects: добавление нового объекта;
GET /objects/123: информация об объекте 123;
PATCH /objects/123 или PUT /objects/123: редактировать объект 123;
name
parentId
property
lang
Это позволяет искать объекты по имени, в определённых категориях и с определёнными значениями свойств. "property" используется только с "parentId" для поиска объектов в категориях. Это массив в котором ключи это "property_id" а значение многоуровненый массив с настройками фильтра (смотрите пример использования что бы понять как пользоваться этим параметром). По умолчанию объекты отсортированы по названию, но так же можно сортировать по свойствам объектов например "sort=-67_object" это значит что объекты будут отсортированы в обратной порядке "-" вначале, по свойству с порядковым номером 67 у которого тип "object"
Возможные значения дополнительных параметров
expand
properties
suggestedProperties
parents
children
countChildren
images
Пример использования
GET /objects?expand=properties,suggestedProperties,parents,children&sort=-67_object&name=example&parentId=123&lang=ru&property[65][int][][>=]=1980&property[65][int][][<=]=1981&property[62][int][][%3D]=7&property[62][int][][%3D]=8
name: название объекта (*);
lang: языковая версия сайта в двухбуквенном формате (*);
descriptions: описание;
main_image: md5 checksum файла картинки;
aliases[]: другие названия объекта;
parents[][Objects][id]: родительский объект (категория);
children[][Objects][id]: объекты детей, объекты произошедшие от данного объекта;
objects[imageFiles][]: файлы фотографий;
objectsPropertiesValues[n][ObjectsPropertiesValues][name]: данные по каждому свойству, n - ID свойства, возможные значения поля name смотрите в выводе конечной точки /properties
обязательные поля:
objectsPropertiesValues[n][ObjectsPropertiesValues][property_id]: ID названия свойства, название свойства должно быть предварительно добавлено если такого названия ещё не присутствует в базе, проверить наличие или добавить можно на конечной точке /properties
возможные значения поля type:
int, dec, range_int, range_dec, bool, text, object, array, array_of_objects, dynamic
Links[n][url]: ссылка на свойство, n - ID свойства;
Например:
POST /objects
?name=foo
&lang=ru
&description=bar
&aliases[]=foobar
&aliases[]=barfoo
&parents[][Objects][id]=123
&children[][Objects][id]=234
&objectsPropertiesValues[12][ObjectsPropertiesValues][property_id]=12
&objectsPropertiesValues[12][ObjectsPropertiesValues][category_id]=11
&objectsPropertiesValues[12][ObjectsPropertiesValues][unit_id]=21
&objectsPropertiesValues[12][ObjectsPropertiesValues][type]=int
&objectsPropertiesValues[12][ObjectsPropertiesValues][value]=4321
&objectsPropertiesValues[12][ObjectsPropertiesValues][order_by]=1
&objectsPropertiesValues[13][ObjectsPropertiesValues][property_id]=13
&objectsPropertiesValues[12][ObjectsPropertiesValues][category_id]=11
&objectsPropertiesValues[13][ObjectsPropertiesValues][unit_id]=31
&objectsPropertiesValues[13][ObjectsPropertiesValues][type]=bool
&objectsPropertiesValues[13][ObjectsPropertiesValues][value]=1
&objectsPropertiesValues[13][ObjectsPropertiesValues][order_by]=2
&objectsPropertiesValues[14][ObjectsPropertiesValues][property_id]=14
&objectsPropertiesValues[14][ObjectsPropertiesValues][type]=array_of_objects
&objectsPropertiesValues[14][ObjectsPropertiesValues][value][0]=31
&objectsPropertiesValues[14][ObjectsPropertiesValues][value][1]=219
&objectsPropertiesValues[14][ObjectsPropertiesValues][value][2]=42229
&objectsPropertiesValues[15][ObjectsPropertiesValues][property_id]=15
&objectsPropertiesValues[15][ObjectsPropertiesValues][type]=array_of_objects
&objectsPropertiesValues[15][ObjectsPropertiesValues][value][0]=31
&objectsPropertiesValues[15][ObjectsPropertiesValues][value][1]=219
&objectsPropertiesValues[15][ObjectsPropertiesValues][value][2]=42229
&objectsPropertiesValues[15][ObjectsPropertiesValues][valueArrayOfObjects][3][Objects][name]=NewObjectName // попробует создать новый объект с таким именем в той же категории что и остальные объекты в списке
&objectsPropertiesValues[15][ObjectsPropertiesValues][value][3]=
&objectsPropertiesValues[16][ObjectsPropertiesValues][property_id]=16
&objectsPropertiesValues[16][ObjectsPropertiesValues][type]=array
&objectsPropertiesValues[16][ObjectsPropertiesValues][value][0]=value1
&objectsPropertiesValues[16][ObjectsPropertiesValues][value][1]=value2
&objectsPropertiesValues[16][ObjectsPropertiesValues][value][2]=value3
&Links[12][url]=http://www.example.com
&Links[13][url]=http://www.example1.com
* Обязательные данные
format: формат возвращаемых данных. Используется что бы сразу сгенерировать данные для команды редактирования объекта PUT /objects/123. Возможные значения: api
Пример использования
GET /objects/123
GET /objects/123?format=api
Конечные точки (endpoints)
GET /properties: перечень всех свойств страница за страницей;
POST /properties: добавление нового свойства;
GET /properties/123: информация о свойстве 123;
Примеры использования:
GET /properties?filter[name]=foo&lang=ru
GET /properties?filter[name][like]=bar&lang=ru&sort=name
POST /properties&name=foo&lang=ru
Конечные точки (endpoints)
GET /properties-categories: перечень всех категорий свойств страница за страницей;
POST /properties-categories: добавление новой категории;
GET /properties-categories/123: информация о категории номер 123;
Примеры использования:
GET /properties-categories?filter[name]=foo&lang=ru
GET /properties-categories?filter[name][like]=bar&lang=ru&sort=name
POST /properties-categories&name=foo&lang=ru
Конечные точки (endpoints)
GET /units: перечень всех единиц измерения страница за страницей;
POST /units: добавление новой единицы измерения;
GET /units/123: информация о единице измерения 123;
Примеры использования:
GET /units?filter[name]=foo&lang=ru
GET /units?filter[name][like]=bar&lang=ru&sort=-name
POST /units&name=foo&lang=ru
GET /comparisons: перечень всех сравнений страница за страницей;
POST /comparisons: добавление нового сравнения;
GET /comparisons/123: информация о сравнении 123;
PATCH /comparisons/123 или PUT /comparisons/123: редактировать сравнение 123;
expand
sortings
sortings.property
objects
Пример использования
GET /comparisons?expand=sortings.property,objects&filter[name][like]=Foobar&filter[lang]=ru&sort=-id
name: название сравнения;
lang: языковая версия сайта в двухбуквенном формате (*);
descriptions: описание;
comparisonsSortings[n][ComparisonsSortings][name]: данные по каждому свойству, n - ID свойства, возможные значения поля name:
comparisonsSortings[n][ComparisonsSortings][property_id] *: ID свойства
comparisonsSortings[n][ComparisonsSortings][order] *: номер сортировки (1-10)
comparisonsSortings[n][ComparisonsSortings][direction]: направление сортировки (asc, desc)
Например:
POST /comparisons
?objects[][Objects][id]=123
&objects[][Objects][id]=456
&name=Foo bar
&lang=ru
&comparisonsSortings[34][ComparisonsSortings][property_id]=34
&comparisonsSortings[34][ComparisonsSortings][order]=1
&comparisonsSortings[34][ComparisonsSortings][direction]=asc
&comparisonsSortings[35][ComparisonsSortings][property_id]=35
&comparisonsSortings[35][ComparisonsSortings][order]=1
&comparisonsSortings[35][ComparisonsSortings][direction]=desc
* Обязательные данные