diff --git a/eck.module b/eck.module
index 9050568..9981efc 100644
--- a/eck.module
+++ b/eck.module
@@ -17,7 +17,7 @@ use Drupal\Core\Url;
 use Drupal\eck\ArrayDeprecationWrapper;
 use Drupal\eck\Entity\EckEntity;
 use Drupal\eck\Entity\EckEntityType;
-
+use Drupal\Core\Access\AccessResult;
 /**
  * Defines the online documentation url of the ECK module.
  */
@@ -328,3 +328,23 @@ function eck_form_system_themes_admin_form_submit($form, FormStateInterface $for
     ->save();
   \Drupal::service('router.builder')->setRebuildNeeded();
 }
+
+
+/**
+ * Implements hook_jsonapi_entity_filter_access() for all eck entities.
+ */
+function eck_jsonapi_entity_filter_access(\Drupal\Core\Entity\EntityTypeInterface $entity_type, \Drupal\Core\Session\AccountInterface $account) {
+  $entityTypeManager = Drupal::entityTypeManager();
+  $eckEntityTypes = $entityTypeManager
+    ->getStorage('eck_entity_type')
+    ->loadMultiple();
+
+  foreach ($eckEntityTypes as $eckEntityType) {
+    if ($eckEntityType->id() === $entity_type->id()) {
+      return ([
+        JSONAPI_FILTER_AMONG_ALL => AccessResult::allowedIfHasPermission($account, "view any {$eckEntityType->id()} entities"),
+        JSONAPI_FILTER_AMONG_OWN => AccessResult::allowedIfHasPermission($account, "view own {$eckEntityType->id()} entities"),
+      ]);
+    }
+  }
+}
