brndnmtthws / labhub

GitHub bot for using GitLab CI in OSS projects
The Unlicense
32 stars 14 forks source link

LabHub breaks when setting a milestone on a PR #26

Closed nickygerritsen closed 5 years ago

nickygerritsen commented 5 years ago

When you set a milestone on a PR, LabHub breaks with the following message:

{"error":"Error(\"invalid type: map, expected a string\", line: 1, column: 1919)"}

I think this is because the code assumes milestone is a Option<String> but it is either null or an object. See https://github.com/brndnmtthws/labhub/blob/9e759f6e3029bb61a85ea9f55a64de7ded9b323d/src/api/models/github.rs#L418

brndnmtthws commented 5 years ago

Ah, yes. I generated those models from a JSON object so they're not perfect. Do you have an example of the JSON that generated the error? You should be able to get it from GitHub on the webhooks page. That would be very helpful for me.

nickygerritsen commented 5 years ago

Sure, here it is:

{
  "action": "closed",
  "number": 556,
  "pull_request": {
    "url": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556",
    "id": 270314554,
    "node_id": "MDExOlB1bGxSZXF1ZXN0MjcwMzE0NTU0",
    "html_url": "https://github.com/DOMjudge/domjudge/pull/556",
    "diff_url": "https://github.com/DOMjudge/domjudge/pull/556.diff",
    "patch_url": "https://github.com/DOMjudge/domjudge/pull/556.patch",
    "issue_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/556",
    "number": 556,
    "state": "closed",
    "locked": false,
    "title": "No more event daemon",
    "user": {
      "login": "nickygerritsen",
      "id": 550145,
      "node_id": "MDQ6VXNlcjU1MDE0NQ==",
      "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/nickygerritsen",
      "html_url": "https://github.com/nickygerritsen",
      "followers_url": "https://api.github.com/users/nickygerritsen/followers",
      "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
      "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
      "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
      "repos_url": "https://api.github.com/users/nickygerritsen/repos",
      "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
      "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
      "type": "User",
      "site_admin": false
    },
    "body": "This should remove the need for the eventdaemon by moving its logic to both the event-feed API function and just before inserting other events.",
    "created_at": "2019-04-14T17:52:21Z",
    "updated_at": "2019-04-17T11:13:47Z",
    "closed_at": "2019-04-17T11:13:46Z",
    "merged_at": "2019-04-17T11:13:46Z",
    "merge_commit_sha": "401bc341b92e8794826c1341539bbe0292e90b5f",
    "assignee": null,
    "assignees": [

    ],
    "requested_reviewers": [

    ],
    "requested_teams": [

    ],
    "labels": [

    ],
    "milestone": {
      "url": "https://api.github.com/repos/DOMjudge/domjudge/milestones/8",
      "html_url": "https://github.com/DOMjudge/domjudge/milestone/8",
      "labels_url": "https://api.github.com/repos/DOMjudge/domjudge/milestones/8/labels",
      "id": 4178311,
      "node_id": "MDk6TWlsZXN0b25lNDE3ODMxMQ==",
      "number": 8,
      "title": "7.0",
      "description": "Issues and PR's that need to be tackled before releasing 7.0",
      "creator": {
        "login": "nickygerritsen",
        "id": 550145,
        "node_id": "MDQ6VXNlcjU1MDE0NQ==",
        "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nickygerritsen",
        "html_url": "https://github.com/nickygerritsen",
        "followers_url": "https://api.github.com/users/nickygerritsen/followers",
        "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
        "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
        "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
        "repos_url": "https://api.github.com/users/nickygerritsen/repos",
        "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
        "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
        "type": "User",
        "site_admin": false
      },
      "open_issues": 2,
      "closed_issues": 7,
      "state": "open",
      "created_at": "2019-03-27T19:31:09Z",
      "updated_at": "2019-04-17T11:13:47Z",
      "due_on": null,
      "closed_at": null
    },
    "commits_url": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556/commits",
    "review_comments_url": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556/comments",
    "review_comment_url": "https://api.github.com/repos/DOMjudge/domjudge/pulls/comments{/number}",
    "comments_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/556/comments",
    "statuses_url": "https://api.github.com/repos/DOMjudge/domjudge/statuses/cfe221c6b1a9b3d913f87ce00c008a3c67b72409",
    "head": {
      "label": "nickygerritsen:no-more-event-daemon",
      "ref": "no-more-event-daemon",
      "sha": "cfe221c6b1a9b3d913f87ce00c008a3c67b72409",
      "user": {
        "login": "nickygerritsen",
        "id": 550145,
        "node_id": "MDQ6VXNlcjU1MDE0NQ==",
        "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nickygerritsen",
        "html_url": "https://github.com/nickygerritsen",
        "followers_url": "https://api.github.com/users/nickygerritsen/followers",
        "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
        "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
        "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
        "repos_url": "https://api.github.com/users/nickygerritsen/repos",
        "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
        "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
        "type": "User",
        "site_admin": false
      },
      "repo": {
        "id": 142668420,
        "node_id": "MDEwOlJlcG9zaXRvcnkxNDI2Njg0MjA=",
        "name": "domjudge",
        "full_name": "nickygerritsen/domjudge",
        "private": false,
        "owner": {
          "login": "nickygerritsen",
          "id": 550145,
          "node_id": "MDQ6VXNlcjU1MDE0NQ==",
          "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nickygerritsen",
          "html_url": "https://github.com/nickygerritsen",
          "followers_url": "https://api.github.com/users/nickygerritsen/followers",
          "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
          "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
          "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
          "repos_url": "https://api.github.com/users/nickygerritsen/repos",
          "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
          "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
          "type": "User",
          "site_admin": false
        },
        "html_url": "https://github.com/nickygerritsen/domjudge",
        "description": "DOMjudge programming contest jury system",
        "fork": true,
        "url": "https://api.github.com/repos/nickygerritsen/domjudge",
        "forks_url": "https://api.github.com/repos/nickygerritsen/domjudge/forks",
        "keys_url": "https://api.github.com/repos/nickygerritsen/domjudge/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/nickygerritsen/domjudge/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/nickygerritsen/domjudge/teams",
        "hooks_url": "https://api.github.com/repos/nickygerritsen/domjudge/hooks",
        "issue_events_url": "https://api.github.com/repos/nickygerritsen/domjudge/issues/events{/number}",
        "events_url": "https://api.github.com/repos/nickygerritsen/domjudge/events",
        "assignees_url": "https://api.github.com/repos/nickygerritsen/domjudge/assignees{/user}",
        "branches_url": "https://api.github.com/repos/nickygerritsen/domjudge/branches{/branch}",
        "tags_url": "https://api.github.com/repos/nickygerritsen/domjudge/tags",
        "blobs_url": "https://api.github.com/repos/nickygerritsen/domjudge/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/nickygerritsen/domjudge/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/nickygerritsen/domjudge/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/nickygerritsen/domjudge/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/nickygerritsen/domjudge/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/nickygerritsen/domjudge/languages",
        "stargazers_url": "https://api.github.com/repos/nickygerritsen/domjudge/stargazers",
        "contributors_url": "https://api.github.com/repos/nickygerritsen/domjudge/contributors",
        "subscribers_url": "https://api.github.com/repos/nickygerritsen/domjudge/subscribers",
        "subscription_url": "https://api.github.com/repos/nickygerritsen/domjudge/subscription",
        "commits_url": "https://api.github.com/repos/nickygerritsen/domjudge/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/nickygerritsen/domjudge/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/nickygerritsen/domjudge/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/nickygerritsen/domjudge/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/nickygerritsen/domjudge/contents/{+path}",
        "compare_url": "https://api.github.com/repos/nickygerritsen/domjudge/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/nickygerritsen/domjudge/merges",
        "archive_url": "https://api.github.com/repos/nickygerritsen/domjudge/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/nickygerritsen/domjudge/downloads",
        "issues_url": "https://api.github.com/repos/nickygerritsen/domjudge/issues{/number}",
        "pulls_url": "https://api.github.com/repos/nickygerritsen/domjudge/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/nickygerritsen/domjudge/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/nickygerritsen/domjudge/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/nickygerritsen/domjudge/labels{/name}",
        "releases_url": "https://api.github.com/repos/nickygerritsen/domjudge/releases{/id}",
        "deployments_url": "https://api.github.com/repos/nickygerritsen/domjudge/deployments",
        "created_at": "2018-07-28T10:28:08Z",
        "updated_at": "2019-03-28T19:51:53Z",
        "pushed_at": "2019-04-17T08:27:54Z",
        "git_url": "git://github.com/nickygerritsen/domjudge.git",
        "ssh_url": "git@github.com:nickygerritsen/domjudge.git",
        "clone_url": "https://github.com/nickygerritsen/domjudge.git",
        "svn_url": "https://github.com/nickygerritsen/domjudge",
        "homepage": "https://www.domjudge.org",
        "size": 35788,
        "stargazers_count": 0,
        "watchers_count": 0,
        "language": "PHP",
        "has_issues": false,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": false,
        "has_pages": false,
        "forks_count": 0,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 0,
        "license": {
          "key": "other",
          "name": "Other",
          "spdx_id": "NOASSERTION",
          "url": null,
          "node_id": "MDc6TGljZW5zZTA="
        },
        "forks": 0,
        "open_issues": 0,
        "watchers": 0,
        "default_branch": "master"
      }
    },
    "base": {
      "label": "DOMjudge:master",
      "ref": "master",
      "sha": "e5e8f3c0a2c2a7e5935f9033a8059f1d5867f6ba",
      "user": {
        "login": "DOMjudge",
        "id": 5373824,
        "node_id": "MDEyOk9yZ2FuaXphdGlvbjUzNzM4MjQ=",
        "avatar_url": "https://avatars0.githubusercontent.com/u/5373824?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DOMjudge",
        "html_url": "https://github.com/DOMjudge",
        "followers_url": "https://api.github.com/users/DOMjudge/followers",
        "following_url": "https://api.github.com/users/DOMjudge/following{/other_user}",
        "gists_url": "https://api.github.com/users/DOMjudge/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/DOMjudge/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/DOMjudge/subscriptions",
        "organizations_url": "https://api.github.com/users/DOMjudge/orgs",
        "repos_url": "https://api.github.com/users/DOMjudge/repos",
        "events_url": "https://api.github.com/users/DOMjudge/events{/privacy}",
        "received_events_url": "https://api.github.com/users/DOMjudge/received_events",
        "type": "Organization",
        "site_admin": false
      },
      "repo": {
        "id": 12572903,
        "node_id": "MDEwOlJlcG9zaXRvcnkxMjU3MjkwMw==",
        "name": "domjudge",
        "full_name": "DOMjudge/domjudge",
        "private": false,
        "owner": {
          "login": "DOMjudge",
          "id": 5373824,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjUzNzM4MjQ=",
          "avatar_url": "https://avatars0.githubusercontent.com/u/5373824?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/DOMjudge",
          "html_url": "https://github.com/DOMjudge",
          "followers_url": "https://api.github.com/users/DOMjudge/followers",
          "following_url": "https://api.github.com/users/DOMjudge/following{/other_user}",
          "gists_url": "https://api.github.com/users/DOMjudge/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/DOMjudge/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/DOMjudge/subscriptions",
          "organizations_url": "https://api.github.com/users/DOMjudge/orgs",
          "repos_url": "https://api.github.com/users/DOMjudge/repos",
          "events_url": "https://api.github.com/users/DOMjudge/events{/privacy}",
          "received_events_url": "https://api.github.com/users/DOMjudge/received_events",
          "type": "Organization",
          "site_admin": false
        },
        "html_url": "https://github.com/DOMjudge/domjudge",
        "description": "DOMjudge programming contest jury system",
        "fork": false,
        "url": "https://api.github.com/repos/DOMjudge/domjudge",
        "forks_url": "https://api.github.com/repos/DOMjudge/domjudge/forks",
        "keys_url": "https://api.github.com/repos/DOMjudge/domjudge/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/DOMjudge/domjudge/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/DOMjudge/domjudge/teams",
        "hooks_url": "https://api.github.com/repos/DOMjudge/domjudge/hooks",
        "issue_events_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/events{/number}",
        "events_url": "https://api.github.com/repos/DOMjudge/domjudge/events",
        "assignees_url": "https://api.github.com/repos/DOMjudge/domjudge/assignees{/user}",
        "branches_url": "https://api.github.com/repos/DOMjudge/domjudge/branches{/branch}",
        "tags_url": "https://api.github.com/repos/DOMjudge/domjudge/tags",
        "blobs_url": "https://api.github.com/repos/DOMjudge/domjudge/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/DOMjudge/domjudge/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/DOMjudge/domjudge/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/DOMjudge/domjudge/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/DOMjudge/domjudge/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/DOMjudge/domjudge/languages",
        "stargazers_url": "https://api.github.com/repos/DOMjudge/domjudge/stargazers",
        "contributors_url": "https://api.github.com/repos/DOMjudge/domjudge/contributors",
        "subscribers_url": "https://api.github.com/repos/DOMjudge/domjudge/subscribers",
        "subscription_url": "https://api.github.com/repos/DOMjudge/domjudge/subscription",
        "commits_url": "https://api.github.com/repos/DOMjudge/domjudge/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/DOMjudge/domjudge/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/DOMjudge/domjudge/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/DOMjudge/domjudge/contents/{+path}",
        "compare_url": "https://api.github.com/repos/DOMjudge/domjudge/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/DOMjudge/domjudge/merges",
        "archive_url": "https://api.github.com/repos/DOMjudge/domjudge/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/DOMjudge/domjudge/downloads",
        "issues_url": "https://api.github.com/repos/DOMjudge/domjudge/issues{/number}",
        "pulls_url": "https://api.github.com/repos/DOMjudge/domjudge/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/DOMjudge/domjudge/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/DOMjudge/domjudge/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/DOMjudge/domjudge/labels{/name}",
        "releases_url": "https://api.github.com/repos/DOMjudge/domjudge/releases{/id}",
        "deployments_url": "https://api.github.com/repos/DOMjudge/domjudge/deployments",
        "created_at": "2013-09-03T19:33:53Z",
        "updated_at": "2019-04-16T21:47:40Z",
        "pushed_at": "2019-04-17T11:13:46Z",
        "git_url": "git://github.com/DOMjudge/domjudge.git",
        "ssh_url": "git@github.com:DOMjudge/domjudge.git",
        "clone_url": "https://github.com/DOMjudge/domjudge.git",
        "svn_url": "https://github.com/DOMjudge/domjudge",
        "homepage": "https://www.domjudge.org",
        "size": 64977,
        "stargazers_count": 295,
        "watchers_count": 295,
        "language": "PHP",
        "has_issues": true,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": false,
        "has_pages": false,
        "forks_count": 143,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 38,
        "license": {
          "key": "other",
          "name": "Other",
          "spdx_id": "NOASSERTION",
          "url": null,
          "node_id": "MDc6TGljZW5zZTA="
        },
        "forks": 143,
        "open_issues": 38,
        "watchers": 295,
        "default_branch": "master"
      }
    },
    "_links": {
      "self": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556"
      },
      "html": {
        "href": "https://github.com/DOMjudge/domjudge/pull/556"
      },
      "issue": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/issues/556"
      },
      "comments": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/issues/556/comments"
      },
      "review_comments": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556/comments"
      },
      "review_comment": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/pulls/comments{/number}"
      },
      "commits": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/pulls/556/commits"
      },
      "statuses": {
        "href": "https://api.github.com/repos/DOMjudge/domjudge/statuses/cfe221c6b1a9b3d913f87ce00c008a3c67b72409"
      }
    },
    "author_association": "MEMBER",
    "draft": false,
    "merged": true,
    "mergeable": null,
    "rebaseable": null,
    "mergeable_state": "unknown",
    "merged_by": {
      "login": "nickygerritsen",
      "id": 550145,
      "node_id": "MDQ6VXNlcjU1MDE0NQ==",
      "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/nickygerritsen",
      "html_url": "https://github.com/nickygerritsen",
      "followers_url": "https://api.github.com/users/nickygerritsen/followers",
      "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
      "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
      "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
      "repos_url": "https://api.github.com/users/nickygerritsen/repos",
      "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
      "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
      "type": "User",
      "site_admin": false
    },
    "comments": 8,
    "review_comments": 22,
    "maintainer_can_modify": false,
    "commits": 6,
    "additions": 437,
    "deletions": 499,
    "changed_files": 13
  },
  "repository": {
    "id": 12572903,
    "node_id": "MDEwOlJlcG9zaXRvcnkxMjU3MjkwMw==",
    "name": "domjudge",
    "full_name": "DOMjudge/domjudge",
    "private": false,
    "owner": {
      "login": "DOMjudge",
      "id": 5373824,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjUzNzM4MjQ=",
      "avatar_url": "https://avatars0.githubusercontent.com/u/5373824?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/DOMjudge",
      "html_url": "https://github.com/DOMjudge",
      "followers_url": "https://api.github.com/users/DOMjudge/followers",
      "following_url": "https://api.github.com/users/DOMjudge/following{/other_user}",
      "gists_url": "https://api.github.com/users/DOMjudge/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/DOMjudge/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/DOMjudge/subscriptions",
      "organizations_url": "https://api.github.com/users/DOMjudge/orgs",
      "repos_url": "https://api.github.com/users/DOMjudge/repos",
      "events_url": "https://api.github.com/users/DOMjudge/events{/privacy}",
      "received_events_url": "https://api.github.com/users/DOMjudge/received_events",
      "type": "Organization",
      "site_admin": false
    },
    "html_url": "https://github.com/DOMjudge/domjudge",
    "description": "DOMjudge programming contest jury system",
    "fork": false,
    "url": "https://api.github.com/repos/DOMjudge/domjudge",
    "forks_url": "https://api.github.com/repos/DOMjudge/domjudge/forks",
    "keys_url": "https://api.github.com/repos/DOMjudge/domjudge/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/DOMjudge/domjudge/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/DOMjudge/domjudge/teams",
    "hooks_url": "https://api.github.com/repos/DOMjudge/domjudge/hooks",
    "issue_events_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/events{/number}",
    "events_url": "https://api.github.com/repos/DOMjudge/domjudge/events",
    "assignees_url": "https://api.github.com/repos/DOMjudge/domjudge/assignees{/user}",
    "branches_url": "https://api.github.com/repos/DOMjudge/domjudge/branches{/branch}",
    "tags_url": "https://api.github.com/repos/DOMjudge/domjudge/tags",
    "blobs_url": "https://api.github.com/repos/DOMjudge/domjudge/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/DOMjudge/domjudge/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/DOMjudge/domjudge/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/DOMjudge/domjudge/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/DOMjudge/domjudge/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/DOMjudge/domjudge/languages",
    "stargazers_url": "https://api.github.com/repos/DOMjudge/domjudge/stargazers",
    "contributors_url": "https://api.github.com/repos/DOMjudge/domjudge/contributors",
    "subscribers_url": "https://api.github.com/repos/DOMjudge/domjudge/subscribers",
    "subscription_url": "https://api.github.com/repos/DOMjudge/domjudge/subscription",
    "commits_url": "https://api.github.com/repos/DOMjudge/domjudge/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/DOMjudge/domjudge/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/DOMjudge/domjudge/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/DOMjudge/domjudge/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/DOMjudge/domjudge/contents/{+path}",
    "compare_url": "https://api.github.com/repos/DOMjudge/domjudge/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/DOMjudge/domjudge/merges",
    "archive_url": "https://api.github.com/repos/DOMjudge/domjudge/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/DOMjudge/domjudge/downloads",
    "issues_url": "https://api.github.com/repos/DOMjudge/domjudge/issues{/number}",
    "pulls_url": "https://api.github.com/repos/DOMjudge/domjudge/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/DOMjudge/domjudge/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/DOMjudge/domjudge/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/DOMjudge/domjudge/labels{/name}",
    "releases_url": "https://api.github.com/repos/DOMjudge/domjudge/releases{/id}",
    "deployments_url": "https://api.github.com/repos/DOMjudge/domjudge/deployments",
    "created_at": "2013-09-03T19:33:53Z",
    "updated_at": "2019-04-16T21:47:40Z",
    "pushed_at": "2019-04-17T11:13:46Z",
    "git_url": "git://github.com/DOMjudge/domjudge.git",
    "ssh_url": "git@github.com:DOMjudge/domjudge.git",
    "clone_url": "https://github.com/DOMjudge/domjudge.git",
    "svn_url": "https://github.com/DOMjudge/domjudge",
    "homepage": "https://www.domjudge.org",
    "size": 64977,
    "stargazers_count": 295,
    "watchers_count": 295,
    "language": "PHP",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": false,
    "forks_count": 143,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 38,
    "license": {
      "key": "other",
      "name": "Other",
      "spdx_id": "NOASSERTION",
      "url": null,
      "node_id": "MDc6TGljZW5zZTA="
    },
    "forks": 143,
    "open_issues": 38,
    "watchers": 295,
    "default_branch": "master"
  },
  "organization": {
    "login": "DOMjudge",
    "id": 5373824,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjUzNzM4MjQ=",
    "url": "https://api.github.com/orgs/DOMjudge",
    "repos_url": "https://api.github.com/orgs/DOMjudge/repos",
    "events_url": "https://api.github.com/orgs/DOMjudge/events",
    "hooks_url": "https://api.github.com/orgs/DOMjudge/hooks",
    "issues_url": "https://api.github.com/orgs/DOMjudge/issues",
    "members_url": "https://api.github.com/orgs/DOMjudge/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DOMjudge/public_members{/member}",
    "avatar_url": "https://avatars0.githubusercontent.com/u/5373824?v=4",
    "description": "Programming contest control system"
  },
  "sender": {
    "login": "nickygerritsen",
    "id": 550145,
    "node_id": "MDQ6VXNlcjU1MDE0NQ==",
    "avatar_url": "https://avatars2.githubusercontent.com/u/550145?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/nickygerritsen",
    "html_url": "https://github.com/nickygerritsen",
    "followers_url": "https://api.github.com/users/nickygerritsen/followers",
    "following_url": "https://api.github.com/users/nickygerritsen/following{/other_user}",
    "gists_url": "https://api.github.com/users/nickygerritsen/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/nickygerritsen/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/nickygerritsen/subscriptions",
    "organizations_url": "https://api.github.com/users/nickygerritsen/orgs",
    "repos_url": "https://api.github.com/users/nickygerritsen/repos",
    "events_url": "https://api.github.com/users/nickygerritsen/events{/privacy}",
    "received_events_url": "https://api.github.com/users/nickygerritsen/received_events",
    "type": "User",
    "site_admin": false
  }
}