Index: src/wp-includes/option.php
===================================================================
--- src/wp-includes/option.php	(revision 46814)
+++ src/wp-includes/option.php	(working copy)
@@ -1908,6 +1908,7 @@
 		array(
 			'show_in_rest' => array(
 				'name' => 'title',
+				'public' => true,
 			),
 			'type'         => 'string',
 			'description'  => __( 'Site title.' ),
@@ -1920,6 +1921,7 @@
 		array(
 			'show_in_rest' => array(
 				'name' => 'description',
+				'public' => true,
 			),
 			'type'         => 'string',
 			'description'  => __( 'Site tagline.' ),
Index: src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php	(revision 46814)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php	(working copy)
@@ -1,5 +1,5 @@
 <?php
-/**
+ /**
  * REST API: WP_REST_Settings_Controller class
  *
  * @package WordPress
@@ -55,6 +55,26 @@
 			)
 		);
 
+		register_rest_route(
+			$this->namespace,
+			'/' . $this->rest_base . '/public',
+			array(
+				array(
+					'methods'             => WP_REST_Server::READABLE,
+					'callback'            => array( $this, 'get_public_item' ),
+					'args'                => array(),
+					'permission_callback' => array( $this, 'get_public_item_permissions_check' ),
+				),
+				array(
+					'methods'             => WP_REST_Server::EDITABLE,
+					'callback'            => array( $this, 'update_public_item' ),
+					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
+					'permission_callback' => array( $this, 'get_item_permissions_check' ),
+				),
+				'schema' => array( $this, 'get_public_item_schema' ),
+			)
+		);
+
 	}
 
 	/**
@@ -70,6 +90,19 @@
 	}
 
 	/**
+	 * Checks if a given request has access to read and manage settings.
+	 *
+	 * @since ?
+	 *
+	 * @param WP_REST_Request $request Full details about the request.
+	 * @return bool True if the request has read access for the item, otherwise false.
+	 */
+	public function get_public_item_permissions_check( $request ) {
+		return true;
+		return current_user_can( 'edit_posts' );
+	}
+
+	/**
 	 * Retrieves the settings.
 	 *
 	 * @since 4.7.0
@@ -262,7 +295,7 @@
 			$rest_options[ $rest_args['name'] ] = $rest_args;
 		}
 
-		return $rest_options;
+		return apply_filters( 'get_registered_options', $rest_options );
 	}
 
 	/**
@@ -345,4 +378,29 @@
 
 		return $schema;
 	}
+
+	public function filter_public_registered_options( $rest_options ){
+		$filtered_rest_options = array();
+		foreach ( $rest_options as $name => $args ) {
+			if ( empty( $args['public'] ) ) {
+				continue;
+			}
+
+			$filtered_rest_options[ $args['name'] ] = $args;
+		}
+		return $filtered_rest_options;
+	}
+
+	public function get_public_item( $request ) {
+		add_filter( 'get_registered_options', array( $this, 'filter_public_registered_options' ) );
+		return $this->get_item( $request );
+		remove_filter( 'get_registered_options', array( $this, 'filter_public_registered_options' ) );
+	}
+
+	public function update_public_item( $request ) {
+		add_filter( 'get_registered_options', array( $this, 'filter_public_registered_options' ) );
+		return $this->update_item( $request );
+		remove_filter( 'get_registered_options', array( $this, 'filter_public_registered_options' ) );
+	}
+
 }
