shopify_api 8.1.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +22 -10
  4. data/docs/graphql.md +191 -0
  5. data/lib/shopify_api.rb +2 -0
  6. data/lib/shopify_api/api_version.rb +1 -1
  7. data/lib/shopify_api/graphql.rb +79 -0
  8. data/lib/shopify_api/graphql/http_client.rb +22 -0
  9. data/lib/shopify_api/graphql/railtie.rb +17 -0
  10. data/lib/shopify_api/graphql/task.rake +100 -0
  11. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +16 -0
  12. data/lib/shopify_api/resources/base.rb +8 -0
  13. data/lib/shopify_api/resources/fulfillment.rb +34 -0
  14. data/lib/shopify_api/resources/fulfillment_order.rb +137 -0
  15. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +4 -0
  16. data/lib/shopify_api/resources/fulfillment_v2.rb +20 -0
  17. data/lib/shopify_api/resources/order.rb +7 -0
  18. data/lib/shopify_api/session.rb +3 -3
  19. data/lib/shopify_api/version.rb +1 -1
  20. data/test/assigned_fulfillment_order_test.rb +77 -0
  21. data/test/base_test.rb +14 -0
  22. data/test/fixtures/assigned_fulfillment_orders.json +78 -0
  23. data/test/fixtures/fulfillment_order.json +38 -0
  24. data/test/fixtures/fulfillment_order_locations_for_move.json +18 -0
  25. data/test/fixtures/fulfillment_orders.json +78 -0
  26. data/test/fixtures/fulfillments.json +53 -0
  27. data/test/fixtures/graphql/2019-10.json +1083 -0
  28. data/test/fixtures/graphql/dummy_schema.rb +16 -0
  29. data/test/fixtures/graphql/unstable.json +1083 -0
  30. data/test/fulfillment_order_test.rb +462 -0
  31. data/test/fulfillment_order_test_helper.rb +7 -0
  32. data/test/fulfillment_test.rb +164 -1
  33. data/test/fulfillment_v2_test.rb +62 -0
  34. data/test/graphql/http_client_test.rb +26 -0
  35. data/test/graphql_test.rb +147 -0
  36. data/test/order_test.rb +50 -0
  37. data/test/session_test.rb +26 -13
  38. data/test/test_helper.rb +4 -1
  39. metadata +25 -3
  40. data/lib/shopify_api/resources/graphql.rb +0 -22
data/test/base_test.rb CHANGED
@@ -173,6 +173,20 @@ class BaseTest < Test::Unit::TestCase
173
173
  assert_equal ShopifyAPI::ApiVersion::NullVersion, ShopifyAPI::Base.api_version
174
174
  end
175
175
 
176
+ test "#version_validation! does not raise is api_version is newer or equal to minimum supported version" do
177
+ ShopifyAPI::Base.api_version = '2020-01'
178
+ assert_nil ShopifyAPI::Base::version_validation!('2020-01')
179
+ end
180
+
181
+ test "#version_validation! raises NotImplemetedError if api_version is older than minimum supported version" do
182
+ ShopifyAPI::Base.api_version = '2019-10'
183
+ exception = assert_raises NotImplementedError do
184
+ ShopifyAPI::Base::version_validation!('2020-01')
185
+ end
186
+ assert_equal 'The minimum supported version is 2020-01.', exception.message
187
+ end
188
+
189
+
176
190
  def clear_header(header)
177
191
  [ActiveResource::Base, ShopifyAPI::Base, ShopifyAPI::Product].each do |klass|
178
192
  klass.headers.delete(header)
