diff --git a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
index a5cb361..541fe79 100644
--- a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
+++ b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php
@@ -2,11 +2,14 @@
 
 namespace Drupal\rest\Plugin\rest\resource;
 
+use Drupal\Component\Datetime\TimeInterface;
 use Drupal\Component\Plugin\DependentPluginInterface;
+use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Config\Entity\ConfigEntityType;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Entity\EntityChangedInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageException;
 use Drupal\rest\Plugin\ResourceBase;
@@ -54,6 +57,20 @@ class EntityResource extends ResourceBase implements DependentPluginInterface {
   protected $configFactory;
 
   /**
+   * The time service.
+   *
+   * @var \Drupal\Component\Datetime\TimeInterface
+   */
+  protected $time;
+
+  /**
+   * The current user account.
+   *
+   * @var \Drupal\Core\Session\AccountInterface
+   */
+  protected $user;
+
+  /**
    * Constructs a Drupal\rest\Plugin\rest\resource\EntityResource object.
    *
    * @param array $configuration
@@ -70,11 +87,17 @@ class EntityResource extends ResourceBase implements DependentPluginInterface {
    *   A logger instance.
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The config factory.
+   * @param \Drupal\Component\Datetime\TimeInterface $time
+   *   The time service.
+   * @param \Drupal\Core\Session\AccountInterface $user
+   *   The current user account.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, $serializer_formats, LoggerInterface $logger, ConfigFactoryInterface $config_factory) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, $serializer_formats, LoggerInterface $logger, ConfigFactoryInterface $config_factory, TimeInterface $time, AccountInterface $user) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $serializer_formats, $logger);
     $this->entityType = $entity_type_manager->getDefinition($plugin_definition['entity_type']);
     $this->configFactory = $config_factory;
+    $this->time = $time;
+    $this->user = $user;
   }
 
   /**
@@ -88,7 +111,9 @@ public static function create(ContainerInterface $container, array $configuratio
       $container->get('entity_type.manager'),
       $container->getParameter('serializer.formats'),
       $container->get('logger.factory')->get('rest'),
-      $container->get('config.factory')
+      $container->get('config.factory'),
+      $container->get('datetime.time'),
+      $container->get('current_user')
     );
   }
 
@@ -203,6 +228,20 @@ public function patch(EntityInterface $original_entity, EntityInterface $entity
       throw new AccessDeniedHttpException();
     }
 
+    // Set the changed time if one is expected.
+    if ($original_entity instanceof EntityChangedInterface) {
+      // The 'changed' key is hardwired in Drupal\Core\Entity\EntityChangedTrait
+      // entities which implement this interface without using that value will
+      // need to adjust this.
+      $original_entity->set('changed', $this->time->getRequestTime());
+    }
+
+    // Set revision data details for revisionable entities.
+    if ($original_entity instanceof RevisionLogInterface) {
+      $original_entity->setRevisionUserId($this->user->id());
+      $original_entity->setRevisionCreationTime($this->time->getRequestTime());
+    }
+
     // Overwrite the received properties.
     $entity_keys = $entity->getEntityType()->getKeys();
     foreach ($entity->_restSubmittedFields as $field_name) {
