* REST API Customers Controller
* Handles requests to /customers/*
namespace Automattic\WooCommerce\Admin\API;
defined( 'ABSPATH' ) || exit;
* @extends \Automattic\WooCommerce\Admin\API\Reports\Customers\Controller
class Customers extends \Automattic\WooCommerce\Admin\API\Reports\Customers\Controller {
protected $rest_base = 'customers';
* Register the routes for customers.
public function register_routes() {
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
'schema' => array( $this, 'get_public_item_schema' ),
'/' . $this->rest_base . '/(?P<id>[\d-]+)',
'description' => __( 'Unique ID for the resource.', 'woocommerce' ),
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
'schema' => array( $this, 'get_public_item_schema' ),
* Maps query arguments from the REST request.
* @param array $request Request array.
protected function prepare_reports_query( $request ) {
$args = parent::prepare_reports_query( $request );
$args['customers'] = $request['include'];
* Get the query params for collections.
public function get_collection_params() {
$params = parent::get_collection_params();
$params['include'] = $params['customers'];
unset( $params['customers'] );