Gitea 補足情報

GiteaのAPI(swagger)について

GiteaサーバーにはAPIを試せる機能が付属しています。APIを叩くのはどうやるのか等を確認検証する意味で大変便利な機能なので簡単に解説しておきます。

入り口は、分かりにくいですが、下図の右下の隅のAPIの文字をクリックしまs。

すると

のようなWeb-UIが現れます。ここから目的とするAPIを選んでいきます。最初は、repositoryをlistしてみましょうか?試行するには、user id=login id適切なscopeを持ったPAT(personal access token)が必要なので、あらかじめ得ておきましょう。拙作のRemote Repository Managerをお使いの方なら、”noenc-urls-pats.txt”を用意しておきます。最初に“Authorize”しておきます。“Authorize”をクリックして、

2番目のdialogでPATを入れます。で、Authorize

ここで“Close”。ちなみにLogoutするまで有効です。

まず一番下の“user”をクリック。

さらに下の方へスクロールして、

“/users/{username}/repos”をクリック。

右上の“Try it out”をクリック。するとパラメーターを入力できるようになります。

username=naoとして、”Execute”

code=200なので成功しました。結果はJSONで得られています。curlを使ってアクセスするコマンドラインは、一番上で、

curl -X 'GET' \
  'http://ghost.mydns.jp:3000/api/v1/users/nao/repos' \
  -H 'accept: application/json' \
  -H 'Authorization: 0f6f5ea402f4428b88b4599eb4cacxxxxyyyyzzz'

得られたJSON(間引いています)は、

[
  {
    "id": 6,
    "owner": {
      "id": 1,
      "login": "nao",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "nao@ghost.mydns.jp",
      "avatar_url": "http://192.168.0.240:3000/avatars/bfbf3648c4df196491db378de8f12cd9",
      "html_url": "http://192.168.0.240:3000/nao",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-09-23T14:35:47+09:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "nao"
    },
    "name": "voodoo",
    "full_name": "nao/voodoo",
    "description": "",
    "empty": true,
    "private": false,
    "fork": false,
    "template": false,
    "mirror": false,
    "size": 27,
    "language": "",
    "languages_url": "http://192.168.0.240:3000/api/v1/repos/nao/voodoo/languages",
    "html_url": "http://192.168.0.240:3000/nao/voodoo",
    "url": "http://192.168.0.240:3000/api/v1/repos/nao/voodoo",
    "link": "",
    "ssh_url": "git@192.168.0.240:nao/voodoo.git",
    "clone_url": "http://192.168.0.240:3000/nao/voodoo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-10-11T06:41:52+09:00",
    "updated_at": "2025-10-11T06:41:52+09:00",
    "archived_at": "1970-01-01T09:00:00+09:00",
    "permissions": {
      "admin": false,
      "push": false,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
      },
  {
    "id": 7,
    "owner": {
      "id": 1,
      "login": "nao",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "nao@ghost.mydns.jp",
      "avatar_url": "http://192.168.0.240:3000/avatars/bfbf3648c4df196491db378de8f12cd9",
      "html_url": "http://192.168.0.240:3000/nao",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-09-23T14:35:47+09:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "nao"
    },
    "name": "exif-handling",
    "full_name": "nao/exif-handling",
    "description": "Githubからの移行",
    "empty": false,
    "private": false,
    "fork": false,
    "template": false,
    "mirror": false,
    "size": 38,
    "language": "C++",
    "languages_url": "http://192.168.0.240:3000/api/v1/repos/nao/exif-handling/languages",
    "html_url": "http://192.168.0.240:3000/nao/exif-handling",
    "url": "http://192.168.0.240:3000/api/v1/repos/nao/exif-handling",

]

RRM.exehttps://ghost.mydns.jp/wp/remote-repository-manager/からリストしたものは、

これが全部でempty repository含めて7個ですが、上記のJSONに書かれているのは、ID=1,7の2個ですね。RMM.exeもこのAPI経由でリストを得ています。で、得られたJSONを解析して、name,clone_url等々を表示しているわけです。次回は、”Create Repository”を試して見ましょうかね。

コメント