Does Gitlab have a similar mechanism to Github Apps?

I have developed an app that uses a Github App to facilitate the fetching of pull request information from its users. After a user installs the Github App, I need only the installation id of the user’s installation id alongside the credentials of the app itself (the app id and private key) to access certain information that the users agreed to when they installed the Github app.

I am looking to extend the app so that the supported source code tools include Gitlab. What, if any, is the Gitlab mechanism that would allow me to fetch merge request information from Gitlab?

Ideally the following requirements would hold:

  1. The user has granular permissions (i.e. can specify the specific repos to allow the merge requests to be fetched from)

  2. The mechanism handles the access tokens (i.e. similar to Github, where I need only the user’s installation id and it creates the installation access token)