*/ protected function input_properties(): array { return array( 'id' => array( 'type' => 'integer', 'description' => __( 'Variation id.', 'acrossai-abilities-manager' ) ), 'regular_price' => array( 'type' => 'string', 'description' => __( 'Regular price.', 'acrossai-abilities-manager' ) ), 'sale_price' => array( 'type' => 'string', 'description' => __( 'Sale price.', 'acrossai-abilities-manager' ) ), 'sku' => array( 'type' => 'string', 'description' => __( 'Stock keeping unit.', 'acrossai-abilities-manager' ) ), 'status' => array( 'type' => 'string', 'description' => __( 'publish or private.', 'acrossai-abilities-manager' ) ), 'weight' => array( 'type' => 'string', 'description' => __( 'Weight.', 'acrossai-abilities-manager' ) ), 'manage_stock' => array( 'type' => 'boolean', 'description' => __( 'Whether this variation tracks its own stock rather than the parent.', 'acrossai-abilities-manager' ) ), 'stock_quantity' => array( 'type' => 'integer', 'description' => __( 'Stock quantity, when this variation manages its own.', 'acrossai-abilities-manager' ) ), ); } /** * @since 0.0.34 * @return array */ protected function required_input(): array { return array( 'id' ); } /** * @since 0.0.34 * @return array */ protected function output_properties(): array { return array( 'product' => array( 'type' => 'object', 'additionalProperties' => true ), 'lookup_state' => array( 'type' => 'object', 'additionalProperties' => true ), ); } /** * @since 0.0.34 * @return array */ protected function annotations(): array { return array( 'readonly' => false, 'destructive' => false, 'idempotent' => true, ); } /** * @since 0.0.34 * @param array $input Input. * @return array|WP_Error */ protected function run( array $input ) { $fields = $input; unset( $fields['id'] ); return Product_Repository::update_variation( (int) $input['id'], $fields ); } }