User Tools

Site Tools


gitlab:tips:api

This is an old revision of the document!


GitLab provides a powerful API that lets you automate a lot of things.

Get the list of users registered in GitLab

#! /usr/bin/env python
#-*- coding: utf-8 -*-
 
import requests
import json
 
# your private token can be found here:
# https://gitlab.example.org/profile/account
TOKEN = "<your-private-token>"
 
r = requests.get("https://gitlab.example.org/api/v3/users.json?per_page=100&private_token="+TOKEN)
 
if r.status_code == 200:
    users = json.loads(r.content)
    for user in users:
        print user["username"], user["email"]

Send an email to the members of a GitLab group

Again, this is pretty easy. We will use the [[http://www.mutt.org/ | Mutt] email client in order to send an email the members of a GitLab group.

The Mutt command will look like this:

$ mutt -s "The subject" `./get_recipents.py <group-id> /dev/null` < message.txt

As you can see, Mutt needs three parameters:

  • the subject of the email. Will be given in parameter;
  • the message to be sent. Will be given through a Unix pipeline;
  • the list of recipients (members of the GitLab groups). Will be given in parameter as the result of a Python script.

As you can expect the Python script will use the API of GitLab in order to get the required list of recipients. Below you will find a script you can use:

#! /usr/bin/env python
#-*- coding: utf-8 -*-
 
import requests
import json
 
# your private token can be found here:
# https://gitlab.example.org/profile/account
TOKEN = "<your-private-token>"
GROUP_ID = 21
 
EMAILS = []
 
r = requests.get("https://gitlab.example.org/api/v3/groups/" + str(GROUP_ID) + "/members?private_token=" + TOKEN)
 
if r.status_code == 200:
    members = json.loads(r.content)
    for member in members:
        r = requests.get("https://gitlab.example.org/api/v3/users/" + str(member["id"]) + "?private_token=" + TOKEN)
        if r.status_code == 200:
            user = json.loads(r.content)
            EMAILS.append(user["email"])
gitlab/tips/api.1453843108.txt.gz · Last modified: 2016/01/26 22:18 (external edit)