After we launched Scrumly in its most minimalistic form we now have implemented the first integration to other platforms. As we’re using Gitlab ourselves this had to be the first integration, of course.
The integration
To communicate with Gitlab we use their official API. Main focus here is to provide a connection to the issue tracker of a Gitlab projects. Our Goal is to provide a seamless workflow. This means you do your stuff on the Gitlab page, writing and labelling issues and so on. Then switch to Scrumly and choose your Project and all the labelled issues (we’ll get to that in a future post 😉) will appear and you and your team can estimate them. Of course you see all of the content of the issue directly in Scrumly. After the estimation is done all is synced back to the currently selected issue on Gitlab. After this you can use the synced information directly in Gitlab for planning and use in boards etc.
The implementation
Now to the technical side of things. As mentioned we’re using the Gitlab REST API to communicate with Gitlab. With the API you can retrieve and manipulate almost every information available in your Gitlab project. For this you will need to have an access token to access a private project or to manipulate data. This is also very useful if you want to automate stuff. You can create them here: https://gitlab.com/-/profile/personal_access_tokens. To do our integration we only need a few endpoints.
GET https://gitlab.com/api/v4/projects/: returns the content of projects you’ve got access to (without filtering you will see tons of public projects).
GET https://gitlab.com/api/v4/projects/:project_id/issues: returns issues of a project.
GET https://gitlab.com/api/v4/projects/:project_id/issues/:issue_id: returns a specific issue.
GET https://gitlab.com/api/v4/projects/$project_id/issues/$id/notes: returns comments of an issue.
PUT https://gitlab.com/api/v4/projects/$project_id/issues/$issue_id: save information back to the issue.
Note: You can also set various filters as query parameters to get only a specific subset of data. For example, https://gitlab.com/api/v4/projects?search=something will only return issues where the word something is found in project name or description. This also applies to the issues endpoint and to almost every endpoint which returns a collection of data items. Also there are only returned 20 items per call and you need to fetch more data by paging.
The future
Now after we have defined how our first integration works we will implement support for Github next. I’m sure there will be a post about it 😊
More Scrumly Posts: