{"id":15917505,"url":"https://github.com/takuya/php-nulab-backlog-api-client","last_synced_at":"2025-07-11T01:06:20.870Z","repository":{"id":65585084,"uuid":"595176487","full_name":"takuya/php-nulab-backlog-api-client","owner":"takuya","description":"ヌーラボ・バックログのAPI用ライブラリ / nulab backlog api library for php","archived":false,"fork":false,"pushed_at":"2023-03-09T05:24:22.000Z","size":227,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-10T10:44:52.471Z","etag":null,"topics":["backlog-api","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takuya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-30T14:58:25.000Z","updated_at":"2024-02-04T09:33:00.000Z","dependencies_parsed_at":"2024-12-16T08:27:30.476Z","dependency_job_id":"d406014a-cad0-4f53-9bda-e0f19da68433","html_url":"https://github.com/takuya/php-nulab-backlog-api-client","commit_stats":{"total_commits":141,"total_committers":1,"mean_commits":141.0,"dds":0.0,"last_synced_commit":"9494c3f25312677863d85a5b7e87b1d09593e29a"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fphp-nulab-backlog-api-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fphp-nulab-backlog-api-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fphp-nulab-backlog-api-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fphp-nulab-backlog-api-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takuya","download_url":"https://codeload.github.com/takuya/php-nulab-backlog-api-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246998100,"owners_count":20866690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backlog-api","php"],"created_at":"2024-10-06T18:11:06.548Z","updated_at":"2025-04-03T11:41:52.442Z","avatar_url":"https://github.com/takuya.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Nulab Backlog APIアクセス用\n\n目標：NulabのBacklog APIに快適にアクセスして、全データを取り出せるようにする。\n\nバックログのスペースとプロジェクト内部を探索してデータを探すのが面倒なので、データを網羅的に探せるようにしてある。\n\n## 基本的な使い方。\n```php\n\u003c?php\nuse Takuya\\BacklogApiClient\\BacklogAPIClient;\n$key = getenv('backlog_api_key');\n$space = getenv('backlog_space');\n$cli = new BacklogAPIClient($space, $key);\n$cli-\u003egetSpace();\n$cli-\u003egetIssue(['query_options'=\u003e['projectIds'=\u003e[1,2,3],'count'=\u003e100]]);\n$cli-\u003egetComment(\"PRJ-234\",1)\n```\nspaceId はURLを入れます。\n```php\n$space='http://xxx-your-space.backlog.xxx'\n```\n## 提供するクラス\n２つのクラスファイルを提供しています。\n- `class BacklogAPIClient` 更新・取得用\n- `class Backlog` 取得専用\n```php\n\u003c?php\n// Apiで呼び出し\nuse Takuya\\BacklogApiClient\\BacklogAPIClient;\n$cli = new BacklogAPIClient($space, $key);\n$cli-\u003egetProject(\"PRJEKEY\");\n$cli-\u003egetIssue(\"PRJEKEY-123\");\n// オブジェクト・モデルでアクセス。\nuse Takuya\\BacklogApiClient\\Backlog;\n$cli = new Backlog($space, $key);\n$cli-\u003eproject('PRJKEY');\n$cli-\u003eissue('PRJKEY-123');\n```\n`class Backlog` はID探索のために作っています。更新は実装していません。\n`class BacklogAPIClient` を使って更新をします。\n## 認証\n\nAPIキーのアクセスを実装しています。OAUTHアクセスキー（BEARERトークン）は実装していません。\n## 特長\n\nPHPStormのIDE自動補完を使えるようにした。\n\nデータモデルをModelクラスとして作成した。これにより`スペース→プロジェクト→課題-\u003eコメント-\u003e通知` のBacklog階層構造を辿れる。\n\n階層構造でたどれば、全体を取得しやすくなる。\n\nサンプル\n```php\n\u003c?php\nuse Takuya\\BacklogApiClient\\Backlog;\n$key = getenv('backlog_api_key');\n$space = getenv('backlog_space');\n$cli = new Backlog($space, $key);\n// スペースの取得-\u003eプロジェクト一覧-\u003e課題一覧\nforeach ($cli-\u003espace()-\u003eprojects(Backlog::PROJECTS_ONLY_MINE) as $prj){\n  foreach ($prj-\u003eissues() as $issue) {\n    foreach ($issue-\u003ecomments() as $comment) {\n       print([\n        $prj-\u003eid,\n        $issue-\u003eid,\n        $comment-\u003eid]\n    )} \n  }\n}\n```\n## 自動補完の例\nBacklogのAPIのメソッド名を自動補完します。\n```\n$cli = new BacklogAPIClient($space, $key);\n$cli-\u003e...\n```\n\n\u003cdiv\u003e\n\u003cimg width=\"100%\" alt=\"image\" src=\"https://user-images.githubusercontent.com/55338/215521858-31d7fd22-ddd5-484f-b55f-af12503eb82a.png\"\u003e\n\u003c/div\u003e\n\n## サンプル\n\n\nAPIはバックログを開いてアドレスを見ながら使います。\n\n課題コメントを開いたときのアドレスは次のようになっています。\n```\nhttps://example.backlog.com/view/MYPRJ-40#comment-8408\n```\nアドレスから次の情報が読み取れます。\n```json\n{\n  \"スペースKey\":\"example\",\n  \"プロジェクトKey\": \"MYPRJ\",\n  \"課題Key\": \"40\",\n  \"コメントID\": \"8408\"\n}\n```\n\n|         URL(path)          |   値   |   Apiでの引数表記    |    呼び方     |\n|:--------------------------:|:-----:|:--------------:|:----------:|\n| /**MYPRJ**-40#comment-8408 | MYPRJ | ProjectIdOrKey | ProjectKey |\n| /MYPRJ-**40**#comment-8408 |  40   |  IssueIdOrKey  |  IssueKey  |\n| /MYPRJ-40#comment-**8408** | 8409  |   CommentId    | CommentId  |\n\nAPIドキュメントに`ProjectIdOrKey`と書かれた場合は、 ProjectId Or ProjectKey を意味しています。`ProjectKey`と`ProjectId`とは１対１対応のようです。\n上記の情報を使ってAPIにアクセスします。\n\nたとえば、以下のように使います。\n```php\n\u003c?php\n// API呼び出し\nuse Takuya\\BacklogApiClient\\BacklogAPIClient;\n$space = 'example';\n$key = 'YOUR_API_KEY';\n$cli = new BacklogAPIClient($space, $key);\n\n## プロジェクト取得 \n$cli-\u003egetProject(\"MYPRJ\");\n## 課題取得 \n$cli-\u003egetIssue(\"MYPRJ-40\");\n\n```\n\n\n基本的に、`Key`より`ID`アクセスが楽ちんです。\n\nなぜなら、リクエスト引数へIDsを指定で検索するAPIが殆どだからです。たとえばパラメータ`projectIds[]`や`IssueIds[]`などです。\n\nこのためにID と Key を相互に変換するメソッドを作成してあります。\n```php\n\u003c?php\nuse Takuya\\BacklogApiClient\\Backlog;\n$cli = new Backlog($space, $key);\n$project_id = $cli-\u003eprojectIdByKeyName(\"MYPRJ\");\n```\n\n\n\n## api 一覧\n\nAPIの名前とメソッド名と実際のAPIの対応表を`api.html`に用意しています。\n\n## 日付と時刻\n\nBacklogのAPIは `created` / `updated` で日付が返されます。すべてUTCのようです。\n\n## インストール via github\n```sh\ncomposer config repositories.'php-nulab-backlog-api-client' \\\nvcs https://github.com/takuya/php-nulab-backlog-api-client  \ncomposer require takuya/php-nulab-backlog-api-client:master\ncomposer install\n```\n## インストール via packagist with composer \n```sh\ncomposer require takuya/php-nulab-backlog-api-client\n```\n## Development\nインストールしてテストして開発。\n```sh\n## clone\ngit clone git@github.com:takuya/php-nulab-backlog-api-client.git\ncd php-nulab-backlog-api-client\ncomposer install\n## generate api from backlog WebSite.\ncomposer run-script gen_api_methods\n## Test api methods.\nexport backlog_api_key='YOUR_API_KEY'\nexport backlog_space='xxxspace'\ncomposer run-script test\n## test some test case\nphp vendor/bin/phpunit --filter get_space\n```\n\n## サンプル\n\n更新をするときのサンプル\n### 画像の投稿のサンプル\n画像を投稿して、画像を貼り付けたコメントを作る。\n```php\n$api = new BacklogAPIClient($space, $key);\n$part = [\n  'name'=\u003e\"file\",\n  'contents' =\u003e file_get_contents(__DIR__.'/../../../../sample.jpg'),\n  \"filename\"=\u003e\"sample.jpg\"\n];\n$param = ['multipart' =\u003e [$part]];\n$ret = $api-\u003epostAttachmentFile($param);\n$params = [\n  'content'=\u003e\"画像を貼り付ける\\nサブスクに気をつけて\\n![image][sample.jpg]\\n\",\n  'attachmentId[]'=\u003e$ret-\u003eid,\n];\n$ret = $api-\u003eaddComment($key,$params);\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakuya%2Fphp-nulab-backlog-api-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakuya%2Fphp-nulab-backlog-api-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakuya%2Fphp-nulab-backlog-api-client/lists"}