backlogの課題を取得

<?php
$params = array(
    'apiKey' => 'API key',
    'projectId[]' => 'project id',
    'statusId' => array(1 => 1, 2 => 2, 3 => 3, 4 => 4),
    'sort' => 'updated',
    'count' => 100,
);
$url = 'https://{$hoge}.backlog.com/api/v2/issues?'.http_build_query($params, '','&');
$headers = array('Content-Type:application/x-www-form-urlencoded');
$context = array(
    'http' => array(
        'method' => 'GET',
        'header' => $headers,
        'ignore_errors' => true,
    )
);
$response = file_get_contents($url, false, stream_context_create($context));
$json = mb_convert_encoding($response, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$json = json_decode($json, true);
echo "<pre>";
var_dump($json);
echo "</pre>";
?>

複数projectなら、こんな感じで書く。

'projectId' => array(42107 => 42107, 42116 => 42116),

$jsonは連想配列で返ってくる。
foreachでいってみよう!

foreach($json as $value){
     echo $value["issueType"]["name"] ." ".$value["issueKey"]." ". $value["summary"]." " .$value["assignee"]["name"]. " ".$value["status"]["name"]." ".$value["priority"]["name"]."".$value["created"]." ".$value["dueDate"]." " .$value["updated"]." ".$value["createdUser"]["name"]."<br>";
}

うお。

tableで表示したい。その前に、日付フォーマット。date(‘m/d’, strtotime($value[“created”]))とする。

foreach($json as $value){
     echo $value["issueType"]["name"] ." ".$value["issueKey"]." ". $value["summary"]." " .$value["assignee"]["name"]. " ".$value["status"]["name"]." ".$value["priority"]["name"]."".date('m/d', strtotime($value["created"]))." ".date('m/d', strtotime($value["dueDate"]))." " .date('m/d', strtotime($value["updated"]))." ".$value["createdUser"]["name"]."<br>";
}

うお、nullだと01/01になる。。冗長だが。。

foreach($json as $value){
     if(!is_null($value["dueDate"])){
        echo $value["issueType"]["name"] ." ".$value["issueKey"]." ". $value["summary"]." " .$value["assignee"]["name"]. " ".$value["status"]["name"]." ".$value["priority"]["name"]."".date('m/d', strtotime($value["created"]))." ".date('m/d', strtotime($value["dueDate"]))." " .date('m/d', strtotime($value["updated"]))." ".$value["createdUser"]["name"]."<br>";
     } else {
        echo $value["issueType"]["name"] ." ".$value["issueKey"]." ". $value["summary"]." " .$value["assignee"]["name"]. " ".$value["status"]["name"]." ".$value["priority"]["name"]."".date('m/d', strtotime($value["created"]))." "." "." " .date('m/d', strtotime($value["updated"]))." ".$value["createdUser"]["name"]."<br>";
     }
}

backlog api

1. APIキーを取得
Backlogログイン -> 個人設定 -> API -> 新しいAPIキーを設定 -> APIキー発行
2. spaceIdを確認
https://{$spaceID}.backlog.com/
3. 課題の種別のID
https://{$spaceID}.backlog.com/ListIssueType.action?projectId={$課題の種別のID}

string(66) “{“errors”:[{“message”:”Not Found Space.”,”code”:6,”moreInfo”:””}]}”

スペースがない!?

https://hoge.backlog.jp/api/v2/issues?

よくみたら.jp ではなく、.com ならいけますな

https://hoge.backlog.com/api/v2/issues?