aboutsummaryrefslogtreecommitdiff
path: root/applications/gitlab/users.py
blob: fab26465a7aa8a3baca1f27f59af79fc0ff96026 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""
Gather all members of specified GitLab groups and projects and their access levels.

        Ref: https://docs.gitlab.com/api/members/
"""

import requests

BASE_URL = "https://gitlab.com/api/v4"
PRIVATE_TOKEN = "your_access_token"
GROUP_IDS = ["group_id_1", "group_id_2"]  # Add your group IDs here
PROJECT_IDS = ["project_id_1", "project_id_2"]  # Add your project IDs here
TIMEOUT = 30

HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN}


def get_members(url, name):
    response = requests.get(url, headers=HEADERS, timeout=TIMEOUT)
    if response.status_code == 200:
        members = response.json()
        print(f"\n{name} Members:")
        for member in members:
            print(
                f"Username: {member['username']}, Access Level: {member['access_level']}"
            )
    else:
        print(
            f"Failed to fetch members for {name}: {response.status_code}, {response.text}"
        )


if __name__ == "__main__":
    access_levels = """Access Level Roles:
    0  : No access
    5  : Minimal access
    10 : Guest
    15 : Planner
    20 : Reporter
    30 : Developer
    40 : Maintainer
    50 : Owner
    60 : Admin
    """
    print(access_levels)

    for group_id in GROUP_IDS:
        group_url = f"{BASE_URL}/groups/{group_id}/members"
        get_members(group_url, f"Group {group_id}")

    for project_id in PROJECT_IDS:
        project_url = f"{BASE_URL}/projects/{project_id}/members"
        get_members(project_url, f"Project {project_id}")