...
...

Долгожданное API для сайтов на 1С-Битрикс

Ready.KZ: Готовые сайты

Описание


Модуль API позволяет подключаться к данному сайту по протоколу SOAP и производить все необходимые действия (включая административные), не заходя на сайт.
http://marketplace.1c-bitrix.ru/solutions/linemedia.api/


Фактически вы можете превратить сайт в front-end, полностью управляя им из другой системы.

К примеру, можно управлять заказами, товарами, пользователями и прочим в 1С, а вся информация (например, о создании новой скидки на группу товаров) будет отправляться на сайт с помощью SOAP запроса.

Адрес подключения к сервису: /ws/
Для получения информации о функциях зайдите по этому адресу под своим аккаунтом.

В данный момент модуль рботает как административный аккаунт и имеет доступ ко всем модулям и функциям сайта.

Если вы считаете, что модулю критически нехватает какого-то функционала, напишите нам, и мы добавим его в обновление.
Если вы нашли ошибку, сообщите в нашу службу поддержки, и мы быстро исправим её.

Техническая информация

Поскольку API предоставляет низкоуровневые функции, доступ к нему должен быть ограничен паролем. По умолчанию всем функциям необходима предусмотренная Bitrix HTTP — авторизация, в ней передаются логин и пароль от административного аккаунта (желательно использовать https).
Для проверки доступа модуль использует настройки групп пользователей (стандартный вызов $APPLICATION->GetGroupRight)

В основе API лежат оригинальные функции Bitrix.


В API Bitrix получить заказ по ID можно с помощью вызова CSaleOrder::GetByID($ID)

Для выполнения аналогичной операции через API необходимо послать SOAP запрос Order_GetByID(argument), где argument — ID заказа.

