Details
- 
    Type:
Bug
 - 
    Status: Done/Fixed
 - 
    Priority:
Minor
 - 
    Resolution: Fixed/Completed
 - 
    Affects Version/s: 4.7.23
 - 
    Fix Version/s: 4.7.25
 - 
    Component/s: CiviEvent
 - 
    Labels:
 
- 
        Versioning Impact:Minor (add functionality in backwards-compatible manner)
 - 
        Documentation Required?:None
 - 
        Funding Source:Core Team Funds
 - 
        Verified?:No
 
Description
According to the api explorer a request for getting events with certain return values (like is_full) should look like this:
$result = civicrm_api3('Event', 'getsingle', array(
  'sequential' => 1,
  'return' => array("is_full"),
  'id' => 441,
));
But this doesn't return the expected result (including is_full):
{
    "id": "441",
    "is_full": 0,
    "is_error": 0
}
Instead my requested return value is missing, but price_set_id is given:
{
    "id": "441",
    "price_set_id": "",
    "is_error": 0
}
I've checked civicrm_api3_event_get and noticed, that the api function is still expecting the old return syntax (with return.foo instead of return => ['foo']) for some (but not all) values (like is_full):
if (!empty($params['return.is_full'])) { _civicrm_api3_event_getisfull($events, $id); }
I think it should be
if (!empty($params['return']['is_full'])) { _civicrm_api3_event_getisfull($events, $id); }
Other return values like title or is_active are not effected, because they are returned by the _civicrm_api3_basic_get, which is working as expected (with the new return format).
And why I get price_set_id? Because of
if (!empty($options['return'])) { $events[$id]['price_set_id'] = CRM_Price_BAO_PriceSet::getFor('civicrm_event', $id); }
But the doesn't make sense at all (at least to me).