Effectively utilize Backlog's API
table of contents
Hello.
I'm Mandai, in charge of Wild on the development team.
At our company, we use backlog as a development tool.
Backlog is a tool that can be used as a repository server for git, subversion, etc., as a progress management tool, to aggregate knowledge in a wiki, to accumulate tasks in assignments, and so on.
I occasionally use the API, but my brain is getting tired and I seem to forget how to use it, so I thought I'd try pasting some code that I can copy and paste.
certification
OAuth2.0 is provided, but to be honest I haven't used it.
Since I often use it from batch programs, I have no choice but to request using an API key.
// Get it with curl curl https://xx.backlog.jp/api/v2/users/myself?apiKey=abcdefghijklmn
Get it with PHP $response = file_get_contents('https://xxx.backlog.jp/api/v2/users/myself?apiKey=abcdefghijklmn');
GET access is easy if you change the subdomain and path.
The most difficult thing is finding which API to use since it has so many functions and the API is well-developed.
CRUD processing
Backlog API is RESTful, so it clearly defines HTTP methods for various CRUD operations.
- If you want to get information, GET
- For information creation, POST
- To edit information, PUT or PATCH
- To delete information, DELETE
Please note that the API endpoints are often the same, so if you use the wrong HTTP method, you may delete important data.
The difference between PUT and PATCH when editing does not mean that you should use one or the other, but the accepted methods are determined by the API, so please check the Backlog API documentation
When you want to obtain information
If you want to get information, send it using the GET method.
# Get space information curl https://[subdomain].backlog.jp/api/v2/space?apiKey=[API KEY]
When you want to create information
If you want to create information, send it using the POST method.
# Add Wiki page curl -X POST https://[subdomain].backlog.jp/api/v2/wikis?apiKey=[API KEY] -d "projectId=xxx" -d "name=wiki_name" -d " content=hogehoge" # Register a new issue curl -X POST https://[subdomain].backlog.jp/api/v2/issues?apiKey=[API KEY] -d "projectId=xxx" -d "summary=issue_title " -d "issueTypeId=1" -d "priorityId=3" # Get type information # Rewrite subdomain, project ID, API KEY curl https://[subdomain].backlog.jp/api/v2/projects/ [xxx]/issueTypes?apiKey=[API KEY] # Get priority list # Rewrite subdomain and API KEY curl https://[subdomain].backlog.jp/api/v2/priorities?apiKey=[API KEY ]
When you want to edit information
If you want to edit the information, send it using either POST or PATCH method.
The types of methods vary depending on the API, so please refer to the documentation.
# Update project information # Where projectIdOrKey is specified, either ProjectID or ProjectKey can be specified curl -X PATCH https://[subdomain].backlog.jp/api/v2/projects/[projectIdOrKey]?apiKey= [API KEY] -d "name=changed_name" # Mark notification as read curl -X POST https://[subdomain].backlog.jp/api/v2/notifications/[notification_id]/markAsRead?apiKey=[API KEY ] # Get notification_id curl https://[subdomain].backlog.jp/api/v2/notifications?apiKey=[API KEY]
When you want to delete information
If you want to delete information, send the DELETE method.
Conversely, if you do not add the DELETE method, it will not be deleted unless there is an intention to delete it (or there is a mistake in the program).
# Delete issue # Either ID or Key can be specified for issueIdOrKey curl -X DELETE https://[subdomain].backlog.jp/api/v2/issues/[issueIdOrKey]?apiKey=[API KEY ]
A useful tool for checking API operation
Firefox is a useful tool for running APIs.
It's a super major browser app, so I'm sure you're aware of it, but don't you use Chrome all the time?
When I run Backlog's API in Chrome, the results of the API execution are garbled, but since around version 55, it has become impossible to change the character code, so there is no way to improve it.
(Probably because it's not HTML, so no encoding is specified)
On that point, with Firefox, the characters are displayed without any garbled characters, and a mechanism for automatically parsing JSON data has been introduced for some time now, making JSON data much easier to view.
In addition, there are many add-ons and extensions for RESTful APIs in Chrome and Firefox, so development will be faster if you use one that is familiar to you.
These tools are often used for API development, but I still use curl to create shell scripts for test cases, so I can't provide any recommended API browser information.
summary
What do you think of this brief summary?
In addition to task management and progress management, you can paste JSON into the Wiki and use it as a DB, use it as a file storage, and use it other than just as a development tool, depending on your ideas.
It is best not to use it in a proper system to exchange information by pasting JSON, but it is useful for storing data when automating work with small shell scripts for personal use.
When performing detailed processing across multiple servers, it is a hassle to change the connection limit to the DB each time, and I think it is easy to use because it is easy to access the API and can be left behind. .
That's it.