{"action":"created","comment":{"url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/comments/319182511","pull_request_review_id":281605312,"id":319182511,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMxOTE4MjUxMQ==","diff_hunk":"@@ -0,0 +1,503 @@\n+package schema\n+\n+import (\n+\t\"bytes\"\n+\t\"context\"\n+\t\"encoding/json\"\n+\t\"errors\"\n+\t\"strconv\"\n+\n+\t\"github.com/99designs/gqlgen/graphql\"\n+\t\"github.com/99designs/gqlgen/graphql/introspection\"\n+\t\"github.com/vektah/gqlparser/ast\"\n+)\n+\n+func Introspect(ctx context.Context, o Operation,\n+\ts Schema) (json.RawMessage, error) {\n+\tsch, ok := s.(*schema)\n+\tif !ok {\n+\t\treturn nil, errors.New(\"Couldn't convert schema to internal type\")\n+\t}\n+\n+\top, ok := o.(*operation)\n+\tif !ok {\n+\t\treturn nil, errors.New(\"Couldn't convert operation to internal type\")\n+\t}\n+\n+\t// TODO - Fill in graphql variables here instead of an empty map.\n+\treqCtx := graphql.NewRequestContext(op.doc, op.query, map[string]interface{}{})\n+\tctx = graphql.WithRequestContext(ctx, reqCtx)\n+\n+\tec := executionContext{reqCtx, sch.schema}\n+\tdata := ec.handleQuery(ctx, op.op.SelectionSet)\n+\tvar buf bytes.Buffer\n+\tdata.MarshalGQL(&buf)\n+\td := buf.Bytes()\n+\n+\treturn d, nil\n+}\n+\n+type executionContext struct {\n+\t*graphql.RequestContext\n+\t*ast.Schema\n+}\n+\n+func (ec *executionContext) queryType(ctx context.Context,\n+\tfield graphql.CollectedField) (ret graphql.Marshaler) {\n+\targs := field.ArgumentMap(ec.Variables)\n+\t// TODO - What happens if args is nil?\n+\tname := args[\"name\"].(string)\n+\tres := introspection.WrapTypeFromDef(ec.Schema, ec.Schema.Types[name])\n+\treturn ec.marshalType(ctx, field.Selections, res)\n+}\n+\n+func (ec *executionContext) querySchema(ctx context.Context,\n+\tfield graphql.CollectedField) (ret graphql.Marshaler) {\n+\tres := introspection.WrapSchema(ec.Schema)\n+\tif res == nil {\n+\t\treturn graphql.Null\n+\t}\n+\treturn ec.handleSchema(ctx, field.Selections, res)\n+}\n+\n+func (ec *executionContext) handleTypeFields(ctx context.Context, field graphql.CollectedField,\n+\tobj *introspection.Type) (ret graphql.Marshaler) {\n+\targs := field.ArgumentMap(ec.Variables)\n+\tres := obj.Fields(args[\"includeDeprecated\"].(bool))\n+\treturn ec.marshalIntrospectionFieldSlice(ctx, field.Selections, res)\n+}\n+\n+func (ec *executionContext) handleTypeEnumValues(ctx context.Context, field graphql.CollectedField,\n+\tobj *introspection.Type) (ret graphql.Marshaler) {\n+\targs := field.ArgumentMap(ec.Variables)\n+\tres := obj.EnumValues(args[\"includeDeprecated\"].(bool))\n+\tif res == nil {\n+\t\treturn graphql.Null\n+\t}\n+\treturn ec.marshalOptionalEnumValueSlice(ctx, field.Selections, res)\n+}\n+\n+func (ec *executionContext) handleQuery(ctx context.Context,\n+\tsel ast.SelectionSet) graphql.Marshaler {\n+\tfields := graphql.CollectFields(ec.RequestContext, sel, []string{\"Query\"})\n+\n+\tout := graphql.NewFieldSet(fields)\n+\tvar invalids uint32\n+\tfor i, field := range fields {\n+\t\tswitch field.Name {\n+\t\t// TODO - Add tests for __typename.\n+\t\tcase \"__typename\":\n+\t\t\tout.Values[i] = graphql.MarshalString(\"Query\")\n+\t\tcase \"__type\":\n+\t\t\tout.Values[i] = ec.queryType(ctx, field)\n+\t\tcase \"__schema\":\n+\t\t\tout.Values[i] = ec.querySchema(ctx, field)\n+\t\tdefault:\n+\t\t\tpanic(\"unknown field \" + strconv.Quote(field.Name))\n+\t\t}\n+\t}\n+\tout.Dispatch()\n+\tif invalids > 0 {\n+\t\treturn graphql.Null\n+\t}\n+\treturn out\n+}\n+\n+func (ec *executionContext) handleDirective(ctx context.Context, sel ast.SelectionSet,\n+\tobj *introspection.Directive) graphql.Marshaler {\n+\tfields := graphql.CollectFields(ec.RequestContext, sel, []string{\"__Directive\"})\n+\n+\tout := graphql.NewFieldSet(fields)\n+\tvar invalids uint32\n+\tfor i, field := range fields {\n+\t\tswitch field.Name {\n+\t\tcase \"__typename\":\n+\t\t\tout.Values[i] = graphql.MarshalString(\"__Directive\")\n+\t\tcase \"name\":\n+\t\t\tout.Values[i] = ec.marshalNString2string(ctx, field.Selections, obj.Name)\n+\t\t\tif out.Values[i] == graphql.Null {\n+\t\t\t\tinvalids++\n+\t\t\t}\n+\t\tcase \"description\":\n+\t\t\tout.Values[i] = graphql.MarshalString(obj.Description)\n+\t\tcase \"locations\":\n+\t\t\tout.Values[i] = ec.marshalDirectionLocationSlice(ctx, field.Selections,\n+\t\t\t\tobj.Locations)\n+\t\t\tif out.Values[i] == graphql.Null {\n+\t\t\t\tinvalids++\n+\t\t\t}\n+\t\tcase \"args\":\n+\t\t\tout.Values[i] = ec.marshalInputValueSlice(ctx, field.Selections, obj.Args)\n+\t\t\tif out.Values[i] == graphql.Null {\n+\t\t\t\tinvalids++\n+\t\t\t}\n+\t\tdefault:\n+\t\t\tpanic(\"unknown field \" + strconv.Quote(field.Name))\n+\t\t}\n+\t}\n+\tout.Dispatch()\n+\tif invalids > 0 {\n+\t\treturn graphql.Null\n+\t}\n+\treturn out\n+}\n+\n+func (ec *executionContext) handleEnumValue(ctx context.Context, sel ast.SelectionSet,\n+\tobj *introspection.EnumValue) graphql.Marshaler {\n+\tfields := graphql.CollectFields(ec.RequestContext, sel, []string{\"__EnumValue\"})\n+\n+\tout := graphql.NewFieldSet(fields)\n+\tvar invalids uint32\n+\tfor i, field := range fields {\n+\t\tswitch field.Name {\n+\t\tcase \"__typename\":\n+\t\t\tout.Values[i] = graphql.MarshalString(\"__EnumValue\")\n+\t\tcase \"name\":\n+\t\t\tout.Values[i] = ec.marshalNString2string(ctx, field.Selections, obj.Name)\n+\t\t\tif out.Values[i] == graphql.Null {\n+\t\t\t\tinvalids++\n+\t\t\t}\n+\t\tcase \"description\":\n+\t\t\tout.Values[i] = graphql.MarshalString(obj.Description)\n+\t\tcase \"isDeprecated\":\n+\t\t\tout.Values[i] = ec.marshalNBoolean2bool(ctx, field.Selections, obj.IsDeprecated())\n+\t\t\tif out.Values[i] == graphql.Null {\n+\t\t\t\tinvalids++\n+\t\t\t}\n+\t\tcase \"deprecationReason\":\n+\t\t\tout.Values[i] = ec.marshalOString2string(ctx, field.Selections,","path":"dgraph/cmd/graphql/schema/introspection.go","position":168,"original_position":168,"commit_id":"20d4fa9013df127c334c3f6a20e38407052ddf2c","original_commit_id":"20d4fa9013df127c334c3f6a20e38407052ddf2c","user":{"login":"pullrequest[bot]","id":29825839,"node_id":"MDM6Qm90Mjk4MjU4Mzk=","avatar_url":"https://avatars2.githubusercontent.com/in/3434?v=4","gravatar_id":"","url":"https://api.github.com/users/pullrequest%5Bbot%5D","html_url":"https://github.com/apps/pullrequest","followers_url":"https://api.github.com/users/pullrequest%5Bbot%5D/followers","following_url":"https://api.github.com/users/pullrequest%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/pullrequest%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/pullrequest%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pullrequest%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/pullrequest%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/pullrequest%5Bbot%5D/repos","events_url":"https://api.github.com/users/pullrequest%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/pullrequest%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Double checking that it is okay for this one to be `graphql.Null` too or should it be marked as `invalid`? It might be worth adding some tests that verify/assert which fields can and can't be null.","created_at":"2019-08-29T17:18:46Z","updated_at":"2019-08-29T17:18:47Z","html_url":"https://github.com/dgraph-io/dgraph/pull/3881#discussion_r319182511","pull_request_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/comments/319182511"},"html":{"href":"https://github.com/dgraph-io/dgraph/pull/3881#discussion_r319182511"},"pull_request":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881"}}},"pull_request":{"url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881","id":312115394,"node_id":"MDExOlB1bGxSZXF1ZXN0MzEyMTE1Mzk0","html_url":"https://github.com/dgraph-io/dgraph/pull/3881","diff_url":"https://github.com/dgraph-io/dgraph/pull/3881.diff","patch_url":"https://github.com/dgraph-io/dgraph/pull/3881.patch","issue_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/3881","number":3881,"state":"open","locked":false,"title":"Support schema introspection queries in the graphql layer.","user":{"login":"pawanrawal","id":7247941,"node_id":"MDQ6VXNlcjcyNDc5NDE=","avatar_url":"https://avatars1.githubusercontent.com/u/7247941?v=4","gravatar_id":"","url":"https://api.github.com/users/pawanrawal","html_url":"https://github.com/pawanrawal","followers_url":"https://api.github.com/users/pawanrawal/followers","following_url":"https://api.github.com/users/pawanrawal/following{/other_user}","gists_url":"https://api.github.com/users/pawanrawal/gists{/gist_id}","starred_url":"https://api.github.com/users/pawanrawal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawanrawal/subscriptions","organizations_url":"https://api.github.com/users/pawanrawal/orgs","repos_url":"https://api.github.com/users/pawanrawal/repos","events_url":"https://api.github.com/users/pawanrawal/events{/privacy}","received_events_url":"https://api.github.com/users/pawanrawal/received_events","type":"User","site_admin":false},"body":"This PR adds support for schema introspection queries which would allow using auto-completion features in the graphql layer.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/dgraph-io/dgraph/3881)\n<!-- Reviewable:end -->\n","created_at":"2019-08-29T02:52:09Z","updated_at":"2019-08-29T17:18:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4aa73cdd1f4797352f0ce7a6497dbc6d5d352e2e","assignee":null,"assignees":[],"requested_reviewers":[{"login":"manishrjain","id":1782324,"node_id":"MDQ6VXNlcjE3ODIzMjQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1782324?v=4","gravatar_id":"","url":"https://api.github.com/users/manishrjain","html_url":"https://github.com/manishrjain","followers_url":"https://api.github.com/users/manishrjain/followers","following_url":"https://api.github.com/users/manishrjain/following{/other_user}","gists_url":"https://api.github.com/users/manishrjain/gists{/gist_id}","starred_url":"https://api.github.com/users/manishrjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/manishrjain/subscriptions","organizations_url":"https://api.github.com/users/manishrjain/orgs","repos_url":"https://api.github.com/users/manishrjain/repos","events_url":"https://api.github.com/users/manishrjain/events{/privacy}","received_events_url":"https://api.github.com/users/manishrjain/received_events","type":"User","site_admin":false}],"requested_teams":[{"name":"Team","id":1982099,"node_id":"MDQ6VGVhbTE5ODIwOTk=","slug":"team","description":"","privacy":"closed","url":"https://api.github.com/teams/1982099","html_url":"https://github.com/orgs/dgraph-io/teams/team","members_url":"https://api.github.com/teams/1982099/members{/member}","repositories_url":"https://api.github.com/teams/1982099/repos","permission":"pull"}],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881/commits","review_comments_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881/comments","review_comment_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/3881/comments","statuses_url":"https://api.github.com/repos/dgraph-io/dgraph/statuses/20d4fa9013df127c334c3f6a20e38407052ddf2c","head":{"label":"dgraph-io:pawan/schema-introspection","ref":"pawan/schema-introspection","sha":"20d4fa9013df127c334c3f6a20e38407052ddf2c","user":{"login":"dgraph-io","id":13958706,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTU4NzA2","avatar_url":"https://avatars0.githubusercontent.com/u/13958706?v=4","gravatar_id":"","url":"https://api.github.com/users/dgraph-io","html_url":"https://github.com/dgraph-io","followers_url":"https://api.github.com/users/dgraph-io/followers","following_url":"https://api.github.com/users/dgraph-io/following{/other_user}","gists_url":"https://api.github.com/users/dgraph-io/gists{/gist_id}","starred_url":"https://api.github.com/users/dgraph-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgraph-io/subscriptions","organizations_url":"https://api.github.com/users/dgraph-io/orgs","repos_url":"https://api.github.com/users/dgraph-io/repos","events_url":"https://api.github.com/users/dgraph-io/events{/privacy}","received_events_url":"https://api.github.com/users/dgraph-io/received_events","type":"Organization","site_admin":false},"repo":{"id":41349039,"node_id":"MDEwOlJlcG9zaXRvcnk0MTM0OTAzOQ==","name":"dgraph","full_name":"dgraph-io/dgraph","private":false,"owner":{"login":"dgraph-io","id":13958706,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTU4NzA2","avatar_url":"https://avatars0.githubusercontent.com/u/13958706?v=4","gravatar_id":"","url":"https://api.github.com/users/dgraph-io","html_url":"https://github.com/dgraph-io","followers_url":"https://api.github.com/users/dgraph-io/followers","following_url":"https://api.github.com/users/dgraph-io/following{/other_user}","gists_url":"https://api.github.com/users/dgraph-io/gists{/gist_id}","starred_url":"https://api.github.com/users/dgraph-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgraph-io/subscriptions","organizations_url":"https://api.github.com/users/dgraph-io/orgs","repos_url":"https://api.github.com/users/dgraph-io/repos","events_url":"https://api.github.com/users/dgraph-io/events{/privacy}","received_events_url":"https://api.github.com/users/dgraph-io/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dgraph-io/dgraph","description":"Fast, Distributed Graph DB","fork":false,"url":"https://api.github.com/repos/dgraph-io/dgraph","forks_url":"https://api.github.com/repos/dgraph-io/dgraph/forks","keys_url":"https://api.github.com/repos/dgraph-io/dgraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dgraph-io/dgraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dgraph-io/dgraph/teams","hooks_url":"https://api.github.com/repos/dgraph-io/dgraph/hooks","issue_events_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/events{/number}","events_url":"https://api.github.com/repos/dgraph-io/dgraph/events","assignees_url":"https://api.github.com/repos/dgraph-io/dgraph/assignees{/user}","branches_url":"https://api.github.com/repos/dgraph-io/dgraph/branches{/branch}","tags_url":"https://api.github.com/repos/dgraph-io/dgraph/tags","blobs_url":"https://api.github.com/repos/dgraph-io/dgraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dgraph-io/dgraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dgraph-io/dgraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/dgraph-io/dgraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dgraph-io/dgraph/statuses/{sha}","languages_url":"https://api.github.com/repos/dgraph-io/dgraph/languages","stargazers_url":"https://api.github.com/repos/dgraph-io/dgraph/stargazers","contributors_url":"https://api.github.com/repos/dgraph-io/dgraph/contributors","subscribers_url":"https://api.github.com/repos/dgraph-io/dgraph/subscribers","subscription_url":"https://api.github.com/repos/dgraph-io/dgraph/subscription","commits_url":"https://api.github.com/repos/dgraph-io/dgraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/dgraph-io/dgraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/dgraph-io/dgraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/dgraph-io/dgraph/contents/{+path}","compare_url":"https://api.github.com/repos/dgraph-io/dgraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dgraph-io/dgraph/merges","archive_url":"https://api.github.com/repos/dgraph-io/dgraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dgraph-io/dgraph/downloads","issues_url":"https://api.github.com/repos/dgraph-io/dgraph/issues{/number}","pulls_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls{/number}","milestones_url":"https://api.github.com/repos/dgraph-io/dgraph/milestones{/number}","notifications_url":"https://api.github.com/repos/dgraph-io/dgraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dgraph-io/dgraph/labels{/name}","releases_url":"https://api.github.com/repos/dgraph-io/dgraph/releases{/id}","deployments_url":"https://api.github.com/repos/dgraph-io/dgraph/deployments","created_at":"2015-08-25T07:15:56Z","updated_at":"2019-08-29T16:39:48Z","pushed_at":"2019-08-29T15:42:27Z","git_url":"git://github.com/dgraph-io/dgraph.git","ssh_url":"git@github.com:dgraph-io/dgraph.git","clone_url":"https://github.com/dgraph-io/dgraph.git","svn_url":"https://github.com/dgraph-io/dgraph","homepage":"https://dgraph.io","size":251682,"stargazers_count":10709,"watchers_count":10709,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":742,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":158,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":742,"open_issues":158,"watchers":10709,"default_branch":"master"}},"base":{"label":"dgraph-io:mjc/graphql","ref":"mjc/graphql","sha":"81f6be5690bfe5dbc95c742e84e8682033a007c4","user":{"login":"dgraph-io","id":13958706,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTU4NzA2","avatar_url":"https://avatars0.githubusercontent.com/u/13958706?v=4","gravatar_id":"","url":"https://api.github.com/users/dgraph-io","html_url":"https://github.com/dgraph-io","followers_url":"https://api.github.com/users/dgraph-io/followers","following_url":"https://api.github.com/users/dgraph-io/following{/other_user}","gists_url":"https://api.github.com/users/dgraph-io/gists{/gist_id}","starred_url":"https://api.github.com/users/dgraph-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgraph-io/subscriptions","organizations_url":"https://api.github.com/users/dgraph-io/orgs","repos_url":"https://api.github.com/users/dgraph-io/repos","events_url":"https://api.github.com/users/dgraph-io/events{/privacy}","received_events_url":"https://api.github.com/users/dgraph-io/received_events","type":"Organization","site_admin":false},"repo":{"id":41349039,"node_id":"MDEwOlJlcG9zaXRvcnk0MTM0OTAzOQ==","name":"dgraph","full_name":"dgraph-io/dgraph","private":false,"owner":{"login":"dgraph-io","id":13958706,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTU4NzA2","avatar_url":"https://avatars0.githubusercontent.com/u/13958706?v=4","gravatar_id":"","url":"https://api.github.com/users/dgraph-io","html_url":"https://github.com/dgraph-io","followers_url":"https://api.github.com/users/dgraph-io/followers","following_url":"https://api.github.com/users/dgraph-io/following{/other_user}","gists_url":"https://api.github.com/users/dgraph-io/gists{/gist_id}","starred_url":"https://api.github.com/users/dgraph-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgraph-io/subscriptions","organizations_url":"https://api.github.com/users/dgraph-io/orgs","repos_url":"https://api.github.com/users/dgraph-io/repos","events_url":"https://api.github.com/users/dgraph-io/events{/privacy}","received_events_url":"https://api.github.com/users/dgraph-io/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dgraph-io/dgraph","description":"Fast, Distributed Graph DB","fork":false,"url":"https://api.github.com/repos/dgraph-io/dgraph","forks_url":"https://api.github.com/repos/dgraph-io/dgraph/forks","keys_url":"https://api.github.com/repos/dgraph-io/dgraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dgraph-io/dgraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dgraph-io/dgraph/teams","hooks_url":"https://api.github.com/repos/dgraph-io/dgraph/hooks","issue_events_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/events{/number}","events_url":"https://api.github.com/repos/dgraph-io/dgraph/events","assignees_url":"https://api.github.com/repos/dgraph-io/dgraph/assignees{/user}","branches_url":"https://api.github.com/repos/dgraph-io/dgraph/branches{/branch}","tags_url":"https://api.github.com/repos/dgraph-io/dgraph/tags","blobs_url":"https://api.github.com/repos/dgraph-io/dgraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dgraph-io/dgraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dgraph-io/dgraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/dgraph-io/dgraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dgraph-io/dgraph/statuses/{sha}","languages_url":"https://api.github.com/repos/dgraph-io/dgraph/languages","stargazers_url":"https://api.github.com/repos/dgraph-io/dgraph/stargazers","contributors_url":"https://api.github.com/repos/dgraph-io/dgraph/contributors","subscribers_url":"https://api.github.com/repos/dgraph-io/dgraph/subscribers","subscription_url":"https://api.github.com/repos/dgraph-io/dgraph/subscription","commits_url":"https://api.github.com/repos/dgraph-io/dgraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/dgraph-io/dgraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/dgraph-io/dgraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/dgraph-io/dgraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/dgraph-io/dgraph/contents/{+path}","compare_url":"https://api.github.com/repos/dgraph-io/dgraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dgraph-io/dgraph/merges","archive_url":"https://api.github.com/repos/dgraph-io/dgraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dgraph-io/dgraph/downloads","issues_url":"https://api.github.com/repos/dgraph-io/dgraph/issues{/number}","pulls_url":"https://api.github.com/repos/dgraph-io/dgraph/pulls{/number}","milestones_url":"https://api.github.com/repos/dgraph-io/dgraph/milestones{/number}","notifications_url":"https://api.github.com/repos/dgraph-io/dgraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dgraph-io/dgraph/labels{/name}","releases_url":"https://api.github.com/repos/dgraph-io/dgraph/releases{/id}","deployments_url":"https://api.github.com/repos/dgraph-io/dgraph/deployments","created_at":"2015-08-25T07:15:56Z","updated_at":"2019-08-29T16:39:48Z","pushed_at":"2019-08-29T15:42:27Z","git_url":"git://github.com/dgraph-io/dgraph.git","ssh_url":"git@github.com:dgraph-io/dgraph.git","clone_url":"https://github.com/dgraph-io/dgraph.git","svn_url":"https://github.com/dgraph-io/dgraph","homepage":"https://dgraph.io","size":251682,"stargazers_count":10709,"watchers_count":10709,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":742,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":158,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":742,"open_issues":158,"watchers":10709,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881"},"html":{"href":"https://github.com/dgraph-io/dgraph/pull/3881"},"issue":{"href":"https://api.github.com/repos/dgraph-io/dgraph/issues/3881"},"comments":{"href":"https://api.github.com/repos/dgraph-io/dgraph/issues/3881/comments"},"review_comments":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881/comments"},"review_comment":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dgraph-io/dgraph/pulls/3881/commits"},"statuses":{"href":"https://api.github.com/repos/dgraph-io/dgraph/statuses/20d4fa9013df127c334c3f6a20e38407052ddf2c"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"pullrequest"}}