Index: src/wp-includes/rest-api/class-wp-rest-server.php
===================================================================
--- src/wp-includes/rest-api/class-wp-rest-server.php	(revision 48799)
+++ src/wp-includes/rest-api/class-wp-rest-server.php	(working copy)
@@ -1297,25 +1297,14 @@
 				$endpoint_data['args'] = array();
 
 				foreach ( $callback['args'] as $key => $opts ) {
-					$arg_data = array(
-						'required' => ! empty( $opts['required'] ),
-					);
-					if ( isset( $opts['default'] ) ) {
-						$arg_data['default'] = $opts['default'];
-					}
-					if ( isset( $opts['enum'] ) ) {
-						$arg_data['enum'] = $opts['enum'];
-					}
-					if ( isset( $opts['description'] ) ) {
-						$arg_data['description'] = $opts['description'];
-					}
-					if ( isset( $opts['type'] ) ) {
-						$arg_data['type'] = $opts['type'];
-					}
-					if ( isset( $opts['items'] ) ) {
-						$arg_data['items'] = $opts['items'];
-					}
-					$endpoint_data['args'][ $key ] = $arg_data;
+					$arg_data = array( 'required' => ! empty( $opts['required'] ) );
+
+					// take valid schema properties only
+					foreach ( WP_REST_Controller::get_valid_schema_properties() as $valid_schema_property )
+						if ( array_key_exists( $valid_schema_property, $opts ) )
+							$arg_data[$valid_schema_property] = $opts[$valid_schema_property];
+
+					$endpoint_data['args'][$key] = $arg_data;
 				}
 			}
 
Index: src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php	(revision 48799)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php	(working copy)
@@ -39,6 +39,43 @@
 	protected $schema;
 
 	/**
+	 * All valid JSON schema properties.
+	 *
+	 * @since 5.6.0
+	 * @var string[]
+	 */
+	private static $valid_schema_properties = array(
+		'type',
+		'format',
+		'enum',
+		'items',
+		'properties',
+		'additionalProperties',
+		'minimum',
+		'maximum',
+		'exclusiveMinimum',
+		'exclusiveMaximum',
+		'minLength',
+		'maxLength',
+		'pattern',
+		'minItems',
+		'maxItems',
+		'uniqueItems',
+	);
+
+	/**
+	 * Get all valid JSON schema properties.
+	 *
+	 * @since 5.6.0
+	 *
+	 * @return string[] All valid JSON schema properties.
+	 */
+	public static function get_valid_schema_properties()
+	{
+		return self::$valid_schema_properties;
+	}
+
+	/**
 	 * Registers the routes for the objects of the controller.
 	 *
 	 * @since 4.7.0
@@ -629,24 +666,6 @@
 		$schema                  = $this->get_item_schema();
 		$schema_properties       = ! empty( $schema['properties'] ) ? $schema['properties'] : array();
 		$endpoint_args           = array();
-		$valid_schema_properties = array(
-			'type',
-			'format',
-			'enum',
-			'items',
-			'properties',
-			'additionalProperties',
-			'minimum',
-			'maximum',
-			'exclusiveMinimum',
-			'exclusiveMaximum',
-			'minLength',
-			'maxLength',
-			'pattern',
-			'minItems',
-			'maxItems',
-			'uniqueItems',
-		);
 
 		foreach ( $schema_properties as $field_id => $params ) {
 
@@ -672,7 +691,7 @@
 				$endpoint_args[ $field_id ]['required'] = true;
 			}
 
-			foreach ( $valid_schema_properties as $schema_prop ) {
+			foreach (self::$valid_schema_properties as $schema_prop ) {
 				if ( isset( $params[ $schema_prop ] ) ) {
 					$endpoint_args[ $field_id ][ $schema_prop ] = $params[ $schema_prop ];
 				}
