-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.graphql
134 lines (109 loc) · 2.95 KB
/
schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"""An individual contact"""
type Contact implements Node {
"""The first name."""
firstName: String
"""The last name."""
lastName: String
"""E-mail."""
email: String
"""Phone number."""
phoneNumber: String
"""Native contact Id"""
contactId: ID
"""The ID of an object"""
id: ID!
}
"""A connection to a list of items."""
type ContactConnection {
"""Information to aid in pagination."""
pageInfo: PageInfo!
"""A list of edges."""
edges: [ContactEdge]
"""
A list of all of the objects returned in the connection. This is a convenience
field provided for quickly exploring the API rather than querying for
"{ edges { node } }" when no edge data is needed, this field can be be used
instead. Note that when clients like Relay need to fetch the "cursor" field on
the edge to enable efficient pagination, this shortcut cannot be used, and the
full "{ edges { node } }" version should be used instead.
"""
contacts: [Contact]
"""
A count of the total number of objects in this connection, ignoring pagination.
This allows a client to fetch the first five objects by passing "5" as the
argument to "first", then fetch the total count so it could display "5 of 83",
for example.
"""
totalCount: Int
}
"""An edge in a connection."""
type ContactEdge {
"""The item at the end of the edge"""
node: Contact
"""A cursor for use in pagination"""
cursor: String!
}
input CreateContactInput {
firstName: String!
lastName: String!
email: String
phoneNumber: String
clientMutationId: String
}
type CreateContactPayload {
contact: Contact
clientMutationId: String
}
input DeleteContactInput {
contactId: ID
id: ID
clientMutationId: String
}
type DeleteContactPayload {
deletedContactId: ID
deletedId: ID
clientMutationId: String
}
type Mutation {
createContact(input: CreateContactInput!): CreateContactPayload
deleteContact(input: DeleteContactInput!): DeleteContactPayload
updateContact(input: UpdateContactInput!): UpdateContactPayload
}
"""An object with an ID"""
interface Node {
"""The id of the object."""
id: ID!
}
"""Information about pagination in a connection."""
type PageInfo {
"""When paginating forwards, are there more items?"""
hasNextPage: Boolean!
"""When paginating backwards, are there more items?"""
hasPreviousPage: Boolean!
"""When paginating backwards, the cursor to continue."""
startCursor: String
"""When paginating forwards, the cursor to continue."""
endCursor: String
}
type Query {
allContacts(after: String, first: Int, before: String, last: Int, filterText: String): ContactConnection
contact(id: ID, contactId: ID): Contact
"""Fetches an object given its ID"""
node(
"""The ID of an object"""
id: ID!
): Node
}
input UpdateContactInput {
id: ID
contactId: ID
firstName: String
lastName: String
email: String
phoneNumber: String
clientMutationId: String
}
type UpdateContactPayload {
contact: Contact
clientMutationId: String
}