На языке PHP это делается так:
$client = new SoapClient("http://www.site.com/ws/?wsdl", array("login" => "soap_admin", "password" => "soap_password")); try {        $param = new stdClass();        $param->id = 12345; // ID заказа        $response = $client->__soapCall("Order_GetByID", array($param)); } catch (SoapFault $e) {        echo $e->GetMessage();        $response = null; }

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


Несколько других примеров:

Добавление элемента в инфоблок
$param = new stdClass(); $param->iblock_code = "products"; $param->element = array( "NAME" => "Футболка", "PROPERTY_VALUES" => array( array( "CODE" => "color", "NAME" => "Синий", "VALUE" => "blue", ), array( "CODE" => "brand_title", "NAME" => "Бренд", "VALUE" => "Nike", ), ),); $response = $client->__soapCall("IblockElement_Add", array($param));

Получение списка пользователей по заданным параметрам (в данном случае ID меньше чем 10)
$param = new stdClass(); $param->arFilter = array( array( "CODE" => "<ID", "VALUE" => "10", )); $response = $client->__soapCall("User_GetList", array($param));

Обратите внимание, что названия функций соответствуют API Bitrix, а потому, документацию по параметрам можно прочесть в соответствующих разделах справки для разработчиков.

Если в аргументах функции или в типе ответа указано ArrayOf, значит функция принимает или возвращает массив этого типа или массив этих структур.
Например, получение списка пользователей в качестве фильтра принимает массив, каждым элементом которого является структура, представляющая аналог ассоциативного массива для SOAP.
"arFilter" => array("varType" => "ArrayOfStruct_AssocArray", "arrType" => "Struct_AssocArray", "strict" => "no"


Смотрим на структуру Struct_AssocArray
"Struct_AssocArray" = array( "CODE"    => array("varType" => "string", "VALUE" => array("varType" => "string",);


Таким образом фильтр для пользователей бывших на сайте менее минуты назад с ID более 100 должен выглядеть так:
$param->arFilter = array( array( "CODE" => ">ID", "VALUE" => "100", ), array( "CODE" => "<LAST_ACTIVITY", "VALUE" => "60",// 1 min ),);


Для PHP-разработчиков, желающих доработать модуль
В модуль API добавлены события, чтобы Вы могли изменять свойства тех или иных функция для своих нужд.
События модуля linemedia.api "OnClassesGet", "OnStructuresGet" и "OnClassTypesGet" позволяют модифицировать данные, которые предоставляет модуль по умолчанию.

Изначально все параметры и данные, которые используются API - помечены как необязательные. Вот так вы можете сделать их обязательными:
AddEventHandler("linemedia.api", "OnMethodsGet", "modifyMethodsAPI";function modifyMethodsAPI(&$methods){ // обязательное поле логина при проверке данных пользователя $methods["CAPIUser"]["User_CheckAuthorization"]["input"]["login"]["strict"] = "strict";}

SOAP оперирует наборами данных, которые называются "Структуры". Стурктуры модуля API повторяют объекты Bitrix (пользователь, корзина, заказ, скидка и т.д.). Вы можете модифицировать эти структуры или добавлять свои с помощью соответствующего события:
AddEventHandler("linemedia.api", "OnStructuresGet", "modifyStructuresAPI"); function modifyStructuresAPI(&$structures) {      // Теперь в поле "вес" можно передавать строку, а не число и это делать обязательно        // разрешение передавать строку через SOAP не гарантирует того, что Bitrix вставит её в БД именно в таком виде, см. API функций Bitrix.    $structures["Struct_Basket"]["WEIGHT"] = array("varType" => "string", "strict" => "strict"); }  

Если вам недостаточно встроенного функционала, вы можете расширять модуль не только посредством событий, но также и проаналицировав несложную структуру папки/bitrix/modules/linemedia.api/classes/general/api/
В ней содержатся папки модулей, классов и файлы с описаниями.
Вы можете продублировать аналогичную структуру в папке /bitrix/php_interface/api/ и модуль также просканирует её содержимое. Если Вы реализовали функционал, который присутствует в Bitrix, но ещё не реализован нами - пришлите его нам и мы включим его в обновление или сделайте префикс к функциям, чтобы при обновлении Ваш функционал не окаался дублирующим.

Если вы выпускаете свой модуль и хотите чтобы он автоматически добавлялся в API — используйте событие OnModulesScan для добавления в массив своей папки с описаниями функций.

Поскольку SOAP в Bitrix на данный момент имеет некоторые проблемы, используйте вспомогательные фунции вроде clearInput в начале вызовов и formatResponse в конце, чтобы автоматически привести данные к правильному виду и избежать ошибок.

Функции
Функция Аргументы Возвращаемое значение Описание CAPICatalogProduct CatalogProduct_GetByID
integer id Struct_CatalogProduct Описание CatalogProduct_GetList
ArrayOfStruct_AssocArrayarOrder
ArrayOfStruct_AssocArrayarFilter
ArrayOfStruct_AssocArrayarParams
ArrayOfStruct_AssocArrayarGroupBy
ArrayOfStruct_AssocArrayarNavStartParams
ArrayOfStruct_AssocArrayarSelectFields ArrayOfStruct_CatalogProduct Описание CatalogProduct_Add
Struct_CatalogProductproduct
boolean boolCheck boolean Описание CatalogProduct_Update
integer id
Struct_CatalogProductproduct boolean Описание CatalogProduct_Delete
integer id boolean Описание CAPIIblockElement IblockElement_GetByID
integer id
boolean include_properties Struct_IblockElement Описание IblockElement_GetList
ArrayOfStruct_AssocArrayarOrder
ArrayOfStruct_AssocArrayarFilter
ArrayOfStruct_AssocArrayarGroupBy
ArrayOfStruct_AssocArrayarNavStartParams
ArrayOfStruct_AssocArrayarSelectFields
boolean include_properties ArrayOfStruct_IblockElement Описание IblockElement_Add
Struct_IblockElementelement
string iblock_code integer Описание IblockElement_Update
integer id
Struct_IblockElementelement boolean Описание IblockElement_Delete
integer id boolean Описание IblockElement_SetElementSection
integer id
ArrayOfinteger arSections
bool bNew boolean Описание CAPIDatabase Database_Query
string sql
bool ignore_errors
bool return_array ArrayOfstring CAPIUser User_CheckAuthorization
string login
string password Struct_User Проверка правильности логина и пароля User_Add
Struct_User user integer Описание User_Update
integer id
Struct_User user boolean Описание User_Delete
integer id boolean Описание User_GetList
string by
string order
ArrayOfStruct_AssocArrayarFilter
ArrayOfStruct_AssocArrayarParams
integer start
integer limit ArrayOfStruct_User Описание User_GetByID
integer id Struct_User Описание CAPISaleBasket Basket_GetByID
integer id Struct_Basket Описание Basket_GetList
ArrayOfStruct_AssocArrayarOrder
ArrayOfStruct_AssocArrayarFilter
ArrayOfStruct_AssocArrayarParams
ArrayOfStruct_AssocArrayarGroupBy
ArrayOfStruct_AssocArrayarNavStartParams
ArrayOfStruct_AssocArrayarSelectFields ArrayOfStruct_Basket Описание Basket_Add
Struct_Basket basket integer Описание Basket_Update
integer id
Struct_Basket basket boolean Описание Basket_Delete
integer id boolean Описание CAPISaleOrder Order_GetByID
integer id Struct_Order Описание Order_GetList
ArrayOfStruct_AssocArrayarOrder
ArrayOfStruct_AssocArrayarFilter
ArrayOfStruct_AssocArrayarGroupBy
ArrayOfStruct_AssocArrayarNavStartParams
ArrayOfStruct_AssocArrayarSelectFields ArrayOfStruct_Order Описание Order_Add
Struct_Order order integer Описание Order_Update
integer id
Struct_Order order boolean Описание Order_Delete
integer id boolean Описание CAPILinemediaAutoSearch Search
string query
string brand_title
ArrayOfStruct_AssocArrayextra
string type Struct_SearchResults Типы данных Тип данных Переменные Struct_AssocArray
string CODE
string VALUE Struct_CatalogDiscount
integer ID
string SITE_ID
string ACTIVE
string NAME
string COUPON
integer SORT
string MAX_DISCOUNT
string VALUE_TYPE
integer VALUE
string CURRENCY
string RENEWAL
string ACTIVE_FROM
string ACTIVE_TO
string PRODUCT_IDS
string SECTION_IDS
string GROUP_IDS
string CATALOG_GROUP_IDS
string CATALOG_COUPONS Struct_CatalogProduct
integer ID
integer QUANTITY
string QUANTITY_TRACE
integer WEIGHT
string PRICE_TYPE
string RECUR_SCHEME_TYPE
string RECUR_SCHEME_LENGTH
integer TRIAL_PRICE_ID
string WITHOUT_ORDER
integer VAT_ID
string VAT_INCLUDE Struct_IblockElement
integer ID
integer MODIFIED_BY
string DATE_CREATE
integer CREATED_BY
integer IBLOCK_ID
integer IBLOCK_SECTION_ID
string ACTIVE
string ACTIVE_FROM
string ACTIVE_TO
integer SORT
string NAME
integer PREVIEW_PICTURE
string PREVIEW_TEXT
string PREVIEW_TEXT_TYPE
integer DETAIL_PICTURE
string DETAIL_TEXT
string DETAIL_TEXT_TYPE
string XML_ID
string CODE
string TAGS
integer SHOW_COUNTER
string SHOW_COUNTER_START
ArrayOfStruct_IblockElementProperty PROPERTY_VALUES Struct_IblockElementProperty
integer ID
string CODE
string NAME
string ACTIVE
integer IBLOCK_ID
string IS_REQUIRED
integer SORT
string DEFAULT_VALUE
string PROPERTY_TYPE
integer ROW_COUNT
integer COL_COUNT
string LIST_TYPE
string MULTIPLE
string XML_ID
string FILE_TYPE
integer MULTIPLE_CNT
integer LINK_IBLOCK_ID
string WITH_DESCRIPTION
string SEARCHABLE
string FILTRABLE
string USER_TYPE
string USER_TYPE_SETTINGS
string HINT
integer PROPERTY_VALUE_ID
string VALUE
string DESCRIPTION
string VALUE_ENUM
string VALUE_XML_ID
string VALUE_SORT Struct_User
integer ID
string NAME
string TIMESTAMP_X
string LOGIN
string ACTIVE
string LAST_NAME
string SECOND_NAME
string EMAIL
string LAST_LOGIN
string PASSWORD
integer EXTERNAL_AUTH_ID
string PERSONAL_GENDER
string PERSONAL_BIRTHDAY
string PERSONAL_PHONE
string PERSONAL_MOBILE
string PERSONAL_MAILBOX
string WORK_COMPANY
string WORK_DEPARTMENT
string WORK_POSITION
string WORK_WWW
string WORK_PHONE
string WORK_FAX
string WORK_MAILBOX
string ADMIN_NOTES Struct_Basket
integer ID
integer FUSER_ID
integer ORDER_ID
integer PRODUCT_ID
float PRICE
string CURRENCY
string DATE_INS ERT
string DATE_UPDATE
float WEIGHT
float QUANTITY
string LID
string DELAY
string NAME
string CAN_BUY
string NOTES
string DETAIL_PAGE_URL
float DISCOUNT_PRICE
string DISCOUNT_NAME
float DISCOUNT_VALUE
string DISCOUNT_COUPON
string VAT_RATE
ArrayOfStruct_BasketProperty PROPS Struct_BasketProperty
integer ID
string NAME
string CODE
integer SORT
string VALUE Struct_Order
integer ID
string LID
integer PERSON_TYPE_ID
string PAYED
string DATE_PAYED
integer EMP_PAYED_ID
string CANCELED
string DATE_CANCELED
integer EMP_CANCELED_ID
string REASON_CANCELED
string STATUS_ID
string DATE_STATUS
integer EMP_STATUS_ID
float PRICE_DELIVERY
string ALLOW_DELIVERY
string DATE_ALLOW_DELIVERY
integer EMP_ALLOW_DELIVERY_ID
float PRICE
string CURRENCY
float DISCOUNT_VALUE
integer USER_ID
integer PAY_SYSTEM_ID
string DELIVERY_ID
string DATE_INSERT
string DATE_UPDATE
string USER_DESCRIPTION
string ADDITIONAL_INFO
string PS_STATUS
string PS_STATUS_CODE
string PS_STATUS_DESCRIPTION
string PS_STATUS_MESSAGE
float PS_SUM
string PS_CURRENCY
string PS_RESPONSE_DATE
string COMMENTS
float TAX_VALUE
float SUM_PAID
string PAY_VOUCHER_NUM
string PAY_VOUCHER_DATE
integer LOCKED_BY
string RECOUNT_FLAG
integer AFFILIATE_ID
string DELIVERY_DOC_NUM
string DELIVERY_DOC_DATE
ArrayOfStruct_OrderProperty PROPS Struct_OrderProperty
integer ID
string NAME
string CODE
integer ORDER_ID
integer ORDER_PROPS_ID
string VAL UE Struct_SearchPart
string article
string brand_title
float price
integer delivery_time
integer id
string title
float quantity
string part_search_url Struct_SearchAnalogs
string analog_type
ArrayOfStruct_SearchPart parts Struct_SearchCatalog
string title
string brand_title
string data-source
ArrayOfStruct_AssocArray extra Struct_SearchResults
string type
ArrayOfStruct_SearchAnalogs parts
ArrayOfStruct_SearchCatalog catalogs

...
...
...