@clawpify/skills 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +73 -0
- package/clawpify/SKILL.md +134 -0
- package/clawpify/references/blogs.md +385 -0
- package/clawpify/references/bulk-operations.md +386 -0
- package/clawpify/references/collections.md +71 -0
- package/clawpify/references/customers.md +141 -0
- package/clawpify/references/discounts.md +431 -0
- package/clawpify/references/draft-orders.md +495 -0
- package/clawpify/references/files.md +355 -0
- package/clawpify/references/fulfillments.md +437 -0
- package/clawpify/references/gift-cards.md +453 -0
- package/clawpify/references/inventory.md +107 -0
- package/clawpify/references/locations.md +349 -0
- package/clawpify/references/marketing.md +352 -0
- package/clawpify/references/markets.md +346 -0
- package/clawpify/references/menus.md +313 -0
- package/clawpify/references/metafields.md +461 -0
- package/clawpify/references/orders.md +164 -0
- package/clawpify/references/pages.md +308 -0
- package/clawpify/references/products.md +277 -0
- package/clawpify/references/refunds.md +401 -0
- package/clawpify/references/segments.md +319 -0
- package/clawpify/references/shipping.md +406 -0
- package/clawpify/references/shop.md +307 -0
- package/clawpify/references/subscriptions.md +429 -0
- package/clawpify/references/translations.md +270 -0
- package/clawpify/references/webhooks.md +400 -0
- package/dist/agent.d.ts +18 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +100 -0
- package/dist/auth.d.ts +34 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +58 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +236 -0
- package/dist/shopify.d.ts +29 -0
- package/dist/shopify.d.ts.map +1 -0
- package/dist/shopify.js +41 -0
- package/dist/skills.d.ts +8 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +36 -0
- package/package.json +100 -0
- package/src/agent.ts +133 -0
- package/src/auth.ts +109 -0
- package/src/index.ts +55 -0
- package/src/mcp-server.ts +190 -0
- package/src/shopify.ts +63 -0
- package/src/skills.ts +42 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
# Shopify Shipping & Delivery
|
|
2
|
+
|
|
3
|
+
Manage delivery profiles, shipping zones, and rates via the GraphQL Admin API.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Delivery profiles define shipping settings for products, including zones, rates, and fulfillment locations.
|
|
8
|
+
|
|
9
|
+
## List Delivery Profiles
|
|
10
|
+
|
|
11
|
+
```graphql
|
|
12
|
+
query ListDeliveryProfiles($first: Int!) {
|
|
13
|
+
deliveryProfiles(first: $first) {
|
|
14
|
+
nodes {
|
|
15
|
+
id
|
|
16
|
+
name
|
|
17
|
+
default
|
|
18
|
+
profileLocationGroups {
|
|
19
|
+
locationGroup {
|
|
20
|
+
id
|
|
21
|
+
locations(first: 5) {
|
|
22
|
+
nodes {
|
|
23
|
+
name
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
locationGroupZones(first: 10) {
|
|
28
|
+
nodes {
|
|
29
|
+
zone {
|
|
30
|
+
id
|
|
31
|
+
name
|
|
32
|
+
countries {
|
|
33
|
+
code {
|
|
34
|
+
countryCode
|
|
35
|
+
}
|
|
36
|
+
provinces {
|
|
37
|
+
code
|
|
38
|
+
name
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
methodDefinitions(first: 5) {
|
|
43
|
+
nodes {
|
|
44
|
+
id
|
|
45
|
+
name
|
|
46
|
+
active
|
|
47
|
+
rateProvider {
|
|
48
|
+
... on DeliveryRateDefinition {
|
|
49
|
+
price {
|
|
50
|
+
amount
|
|
51
|
+
currencyCode
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Get Delivery Profile
|
|
66
|
+
|
|
67
|
+
```graphql
|
|
68
|
+
query GetDeliveryProfile($id: ID!) {
|
|
69
|
+
deliveryProfile(id: $id) {
|
|
70
|
+
id
|
|
71
|
+
name
|
|
72
|
+
default
|
|
73
|
+
profileItems(first: 20) {
|
|
74
|
+
nodes {
|
|
75
|
+
product {
|
|
76
|
+
id
|
|
77
|
+
title
|
|
78
|
+
}
|
|
79
|
+
variants(first: 5) {
|
|
80
|
+
nodes {
|
|
81
|
+
id
|
|
82
|
+
title
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
profileLocationGroups {
|
|
88
|
+
locationGroup {
|
|
89
|
+
locations(first: 10) {
|
|
90
|
+
nodes {
|
|
91
|
+
id
|
|
92
|
+
name
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
locationGroupZones(first: 10) {
|
|
97
|
+
nodes {
|
|
98
|
+
zone {
|
|
99
|
+
name
|
|
100
|
+
}
|
|
101
|
+
methodDefinitions(first: 5) {
|
|
102
|
+
nodes {
|
|
103
|
+
name
|
|
104
|
+
active
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
Variables: `{ "id": "gid://shopify/DeliveryProfile/123" }`
|
|
114
|
+
|
|
115
|
+
## Create Delivery Profile
|
|
116
|
+
|
|
117
|
+
```graphql
|
|
118
|
+
mutation CreateDeliveryProfile($profile: DeliveryProfileInput!) {
|
|
119
|
+
deliveryProfileCreate(profile: $profile) {
|
|
120
|
+
profile {
|
|
121
|
+
id
|
|
122
|
+
name
|
|
123
|
+
}
|
|
124
|
+
userErrors {
|
|
125
|
+
field
|
|
126
|
+
message
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
Variables:
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"profile": {
|
|
135
|
+
"name": "Heavy Items",
|
|
136
|
+
"locationGroupsToCreate": [
|
|
137
|
+
{
|
|
138
|
+
"locations": ["gid://shopify/Location/123"],
|
|
139
|
+
"zonesToCreate": [
|
|
140
|
+
{
|
|
141
|
+
"name": "Domestic",
|
|
142
|
+
"countries": [
|
|
143
|
+
{
|
|
144
|
+
"code": "US",
|
|
145
|
+
"includeAllProvinces": true
|
|
146
|
+
}
|
|
147
|
+
],
|
|
148
|
+
"methodDefinitionsToCreate": [
|
|
149
|
+
{
|
|
150
|
+
"name": "Standard Shipping",
|
|
151
|
+
"active": true,
|
|
152
|
+
"rateDefinition": {
|
|
153
|
+
"price": {
|
|
154
|
+
"amount": "9.99",
|
|
155
|
+
"currencyCode": "USD"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "Express Shipping",
|
|
161
|
+
"active": true,
|
|
162
|
+
"rateDefinition": {
|
|
163
|
+
"price": {
|
|
164
|
+
"amount": "19.99",
|
|
165
|
+
"currencyCode": "USD"
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"variantsToAssociate": [
|
|
175
|
+
"gid://shopify/ProductVariant/456",
|
|
176
|
+
"gid://shopify/ProductVariant/789"
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Update Delivery Profile
|
|
183
|
+
|
|
184
|
+
```graphql
|
|
185
|
+
mutation UpdateDeliveryProfile($id: ID!, $profile: DeliveryProfileInput!) {
|
|
186
|
+
deliveryProfileUpdate(id: $id, profile: $profile) {
|
|
187
|
+
profile {
|
|
188
|
+
id
|
|
189
|
+
name
|
|
190
|
+
}
|
|
191
|
+
userErrors {
|
|
192
|
+
field
|
|
193
|
+
message
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
Variables:
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"id": "gid://shopify/DeliveryProfile/123",
|
|
202
|
+
"profile": {
|
|
203
|
+
"name": "Heavy Items - Updated",
|
|
204
|
+
"locationGroupsToUpdate": [
|
|
205
|
+
{
|
|
206
|
+
"id": "gid://shopify/DeliveryLocationGroup/456",
|
|
207
|
+
"zonesToCreate": [
|
|
208
|
+
{
|
|
209
|
+
"name": "Canada",
|
|
210
|
+
"countries": [
|
|
211
|
+
{
|
|
212
|
+
"code": "CA",
|
|
213
|
+
"includeAllProvinces": true
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
"methodDefinitionsToCreate": [
|
|
217
|
+
{
|
|
218
|
+
"name": "Canada Standard",
|
|
219
|
+
"active": true,
|
|
220
|
+
"rateDefinition": {
|
|
221
|
+
"price": {
|
|
222
|
+
"amount": "14.99",
|
|
223
|
+
"currencyCode": "USD"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Delete Delivery Profile
|
|
237
|
+
|
|
238
|
+
```graphql
|
|
239
|
+
mutation DeleteDeliveryProfile($id: ID!) {
|
|
240
|
+
deliveryProfileRemove(id: $id) {
|
|
241
|
+
job {
|
|
242
|
+
id
|
|
243
|
+
done
|
|
244
|
+
}
|
|
245
|
+
userErrors {
|
|
246
|
+
field
|
|
247
|
+
message
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Add Products to Profile
|
|
254
|
+
|
|
255
|
+
```graphql
|
|
256
|
+
mutation AddProductsToProfile($id: ID!, $profile: DeliveryProfileInput!) {
|
|
257
|
+
deliveryProfileUpdate(id: $id, profile: $profile) {
|
|
258
|
+
profile {
|
|
259
|
+
id
|
|
260
|
+
}
|
|
261
|
+
userErrors {
|
|
262
|
+
field
|
|
263
|
+
message
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
Variables:
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"id": "gid://shopify/DeliveryProfile/123",
|
|
272
|
+
"profile": {
|
|
273
|
+
"variantsToAssociate": [
|
|
274
|
+
"gid://shopify/ProductVariant/111",
|
|
275
|
+
"gid://shopify/ProductVariant/222"
|
|
276
|
+
]
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Remove Products from Profile
|
|
282
|
+
|
|
283
|
+
```graphql
|
|
284
|
+
mutation RemoveProductsFromProfile($id: ID!, $profile: DeliveryProfileInput!) {
|
|
285
|
+
deliveryProfileUpdate(id: $id, profile: $profile) {
|
|
286
|
+
profile {
|
|
287
|
+
id
|
|
288
|
+
}
|
|
289
|
+
userErrors {
|
|
290
|
+
field
|
|
291
|
+
message
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
Variables:
|
|
297
|
+
```json
|
|
298
|
+
{
|
|
299
|
+
"id": "gid://shopify/DeliveryProfile/123",
|
|
300
|
+
"profile": {
|
|
301
|
+
"variantsToDissociate": [
|
|
302
|
+
"gid://shopify/ProductVariant/111"
|
|
303
|
+
]
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Rate Types
|
|
309
|
+
|
|
310
|
+
### Flat Rate
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"rateDefinition": {
|
|
314
|
+
"price": {
|
|
315
|
+
"amount": "9.99",
|
|
316
|
+
"currencyCode": "USD"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Weight-Based Rate
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"weightConditionsToCreate": [
|
|
326
|
+
{
|
|
327
|
+
"criteria": {
|
|
328
|
+
"unit": "KILOGRAMS",
|
|
329
|
+
"value": 5.0
|
|
330
|
+
},
|
|
331
|
+
"operator": "LESS_THAN_OR_EQUAL_TO"
|
|
332
|
+
}
|
|
333
|
+
],
|
|
334
|
+
"rateDefinition": {
|
|
335
|
+
"price": {
|
|
336
|
+
"amount": "9.99",
|
|
337
|
+
"currencyCode": "USD"
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Price-Based Rate
|
|
344
|
+
```json
|
|
345
|
+
{
|
|
346
|
+
"priceConditionsToCreate": [
|
|
347
|
+
{
|
|
348
|
+
"criteria": {
|
|
349
|
+
"amount": "50.00",
|
|
350
|
+
"currencyCode": "USD"
|
|
351
|
+
},
|
|
352
|
+
"operator": "GREATER_THAN_OR_EQUAL_TO"
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
"rateDefinition": {
|
|
356
|
+
"price": {
|
|
357
|
+
"amount": "0.00",
|
|
358
|
+
"currencyCode": "USD"
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Delivery Zone Structure
|
|
365
|
+
|
|
366
|
+
| Component | Description |
|
|
367
|
+
|-----------|-------------|
|
|
368
|
+
| **Profile** | Top-level shipping configuration |
|
|
369
|
+
| **Location Group** | Group of fulfillment locations |
|
|
370
|
+
| **Zone** | Geographic region (countries/provinces) |
|
|
371
|
+
| **Method Definition** | Shipping option with rate |
|
|
372
|
+
|
|
373
|
+
## Country Code Examples
|
|
374
|
+
|
|
375
|
+
| Code | Country |
|
|
376
|
+
|------|---------|
|
|
377
|
+
| `US` | United States |
|
|
378
|
+
| `CA` | Canada |
|
|
379
|
+
| `GB` | United Kingdom |
|
|
380
|
+
| `AU` | Australia |
|
|
381
|
+
| `DE` | Germany |
|
|
382
|
+
| `FR` | France |
|
|
383
|
+
|
|
384
|
+
## Condition Operators
|
|
385
|
+
|
|
386
|
+
| Operator | Description |
|
|
387
|
+
|----------|-------------|
|
|
388
|
+
| `GREATER_THAN` | > value |
|
|
389
|
+
| `GREATER_THAN_OR_EQUAL_TO` | >= value |
|
|
390
|
+
| `LESS_THAN` | < value |
|
|
391
|
+
| `LESS_THAN_OR_EQUAL_TO` | <= value |
|
|
392
|
+
| `BETWEEN` | Between two values |
|
|
393
|
+
|
|
394
|
+
## API Scopes Required
|
|
395
|
+
|
|
396
|
+
- `read_shipping` - Read delivery profiles
|
|
397
|
+
- `write_shipping` - Create, update, delete delivery profiles
|
|
398
|
+
|
|
399
|
+
## Notes
|
|
400
|
+
|
|
401
|
+
- Default profile applies to products not in other profiles
|
|
402
|
+
- Products can only belong to one delivery profile
|
|
403
|
+
- Zones define geographic areas for shipping
|
|
404
|
+
- Rates can be flat, weight-based, or price-based
|
|
405
|
+
- Multiple locations can share the same zone configuration
|
|
406
|
+
- Carrier-calculated rates require additional setup
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Shopify Shop
|
|
2
|
+
|
|
3
|
+
Query shop information and settings via the GraphQL Admin API.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Shop object contains core store settings, features, billing information, and configuration details.
|
|
8
|
+
|
|
9
|
+
## Get Shop Information
|
|
10
|
+
|
|
11
|
+
```graphql
|
|
12
|
+
query GetShop {
|
|
13
|
+
shop {
|
|
14
|
+
id
|
|
15
|
+
name
|
|
16
|
+
email
|
|
17
|
+
myshopifyDomain
|
|
18
|
+
primaryDomain {
|
|
19
|
+
host
|
|
20
|
+
sslEnabled
|
|
21
|
+
}
|
|
22
|
+
contactEmail
|
|
23
|
+
description
|
|
24
|
+
currencyCode
|
|
25
|
+
currencyFormats {
|
|
26
|
+
moneyFormat
|
|
27
|
+
moneyWithCurrencyFormat
|
|
28
|
+
}
|
|
29
|
+
weightUnit
|
|
30
|
+
unitSystem
|
|
31
|
+
timezoneAbbreviation
|
|
32
|
+
ianaTimezone
|
|
33
|
+
createdAt
|
|
34
|
+
plan {
|
|
35
|
+
displayName
|
|
36
|
+
partnerDevelopment
|
|
37
|
+
shopifyPlus
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Get Shop Address
|
|
44
|
+
|
|
45
|
+
```graphql
|
|
46
|
+
query GetShopAddress {
|
|
47
|
+
shop {
|
|
48
|
+
billingAddress {
|
|
49
|
+
address1
|
|
50
|
+
address2
|
|
51
|
+
city
|
|
52
|
+
province
|
|
53
|
+
provinceCode
|
|
54
|
+
country
|
|
55
|
+
countryCodeV2
|
|
56
|
+
zip
|
|
57
|
+
phone
|
|
58
|
+
company
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Get Shop Features
|
|
65
|
+
|
|
66
|
+
```graphql
|
|
67
|
+
query GetShopFeatures {
|
|
68
|
+
shop {
|
|
69
|
+
features {
|
|
70
|
+
branding {
|
|
71
|
+
shopifyBranding
|
|
72
|
+
}
|
|
73
|
+
storefront {
|
|
74
|
+
internationalPriceOverrides
|
|
75
|
+
internationalPriceRules
|
|
76
|
+
}
|
|
77
|
+
internationalDomains {
|
|
78
|
+
enabled
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Get Shop Locales
|
|
86
|
+
|
|
87
|
+
```graphql
|
|
88
|
+
query GetShopLocales {
|
|
89
|
+
shopLocales(published: true) {
|
|
90
|
+
locale
|
|
91
|
+
name
|
|
92
|
+
primary
|
|
93
|
+
published
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Get All Locales (Including Unpublished)
|
|
99
|
+
|
|
100
|
+
```graphql
|
|
101
|
+
query GetAllShopLocales {
|
|
102
|
+
shopLocales(published: false) {
|
|
103
|
+
locale
|
|
104
|
+
name
|
|
105
|
+
primary
|
|
106
|
+
published
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Get Shop Billing Preferences
|
|
112
|
+
|
|
113
|
+
```graphql
|
|
114
|
+
query GetBillingPreferences {
|
|
115
|
+
shopBillingPreferences {
|
|
116
|
+
currency {
|
|
117
|
+
currencyCode
|
|
118
|
+
currencyName
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Get Shopify Payments Account
|
|
125
|
+
|
|
126
|
+
```graphql
|
|
127
|
+
query GetPaymentsAccount {
|
|
128
|
+
shopifyPaymentsAccount {
|
|
129
|
+
activated
|
|
130
|
+
balance {
|
|
131
|
+
amount
|
|
132
|
+
currencyCode
|
|
133
|
+
}
|
|
134
|
+
country
|
|
135
|
+
defaultCurrency
|
|
136
|
+
payoutSchedule {
|
|
137
|
+
interval
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Get Available API Versions
|
|
144
|
+
|
|
145
|
+
```graphql
|
|
146
|
+
query GetApiVersions {
|
|
147
|
+
publicApiVersions {
|
|
148
|
+
handle
|
|
149
|
+
displayName
|
|
150
|
+
supported
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Execute ShopifyQL Query
|
|
156
|
+
|
|
157
|
+
```graphql
|
|
158
|
+
query RunShopifyQL($query: String!) {
|
|
159
|
+
shopifyqlQuery(query: $query) {
|
|
160
|
+
... on TableResponse {
|
|
161
|
+
tableData {
|
|
162
|
+
columns {
|
|
163
|
+
name
|
|
164
|
+
dataType
|
|
165
|
+
displayName
|
|
166
|
+
}
|
|
167
|
+
rowData
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
... on PolarisVizResponse {
|
|
171
|
+
data
|
|
172
|
+
}
|
|
173
|
+
parseErrors {
|
|
174
|
+
message
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
Variables:
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"query": "FROM orders SHOW sum(total_sales) AS total_revenue SINCE -30d UNTIL today"
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Common ShopifyQL Queries
|
|
187
|
+
|
|
188
|
+
### Sales Summary
|
|
189
|
+
```
|
|
190
|
+
FROM orders
|
|
191
|
+
SHOW sum(total_sales) AS revenue, count() AS order_count
|
|
192
|
+
SINCE -30d UNTIL today
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Top Products
|
|
196
|
+
```
|
|
197
|
+
FROM products
|
|
198
|
+
SHOW sum(quantity) AS units_sold
|
|
199
|
+
GROUP BY product_title
|
|
200
|
+
ORDER BY units_sold DESC
|
|
201
|
+
LIMIT 10
|
|
202
|
+
SINCE -30d
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Sales by Region
|
|
206
|
+
```
|
|
207
|
+
FROM orders
|
|
208
|
+
SHOW sum(total_sales) AS revenue
|
|
209
|
+
GROUP BY billing_country
|
|
210
|
+
ORDER BY revenue DESC
|
|
211
|
+
SINCE -30d
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Daily Sales Trend
|
|
215
|
+
```
|
|
216
|
+
FROM orders
|
|
217
|
+
SHOW sum(total_sales) AS daily_revenue
|
|
218
|
+
GROUP BY day
|
|
219
|
+
SINCE -30d UNTIL today
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Get Shop Functions
|
|
223
|
+
|
|
224
|
+
```graphql
|
|
225
|
+
query GetShopFunctions($first: Int!) {
|
|
226
|
+
shopifyFunctions(first: $first) {
|
|
227
|
+
nodes {
|
|
228
|
+
id
|
|
229
|
+
title
|
|
230
|
+
apiType
|
|
231
|
+
apiVersion
|
|
232
|
+
app {
|
|
233
|
+
title
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
Variables: `{ "first": 20 }`
|
|
240
|
+
|
|
241
|
+
## Get Specific Function
|
|
242
|
+
|
|
243
|
+
```graphql
|
|
244
|
+
query GetFunction($id: String!) {
|
|
245
|
+
shopifyFunction(id: $id) {
|
|
246
|
+
id
|
|
247
|
+
title
|
|
248
|
+
apiType
|
|
249
|
+
apiVersion
|
|
250
|
+
description
|
|
251
|
+
app {
|
|
252
|
+
title
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Shop Settings Fields
|
|
259
|
+
|
|
260
|
+
| Field | Description |
|
|
261
|
+
|-------|-------------|
|
|
262
|
+
| `name` | Store name |
|
|
263
|
+
| `email` | Store email |
|
|
264
|
+
| `myshopifyDomain` | *.myshopify.com domain |
|
|
265
|
+
| `primaryDomain` | Custom domain if set |
|
|
266
|
+
| `currencyCode` | Store currency |
|
|
267
|
+
| `weightUnit` | Weight unit (KILOGRAMS, POUNDS, etc.) |
|
|
268
|
+
| `unitSystem` | METRIC or IMPERIAL |
|
|
269
|
+
| `ianaTimezone` | Timezone (e.g., America/New_York) |
|
|
270
|
+
|
|
271
|
+
## Plan Information
|
|
272
|
+
|
|
273
|
+
| Field | Description |
|
|
274
|
+
|-------|-------------|
|
|
275
|
+
| `displayName` | Plan name (Basic, Shopify, Advanced, Plus) |
|
|
276
|
+
| `partnerDevelopment` | Is development store |
|
|
277
|
+
| `shopifyPlus` | Is Shopify Plus |
|
|
278
|
+
|
|
279
|
+
## Weight Units
|
|
280
|
+
|
|
281
|
+
| Unit | Description |
|
|
282
|
+
|------|-------------|
|
|
283
|
+
| `KILOGRAMS` | Kilograms |
|
|
284
|
+
| `GRAMS` | Grams |
|
|
285
|
+
| `POUNDS` | Pounds |
|
|
286
|
+
| `OUNCES` | Ounces |
|
|
287
|
+
|
|
288
|
+
## Currency Formats
|
|
289
|
+
|
|
290
|
+
| Field | Example |
|
|
291
|
+
|-------|---------|
|
|
292
|
+
| `moneyFormat` | `${{amount}}` |
|
|
293
|
+
| `moneyWithCurrencyFormat` | `${{amount}} USD` |
|
|
294
|
+
|
|
295
|
+
## API Scopes Required
|
|
296
|
+
|
|
297
|
+
- No specific scope needed for basic shop info
|
|
298
|
+
- `read_shopify_payments_accounts` - For payments account info
|
|
299
|
+
- `read_locales` - For locale information
|
|
300
|
+
|
|
301
|
+
## Notes
|
|
302
|
+
|
|
303
|
+
- Shop info is read-only through GraphQL
|
|
304
|
+
- Use REST API for some shop settings updates
|
|
305
|
+
- ShopifyQL is for analytics queries
|
|
306
|
+
- Functions require apps with function capabilities
|
|
307
|
+
- Domain and billing changes are done through admin UI
|