@@ -0,0 +1,78 @@
1
+ [
2
+ {
3
+ "id": 519788021,
4
+ "order_id": 450789469,
5
+ "fulfillment_service_handle": "shipwire",
6
+ "status": "in_progress",
7
+ "requires_shipping": true,
8
+ "is_not_deleted": true,
9
+ "deleted_at": null,
10
+ "created_at": "2016-07-12T11:23:42-04:00",
11
+ "updated_at": "2016-07-12T11:23:42-04:00",
12
+ "happened_at": "2016-07-12T11:23:42-04:00",
13
+ "assigned_location_id": 905684977,
14
+ "request_status": "cancellation_accepted",
15
+ "delivery_category": null,
16
+ "fulfillment_order_line_items": [
17
+ {
18
+ "id": 519788021,
19
+ "shop_id": 690933842,
20
+ "fulfillment_order_id": 519788021,
21
+ "line_item_id": 466157049,
22
+ "variant_id": 43729076,
23
+ "inventory_item_id": 808950810,
24
+ "inventory_commitment_id": 273471403,
25
+ "quantity": 1,
26
+ "sku": "IPOD2008GREEN",
27
+ "vendor": null,
28
+ "variant_title": "green",
29
+ "product_title": "IPod Nano - 8gb",
30
+ "pre_tax_price": 398.00,
31
+ "currency": "USD",
32
+ "properties": null,
33
+ "is_not_deleted": true,
34
+ "deleted_at": null,
35
+ "created_at": "2016-07-12T11:23:54-04:00",
36
+ "updated_at": "2016-07-12T11:23:54-04:00"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "id": 519788022,
42
+ "order_id": 450789469,
43
+ "fulfillment_service_handle": "manual",
44
+ "status": "in_progress",
45
+ "requires_shipping": true,
46
+ "is_not_deleted": true,
47
+ "deleted_at": null,
48
+ "created_at": "2016-07-12T11:23:42-04:00",
49
+ "updated_at": "2016-07-12T11:23:42-04:00",
50
+ "happened_at": "2016-07-12T11:23:42-04:00",
51
+ "assigned_location_id": 905684977,
52
+ "request_status": "cancellation_accepted",
53
+ "delivery_category": null,
54
+ "fulfillment_order_line_items": [
55
+ {
56
+ "id": 519788021,
57
+ "shop_id": 690933842,
58
+ "fulfillment_order_id": 519788021,
59
+ "line_item_id": 466157049,
60
+ "variant_id": 43729076,
61
+ "inventory_item_id": 808950810,
62
+ "inventory_commitment_id": 273471403,
63
+ "quantity": 1,
64
+ "sku": "IPOD2008RED",
65
+ "vendor": null,
66
+ "variant_title": "red",
67
+ "product_title": "IPod Nano - 8gb",
68
+ "pre_tax_price": 398.00,
69
+ "currency": "USD",
70
+ "properties": null,
71
+ "is_not_deleted": true,
72
+ "deleted_at": null,
73
+ "created_at": "2016-07-12T11:23:54-04:00",
74
+ "updated_at": "2016-07-12T11:23:54-04:00"
75
+ }
76
+ ]
77
+ }
78
+ ]
@@ -0,0 +1,38 @@
1
+ {
2
+ "id": 519788021,
3
+ "order_id": 450789469,
4
+ "fulfillment_service_handle": "shipwire",
5
+ "status": "open",
6
+ "requires_shipping": true,
7
+ "is_not_deleted": true,
8
+ "deleted_at": null,
9
+ "created_at": "2016-07-12T11:23:42-04:00",
10
+ "updated_at": "2016-07-12T11:23:42-04:00",
11
+ "happened_at": "2016-07-12T11:23:42-04:00",
12
+ "assigned_location_id": 905684977,
13
+ "request_status": "unsubmitted",
14
+ "delivery_category": null,
15
+ "fulfillment_order_line_items": [
16
+ {
17
+ "id": 519788021,
18
+ "shop_id": 690933842,
19
+ "fulfillment_order_id": 519788021,
20
+ "line_item_id": 466157049,
21
+ "variant_id": 43729076,
22
+ "inventory_item_id": 808950810,
23
+ "inventory_commitment_id": 273471403,
24
+ "quantity": 1,
25
+ "sku": "IPOD2008GREEN",
26
+ "vendor": null,
27
+ "variant_title": "green",
28
+ "product_title": "IPod Nano - 8gb",
29
+ "pre_tax_price": 398.00,
30
+ "currency": "USD",
31
+ "properties": null,
32
+ "is_not_deleted": true,
33
+ "deleted_at": null,
34
+ "created_at": "2016-07-12T11:23:54-04:00",
35
+ "updated_at": "2016-07-12T11:23:54-04:00"
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "location": {
4
+ "id": 1059367776,
5
+ "name": "Alpha Location"
6
+ },
7
+ "message": "Current location.",
8
+ "movable": false
9
+ },
10
+ {
11
+ "location": {
12
+ "id": 1059367777,
13
+ "name": "Bravo Location"
14
+ },
15
+ "message": "No items are stocked at this location.",
16
+ "movable": false
17
+ }
18
+ ]
@@ -0,0 +1,78 @@
1
+ [
2
+ {
3
+ "id": 519788021,
4
+ "order_id": 450789469,
5
+ "fulfillment_service_handle": "shipwire",
6
+ "status": "open",
7
+ "requires_shipping": true,
8
+ "is_not_deleted": true,
9
+ "deleted_at": null,
10
+ "created_at": "2016-07-12T11:23:42-04:00",
11
+ "updated_at": "2016-07-12T11:23:42-04:00",
12
+ "happened_at": "2016-07-12T11:23:42-04:00",
13
+ "assigned_location_id": 905684977,
14
+ "request_status": "unsubmitted",
15
+ "delivery_category": null,
16
+ "fulfillment_order_line_items": [
17
+ {
18
+ "id": 519788021,
19
+ "shop_id": 690933842,
20
+ "fulfillment_order_id": 519788021,
21
+ "line_item_id": 466157049,
22
+ "variant_id": 43729076,
23
+ "inventory_item_id": 808950810,
24
+ "inventory_commitment_id": 273471403,
25
+ "quantity": 1,
26
+ "sku": "IPOD2008GREEN",
27
+ "vendor": null,
28
+ "variant_title": "green",
29
+ "product_title": "IPod Nano - 8gb",
30
+ "pre_tax_price": 398.00,
31
+ "currency": "USD",
32
+ "properties": null,
33
+ "is_not_deleted": true,
34
+ "deleted_at": null,
35
+ "created_at": "2016-07-12T11:23:54-04:00",
36
+ "updated_at": "2016-07-12T11:23:54-04:00"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "id": 519788022,
42
+ "order_id": 450789469,
43
+ "fulfillment_service_handle": "manual",
44
+ "status": "open",
45
+ "requires_shipping": true,
46
+ "is_not_deleted": true,
47
+ "deleted_at": null,
48
+ "created_at": "2016-07-12T11:23:42-04:00",
49
+ "updated_at": "2016-07-12T11:23:42-04:00",
50
+ "happened_at": "2016-07-12T11:23:42-04:00",
51
+ "assigned_location_id": 905684977,
52
+ "request_status": "unsubmitted",
53
+ "delivery_category": null,
54
+ "fulfillment_order_line_items": [
55
+ {
56
+ "id": 519788021,
57
+ "shop_id": 690933842,
58
+ "fulfillment_order_id": 519788021,
59
+ "line_item_id": 466157049,
60
+ "variant_id": 43729076,
61
+ "inventory_item_id": 808950810,
62
+ "inventory_commitment_id": 273471403,
63
+ "quantity": 1,
64
+ "sku": "IPOD2008RED",
65
+ "vendor": null,
66
+ "variant_title": "red",
67
+ "product_title": "IPod Nano - 8gb",
68
+ "pre_tax_price": 398.00,
69
+ "currency": "USD",
70
+ "properties": null,
71
+ "is_not_deleted": true,
72
+ "deleted_at": null,
73
+ "created_at": "2016-07-12T11:23:54-04:00",
74
+ "updated_at": "2016-07-12T11:23:54-04:00"
75
+ }
76
+ ]
77
+ }
78
+ ]
@@ -0,0 +1,53 @@
1
+ [
2
+ {
3
+ "created_at": "2014-03-07T16:14:08-05:00",
4
+ "id": 255858046,
5
+ "order_id": 450789469,
6
+ "service": "manual",
7
+ "status": "failure",
8
+ "tracking_company": null,
9
+ "updated_at": "2014-03-07T16:14:08-05:00",
10
+ "tracking_number": "1Z2345",
11
+ "tracking_numbers": [
12
+ "1Z2345"
13
+ ],
14
+ "tracking_url": "http://wwwapps.ups.com/etracking/tracking.cgi?InquiryNumber1=1Z2345&TypeOfInquiryNumber=T&AcceptUPSLicenseAgreement=yes&submit=Track",
15
+ "tracking_urls": [
16
+ "http://wwwapps.ups.com/etracking/tracking.cgi?InquiryNumber1=1Z2345&TypeOfInquiryNumber=T&AcceptUPSLicenseAgreement=yes&submit=Track"
17
+ ],
18
+ "receipt": {
19
+ "testcase": true,
20
+ "authorization": "123456"
21
+ },
22
+ "line_items": [
23
+ {
24
+ "fulfillment_service": "manual",
25
+ "fulfillment_status": null,
26
+ "grams": 200,
27
+ "id": 466157049,
28
+ "price": "199.00",
29
+ "product_id": 632910392,
30
+ "quantity": 1,
31
+ "requires_shipping": true,
32
+ "sku": "IPOD2008GREEN",
33
+ "taxable": true,
34
+ "title": "IPod Nano - 8gb",
35
+ "variant_id": 39072856,
36
+ "variant_title": "green",
37
+ "vendor": null,
38
+ "name": "IPod Nano - 8gb - green",
39
+ "variant_inventory_management": "shopify",
40
+ "properties": [
41
+ {
42
+ "name": "Custom Engraving",
43
+ "value": "Happy Birthday"
44
+ }
45
+ ],
46
+ "product_exists": true,
47
+ "tax_lines": [
48
+
49
+ ]
50
+ }
51
+ ]
52
+ }
53
+ ]
@@ -0,0 +1,1083 @@
1
+ {
2
+ "data": {
3
+ "__schema": {
4
+ "queryType": {
5
+ "name": "QueryRoot"
6
+ },
7
+ "mutationType": null,
8
+ "subscriptionType": null,
9
+ "types": [
10
+ {
11
+ "kind": "SCALAR",
12
+ "name": "Boolean",
13
+ "description": "Represents `true` or `false` values.",
14
+ "fields": null,
15
+ "inputFields": null,
16
+ "interfaces": null,
17
+ "enumValues": null,
18
+ "possibleTypes": null
19
+ },
20
+ {
21
+ "kind": "OBJECT",
22
+ "name": "Product",
23
+ "description": null,
24
+ "fields": [
25
+ {
26
+ "name": "name",
27
+ "description": null,
28
+ "args": [
29
+
30
+ ],
31
+ "type": {
32
+ "kind": "NON_NULL",
33
+ "name": null,
34
+ "ofType": {
35
+ "kind": "SCALAR",
36
+ "name": "String",
37
+ "ofType": null
38
+ }
39
+ },
40
+ "isDeprecated": false,
41
+ "deprecationReason": null
42
+ }
43
+ ],
44
+ "inputFields": null,
45
+ "interfaces": [
46
+
47
+ ],
48
+ "enumValues": null,
49
+ "possibleTypes": null
50
+ },
51
+ {
52
+ "kind": "OBJECT",
53
+ "name": "QueryRoot",
54
+ "description": null,
55
+ "fields": [
56
+ {
57
+ "name": "product",
58
+ "description": null,
59
+ "args": [
60
+
61
+ ],
62
+ "type": {
63
+ "kind": "NON_NULL",
64
+ "name": null,
65
+ "ofType": {
66
+ "kind": "OBJECT",
67
+ "name": "Product",
68
+ "ofType": null
69
+ }
70
+ },
71
+ "isDeprecated": false,
72
+ "deprecationReason": null
73
+ }
74
+ ],
75
+ "inputFields": null,
76
+ "interfaces": [
77
+
78
+ ],
79
+ "enumValues": null,
80
+ "possibleTypes": null
81
+ },
82
+ {
83
+ "kind": "SCALAR",
84
+ "name": "String",
85
+ "description": "Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.",
86
+ "fields": null,
87
+ "inputFields": null,
88
+ "interfaces": null,
89
+ "enumValues": null,
90
+ "possibleTypes": null
91
+ },
92
+ {
93
+ "kind": "OBJECT",
94
+ "name": "__Directive",
95
+ "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.",
96
+ "fields": [
97
+ {
98
+ "name": "args",
99
+ "description": null,
100
+ "args": [
101
+
102
+ ],
103
+ "type": {
104
+ "kind": "NON_NULL",
105
+ "name": null,
106
+ "ofType": {
107
+ "kind": "LIST",
108
+ "name": null,
109
+ "ofType": {
110
+ "kind": "NON_NULL",
111
+ "name": null,
112
+ "ofType": {
113
+ "kind": "OBJECT",
114
+ "name": "__InputValue",
115
+ "ofType": null
116
+ }
117
+ }
118
+ }
119
+ },
120
+ "isDeprecated": false,
121
+ "deprecationReason": null
122
+ },
123
+ {
124
+ "name": "description",
125
+ "description": null,
126
+ "args": [
127
+
128
+ ],
129
+ "type": {
130
+ "kind": "SCALAR",
131
+ "name": "String",
132
+ "ofType": null
133
+ },
134
+ "isDeprecated": false,
135
+ "deprecationReason": null
136
+ },
137
+ {
138
+ "name": "locations",
139
+ "description": null,
140
+ "args": [
141
+
142
+ ],
143
+ "type": {
144
+ "kind": "NON_NULL",
145
+ "name": null,
146
+ "ofType": {
147
+ "kind": "LIST",
148
+ "name": null,
149
+ "ofType": {
150
+ "kind": "NON_NULL",
151
+ "name": null,
152
+ "ofType": {
153
+ "kind": "ENUM",
154
+ "name": "__DirectiveLocation",
155
+ "ofType": null
156
+ }
157
+ }
158
+ }
159
+ },
160
+ "isDeprecated": false,
161
+ "deprecationReason": null
162
+ },
163
+ {
164
+ "name": "name",
165
+ "description": null,
166
+ "args": [
167
+
168
+ ],
169
+ "type": {
170
+ "kind": "NON_NULL",
171
+ "name": null,
172
+ "ofType": {
173
+ "kind": "SCALAR",
174
+ "name": "String",
175
+ "ofType": null
176
+ }
177
+ },
178
+ "isDeprecated": false,
179
+ "deprecationReason": null
180
+ },
181
+ {
182
+ "name": "onField",
183
+ "description": null,
184
+ "args": [
185
+
186
+ ],
187
+ "type": {
188
+ "kind": "NON_NULL",
189
+ "name": null,
190
+ "ofType": {
191
+ "kind": "SCALAR",
192
+ "name": "Boolean",
193
+ "ofType": null
194
+ }
195
+ },
196
+ "isDeprecated": true,
197
+ "deprecationReason": "Use `locations`."
198
+ },
199
+ {
200
+ "name": "onFragment",
201
+ "description": null,
202
+ "args": [
203
+
204
+ ],
205
+ "type": {
206
+ "kind": "NON_NULL",
207
+ "name": null,
208
+ "ofType": {
209
+ "kind": "SCALAR",
210
+ "name": "Boolean",
211
+ "ofType": null
212
+ }
213
+ },
214
+ "isDeprecated": true,
215
+ "deprecationReason": "Use `locations`."
216
+ },
217
+ {
218
+ "name": "onOperation",
219
+ "description": null,
220
+ "args": [
221
+
222
+ ],
223
+ "type": {
224
+ "kind": "NON_NULL",
225
+ "name": null,
226
+ "ofType": {
227
+ "kind": "SCALAR",
228
+ "name": "Boolean",
229
+ "ofType": null
230
+ }
231
+ },
232
+ "isDeprecated": true,
233
+ "deprecationReason": "Use `locations`."
234
+ }
235
+ ],
236
+ "inputFields": null,
237
+ "interfaces": [
238
+
239
+ ],
240
+ "enumValues": null,
241
+ "possibleTypes": null
242
+ },
243
+ {
244
+ "kind": "ENUM",
245
+ "name": "__DirectiveLocation",
246
+ "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",
247
+ "fields": null,
248
+ "inputFields": null,
249
+ "interfaces": null,
250
+ "enumValues": [
251
+ {
252
+ "name": "QUERY",
253
+ "description": "Location adjacent to a query operation.",
254
+ "isDeprecated": false,
255
+ "deprecationReason": null
256
+ },
257
+ {
258
+ "name": "MUTATION",
259
+ "description": "Location adjacent to a mutation operation.",
260
+ "isDeprecated": false,
261
+ "deprecationReason": null
262
+ },
263
+ {
264
+ "name": "SUBSCRIPTION",
265
+ "description": "Location adjacent to a subscription operation.",
266
+ "isDeprecated": false,
267
+ "deprecationReason": null
268
+ },
269
+ {
270
+ "name": "FIELD",
271
+ "description": "Location adjacent to a field.",
272
+ "isDeprecated": false,
273
+ "deprecationReason": null
274
+ },
275
+ {
276
+ "name": "FRAGMENT_DEFINITION",
277
+ "description": "Location adjacent to a fragment definition.",
278
+ "isDeprecated": false,
279
+ "deprecationReason": null
280
+ },
281
+ {
282
+ "name": "FRAGMENT_SPREAD",
283
+ "description": "Location adjacent to a fragment spread.",
284
+ "isDeprecated": false,
285
+ "deprecationReason": null
286
+ },
287
+ {
288
+ "name": "INLINE_FRAGMENT",
289
+ "description": "Location adjacent to an inline fragment.",
290
+ "isDeprecated": false,
291
+ "deprecationReason": null
292
+ },
293
+ {
294
+ "name": "SCHEMA",
295
+ "description": "Location adjacent to a schema definition.",
296
+ "isDeprecated": false,
297
+ "deprecationReason": null
298
+ },
299
+ {
300
+ "name": "SCALAR",
301
+ "description": "Location adjacent to a scalar definition.",
302
+ "isDeprecated": false,
303
+ "deprecationReason": null
304
+ },
305
+ {
306
+ "name": "OBJECT",
307
+ "description": "Location adjacent to an object type definition.",
308
+ "isDeprecated": false,
309
+ "deprecationReason": null
310
+ },
311
+ {
312
+ "name": "FIELD_DEFINITION",
313
+ "description": "Location adjacent to a field definition.",
314
+ "isDeprecated": false,
315
+ "deprecationReason": null
316
+ },
317
+ {
318
+ "name": "ARGUMENT_DEFINITION",
319
+ "description": "Location adjacent to an argument definition.",
320
+ "isDeprecated": false,
321
+ "deprecationReason": null
322
+ },
323
+ {
324
+ "name": "INTERFACE",
325
+ "description": "Location adjacent to an interface definition.",
326
+ "isDeprecated": false,
327
+ "deprecationReason": null
328
+ },
329
+ {
330
+ "name": "UNION",
331
+ "description": "Location adjacent to a union definition.",
332
+ "isDeprecated": false,
333
+ "deprecationReason": null
334
+ },
335
+ {
336
+ "name": "ENUM",
337
+ "description": "Location adjacent to an enum definition.",
338
+ "isDeprecated": false,
339
+ "deprecationReason": null
340
+ },
341
+ {
342
+ "name": "ENUM_VALUE",
343
+ "description": "Location adjacent to an enum value definition.",
344
+ "isDeprecated": false,
345
+ "deprecationReason": null
346
+ },
347
+ {
348
+ "name": "INPUT_OBJECT",
349
+ "description": "Location adjacent to an input object type definition.",
350
+ "isDeprecated": false,
351
+ "deprecationReason": null
352
+ },
353
+ {
354
+ "name": "INPUT_FIELD_DEFINITION",
355
+ "description": "Location adjacent to an input object field definition.",
356
+ "isDeprecated": false,
357
+ "deprecationReason": null
358
+ }
359
+ ],
360
+ "possibleTypes": null
361
+ },
362
+ {
363
+ "kind": "OBJECT",
364
+ "name": "__EnumValue",
365
+ "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",
366
+ "fields": [
367
+ {
368
+ "name": "deprecationReason",
369
+ "description": null,
370
+ "args": [
371
+
372
+ ],
373
+ "type": {
374
+ "kind": "SCALAR",
375
+ "name": "String",
376
+ "ofType": null
377
+ },
378
+ "isDeprecated": false,
379
+ "deprecationReason": null
380
+ },
381
+ {
382
+ "name": "description",
383
+ "description": null,
384
+ "args": [
385
+
386
+ ],
387
+ "type": {
388
+ "kind": "SCALAR",
389
+ "name": "String",
390
+ "ofType": null
391
+ },
392
+ "isDeprecated": false,
393
+ "deprecationReason": null
394
+ },
395
+ {
396
+ "name": "isDeprecated",
397
+ "description": null,
398
+ "args": [
399
+
400
+ ],
401
+ "type": {
402
+ "kind": "NON_NULL",
403
+ "name": null,
404
+ "ofType": {
405
+ "kind": "SCALAR",
406
+ "name": "Boolean",
407
+ "ofType": null
408
+ }
409
+ },
410
+ "isDeprecated": false,
411
+ "deprecationReason": null
412
+ },
413
+ {
414
+ "name": "name",
415
+ "description": null,
416
+ "args": [
417
+
418
+ ],
419
+ "type": {
420
+ "kind": "NON_NULL",
421
+ "name": null,
422
+ "ofType": {
423
+ "kind": "SCALAR",
424
+ "name": "String",
425
+ "ofType": null
426
+ }
427
+ },
428
+ "isDeprecated": false,
429
+ "deprecationReason": null
430
+ }
431
+ ],
432
+ "inputFields": null,
433
+ "interfaces": [
434
+
435
+ ],
436
+ "enumValues": null,
437
+ "possibleTypes": null
438
+ },
439
+ {
440
+ "kind": "OBJECT",
441
+ "name": "__Field",
442
+ "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",
443
+ "fields": [
444
+ {
445
+ "name": "args",
446
+ "description": null,
447
+ "args": [
448
+
449
+ ],
450
+ "type": {
451
+ "kind": "NON_NULL",
452
+ "name": null,
453
+ "ofType": {
454
+ "kind": "LIST",
455
+ "name": null,
456
+ "ofType": {
457
+ "kind": "NON_NULL",
458
+ "name": null,
459
+ "ofType": {
460
+ "kind": "OBJECT",
461
+ "name": "__InputValue",
462
+ "ofType": null
463
+ }
464
+ }
465
+ }
466
+ },
467
+ "isDeprecated": false,
468
+ "deprecationReason": null
469
+ },
470
+ {
471
+ "name": "deprecationReason",
472
+ "description": null,
473
+ "args": [
474
+
475
+ ],
476
+ "type": {
477
+ "kind": "SCALAR",
478
+ "name": "String",
479
+ "ofType": null
480
+ },
481
+ "isDeprecated": false,
482
+ "deprecationReason": null
483
+ },
484
+ {
485
+ "name": "description",
486
+ "description": null,
487
+ "args": [
488
+
489
+ ],
490
+ "type": {
491
+ "kind": "SCALAR",
492
+ "name": "String",
493
+ "ofType": null
494
+ },
495
+ "isDeprecated": false,
496
+ "deprecationReason": null
497
+ },
498
+ {
499
+ "name": "isDeprecated",
500
+ "description": null,
501
+ "args": [
502
+
503
+ ],
504
+ "type": {
505
+ "kind": "NON_NULL",
506
+ "name": null,
507
+ "ofType": {
508
+ "kind": "SCALAR",
509
+ "name": "Boolean",
510
+ "ofType": null
511
+ }
512
+ },
513
+ "isDeprecated": false,
514
+ "deprecationReason": null
515
+ },
516
+ {
517
+ "name": "name",
518
+ "description": null,
519
+ "args": [
520
+
521
+ ],
522
+ "type": {
523
+ "kind": "NON_NULL",
524
+ "name": null,
525
+ "ofType": {
526
+ "kind": "SCALAR",
527
+ "name": "String",
528
+ "ofType": null
529
+ }
530
+ },
531
+ "isDeprecated": false,
532
+ "deprecationReason": null
533
+ },
534
+ {
535
+ "name": "type",
536
+ "description": null,
537
+ "args": [
538
+
539
+ ],
540
+ "type": {
541
+ "kind": "NON_NULL",
542
+ "name": null,
543
+ "ofType": {
544
+ "kind": "OBJECT",
545
+ "name": "__Type",
546
+ "ofType": null
547
+ }
548
+ },
549
+ "isDeprecated": false,
550
+ "deprecationReason": null
551
+ }
552
+ ],
553
+ "inputFields": null,
554
+ "interfaces": [
555
+
556
+ ],
557
+ "enumValues": null,
558
+ "possibleTypes": null
559
+ },
560
+ {
561
+ "kind": "OBJECT",
562
+ "name": "__InputValue",
563
+ "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",
564
+ "fields": [
565
+ {
566
+ "name": "defaultValue",
567
+ "description": "A GraphQL-formatted string representing the default value for this input value.",
568
+ "args": [
569
+
570
+ ],
571
+ "type": {
572
+ "kind": "SCALAR",
573
+ "name": "String",
574
+ "ofType": null
575
+ },
576
+ "isDeprecated": false,
577
+ "deprecationReason": null
578
+ },
579
+ {
580
+ "name": "description",
581
+ "description": null,
582
+ "args": [
583
+
584
+ ],
585
+ "type": {
586
+ "kind": "SCALAR",
587
+ "name": "String",
588
+ "ofType": null
589
+ },
590
+ "isDeprecated": false,
591
+ "deprecationReason": null
592
+ },
593
+ {
594
+ "name": "name",
595
+ "description": null,
596
+ "args": [
597
+
598
+ ],
599
+ "type": {
600
+ "kind": "NON_NULL",
601
+ "name": null,
602
+ "ofType": {
603
+ "kind": "SCALAR",
604
+ "name": "String",
605
+ "ofType": null
606
+ }
607
+ },
608
+ "isDeprecated": false,
609
+ "deprecationReason": null
610
+ },
611
+ {
612
+ "name": "type",
613
+ "description": null,
614
+ "args": [
615
+
616
+ ],
617
+ "type": {
618
+ "kind": "NON_NULL",
619
+ "name": null,
620
+ "ofType": {
621
+ "kind": "OBJECT",
622
+ "name": "__Type",
623
+ "ofType": null
624
+ }
625
+ },
626
+ "isDeprecated": false,
627
+ "deprecationReason": null
628
+ }
629
+ ],
630
+ "inputFields": null,
631
+ "interfaces": [
632
+
633
+ ],
634
+ "enumValues": null,
635
+ "possibleTypes": null
636
+ },
637
+ {
638
+ "kind": "OBJECT",
639
+ "name": "__Schema",
640
+ "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",
641
+ "fields": [
642
+ {
643
+ "name": "directives",
644
+ "description": "A list of all directives supported by this server.",
645
+ "args": [
646
+
647
+ ],
648
+ "type": {
649
+ "kind": "NON_NULL",
650
+ "name": null,
651
+ "ofType": {
652
+ "kind": "LIST",
653
+ "name": null,
654
+ "ofType": {
655
+ "kind": "NON_NULL",
656
+ "name": null,
657
+ "ofType": {
658
+ "kind": "OBJECT",
659
+ "name": "__Directive",
660
+ "ofType": null
661
+ }
662
+ }
663
+ }
664
+ },
665
+ "isDeprecated": false,
666
+ "deprecationReason": null
667
+ },
668
+ {
669
+ "name": "mutationType",
670
+ "description": "If this server supports mutation, the type that mutation operations will be rooted at.",
671
+ "args": [
672
+
673
+ ],
674
+ "type": {
675
+ "kind": "OBJECT",
676
+ "name": "__Type",
677
+ "ofType": null
678
+ },
679
+ "isDeprecated": false,
680
+ "deprecationReason": null
681
+ },
682
+ {
683
+ "name": "queryType",
684
+ "description": "The type that query operations will be rooted at.",
685
+ "args": [
686
+
687
+ ],
688
+ "type": {
689
+ "kind": "NON_NULL",
690
+ "name": null,
691
+ "ofType": {
692
+ "kind": "OBJECT",
693
+ "name": "__Type",
694
+ "ofType": null
695
+ }
696
+ },
697
+ "isDeprecated": false,
698
+ "deprecationReason": null
699
+ },
700
+ {
701
+ "name": "subscriptionType",
702
+ "description": "If this server support subscription, the type that subscription operations will be rooted at.",
703
+ "args": [
704
+
705
+ ],
706
+ "type": {
707
+ "kind": "OBJECT",
708
+ "name": "__Type",
709
+ "ofType": null
710
+ },
711
+ "isDeprecated": false,
712
+ "deprecationReason": null
713
+ },
714
+ {
715
+ "name": "types",
716
+ "description": "A list of all types supported by this server.",
717
+ "args": [
718
+
719
+ ],
720
+ "type": {
721
+ "kind": "NON_NULL",
722
+ "name": null,
723
+ "ofType": {
724
+ "kind": "LIST",
725
+ "name": null,
726
+ "ofType": {
727
+ "kind": "NON_NULL",
728
+ "name": null,
729
+ "ofType": {
730
+ "kind": "OBJECT",
731
+ "name": "__Type",
732
+ "ofType": null
733
+ }
734
+ }
735
+ }
736
+ },
737
+ "isDeprecated": false,
738
+ "deprecationReason": null
739
+ }
740
+ ],
741
+ "inputFields": null,
742
+ "interfaces": [
743
+
744
+ ],
745
+ "enumValues": null,
746
+ "possibleTypes": null
747
+ },
748
+ {
749
+ "kind": "OBJECT",
750
+ "name": "__Type",
751
+ "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",
752
+ "fields": [
753
+ {
754
+ "name": "description",
755
+ "description": null,
756
+ "args": [
757
+
758
+ ],
759
+ "type": {
760
+ "kind": "SCALAR",
761
+ "name": "String",
762
+ "ofType": null
763
+ },
764
+ "isDeprecated": false,
765
+ "deprecationReason": null
766
+ },
767
+ {
768
+ "name": "enumValues",
769
+ "description": null,
770
+ "args": [
771
+ {
772
+ "name": "includeDeprecated",
773
+ "description": null,
774
+ "type": {
775
+ "kind": "SCALAR",
776
+ "name": "Boolean",
777
+ "ofType": null
778
+ },
779
+ "defaultValue": "false"
780
+ }
781
+ ],
782
+ "type": {
783
+ "kind": "LIST",
784
+ "name": null,
785
+ "ofType": {
786
+ "kind": "NON_NULL",
787
+ "name": null,
788
+ "ofType": {
789
+ "kind": "OBJECT",
790
+ "name": "__EnumValue",
791
+ "ofType": null
792
+ }
793
+ }
794
+ },
795
+ "isDeprecated": false,
796
+ "deprecationReason": null
797
+ },
798
+ {
799
+ "name": "fields",
800
+ "description": null,
801
+ "args": [
802
+ {
803
+ "name": "includeDeprecated",
804
+ "description": null,
805
+ "type": {
806
+ "kind": "SCALAR",
807
+ "name": "Boolean",
808
+ "ofType": null
809
+ },
810
+ "defaultValue": "false"
811
+ }
812
+ ],
813
+ "type": {
814
+ "kind": "LIST",
815
+ "name": null,
816
+ "ofType": {
817
+ "kind": "NON_NULL",
818
+ "name": null,
819
+ "ofType": {
820
+ "kind": "OBJECT",
821
+ "name": "__Field",
822
+ "ofType": null
823
+ }
824
+ }
825
+ },
826
+ "isDeprecated": false,
827
+ "deprecationReason": null
828
+ },
829
+ {
830
+ "name": "inputFields",
831
+ "description": null,
832
+ "args": [
833
+
834
+ ],
835
+ "type": {
836
+ "kind": "LIST",
837
+ "name": null,
838
+ "ofType": {
839
+ "kind": "NON_NULL",
840
+ "name": null,
841
+ "ofType": {
842
+ "kind": "OBJECT",
843
+ "name": "__InputValue",
844
+ "ofType": null
845
+ }
846
+ }
847
+ },
848
+ "isDeprecated": false,
849
+ "deprecationReason": null
850
+ },
851
+ {
852
+ "name": "interfaces",
853
+ "description": null,
854
+ "args": [
855
+
856
+ ],
857
+ "type": {
858
+ "kind": "LIST",
859
+ "name": null,
860
+ "ofType": {
861
+ "kind": "NON_NULL",
862
+ "name": null,
863
+ "ofType": {
864
+ "kind": "OBJECT",
865
+ "name": "__Type",
866
+ "ofType": null
867
+ }
868
+ }
869
+ },
870
+ "isDeprecated": false,
871
+ "deprecationReason": null
872
+ },
873
+ {
874
+ "name": "kind",
875
+ "description": null,
876
+ "args": [
877
+
878
+ ],
879
+ "type": {
880
+ "kind": "NON_NULL",
881
+ "name": null,
882
+ "ofType": {
883
+ "kind": "ENUM",
884
+ "name": "__TypeKind",
885
+ "ofType": null
886
+ }
887
+ },
888
+ "isDeprecated": false,
889
+ "deprecationReason": null
890
+ },
891
+ {
892
+ "name": "name",
893
+ "description": null,
894
+ "args": [
895
+
896
+ ],
897
+ "type": {
898
+ "kind": "SCALAR",
899
+ "name": "String",
900
+ "ofType": null
901
+ },
902
+ "isDeprecated": false,
903
+ "deprecationReason": null
904
+ },
905
+ {
906
+ "name": "ofType",
907
+ "description": null,
908
+ "args": [
909
+
910
+ ],
911
+ "type": {
912
+ "kind": "OBJECT",
913
+ "name": "__Type",
914
+ "ofType": null
915
+ },
916
+ "isDeprecated": false,
917
+ "deprecationReason": null
918
+ },
919
+ {
920
+ "name": "possibleTypes",
921
+ "description": null,
922
+ "args": [
923
+
924
+ ],
925
+ "type": {
926
+ "kind": "LIST",
927
+ "name": null,
928
+ "ofType": {
929
+ "kind": "NON_NULL",
930
+ "name": null,
931
+ "ofType": {
932
+ "kind": "OBJECT",
933
+ "name": "__Type",
934
+ "ofType": null
935
+ }
936
+ }
937
+ },
938
+ "isDeprecated": false,
939
+ "deprecationReason": null
940
+ }
941
+ ],
942
+ "inputFields": null,
943
+ "interfaces": [
944
+
945
+ ],
946
+ "enumValues": null,
947
+ "possibleTypes": null
948
+ },
949
+ {
950
+ "kind": "ENUM",
951
+ "name": "__TypeKind",
952
+ "description": "An enum describing what kind of type a given `__Type` is.",
953
+ "fields": null,
954
+ "inputFields": null,
955
+ "interfaces": null,
956
+ "enumValues": [
957
+ {
958
+ "name": "SCALAR",
959
+ "description": "Indicates this type is a scalar.",
960
+ "isDeprecated": false,
961
+ "deprecationReason": null
962
+ },
963
+ {
964
+ "name": "OBJECT",
965
+ "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.",
966
+ "isDeprecated": false,
967
+ "deprecationReason": null
968
+ },
969
+ {
970
+ "name": "INTERFACE",
971
+ "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.",
972
+ "isDeprecated": false,
973
+ "deprecationReason": null
974
+ },
975
+ {
976
+ "name": "UNION",
977
+ "description": "Indicates this type is a union. `possibleTypes` is a valid field.",
978
+ "isDeprecated": false,
979
+ "deprecationReason": null
980
+ },
981
+ {
982
+ "name": "ENUM",
983
+ "description": "Indicates this type is an enum. `enumValues` is a valid field.",
984
+ "isDeprecated": false,
985
+ "deprecationReason": null
986
+ },
987
+ {
988
+ "name": "INPUT_OBJECT",
989
+ "description": "Indicates this type is an input object. `inputFields` is a valid field.",
990
+ "isDeprecated": false,
991
+ "deprecationReason": null
992
+ },
993
+ {
994
+ "name": "LIST",
995
+ "description": "Indicates this type is a list. `ofType` is a valid field.",
996
+ "isDeprecated": false,
997
+ "deprecationReason": null
998
+ },
999
+ {
1000
+ "name": "NON_NULL",
1001
+ "description": "Indicates this type is a non-null. `ofType` is a valid field.",
1002
+ "isDeprecated": false,
1003
+ "deprecationReason": null
1004
+ }
1005
+ ],
1006
+ "possibleTypes": null
1007
+ }
1008
+ ],
1009
+ "directives": [
1010
+ {
1011
+ "name": "include",
1012
+ "description": "Directs the executor to include this field or fragment only when the `if` argument is true.",
1013
+ "locations": [
1014
+ "FIELD",
1015
+ "FRAGMENT_SPREAD",
1016
+ "INLINE_FRAGMENT"
1017
+ ],
1018
+ "args": [
1019
+ {
1020
+ "name": "if",
1021
+ "description": "Included when true.",
1022
+ "type": {
1023
+ "kind": "NON_NULL",
1024
+ "name": null,
1025
+ "ofType": {
1026
+ "kind": "SCALAR",
1027
+ "name": "Boolean",
1028
+ "ofType": null
1029
+ }
1030
+ },
1031
+ "defaultValue": null
1032
+ }
1033
+ ]
1034
+ },
1035
+ {
1036
+ "name": "skip",
1037
+ "description": "Directs the executor to skip this field or fragment when the `if` argument is true.",
1038
+ "locations": [
1039
+ "FIELD",
1040
+ "FRAGMENT_SPREAD",
1041
+ "INLINE_FRAGMENT"
1042
+ ],
1043
+ "args": [
1044
+ {
1045
+ "name": "if",
1046
+ "description": "Skipped when true.",
1047
+ "type": {
1048
+ "kind": "NON_NULL",
1049
+ "name": null,
1050
+ "ofType": {
1051
+ "kind": "SCALAR",
1052
+ "name": "Boolean",
1053
+ "ofType": null
1054
+ }
1055
+ },
1056
+ "defaultValue": null
1057
+ }
1058
+ ]
1059
+ },
1060
+ {
1061
+ "name": "deprecated",
1062
+ "description": "Marks an element of a GraphQL schema as no longer supported.",
1063
+ "locations": [
1064
+ "FIELD_DEFINITION",
1065
+ "ENUM_VALUE"
1066
+ ],
1067
+ "args": [
1068
+ {
1069
+ "name": "reason",
1070
+ "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).",
1071
+ "type": {
1072
+ "kind": "SCALAR",
1073
+ "name": "String",
1074
+ "ofType": null
1075
+ },
1076
+ "defaultValue": "\"No longer supported\""
1077
+ }
1078
+ ]
1079
+ }
1080
+ ]
1081
+ }
1082
+ }
1083
+ }