diff --git a/admin/tool/dataprivacy/classes/external/get_access_information.php b/admin/tool/dataprivacy/classes/external/get_access_information.php
new file mode 100644
index 00000000000..62de8711f45
--- /dev/null
+++ b/admin/tool/dataprivacy/classes/external/get_access_information.php
@@ -0,0 +1,85 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+namespace tool_dataprivacy\external;
+
+use core_external\external_api;
+use core_external\external_function_parameters;
+use core_external\external_single_structure;
+use core_external\external_value;
+use core_external\external_warnings;
+use tool_dataprivacy\api;
+
+/**
+ * External function for retrieving access (permissions) information for the privacy API.
+ *
+ * @package    tool_dataprivacy
+ * @copyright  2023 Juan Leyva <juan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since      Moodle 4.4
+ */
+class get_access_information extends external_api {
+
+    /**
+     * Webservice parameters.
+     *
+     * @return external_function_parameters
+     */
+    public static function execute_parameters(): external_function_parameters {
+        return new external_function_parameters([]);
+    }
+
+    /**
+     * Main method of the external function.
+     *
+     * @return array current user permissions
+     */
+    public static function execute(): array {
+        global $USER;
+
+        $system = \context_system::instance();
+        external_api::validate_context($system);
+
+        return [
+            'cancontactdpo' => api::can_contact_dpo(),
+            'canmanagedatarequests' => api::can_manage_data_requests($USER->id),
+            'cancreatedatadownloadrequest' => api::can_create_data_download_request_for_self($USER->id),
+            'cancreatedatadeletionrequest' => api::can_create_data_deletion_request_for_self($USER->id),
+            'hasongoingdatadownloadrequest' => api::has_ongoing_request($USER->id, api::DATAREQUEST_TYPE_EXPORT),
+            'hasongoingdatadeletionrequest' => api::has_ongoing_request($USER->id, api::DATAREQUEST_TYPE_DELETE),
+            'warnings' => [],
+        ];
+    }
+
+    /**
+     * Webservice returns.
+     *
+     * @return external_single_structure
+     */
+    public static function execute_returns(): external_single_structure {
+        return new external_single_structure(
+            [
+                'cancontactdpo' => new external_value(PARAM_BOOL, 'Can contact dpo.'),
+                'canmanagedatarequests' => new external_value(PARAM_BOOL, 'Can manage data requests.'),
+                'cancreatedatadownloadrequest' => new external_value(PARAM_BOOL, 'Can create data download request for self.'),
+                'cancreatedatadeletionrequest' => new external_value(PARAM_BOOL, 'Can create data deletion request for self.'),
+                'hasongoingdatadownloadrequest' => new external_value(PARAM_BOOL, 'Has ongoing data download request.'),
+                'hasongoingdatadeletionrequest' => new external_value(PARAM_BOOL, 'Has ongoing data deletion request.'),
+                'warnings' => new external_warnings(),
+            ]
+        );
+    }
+}
diff --git a/admin/tool/dataprivacy/db/services.php b/admin/tool/dataprivacy/db/services.php
index a8b42771735..8f3ac6517cd 100644
--- a/admin/tool/dataprivacy/db/services.php
+++ b/admin/tool/dataprivacy/db/services.php
@@ -243,4 +243,10 @@ $functions = [
         'ajax'          => true,
         'loginrequired' => true,
     ],
+    'tool_dataprivacy_get_access_information' => [
+        'classname'     => '\tool_dataprivacy\external\get_access_information',
+        'description'   => 'Retrieving privacy API access (permissions) information for the current user.',
+        'type'          => 'read',
+        'services'      => [MOODLE_OFFICIAL_MOBILE_SERVICE],
+    ],
 ];
diff --git a/admin/tool/dataprivacy/tests/external/external_test.php b/admin/tool/dataprivacy/tests/external/external_test.php
index 7408592daf1..428da90bf8d 100644
--- a/admin/tool/dataprivacy/tests/external/external_test.php
+++ b/admin/tool/dataprivacy/tests/external/external_test.php
@@ -1113,4 +1113,31 @@ class external_test extends externallib_advanced_testcase {
             ]
         ], $results[$student1->id]);
     }
+
+    /**
+     * Test for external::get_access_information().
+     */
+    public function test_get_access_information() {
+        $this->resetAfterTest();
+
+        $this->setAdminUser();
+        $result = get_access_information::execute();
+        $result = external_api::clean_returnvalue(get_access_information::execute_returns(), $result);
+        $this->assertFalse($result['cancontactdpo']);   // Disabled by default.
+
+        // Enable contact DPO.
+        set_config('contactdataprotectionofficer', 1, 'tool_dataprivacy');
+
+        $user = $this->getDataGenerator()->create_user();
+        $this->setUser($user);
+        $result = get_access_information::execute();
+        $result = external_api::clean_returnvalue(get_access_information::execute_returns(), $result);
+
+        $this->assertTrue($result['cancontactdpo']);
+        $this->assertTrue($result['cancreatedatadownloadrequest']);
+        $this->assertTrue($result['cancreatedatadeletionrequest']);
+        $this->assertFalse($result['canmanagedatarequests']);
+        $this->assertFalse($result['hasongoingdatadownloadrequest']);
+        $this->assertFalse($result['hasongoingdatadeletionrequest']);
+    }
 }