Как я могу увидеть, что проблема была перемещена между столбцами в проекте с помощью GitHub GraphQL API?

Я хотел бы определить, когда карта перемещалась из одного столбца в другой в Системной плате проекта GitHub с помощью GitHub GraphQL API.

Я могу перечислить все проблемы на доске проекта (например, Twitter Bootstrap), используя такой запрос:

{
  organization(login: "twbs") {
    repository(name: "bootstrap") {
      project(number: 4) {
        columns(first: 5) {
          nodes {
            name
            cards(first: 10) {
              nodes {
                content {
                  __typename
                  ... on Issue {
                    title
                    url
                    timeline(first: 10) {
                      nodes {
                        __typename
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Есть много типов событий в IssueTimelineConnection, но связанных с проектом событий среди них нет:

...
{
  "content": {
    "__typename": "Issue",
    "title": "Remove inner white border effect on popovers",
    "url": "https://github.com/twbs/bootstrap/issues/23763",
    "timeline": {
      "nodes": [
        {
          "__typename": "RenamedTitleEvent"
        },
        {
          "__typename": "IssueComment"
        },
        {
          "__typename": "LabeledEvent"
        },
        {
          "__typename": "LabeledEvent"
        },
        {
          "__typename": "IssueComment"
        },
        {
          "__typename": "CrossReferencedEvent"
        },
        {
          "__typename": "CrossReferencedEvent"
        },
        {
          "__typename": "LabeledEvent"
        },
        {
          "__typename": "ClosedEvent"
        },
        {
          "__typename": "CrossReferencedEvent"
        }
      ]
    }
  }
...

Я могу видеть, когда проблемы были перемещены между столбцами на веб-странице GitHub для проблемы:

образ

Я просто не вижу этих событий в API. Это недостающая функция? Есть ли другой способ получить эту информацию? (Контекст: я хотел бы построить диаграмму выкатов для плат проектов GitHub.)

2 ответа

Вы можете получить столбец и дату последнего изменения столбца, используя следующий запрос дляnew projects. Этот методnot validдляclassic projectsв Гитхабе.

      query{
  user(login: "USER_NAME") {
    projectV2(number: 1) {
      title
      items(first: 100) {
        pageInfo {
          endCursor
          hasNextPage
        }
        nodes {
          content {
            ... on Issue {
              id
              title
              url
              state
              repository {
                name
                owner {
                  login
                }
              }
            }
          }
          status: fieldValueByName(name: "Status") {
            ... on ProjectV2ItemFieldSingleSelectValue {
              column: name
              updatedAt
            }
          }
        }
      }
    }
  }
}

Запрос был протестирован с помощью GitHub Explorer.

Вам необходимо добавить заголовок Accept для сведений о событиях проекта ( https://developer.github.com/v4/previews/) и заголовок Accept для предварительного просмотра проблемы ( https://developer.github.com/v4/previews/)

Тогда вы можете использовать timelineItems и выполните запрос как это:

query {
  repository(owner: "buildo", name: "react-components") {
    issue(number: 1321) {
      timelineItems(first: 10) {
        nodes {
          __typename
        }
      }
    }
  }
}

Это возвращает:

{
  "repository": {
    "issue": {
      "timelineItems": {
        "nodes": [
          {
            "__typename": "ConvertedNoteToIssueEvent"
          },
          {
            "__typename": "AssignedEvent"
          },
          {
            "__typename": "LabeledEvent"
          },
          {
            "__typename": "MovedColumnsInProjectEvent"
          }
        ]
      }
    }
  }
}
Другие вопросы по тегам