batch
Batch call method.
It is not uncommon for an application to send requests in series. To optimize the process, use this function to batch call REST methods instead of sending requests one by one.
Parameters
Parameter | Description |
---|---|
halt | Determines if the sequence of requests to be aborted in case of an error. |
cmd | Specifies a standard array of requests. Notice that the request data must be quoted; therefore, the request data inside a request must be quoted again. |
Note: Number of batch calls is limited to 50.
The request array can be a simple indexed array or an associative array. The return value of a preceding request may be used in each subsequent request by addressing it in a result array:
$result[request_ID][response_field]
where the request ID is the request key in the request array.
Starting from version rest 24.0.0 nesting is restricted for the 'batch' method (when calling the batch method you cannot call another batch method inside).
Example
https://my.bitrix24.com/rest/batch.xml?auth=d161f25928c3184678924ec127edd29a&halt=0&cmd[get_user]=user.current%3F&cmd[get_department]=department.get%3FID%3D%2524result%255Bget_user%255D%255BUF_DEPARTMENT%255D
Attention: URL parameters are encoded. It's strongly recommended to encode parameters as a requirement, otherwise correct results aren't guaranteed.
XML response:
<response> <result> <result> <get_user> <ID>1</ID> <LOGIN>admin</LOGIN> <ACTIVE>1</ACTIVE> <EMAIL>sigurd@example.com</EMAIL> <NAME>Admin</NAME> <LAST_NAME/> <SECOND_NAME/> <PERSONAL_GENDER/> <PERSONAL_PROFESSION/> <PERSONAL_WWW/> <PERSONAL_BIRTHDAY>1955-04-10T00:00:00+03:00</PERSONAL_BIRTHDAY> <PERSONAL_PHOTO>/upload/main/80c/44169_C5_PrimalWaterE500CC.jpg</PERSONAL_PHOTO> <PERSONAL_ICQ/> <PERSONAL_PHONE/> <PERSONAL_FAX/> <PERSONAL_MOBILE/> <PERSONAL_PAGER/> <PERSONAL_STREET/> <PERSONAL_CITY/> <PERSONAL_STATE/> <PERSONAL_ZIP/> <PERSONAL_COUNTRY>0</PERSONAL_COUNTRY> <WORK_COMPANY/> <WORK_POSITION/> <UF_DEPARTMENT> <item>128</item> </UF_DEPARTMENT> <UF_INTERESTS/> <UF_SKILLS/> <UF_WEB_SITES/> <UF_XING/> <UF_LINKEDIN/> <UF_FACEBOOK/> <UF_TWITTER/> <UF_SKYPE/> <UF_DISTRICT/> <UF_PHONE_INNER/> </get_user> <get_department> <item> <ID>128</ID> <NAME>IT Department</NAME> <SORT>500</SORT> <PARENT>114</PARENT> <UF_HEAD>255</UF_HEAD> </item> </get_department> </result> <result_error/> <result_total> <get_department>1</get_department> </result_total> <result_next/> </result> </response>
Example of JSON string for allocating into POST query body for the batch method.
BX24.callMethod( 'batch', { 'halt': 0, 'cmd': { 'user': 'user.get?ID=1', 'first_lead': 'crm.lead.add?fields[TITLE]=Test Title', 'user_by_name': 'user.search?NAME=Test2', 'user_lead': 'crm.lead.add?fields[TITLE]=Test Assigned&fields[ASSIGNED_BY_ID]=$result[user_by_name][0][ID]', } }, function(result) { console.log(result.answer); } );
Result:
- user - returns user with ID = 1
- first_lead - creates a lead
- user_by_name - finds a user with the name "Test2"
- user_lead - creates a lead with a responsible user, found in user_by_name
For PHP, it's recommended to use CRest::callBatch()