特定のバージョンの Django のリリース情報を取得しようとしています。ただし、リリースは常に null 応答を返します。以下の例では、 Django の 1.11 リリースに関する情報を取得しようとしています。
import os
import requests
GITHUB_ACCESS_TOKEN = os.environ['GITHUB_ACCESS_TOKEN']
def get_release_information():
query = '''
{
repository(owner: "django", name: "django") {
release(tagName: "1.11") {
name
tagName
createdAt
}
}
}
'''
response = requests.post(
url='https://api.github.com/graphql',
json={'query': query},
headers={'Authorization': f'token {GITHUB_ACCESS_TOKEN}'}
)
pprint(response.json())
上記は以下を返します。
{
"data": {
"repository": {
"release": null
}
}
}
GraphQL クエリの実行方法を誤解していますか? このリリースの以下のクエリを使用して、これと同じクエリを自分の個人用パブリック リポジトリで動作させることができます。
query = '''
{
repository(owner: "michaeljohnbarr", name: "django-timezone-utils") {
release(tagName: "0.13") {
name
tagName
createdAt
}
}
}
'''
私の個人用リポジトリは次の結果を返します。
{
"data": {
"repository": {
"release": {
"name": "Version 0.13",
"tagName": "0.13",
"createdAt": "2018-09-26T00:01:20Z"
}
}
}
}
Github API v4 GraphQL ライブラリが 2 つのパブリック リポジトリを異なる方法で処理することは、私には意味がありません。私が使用している Github アクセス トークンには、すべてに対する完全なアクセス許可があります。可能なすべての権限とサブ権限を確認しました。
更新: (2019-09-14) Github の GraphQL API のサポート フォーラムがあります。同じ問題を特定するこのスレッドを見つけ、そこにも投稿しました。