2016-02-17 19:29:09 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* REST API Taxes controller
|
|
|
|
*
|
|
|
|
* Handles requests to the /taxes endpoint.
|
|
|
|
*
|
|
|
|
* @author WooThemes
|
|
|
|
* @category API
|
|
|
|
* @package WooCommerce/API
|
|
|
|
* @since 2.6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* REST API Taxes controller class.
|
|
|
|
*
|
|
|
|
* @package WooCommerce/API
|
2016-02-22 19:43:52 +00:00
|
|
|
* @extends WP_REST_Controller
|
2016-02-17 19:29:09 +00:00
|
|
|
*/
|
2016-02-22 19:43:52 +00:00
|
|
|
class WC_REST_Taxes_Controller extends WP_REST_Controller {
|
2016-02-17 19:29:09 +00:00
|
|
|
|
2016-03-07 18:36:17 +00:00
|
|
|
/**
|
|
|
|
* Endpoint namespace.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
2016-03-07 18:45:10 +00:00
|
|
|
public $namespace = 'wc/v1';
|
2016-03-07 18:36:17 +00:00
|
|
|
|
2016-02-17 19:29:09 +00:00
|
|
|
/**
|
|
|
|
* Route base.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
2016-02-22 18:49:38 +00:00
|
|
|
protected $rest_base = 'taxes';
|
2016-02-17 19:29:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Register the routes for coupons.
|
|
|
|
*/
|
|
|
|
public function register_routes() {
|
2016-03-08 22:51:36 +00:00
|
|
|
register_rest_route( $this->namespace, '/' . $this->rest_base, array(
|
|
|
|
array(
|
|
|
|
'methods' => WP_REST_Server::READABLE,
|
|
|
|
'callback' => array( $this, 'get_items' ),
|
|
|
|
'permission_callback' => array( $this, 'get_items_permissions_check' ),
|
|
|
|
'args' => $this->get_collection_params(),
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'methods' => WP_REST_Server::CREATABLE,
|
|
|
|
'callback' => array( $this, 'create_item' ),
|
|
|
|
'permission_callback' => array( $this, 'create_item_permissions_check' ),
|
|
|
|
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
|
|
|
|
),
|
|
|
|
'schema' => array( $this, 'get_public_item_schema' ),
|
|
|
|
) );
|
2016-02-17 19:29:09 +00:00
|
|
|
|
2016-03-08 22:51:36 +00:00
|
|
|
register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<id>[\d]+)', array(
|
|
|
|
array(
|
|
|
|
'methods' => WP_REST_Server::READABLE,
|
|
|
|
'callback' => array( $this, 'get_item' ),
|
|
|
|
'permission_callback' => array( $this, 'get_item_permissions_check' ),
|
|
|
|
'args' => array(
|
|
|
|
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'methods' => WP_REST_Server::EDITABLE,
|
|
|
|
'callback' => array( $this, 'update_item' ),
|
|
|
|
'permission_callback' => array( $this, 'update_item_permissions_check' ),
|
|
|
|
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'methods' => WP_REST_Server::DELETABLE,
|
|
|
|
'callback' => array( $this, 'delete_item' ),
|
|
|
|
'permission_callback' => array( $this, 'delete_item_permissions_check' ),
|
|
|
|
'args' => array(
|
|
|
|
'force' => array(
|
|
|
|
'default' => false,
|
|
|
|
'description' => __( 'Required to be true, as resource does not support trashing.', 'woocommerce' ),
|
|
|
|
),
|
|
|
|
'reassign' => array(),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'schema' => array( $this, 'get_public_item_schema' ),
|
|
|
|
) );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the User's schema, conforming to JSON Schema
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function get_item_schema() {
|
|
|
|
$schema = array(
|
|
|
|
'$schema' => 'http://json-schema.org/draft-04/schema#',
|
|
|
|
'title' => 'customer',
|
|
|
|
'type' => 'object',
|
|
|
|
'properties' => array(
|
|
|
|
'id' => array(
|
|
|
|
'description' => __( 'Unique identifier for the resource.', 'woocommerce' ),
|
|
|
|
'type' => 'integer',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
'readonly' => true,
|
|
|
|
),
|
|
|
|
'country' => array(
|
|
|
|
'description' => __( 'Country ISO 3166 code.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'state' => array(
|
|
|
|
'description' => __( 'State code.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'postcode' => array(
|
|
|
|
'description' => __( 'Postcode/ZIP.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'city' => array(
|
|
|
|
'description' => __( 'City name.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'rate' => array(
|
|
|
|
'description' => __( 'Tax rate.', 'woocommerce' ),
|
|
|
|
'type' => 'float',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'name' => array(
|
|
|
|
'description' => __( 'Tax rate name.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'priority' => array(
|
|
|
|
'description' => __( 'Customer password.', 'woocommerce' ),
|
|
|
|
'type' => 'integer',
|
|
|
|
'default' => 1,
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'compound' => array(
|
|
|
|
'description' => __( 'Whether or not this is a compound rate.', 'woocommerce' ),
|
|
|
|
'type' => 'boolean',
|
|
|
|
'default' => false,
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'shipping' => array(
|
|
|
|
'description' => __( 'Whether or not this tax rate also gets applied to shipping.', 'woocommerce' ),
|
|
|
|
'type' => 'boolean',
|
|
|
|
'default' => true,
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'order' => array(
|
|
|
|
'description' => __( 'Indicates the order that will appear in queries.', 'woocommerce' ),
|
|
|
|
'type' => 'integer',
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
'class' => array(
|
|
|
|
'description' => __( 'Tax class.', 'woocommerce' ),
|
|
|
|
'type' => 'string',
|
|
|
|
'default' => 'standard',
|
|
|
|
'enum' => array_merge( array( 'standard' ), array_map( 'sanitize_title', WC_Tax::get_tax_classes() ) ),
|
|
|
|
'context' => array( 'view', 'edit' ),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
return $this->add_additional_fields_schema( $schema );
|
2016-02-17 19:29:09 +00:00
|
|
|
}
|
|
|
|
}
|