/**
  * Save data and return API response as JSON.
  *
  * @since   0.3.0
  *
  * @wp-hook wp_ajax_cre_admin_ajax_controller_interaction
  * @return  array Return JSON `$result` with API response.
  */
 public function admin_ajax_controller_interaction()
 {
     check_ajax_referer($this->plugin_name . '_admin_ajax_interaction_nonce', 'nonce');
     if ($_POST['cr_admin_form'] && current_user_can('manage_options')) {
         // Requires $_POST from admin user.
         // Create or update database entry.
         update_option('cleverreach_extension', $this->sanitize($_POST['cr_admin_form']));
         // Get plugin option group.
         $helper = new Core\Cre_Helper();
         $defined_options = $helper->get_option_group();
         // Prepare API with adapters.
         $client = new Api\Cleverreach();
         $group = new Api\Cleverreach_Group_Adapter($client);
         $form = new Api\Cleverreach_Form_Adapter($client);
         // Cleanup transients.
         $client->delete_transients();
         // Check API key.
         $has_api_key = $client->has_valid_api_key();
         // Build array with data and status.
         $result = array('api' => array('status' => $has_api_key ? true : false), 'list' => array('status' => $has_api_key && $defined_options['list_id'] ? true : false, 'options' => $has_api_key ? $helper->parse_list($group->get_list(), 'list_id') : false), 'form' => array('status' => $has_api_key && $defined_options['form_id'] ? true : false, 'options' => $has_api_key ? $helper->parse_list($form->get_list($defined_options['list_id']), 'form_id', true) : false), 'source' => array('status' => $defined_options['source'] ? true : false), 'ajax' => array('status' => $defined_options['ajax'] ? true : false));
         // Return result as JSON.
         $result = json_encode($result);
         echo $result;
         die;
     }
 }