Arguments for JSON Rest API 4.1 must be provided in strict order #4686

Open
opened 2026-02-20 16:22:02 -05:00 by deekerman · 0 comments
Owner

Originally created by @vladaman on GitHub (Jan 16, 2022).

Not mentioned anywhere in the docs. Arguments for JSON REST API must be provided in strict order. Re-ordering encoded JSON request will cause random issues.

Following line expects argument as an indexed array:
github.com/salesagility/SuiteCRM@0201c36b14/service/core/REST/SugarRestJSON.php (L94)

// Works correctly
$params = array();
$params['session'] = $this->sessionToken;
$params['module_name'] = 'Accounts';
$params['query'] = "accounts.id IS NOT NULL");
$params['order_by'] = '';
$params['offset'] = 0;
$params['select_fields'] = array();
$params['link_name_to_fields_array'] = array(array('name'=>'accounts', 'value'=>array('id', 'name')));
$params['max_results'] = 5;
$params['deleted'] = false;
$jsonEncodedData = json_encode($params);
// Folllowing will fail
$params = array();
$params['module_name'] = 'Accounts';
$params['session'] = $this->sessionToken; // Moved entry as second argument
$params['query'] = "accounts.id IS NOT NULL");
$params['order_by'] = '';
$params['offset'] = 0;
$params['select_fields'] = array();
$params['link_name_to_fields_array'] = array(array('name'=>'accounts', 'value'=>array('id', 'name')));
$params['max_results'] = 5;
$params['deleted'] = false;
$jsonEncodedData = json_encode($params);

Environment

  • SuiteCRM Version used: 7.12.2
Originally created by @vladaman on GitHub (Jan 16, 2022). Not mentioned anywhere in the docs. Arguments for JSON REST API must be provided in strict order. Re-ordering encoded JSON request will cause random issues. Following line expects argument as an indexed array: https://github.com/salesagility/SuiteCRM/blob/0201c36b1468a16eb89218e7c798cf0ce2adac5c/service/core/REST/SugarRestJSON.php#L94 ```php // Works correctly $params = array(); $params['session'] = $this->sessionToken; $params['module_name'] = 'Accounts'; $params['query'] = "accounts.id IS NOT NULL"); $params['order_by'] = ''; $params['offset'] = 0; $params['select_fields'] = array(); $params['link_name_to_fields_array'] = array(array('name'=>'accounts', 'value'=>array('id', 'name'))); $params['max_results'] = 5; $params['deleted'] = false; $jsonEncodedData = json_encode($params); ``` ```php // Folllowing will fail $params = array(); $params['module_name'] = 'Accounts'; $params['session'] = $this->sessionToken; // Moved entry as second argument $params['query'] = "accounts.id IS NOT NULL"); $params['order_by'] = ''; $params['offset'] = 0; $params['select_fields'] = array(); $params['link_name_to_fields_array'] = array(array('name'=>'accounts', 'value'=>array('id', 'name'))); $params['max_results'] = 5; $params['deleted'] = false; $jsonEncodedData = json_encode($params); ``` #### Environment * SuiteCRM Version used: 7.12.2
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/SuiteCRM-SuiteCRM#4686
No description provided.